2005上半年软件设计师考试真题及答案-下午卷.doc
《2005上半年软件设计师考试真题及答案-下午卷.doc》由会员分享,可在线阅读,更多相关《2005上半年软件设计师考试真题及答案-下午卷.doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2005上半年软件设计师考试真题及答案-下午卷试题一 阅读以下说明和数据流图,回答问题1问题3。【说明】 学生住宿服务系统帮助学生在就学的缄市内找到所需的住房,系统对出租的房屋信息、房主信息、需要租房的学生信息以及学生和房主的会面信息进行管理和维护。 房主信息包括姓名、地址、电话号码以及系统分配的唯一身份标识D.和密码;房屋信息包括房屋地址、类型(单间/套间)、适合住宿的人数、房租、房主的ID以及现在是否可以出租(例如由于装修原因,需等到装修后才可出租或者房屋已被租出)。每当房屋信息发生变化时,房主必须通知系统,系统将更新房屋文件以便学生能够获得准确的可租用房屋信息。房主向系统中加入可租用的房
2、屋信息时,须交纳一定的费用,由系统自动给出费用信息。房主可随时更新房屋的各种属性。 学生可通过系统查询现有的可租用的房屋,但必须先在系统中注册。学生信息包括姓名、现住址、电话号码、出生日期、性别以及系统分配的唯一身份标识(1D.和密码。若学生希望租用某房屋,则需要发出租房请求,请求中包含房屋的详细信息,系统将安排学生与房主会面的时间和地点,并将会面信息通知学生和房主,会面信息包括会面时间、地点以及会面双方的基本信息,系统将记录会面信息。 学生住宿服务系统的顶层图如图1-1所示;学生住宿服务系统的第0层DFD图如图 1-2所示,其中,加工3的细化图如图1-3所示。【数据流图1-1】 【数据流图1
3、-2】【数据流图1-3】 1、【问题1】 (1)数据流图1-1缺少了一条数据流(在图1-2中也未给出该数据流),请给出此数据流的起点和终点,并采用说明中的词汇给出此数据流名。 (2)数据流图1-2中缺少了与“查询房屋”加工相关的数据流,请指出此数据流的起点和终点。2、【问题2】 “安排会面”加工除需要写入会面文件外,还需要访问哪些文件?3、【问题3】 请补齐下列数据字典条目: 登录信息=学生ID+密码 注册信息=_试题二 阅读以下说明和表,回答问题1问题4。【说明】 某公司信息管理系统的需求分析和部分关系模式设计的结果描述如下。 1公司有多个部门,每个部门有一名负责人、一间办公室、一部电话、多
4、名职员,每个职员最多属于一个部门,负责人也是一名公司职员。 2公司职员的月工资大于等于1000元且小于等于8000元。 3数据库的部分关系模式设计如下: 职员(职员号,职员姓名,月工资,部门号,办公室,电话) 部门(部门号,部门名,负责人代码,任职时间) 4“职员”和“部门”的关系示例分别如表2-1和表2-2所示。【表2-1】“职员”关系 职员号职员姓名月工资部门号办公室电话60801汪俊华10001A座201688312260802杨晓军32001A座201688312260803王晓华43002B座202688312360804邢彦军28002B座202688312360805吕靖原530
5、03A座301688312460806芦文峰32003A座301688312460807牟雪松28003A座301688312460808高亚南12004B座302688312560810周 黎 32004B座302688312560820姚应磊12004B座302688312560821程文驰32005B座303688312660836许俊坤0Null 【表2-2】 “部门”关系 部门号部门名负责人代码任职时间1财务部608022001-8-52市场部608032002-6-33研发部608052002-6-34生产部1608102003-8-15生产部2608212004-6-34、【问题
6、1】 根据上述说明,请给出 (1)“职员”关系模式的主键和外键。 (2)“部门”关系模式的主键和外键。5、【问题2】 (1)用SQL定义“职员”关系模式,请在空缺处填入正确的内容。 Create Table 职员 ( 职员号CHAR(5) (a) , 职员姓名CHAR(8), 月工资 NUMBER(4), 部门号 CHAR(1), 办公室 CHAR(20), 电话 CHAR(8), (b) (部门号), CHECK (月工资=1000 AND月工资=8000); (2)针对人数大于等于2的部门创建视图D_View(Dept,D_num,D_Totals, D_AvgPay),其中,Dept为部
7、门号,D_num为部门人数,D_Totals为工资总数,D_AvgPay为平均工资,请在空缺处填入正确的内容。 Create View D_View (Dept,D_num,D_Totfls,D_AvgPay)As (Select部门号, (c) from 职员 (d) count(*)=2 WHERE 部门号 IS NOT NULL);6、【问题3】 对于表2-1、表2-2所示的“职员”和“部门”关系,请指出下列各行是否可以插入“职员”关系,为什么? 7、【问题4】 原来的“职员”关系模式存在什么问题?在不增加新关系模式的前提下,请给出修改后的“职员”和“部门”关系模式。试题三 阅读以下说明
8、和流程图,从供选择的答案中选出应填入流程图 (n) 处的字句写在答题纸的对应栏内。【说明】 一个印刷电路板的布线区域可分成nm个方格,如图3-1(a)所示,现在需要确定电路板中给定的两个方格的中心点之间的最短布线方案。电路只能沿水平或垂直方向布线,如图3-1(b)中虚线所示。为了避免线路相交,应将已布过线的方格做封锁标记,其他线路不允许穿过被封锁的方格。【图3-1】 设给定印刷电路板的起始方格x与目的方格y尚未布线,求这两个方格间最短布线方案的基本思路是:从起始方格x开始,先考查距离起始方格距离为1的可达方格并用一个路径长度值标记,然后依次考查距离为2,3,的可达方格,直到距离为k的某一个可达
9、方格就是目标方格y时为止,或者由于不存在从x到y的布线方案而终止。布线区域中的每一个方格与其相邻的上、下、左、右四个方格之间的距离为1,依次沿下、右、上、左这四个方向考查,并用一个队列记录可达方格的位置。表3-1给出了沿这四个方向前进1步时相对于当前方格的相对偏移量。【表3-1】 搜索顺序i方向行偏移量列偏移量0下101右012上-103左0-1 例如,设印刷电路板的布线区域可划分为一个68的方格阵列,如图3-2(a)所示,其中阴影表示已封锁方格。从起始方格x(位置3,2,标记为0)出发,按照下、右、上、左的方向依次考查,所标记的可达方格如图3-2(a)所示,目标方格为y(位置4,7,标记为1
10、0),相应的最短布线路径如图3-2(b)虚线所示。 【图3-2】 图3-3和图3-4所示的流程图即利用上述思路,在电路板方格阵列中进行标记,图 【图3-3】 【图3-4】 中使用的主要符号如表3-2所示。在图3-4中,设置电路板初始格局即将可布线方格置为数值-1、已布线方格(即封锁方格)置为-9。设置方格阵列“围墙”的目的是省略方格位置的边界条件判定,方法是在四周附加方格,并将其标记为-9(与封锁标记相同)。 【表3-2】 符号含义Grid 全局二维数组GridN+2,M+2,表示电咱板方格阵列,初始时数组元素Gridi,j的值为-1表示当前方格可布线,为-9表示当前方格不可布线。offset
11、一维数组offset4:offseti(0i3)的分量为r(行偏移量)和c(列偏移量),按照表4-3的内容设置其值。StartPos、EndPos、CurPos、T分别表示起始方格、目标方格、当前方格和临时方格,其位置用分量row和col确定。Q.insert将方格s的位置信息加入队列。Q.delete删除非空队列的队头元素,并返回该元素。Q.empty若队列Q为空,则返回true;否则返回false。8、供选择的答案 AFoundtrue BFound=true CT=EndPos DQinsert(T) ETQ.delete() FCurPos=EndPos Gi4 HCurPosQdel
12、ete() IGridT.row,T.col=-1 JGridT.row,T.col-1试题四 阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】 假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务, 但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配1个不同的任务。 程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下: cij:将任务i分配给工人j的费用; taski:值为0表示任务i未分配,值为j表示任务i分配给工人j; workerk:值为0表示工人k未分配任务,值为1表示工
13、人k已分配任务; mincost:最小总费用。9、【C程序】 #includestdio.h #define N 8 /*N表示任务数和工人数*/ int cNN; unsigned int mincost=65535; /*设置min的初始值,大于可能的总费用*/ int taskN,tempN,workerIN; void Plan(int k,unsigned Int cost) int i; if ( (1) &costmincost) mincost=cost; for (i=0;iN;i+) tempi:taski; else for(i=0;iN;i+) /*分配任务k*/ if
14、 (workeri0& (2) ) workeri=1; taskk= (3) ; Plan( (4) ,cost+cki); (5) ; taskk=0; /*if*/ /*Plan*/ void main() int i,j; for (i=0;iN;i+) /*设置每个任务由不同工人承担时的费用及全局数组的初值*/ workeri=0;taski=0; tempi=0; for(j=0;jN;j+) scanf (%d,&cij); Plan (0,0); /*从任务0开始分配*/ printf(n最小费用=%dn,mincost); for(i二0;iN;i+) pnntf(Task%
15、d iB assigned toWorker%dn,i,tempi); /*main*/试题五 阅读以下说明和C+代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】 某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图5-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码5-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头,开发一个新的Cir
16、cle类,又可以不修改绘图系统中已经定义的接口。代码5-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。 绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示: ShapeXCircle功能display()displayIt()显示图元【图5-1】 10、【代码5-1】 class Circle:public (1) pfivme: (2) m_circle; public: void display() m_circle (3) ; ;【代码5-2】 class Factory public: (4) getShapeInstance (int type) /生成
17、特定类实例 switch (type) case 0:rcturn new Point; Case l:return new Rectangle; case 2: return new Line; case 3: return new Circle; default: return NULL; void main (int argo, char *argv) if (argc!=2) cout error parameters ! endl; return; inttype=atoi (argv1) ; Factory factory; Shape *s; s = factory. (5) :
18、 if (s=NULL) cout Error get the instance ! endl; return; s-display () ; (6) ; return;试题六 阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】 某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图6-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码6-
19、1既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码6-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。 绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示: ShapeXCircle功能display()displayIt()显示图元【图6-1】11、【代码6-1】 class Circle (1) private (2) pxc; public Circle()pxc=new (3) ; public void display() pxc (4) ; 【代码6-2】 public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2005 上半年 软件 设计师 考试 答案 下午
限制150内