广东开放大学

一个简化的图书馆信息管理系统有以下功能:(1)借书:输入读者借书证,系统检查借书证是否有效;查阅借书文件,检查该读者所借图书是否超过10本,若已达10本,显示信息“已经超出借书数量”,拒借;未达10本,办理借书(检查库存、修改库存信息并将读者借书信息登入借书记录)(2)还书:输入书号和读者号,从借书记录中读出与读者有关的记录,查阅所借日期,如果超过3个月,作罚款处理。否则,修改库存信息与借书记录。(3)查询:可通过借书记录、库存信息查询读者情况、图书借阅情况及库存情况,打印各种统计表。请就以上系统功能画出

题目

一个简化的图书馆信息管理系统有以下功能:(1)借书:输入读者借书证,系统检查借书证是否有效;查阅借书文件,检查该读者所借图书是否超过10本,若已达10本,显示信息“已经超出借书数量”,拒借;未达10本,办理借书(检查库存、修改库存信息并将读者借书信息登入借书记录)(2)还书:输入书号和读者号,从借书记录中读出与读者有关的记录,查阅所借日期,如果超过3个月,作罚款处理。否则,修改库存信息与借书记录。(3)查询:可通过借书记录、库存信息查询读者情况、图书借阅情况及库存情况,打印各种统计表。请就以上系统功能画出分层的DFD图,并建立重要条目的数据字典

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:


A.图书,总编号=借阅.总编号AND读者,书名=借阅.书名
B.图书,分类号=借阅,分类号AND读者.借书证号=借阅,借书证号
C.读者,总编号=借阅.总编号AND读者,借书证号=借阅.借书证号
D.图书,总编号=借阅.总编号AND读者,借书证号=借阅,借书证号

答案:D
解析:
对于图书管理数据库,查询0001号借书证的读者姓名和所借图书的书名SQL语句正确的是:SELECT姓名,书名FROM借阅,图书,读者WHERE借阅,借书证号=“0001”AND图书.总编号=借阅.总编号AND读者.借书证号=借阅,借书证号。

第2题:

对于图书管理数据库,分别求出各个单位当前借阅图书的读者人次。下面的SQL语句正确的是( )。

A)SELECT单位,COUNT(借阅.借书证号)FROM借阅,读者WHERE;

借阅.借书证号=读者.借书证号ORDERBY单位

B)SELECT单位,COUNT(借阅.借书证号)FROM借阅,读者WHERE;

借阅.借书证号=读者.借书证号GROUPBY单位

C)SELECT单位,SUM(借阅.借书证号)FROM借阅,读者WHERE; &&

借阅.借书证号=读者.借书证号HAVING单位

D)SELECT单位,SUM(借阅.借书证号)FROM借阅,读者WHERE;

借阅.借书证号=读者.借书证号GROUPBY单位


正确答案:B
要分别求出各个单位查询借阅图书人的读者人次,而单位信息在读者表中,借阅图书的信息在借阅表中,需要通过共同的借书证号属性把两个表联接起来,即将借阅.借书证号=读者.借书证号置于WHERE短语之后。把同借书号所借阅的图书数日都统计在内,所以不需要使用DISTINCT短语去掉重复值;需要按单位统计借阅图书的读者人次,通过GROUP BY命令实现按单位分组查询。

第3题:

查询没有借阅图书的读者的姓名和借书证号,应使用SQL语句

A.SELECT 姓名 FROM 读者 WHERE NOT EXISTS; (SELECT 借书证号 FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)

B.SELECT 姓名,借书证号 FROM 读者 WHERE (SELECT*FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)

C.SELECT 姓名,借书证号 FROM 读者 WHERE NOT EXISTS; (SELECT*FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)

D.SELECT 姓名,借书证号 FROM 读者 WHERE 借阅=NULL (SELECT*FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)


正确答案:C
解析:谓词EXISTS用来检验在于查询中是否有结果返同,本题中内层查询引用了外层查询的表,所以是内外层相关嵌套查询。

第4题:

查询借阅了两本和两本以上图书的读者姓名和单位,应使用SQL语句

A.SELECT姓名,单位FROM读者; WHERE借书证号IN; (SELECT借书证号FROM借阅; GROUP BY借书证号HAVING COUNT(*)>=2)

B.SELECT姓名,单位FROM读者; WHERE借书证号EXISTS; (SELECT借书证号FROM借阅; GROUP BY借书证号HAVING COUNT(*)>=2)

C.SELECT 姓名,单位 FROM 读者; WHERE 借书证号 EXISTS; (SELECT 借书证号 FROM 借阅; GROUP BY 借书证号 WHERE COUNT(*)>=2)

D.SELECT 姓名,单位 FROM 读者; WHERE 借书证号 IN; (SELECT 借书证号 FROM 借阅; GROUP BY 借书证号 WHERE COUNT(*)>=2)


正确答案:A
解析:本小题考查了SQL查询功能的嵌套查询和分组与计算查询,分组与计算查询中,利用HAVING进一步限定分组的条件。HAVING子句和WHERE子句不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组。

第5题:

现有表:读者(读者姓名,读者单位,借书证号) 借阅(借书证号,图书名称,图书作者,出版单位) 从读者表和借阅表中查询借阅了两本及两本以上图书的读者姓名和读者单位,正确的SQL语句是( )。

