中级软件设计师2004下半年下午试题试题1阅读下列说明和数据流图,回答问题1至问题3。说明某图书管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。1.购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。2.读者借书时需填写借书单。借书单内容包括读者号和所借图书分类目录号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过5本),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。3.读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中,若图书逾期,则处以相应的罚款。4.注销图书时,需填写注销单并修改图书目录文件中的库存总量。系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。图书管理系统的顶层图如图1-1所示;图书管理系统的第0层DFD图如图1-2所示,其中,加工2的细化图如图1-3所示。数据流图1.1图1-1图书管理系统项层图数据流图1-2图1-2图书管理系统第0层DFD图数据流图1-3图1-3加工2的细化图1.【问题1】数据流图1-2中有两条数据流是错误的,请指出这两条数据流的起点和终点。这道题您没有回答答案:起点:读者文件终点:登记读者信息或3起点:处理查询请求或2终点:读者文件[分析]本题考查的是数据流图方面的基础知识。对这种类型问题求解的关键是要仔细阅读题目,注意解题技巧,从一些常规的入口作为突破口,即利用分层数据流图数据流的平衡原则(即父图和子图(加工图)的一致性)来解题。(子图是其父图中某一部分内部的细节图(加工图),它们的输入/输出数据流应该保持一致。子图也是如此,在上一级中有几个数据流,他的子图也一定有同样的数据流。)而且它们的输送方向是一致的(也就是说如果原图有3条进的数据流2条出的,子图同样也是)。问题1:比较数据流图1-1和数据流图1-2可以得到,图书管理系统的所有输入流和输出流都是正确的,所以可以初步判断是图1-2中从加工2到读者文件的数据流和从读者文件到加工3的数据流是错误的,再分析题目说明:“对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件”,此段说明表示加工3应该向读者文件中写入数据,从“系统首先检查该读者号是否有效,若无效,则拒绝借书”可以得出加工2从读者文件中读取数据。另外,从数据流图1-3可以看出数据流图是从读者文件到读者查询加工。所以错误的数据流是加工2到读者文件和从读者文件到加工3。2.【问题2】数据流图1-3中缺少三条数据流,请指出这三条数据流的起点和终点。这道题您没有回答答案:起点:图书目录文件终点:图书信息查询或2.2起点:借书文件终点:读者信息查询或2.1起点;借书文件终点:图书信息查询或2.2[分析]问题2:读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。读者基本信息存储在读者文件中,而读者借阅图书的信息存储在借书文件中,图书的基本信息存储在图书目录文件中,而图书借阅情况则需要通过借书文件获得,所以,应该有从借书文件到加工2.1和加工2.2,以及从图书目录文件到加工2.2的三条数据流。3.【问题3】根据系统功能和数据流图填充下列数据字典条目中的(1)和(2):查询请求信息=【查询读者请求信息|查询图书请求信息】读者情况;读者号+姓名+所在单位+{借书情况}管理工作请求单=(1)入库单=(2)这道题您没有回答答案:【入库单|借书单|还书单|注销单】(2)分类目录号+书名+作者+价格+数量+购书日期[分析]问题3:根据题目说明,管理工作主要分为购入新书、读者借书、读者还书以及图书注销,而每一项管理工作都需要填写相应的单据,所以,管理工作请求单=【入库单|借书单|换书单|注销单】,入库单的内容包括图书分类目录号、书名、作者、价格、数量和购书日期,因此,入库单=图书分类目录号+书名+作者+价格+数量+购书日期。试题2阅读下列说明和E-R图,回答问题1至问题3,将解答填入答题纸的对应栏内。说明某网上订书系统的E-R图(已消除了不必要的冗余)如图2-1所示(图中没有标出主码)。图中实体的说明如表2-1所示,相关属性说明如表2-2所示。表2-1实体说明Books书店内的书Crstomers与书店有业务的顾客Orders顾客向书店下的购书单表2-2主要属性说明qty_in_stock图书库存量year_prblished出版日期ordernum购书单编号cid顾客编号bid惟一标识每种图书的编码cardnum顾客信用卡号码orderdate填购书单日期qty订购某种图书的数量ship_date发货日期一个顾客可以在同一天填写多张购书单,每张购书单上可填写多种图书,每种图书可以订购多本,bid相同的图书在同一张购书单上不能出现多次。注:为简化起见,不考虑信用卡号码泄漏所带来的安全性等问题。4.【问题1】根据E-R图中给出的词汇,按照“关系模式名(属性,属性,…)”的格式,将此E-R图转换为4个关系模式,并指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。这道题您没有回答答案:Customers(cid,cname,adderss,cardnum),主键:cidOrders(ordemum,orderdate,cid),主键:ordemum外键:cidBooks(bid,title,author,qty_in_stock,year_publicshed,price),主键:bidOrderlist(bid,ordemum,qty,ship_date),其中bid和ortlemum是主键,也是键码注:以上四个关系模式和每个模式中的属性可按任意次序书写。[分析]本题考查的是数据库方面的知识。问题1:题干已经指明转换为4个关系模式,根据ER图和说明可以得出:Books、Customers和orders为三个关系模式,由于一个客户可以填写多张购书单,而一张购书单仅仅属于一个客户,所以,PlaceOrder不需要单独成为一个关系模式,而购书单和书之间是多对多的关系,所以,OrderList需要单独一个关系模式。因此关系模式和其主键及外键如下:1.Customers(cid,cname,adderss,cardnum))主键为:cid2.Orders(ordemum,orderdate,Cid)主键为:ordemum;外键为:cid3.Books(bid,title,author,qty_in_stock,year_publicshed,price)主键为:bid4.Orderlist(bid,ordemum,qty,ship_date)主键为:(bid,ordemum),外键为bid、ordemum5.【问题2】创建Customers表时,cid使用INTEGER数据类型,cnarne使用CHAR(80)数据类型,address使用CHAR(200)数据类型,cardnum使用CHAR(16)数据类型并且要求此列值惟一。请在下列用于创建表Customers的SQL语句空缺处填入正确的内容。CREATETABLECustomers(cidINTEGERNOTNULL,cnameCHAR(80)NOTNULL,addressCHAR(200),cardnumCHAR(16)NOTNULL,(1),(2))这道题您没有回答答案:PRIMARYKEY(cid)(2)UNIQUE(cardnum)注:(1)和(2)的次序可以颠倒。[分析]问题2:根据题意分析,对于关系模式Customers的主键为cid,而cardnum列值惟一,因此,应分别在空缺处填入PrimaryKeycid和UNIQUEcarclnum。填写后完整的SQL语句如下:CREATETABLECustomers(cidINTEGERNOTNULL,crlameCHAR(80)NOTNULL,addressCHAR(200),cardnumCHAR(16)NOTNULL,PrimaryKeycid,UNIQUEcardnum)6.【问题3】如下的SQL语句是书店用于查询“所有订购了bid为‘123-456’图书的用户订购其他图书的情况”的不完整语句,请在空缺处填入正确的内容。SelectbidFromOrderlistAWherenotexists(Select*fromOrdersBwhereA.ordemum=B.ordemumandB.cid(3)(SelectcidfromOrdcrlistC,OrdersDwhere(4).bid='123-456'and(5)=D.ordemum))这道题您没有回答答案:notin(2)C(3)C.ordemum[分析]问题3:根据题意分析,最内层的SQL语句查找订购了123-456的客户cid,ordemum只出现在Orderlist和order中,所以(5)中应填写C.ordemum,(4)中应该填写C,而要求寻找这些用户还订购哪些其他书籍,所以(3)中应填写in。填写后完整的SQL语句如下:SelectbidFromOrderlistAWherenotexists(Select*fromOrdersBwhereA.ordernum=B.ordernymandB.cidin(SelectcidfromOrderlistC,OrdersDwhereC.bid='123-456'andC.ordemum=D.ordemum))试题3阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某指纹门禁系统的体系结构如图3-1所示,其主要部件有:主机(MainFrame)、锁控器(LockController)、指纹采集器(FingerReader)和电控锁(Lock)。(1)系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。(2)在主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且锁处于“已锁住”状态时,才能将锁打开。(3)用户的指纹信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。(4)用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。该系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图3-2是该系统类图的一部分;系统的动态行为采用UML序列图表示,图3-3是用户成功开锁的序列图。图3-1图3-2图3-37.【问题1】图3-2是该系统类图的一部分,依据上述说明中给出的术语,给出类Lock的主要属性。这道题您没有回答答案:锁的编号、安全级别、锁的当前状态[分析]本题是一道使用面向对象方法进行系统开发的题目,主要考查利用UML的类图和序列图进行面向对象的分析。类图是面向对象系统的建模中最常见的图。类图显示了一组类、接口、协作以及它们之间的关系。类图用于对系统静态设计视图建模。在图形上,类图是顶点和弧的集合。在类图中通常包含:类、接口、协作、依赖、泛化和关联关系。类图还可以含有包或者子系统,二者都用于把模型元素聚集成更大的组块。当对系统的静态设计视图建模时,通常以下述