中级软件设计师2006下半年下午试题试题一阅读以下说明以及数据流图,回答问题1至问题5。【说明】某银行已有一套基于客户机/服务器模式的储蓄系统A和一套建账软件。建账软件主要用于将储蓄所手工处理的原始数据转换为系统A所需的数据格式。该建账软件具有以下功能。(1)分户账录入:手工办理业务时建立的每个分户账数据均由初录员和复录员分别录入,以确保数据的正确性。(2)初录/复录比对:将初录员和复录员录入的数据进行一一比较,并标记两套数据是否一致。(3)数据确认:当上述两套数据完全一致后,将其中任一套作为最终进入系统A的原始数据。(4)汇总核对和打印:对经过确认的数据进行汇总,并和会计账目中的相关数据进行核对,以确保数据的整体正确性,并打印输出经过确认的数据,为以后核查可能的错误提供依据。(5)数据转换:将经过确认的数据转换为储蓄系统A需要的中间格式数据。(6)数据清除:为加快初录和复录的处理速度,在数据确认之后,可以有选择地清除初录员和复录员录入的数据。该软件的数据流图如图10-1至图10-3所示。图中部分数据流数据文件的格式如下:初录分户账=储蓄所号+账号+户名+开户日+开户金额+当前余额+性质复录分户账=储蓄所号+账号+户名+开户日+开户金额+当前余额+性质初录数据=手工分户账+一致性标志复录数据=手工分户账+一致性标志会计账目=储蓄所号+总户数+总余额操作结果=初录操作结果+比对操作结果+复录操作结果软件需要打印的分户账清单样式如表10-1所示:表10-1分户账清单样式表储蓄所账号开户日户名其他分户账数据储蓄所1┆┆┆┆储蓄所1合计共×××户,总余额9999999.99元储蓄所2┆┆┆┆储蓄所2合计共×××户,总余额9999999.99元1.【问题1】请采用说明中的词汇,给出数据确认处理所需的数据流在第1层图中的全部可选起点(第0层图和第1层图中均未给出)。这道题您没有回答答案:初录数据、复录数据[分析]在本题说明中关于“数据确认”功能的描述中,指出当初录员和复录员分别录入的数据比对正确后,可从其中任一套数据作为最终进入系统A的原始数据(即图10-2中的确认数据)。因此无论是初录数据还是复录数据都可作为“数据确认处理”的数据源。10.【问题2】不考虑数据确认处理(加工2),请指出数据流图中存在的错误。这道题您没有回答答案:0层图(图10-2)中,数据清除处理(加工6)没有输入数据流[分析]在DFD中,一个加工就是对输入数据进行处理并生成输出数据的过程,所以数据流图中的每个加工都要求(至少)有一个输入数据流和一个输出数据流。而在0层DFD(图10-2)中,加工6(数据清除)只有输出数据流而没有输入数据。11.【问题3】打印分户账清单时,必须以下列哪一组数据作为关键字进行排序,才能满足需求?请从下面选项中选择。①储蓄所②账号⑧开户日④总户数和总余额这道题您没有回答答案:①[分析]在表10-1中,多行中的数据按照储蓄所分组输出并打印该储蓄所所有分户账的户数和余额合计,这就要求在数据查询操作中,至少要按照储蓄所进行排序才能实现。当然在软件实现时,也可以按照账号、开户日等数据排序,但从表10-1中无法确定是否需要这些额外的排序。15.【问题4】加工1(录入比对处理)除能够检查出初录数据和复录数据不一致外,还应当检测出下列哪些错误。①输入的无效字符②输入的半个汉字③显示器无法显示④初录员重复录入同一账户⑤汇总数据与会计账目不符⑥打印机卡纸这道题您没有回答答案:①、②、④[分析]图10-2中的加工1(录入比对)包含了图10-3中的三个加工:初录员录入数据、复录员录入数据、两组数据比对。按照本题说明,比对的任务就是在两组已经存储在数据文件中的数据之间一一比较,并指出那些不一致者、重复录入的同一账户数据,这个加工是完全由软件完成的,不再需要用户输入数据。但在手工录入过程中,有可能输入无效字符,比如输入的金额中有除小数点、数字之外的其他字符、半个汉字(这在某些运行环境中是可能存在的情况)。另外,从图10-3和其他叙述中可以看出,录入比对处理不涉及打印,也不应该检查汇总数据和会计账目是否相符(因为这是汇总核对的功能)。16.【问题5】请使用数据字典条目定义形式,给出第0层DFD中的“手工分户账”数据流和第1层DFD中的“初录分户账”、“复录分户账”的关系。这道题您没有回答答案:手工分户账=初录分户账+复录分户账[分析]在图10-2给出的软件第0层DFD中,“手工分户账”是“录入比对”加工的输入数据流,而该加工包含了图10-3中的“初录”加工和“复录”加工。所以手工分户账由初录分户账和复录分户账组成。试题二阅读以下说明,回答问题1至问题4。【说明】某宾馆需要建立一个住房管理系统,部分的需求分析结果如下:(1)一个房间有多个床位,同一房间内的床位具有相同的收费标准,不同房间的床位收费标准可能不同;(2)每个房间有房间号(如201、202等)、收费标准、床位数目等信息;(3)每位客人有身份证号码、姓名、性别、出生日期和地址等信息:(4)对每位客人的每次住宿,应该记录其入住日期、退房日期和预付款额信息;(5)管理系统可查询出客人所住房间号。根据以上的需求分析结果,设计一种关系模型如下图所示:2.【问题1】根据上述说明和实体-联系图,得到该住房管理系统的关系模式如下所示,请补充住宿关系。房间(房间号,收费标准,床位数目)客人(身份证号,姓名,性别,出生日期,地址)住宿((1),入住日期,退房日期,预付款额)这道题您没有回答答案:房间号,身份证号[分析]房间号和身份证号分别是房间关系和客人关系的主键,作为外键出现在住宿关系中。住宿关系记录客人的身份证号和住宿的房间号。9.【问题2】请给出问题1中住宿关系的主键和外键。这道题您没有回答答案:住宿主键:房间号,身份证号,入住日期住宿外键:房间号,身份证号[分析]该题主要考核关系的主键。住宿关系主键包括房间号,身份证号和入住日期。房间号和身份证号是较明显的答案,但仅是这两者并不能唯一识别一个记录,一位客人有可能多次在同一房间里住宿,故入住日期也要包含在主键中。12.【问题3】若将上述各关系直接实现为对应的物理表,现需查询在2005年1月1日到2005年12月31日期间,在该宾馆住宿次数大于5次的客人身份证号,并且按照入住次数进行降序排列。下面是实现该功能的SQL语句,请填补语句中的空缺。SELECT住宿.身份证号,count(入住日期)FROM住宿,客人WHERE入住日期>='20050101'AND入住日期<='20051231'AND住宿.身份证号=客人.身份证号GROUPBY(2)(3)count(入住日期)>5(4)这道题您没有回答答案:住宿.身份证号(3)HAVING(4)ORDERBY2DSC,或ORDERBY2DESC[分析]该题主要考查SQL语言。GROUPBY后必须出现SELECT后查询项中不包含聚集函数的部分;GROUPBY后跟的条件应该用HAVING子句表示:题目要求按照入住次数降序排序,故最后应填入ORDERBY子句。14.【问题4】为提交SQL语句的执行效率,可在相应的表上创建索引。根据问题3中的SQL语句,除主键和外键外,还需要在哪个表的哪些属性上创建索引,应该创建什么类型的索引,请说明原因。这道题您没有回答答案:表:住宿属性:入住日期类型:聚簇索引,或聚集索引,或cluster原因:表中记录的物理顺序与索引项的顺序一致,根据索引访问数据时,一次读取操作可以获取多条记录数据,因而可减少查询时间。[分析]该题主要考核索引的概念。在数据库中,索引使数据库程序无需对整个表进行扫描,就可以从其中找到所需的数据。索引分为两类:聚集索引和非聚集索引。聚集索引对表的物理数据页中的数据按列进行排序,然后重新存储到磁盘上,即聚集索引与数据是混为一体的,其叶结点中存储的是实际的数据。非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引的叶结点存储的是组成非聚集索引的关键字值和行定位器。按题目要求,查询涉及的属性有身份证号和入住日期,但它们均为主键属性,故不需要再为其他属性创建索引。针对本题要求为提交SQL语句的执行效率,对“入住日期”属性建立聚集索引,使得索引项顺序和物理数据顺序一致以提高查询性能。问题3中查询涉及到的属性有身份证号和入住日期,由于这两个属性均为住宿关系的主键,故不需要再在其他属性上创建索引。在主键上创建的索引类型应为聚簇索引(或聚集索引或cluster)。创建聚簇索引的原因是令表中记录的物理顺序与索引项的顺序一致,根据索引访问数据时,一次读取操作可以获取多条记录数据,因而可减少查询时间。试题三阅读以下说明和图,回答问题1至问题3。【说明】S公司开办了在线电子商务网站,主要为各注册的商家提供在线商品销售功能。为更好地吸引用户,S公司计划为注册的商家提供商品(Commodity)促销(Promotion)功能。商品的分类(Category)不同,促销的方式和内容也会有所不同。注册商家可发布促销信息。商家首先要在自己所销售的商品的分类中,选择促销涉及的某一具体分类,然后选出该分类的一个或多个商品(一种商品仅仅属于一种分类),接着制定出一个比较优惠的折扣政策和促销活动的优惠时间,最后由系统生成促销信息并将该促销信息公布在网站上。商家发布促销信息后,网站的注册用户便可通过网站购买促销商品。用户可选择参与某一个促销活动,并选择具体的促销商品,输入购买数量等购买信息。系统生成相应的一份促销订单(POrder)。只要用户在优惠活动的时间范围内,通过网站提供的在线支付系统,确认在线支付该促销订单(即完成支付),就可以优惠的价格完成商品的购买活动,否则该促销订单失效。系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图10-4是该系统类图中的一部分;系统的动态行为采用UML序列图表示,图10-5是发布促销的序列图。7.【问题1】识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成图10-4中的(1)~(6)。这道题您没有回答答案:(1)0~n或1~n(2)1(3)0~n(4)1~n(5)1(6)0~n[分析]问题1主要考查类的多样性分析,在充分理解题目需求的基础上补充类图中的类间关系的多样性描述。根据题目中所描述:(1)(2)一个商品(Commodity)属于一种分类,一个分类(Category)中包含零个或多个商品对象,所以多样性关系为0~n或1~n个商品对象对应1个分类对象;(3)(4)一个促销(Promotion)中由一个或多个商品组成(至少一个),而一个商品可以属于零个或多个促销,所以多样性关系为0~n个促销对象对应1~n个商品对象。(5)(6)一个促销可以产生多个促销订单(POrder),一个促销订单只能对应一个促销。所以多样性关系为1个促销对象涉及0~n个促销订单对象。8.【问题2】请从表10-2中选择方法,完成图10-5中的(7)~(10)。表10-2可选消息列表功能描述方法名向促销订单中添加所选的商品buyCommodities向促销中添加要促销的商品addCommodities查找某个促销的所有促销订单信息列表getPromotionOrders生成商品信息createCommodity查找某个分类中某商家的所有商品信息列表getCommodities生成促销信息createPromotion生成促销订单信息createPOrder查找某个分类的所有促销信息列表getCategoryPromotion查找某商家所销售的所有分类列表getCategories查找某个促销所涉及的所有商品信息列表getPromtionCommodities这道题您没有回答答案:(7)getCategories(8)getCommodities(9)createPromotion(10)addCommodities[分析]问题2主要考查用UML序列图对系统的行为进行分析和建模。序列图描述对象间的消息交互,刻画系统的