A. SELECT读者姓名,读者单位FROM读者WHERE借书证号IN; (SELECT借书证号FROM借阅GROUP BY借书证号HAVING COUNT(*)>=2)

B. SELECT读者姓名,读者单位FROM读者WHERE借书证号EXISTS; (SELECT借书证号FROM借阅GROUP BY借书证号HAVING COUNT(*)>=2)

C. SELECT读者姓名,读者单位FROM读者WHERE借书证号IN; (SELECT借书证号FROM借阅GROUP BY借书证号WHERE COUNT(*)>=2)

D. SELECT读者姓名,读者单位FROM读者WHERE借书证号EXISTS; (SELECT借书证号FROM借阅GROUP BY借书证号WHERE COUNT(*)>=2)


正确答案:A
本题考查了SQL查询功能的嵌套查询和分组与计算查询。分组与计算查询中,利用HAVING进一步限定分组的条件。HAVING子句和WHERE子句不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用 HAVING子句限定分组。

第6题:

有以下两个表: 读者(借书证号C C、4),单位C(8),姓名C(、6),性别C(2),职称C(6),地址C(20)) 借阅(借书证号C(4),总编号C(6),借书日期D(8)) 要求分别求出各个单位当前借阅图书的读者人次,下面的SQL语句正确的是( )。 SELECT单位,__________FROM借阅,读者WHERE借阅.借书证号=读者.借书证号__________

A. COUNT(借阅.借书证号)CROUP BY单位

B. SUM(借阅.借书证号)GROUP BY单位

C. COUNT(借阅.借书证号)ORDER BY单位

D. COUNT(借阅.借书证号)HAVING单位


正确答案:A
题目中给出了两个数据表。本题要求的是各单位当前借阅图书的人次,因此必须采用COUNT命令来求得总人数,然后应该以各个单位进行分组操作,通过这两个方面的内容考虑,本题的正确答案应该是:
SELECT单位,COUNT(借阅.借书证号)FROM借阅,读者WHERE借阅.借书证号=读者.借书证号GROUP BY单位 因此应该选择A。

第7题:

现有表:读者(读者姓名,读者单位,借书证号)借阅(借书证号,图书名称,图书作者,出版单位)查询没有借阅图书的读者的姓名和借书证号,正确的SQL语句是( )。

A. SELECT姓名FROM读者WHERE NOT EXISTS; (SELECT借书证号FROM借阅WHERE借阅.借书证号=读者借书证号)

B. SELECT姓名,借书证号FROM读者WHERE (SELECT*FROM借阅WHERE借阅.借书证号=读者.借书证号)。

C. SELECT姓名,借书证号FROM读者WHERE NOT EXISTS; (SELECT*FROM借阅WHERE借阅.借书证号=读者.借书证号)

D. SELECT姓名,借书证号FROM读者WHERE借阅=NULL (SELECT*FROM借阅WHERE借阅.借书证号=读者.借书证号)


正确答案:C
谓词EXISTS用来检验在子查询中是否有结果返回,本题中内层查询引用了外层查询的表,所以是内外层相关嵌套查询。

第8题:

对于图书管理数据库,查询0001号借书证的读者姓名和所借图书的书名。 SQL语句正确的是 ______。 SELECT姓名,书名FROM 借阅,图书,读者 WHERE; 借阅.借书证号="0001"AND; ______ ______

A.图书.总编号=借阅.总编号 AND 读者.借书证号=借阅.借书证号

B.图书.分类号=借阅.分类号 AND 读者.借书证号=借阅.借书证号

C.读者.总编号=借阅.总编号 AND 读者.借书证号=借阅.借书证号

D.图书.总编号=借阅.总编号 AND 读者.书名=借阅.书名


正确答案:A
解析:使用SQL命令进行查询。查询结果出自不同的表,即姓名出自读者表,书名出自图书表,该题是涉及多个表的连接查询。读者和借阅表通过共有属性借书证号进行连接,从而可以获得借阅了图书的读者姓名,图书表和借阅表通过共有属性总编号进行连接,从而可以获得借出图书的书名,由于要进行3个关系即借阅、图书和读者3个表的连接,必须将连接条件放在WHERE短语后面,两个连接条件即“图书.总编号=借阅.总编号”和“读者.借书证号=借阅.借书证号”由AND运算符连接。

第9题:

对于图书管理数据库,检索当前至少借阅了两本图书的读者的姓名和所在单位。下面SQL语句,正确的是

SELECT 姓名,单位 FROM 读者 WHERE 借书证号 IN;

设有图书管理数据库中包含以下表:

读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))

借阅(借书证号C(4),总编号C(6),借书日期D(8))

A.SELECT 借书证号 FROM 读者 GROUP BY 借书证号 HAVING COUNT(*)>=2

B.(SELECT 借书证号 FROM 读者 GROUP BY 借书证号 HAVING COUNT(*)>=2)

C.SELECT 借书证号 FROM 借阅 GROUP BY 借书证号 HAVING COUNT(*)>=2

D.(SELECT 借书证号 FROM 借阅 GROUP BY 借书证号 HAVING COUNT(*)>=2)


正确答案:D
解析:本题考查了分组查询。本题要求检索至少借阅了两本图书的读者,使用SELECT嵌套语句完成查询,内层循环通过对借书证号进行分组(分组的条件是统计该借书证号的使用次数大于等于2)来显示出至少借阅了两本图书的借书证号,外层查询通过内层查询的结果显示其对应的姓名和单位。