1、2005 年年 5 月软件设计师下午试题答案及其分析月软件设计师下午试题答案及其分析试题一试题一问题 1(6 分)(1)数据流图 1-1 缺少了一条数据流(在图 1-2 中也未给出该数据流) ,请 给出此数据流的起点和终点,并采用说明中的词汇给出此数据流名。答:数据流起点是房主,终点是学生住宿管理系统,数据流名称是屋主信 息。 (2)数据流图 1-2 中缺少了与“查询房屋”加工相关的数据流,请指出此 数据流的起点和终点。 答:从房屋文件-查询房屋信息 问题 2(4 分)“安排会面”加工除需要写入会面文件外,还需要访问哪些文件? 答:房主文件,学生文件,房屋文件 问题 3(5 分)请补齐下列数据字典条目: 登录信息=学生 ID+密码 注册信息=学生姓名+学生现住址+电话号码+出生日期+性别+学生 ID+密码 试题一分析:试题一分析: 问题问题 1:在答这类题目时要先那题目说明部分理解,然后从里面分出数据流的名称,然后:在答这类题目时要先那题目说明部分理解,然后从里面分出数据流的名称,然后 在看数据流图的时候就可以做对比,这样就比较好找到缺少的数据流。本题中的屋主信息在看数据流图的时候就可
2、以做对比,这样就比较好找到缺少的数据流。本题中的屋主信息 是很明显的;是很明显的;从数据流图从数据流图 1-2 中可以看到,中可以看到, “查询房屋查询房屋”加工有请求者,有输出信息,就是没有加工有请求者,有输出信息,就是没有 关于房屋的信息,所以这里就缺少房屋文件这个数据存储中引出的房屋信息的数据流;关于房屋的信息,所以这里就缺少房屋文件这个数据存储中引出的房屋信息的数据流; 问题问题 2:会面需要的信息有:会面需要的信息有“请求中包含房屋的详细信息,安排学生与房主会面的时间和 地点,并将会面信息通知学生和房主” ,所以我们得到需要的文件有学生、房屋和屋主;,所以我们得到需要的文件有学生、房屋和屋主; 问题问题 3: 数据字典条目:数据字典条目:“学生信息包括姓名、现住址、电话号码、出生日期、性别以及系统分 配的唯一身份标识(ID)和密码”试题二试题二 问题问题 11(4 4 分)分) 根据述说明,请给出 (1) “职员”关系模式的主键和外键。 答:主键:职员号 ,外键:部门号 (2) “部门”关系模式的主键和外键。 答:主键:部门号 ,外键:负责人代码 问题问题 22(4 4 分)
3、分) (1)用 SQL 定义“职员”关系模式,请在空缺处填入正确的内容。 Create Table 职员(职员号 CHAR(5) (a) ,职员姓名 CHAR(8) ,月工资 NUMBER(4) , 部门号 CHAR(1) , 办公室 CHAR(20) 电话 CHAR(8) ,(b) (部门号) ,CHECK(月工资=1000 AND 月工资=8000) ) ; 答: (a)primary key, (b)foreign key (2)针对人数大于等于 2 的部门创建视图 D View(Dept, D num, D Totals, D Avgpay),其中,Dept 为部门号,D num 为部门人数,D_Totals 为工资总数, D_Avgpay 为平均工资,请在空缺处填入正确的内容。 Create View D_View(Dept,D_num,D_Totals,D_Avgpay)As(Select 部门号, (c) From 职员(d) count(*)=2 WHERE 部门号 IS NOT NULL): 答: (c)count(*),sum(月工资),avg(月工资) (d)gr
4、oup by 部门号 having 问题 3(3 分) 对于表 2-1、表 2-2 所示的“职员”和“部门”关系,请指出下列各行是否可以插 入“职员”关系,为什么?60811芦峰8001A 座 2016883122 60802李晓啸35002B 座 2026883123 60812高亚南2600 答: (1)不行,工资不满足条件。 (2)不行,违反主键约束,主属性不能插入重复值。 (3)行 问题 4(4 分) 原来的“职员”关系模式存在什么问题?在不增加新关系模式的前提下,请给出修出改后 的“职员”和“关系模式” 。 答: 原职员关系表中存在大量的数据冗余。 解决办法:把“电话“和“办公室“从“职员”关系模式移动到“部门“关系模式中。试题二试题二分析:分析:问题问题 1:(:(1)因为存在)因为存在“职员职员”和和“部门部门”两张表,所以两张表,所以“职员职员”表的主键是职员号,外表的主键是职员号,外 键是部门号;键是部门号;(2)在部门表中主键是部门号。而外键是负责人代码,实际上负责人代码和职员号)在部门表中主键是部门号。而外键是负责人代码,实际上负责人代码和职员号 表示的是一样的内
5、容,只是名称不同;表示的是一样的内容,只是名称不同; 问题问题 2:(:(1)确定主键和外键,通过)确定主键和外键,通过 SQL 语句完成;语句完成;(2)创建视图)创建视图 D D View(Dept,View(Dept, D D num,num, D D Totals,Totals, D D Avgpay)Avgpay),D D numnum 为部门人数为部门人数= = count(*)count(*), D_TotalsD_Totals 为工资总数为工资总数= = sum(sum(月工资月工资) ),D_AvgpayD_Avgpay 为平均工资为平均工资= = sum(sum(月工资月工资)/count(*)/count(*)。人数大于等于人数大于等于 2 2 的部门,则按照部门号分组,即的部门,则按照部门号分组,即 groupgroup byby 部门号部门号 havinghaving。 问题问题 3: (1 1)不行)不行, ,工资不满足条件。工资不满足条件。 (2 2)不行)不行, ,违反主键约束,主属性不能插入重复值。违反主键约束,主属性不能插入重复值。 (3 3)行)行
6、 问题问题 4: 原职员关系表中存在大量的数据冗余。原职员关系表中存在大量的数据冗余。 解决办法:把解决办法:把“ “电话电话“ “和和“ “办公室办公室“ “从从“职员职员”关系模式移动到关系模式移动到“ “部门部门“ “关系模式中。关系模式中。试题三试题三供选择的答案供选择的答案a Foundtrue b Found = truec T = Endpos d Q.insert(T)e T Q.delete() f Curpos = Endposg i4 h Curpos Q.delete()i GridT.row,T.col = -1 j GridT.row,T.col-1参考答案参考答案 (1)girdt.rowt.col = -1 (2)t= endpos (3)q.insert(t) (4)found != true (5)curpos = q.delete()解析解析本题是在布线板上给定两个方格的最短布线路径,首先要理解的就是:本题是在布线板上给定两个方格的最短布线路径,首先要理解的就是:符号符号含义含义GridGrid全局二维数组全局二维数组 GridN+2,M+2,Gr
7、idN+2,M+2,表示电路板方格阵列,初始表示电路板方格阵列,初始 时数组元素时数组元素 GridI,jrGridI,jr 的值为的值为-1-1 表示当前方格可布线,为表示当前方格可布线,为 -9-9 表示前方格不可布线。表示前方格不可布线。OffsetOffset一维数组一维数组 offset4:offseti(0i3)offset4:offseti(0i3)的分量为的分量为 r r(行偏(行偏 移量)和移量)和 c(c(列偏移量列偏移量) ),按照表,按照表 3-13-1 的内容设置其值。的内容设置其值。StartposStartpos、EndposEndpos、CurposCurpos 、T T分别表示起始方格、目标方格、当前方格和临时方格,其位分别表示起始方格、目标方格、当前方格和临时方格,其位 置用分量度置用分量度 rowrow 和和 colcol 确定。确定。Q.insert(s)Q.insert(s)将方格将方格 s s 的位置信息加入队列。的位置信息加入队列。Q.delete()Q.delete()删除非空队列的队头元素,并返回该元素。删除非空队列的队头元素,并返回该
8、元素。Q.empty()Q.empty()若队列若队列 Q Q 为空,则返回为空,则返回 true;true;否则返回否则返回 falsefalse。 具体思路是:具体思路是:从起始方格 x 开始,先考查距离起始方格距离为 k 的某一个可达 方格就是目标方格 y 时为止,或者由于不存在从 x 到 y 的布线方案而终止。布 线区域中的每一个方格与其相邻的上、下、左、右四个方格之间的距离为 1, 依次沿下、右、上、左这四个方向考查,并用一个队列记录可达方格的位置。 (1) 判断是否当前的方格可布线,girdt.rowt.col是否等于是否等于-1 (2) 判断当前的方格是否为目标方格,如果是就将判断当前的方格是否为目标方格,如果是就将 Found=true;否则执行第 (3)个空。 (3) 如果不是目标方格,则把这个方格加入到队列中,即如果不是目标方格,则把这个方格加入到队列中,即 q.insert(t),同时继,同时继 续进行偏移。续进行偏移。(4) 判断判断 found 是否为是否为 true,如果是则返回,如果是则返回 TRUE;否则继续判断;否则继续判断; (5) 如果如果 fou
9、nd 不为不为 true,则判断队列是否为空,如果为空则整个查找失败,则判断队列是否为空,如果为空则整个查找失败, 如果队列为空,则重新进行探测。如果队列为空,则重新进行探测。试题四试题四参考答案参考答案(1)k=N (2)taskk=0 (3) i(4)k+1 (5)workeri=0 解析解析解决本题首先就是要把题目中使用的数据结构的意思理解,在这里解决本题首先就是要把题目中使用的数据结构的意思理解,在这里Cij:将任务 i 分配给工人 j 的费用;Taski:值为 0 表示任务 i 未分配,值为 j 表示任务 i 分配给工人世间 j;Workerk:值为 0 表示工人 k 未分配任务,值为 1 表示工人 k 已分配任务;Mincost:最小总费用。(1)k=N,判断判断 N 个任务是否已经完成,而且得到的总费用是最少;个任务是否已经完成,而且得到的总费用是最少; (2)判断如果第判断如果第 i 个个工人没有分配任务,而且第个个工人没有分配任务,而且第 k 个任务未分配;则进行分配,个任务未分配;则进行分配, 其中表示分配的有其中表示分配的有 workeri=1;taskk=workeri=1;taskk=i i; ; workeri=1workeri=1 表示第表示第 i i 个工人个工人 已经分配到任务;已经分配到任务;taskk=itaskk=i 表示第表示第 k k 个任务已经分配给第个任务已经分配给第 i i 个工人。个工人。 (3) 任务任务 k 分配后,则分配后,则 k 加加 1,进行下一个任务的分配;即,进行下一个任务的分配;
《2005年5月软件设计师下午试题答案及其分析》由会员j****9分享,可在线阅读,更多相关《2005年5月软件设计师下午试题答案及其分析》请在金锄头文库上搜索。