版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中级软件设计师下午试题-21(总分:80.00,做题时间:90分钟)、试题一(总题数:1,分数:15.00)1. r说明】A公司决定开发一套公共交通自动售票系统,系统要求如下所述。(1) 乘客能按以下3步操作购票:选定目的地,投入钱币,获得一张票。(2) 并且仅当乘客选定目的地后,系统才接收投钱;每次投入的钱只购买一张票。(3) 只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快岀票。如需找钱,则在出票的同时应退还多余的钱。(5) 如果乘客投入的钱不够票价,或者票库中没有所需要的票时, 系统将全额退钱,并允许乘客另选目的地, 继续购票。(6) 岀票前乘客可以单击“取消”按钮取消购票,
2、系统将全额退岀该乘客投入的钱,并允许乘客另选目的地,继续购票。(7) 岀票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚线表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。对售票全过程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移 图中,用双线框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在该公司还制定了一个过程启动表,用以表明状态迁移图中的 4个动
3、作与转换图中的4个过程之间的“启动” 关系,即说明哪个动作将启动哪个过程。用1表示启动,用0表示不启动。启动的过程将根据获得的输入数据产生输岀数据,未唐动的过程则不会产生输岀数据, 该表中没有列岀的过程, 其执行与否与事件无关。【问题1】转换图中缺少哪3条数据流?请指明每条数据流的名称、起点和终点。【问题2】在状态迁移图中,a、b、c分别表示什么事件?请用转换图中给岀的事件名解答。【问题3】在过程启动表中,d、e处应填什么?请分别用4位二进制码表示。(分数:15.00 ) 正确答案:(解析这道考题的题型比较特殊,但仍可以参考常考的数据流程图的解题思路。应全面细致 地阅读试题说明、转换图和状态迁
4、移图,体会系统的实际运行场景,以帮助顺利地解题。问题1已经明确指岀转换图中缺少 3条数据流,而从直观上看,“核查”处于核心位置,它还非常显著地 同全部3个文件有关。当然,有些考生不一定有这种直接看岀关键点的技能,但是对于具有扎实软件工程 理论基础和实际系统设计经验的人员,在经过一定的考试训练后,应该具有这种技能。下面具体分析。系统的使用者一一乘客与系统之间的活动有选择目的地、投钱、岀票。首先应该按照这3个活动去解答第1个问题。 乘客选择目的地应该经过核查,防止错误和异常,但这一点在转换图中没有画出。 乘客投钱,系统接到钱后应核查,如果正确(不是假币,规定面值的纸币,面值不低于票价),系统将进入
5、后面的出票流程。如果是规定的面值且面值大于票价,同时还要进入退还钱(找零)的流程。 在中,如果系统对钱核查后发现不正确(假币,不是规定的面值,面值低于票价),系统将进入退还钱的流程。出票时也应该核查,这一点在转换图中已经画出。现在,已经找到了缺少的3 条数据流。将上述 3 条数据流补充到转换图中, 在以“核查”为中心的转换图中, 每个输入数据流 / 输出数据流都经过 “核查”的检测。系统设计师们应该具有这样的设计思想:“核查”是系统中必须的、核心的、决定系统 健壮性的功能。给出的状态图是一个完整的循环流程,正常过程中,状态“正在接受投钱”后,应该接下去是出票,但事件a导致“退钱”事件发生,在说
6、明中已经很明确给出,是乘客按“取消”按钮。按照问题 1 中的分析,知道“接受投钱”后,系统经过“核查”,如果正确,就可以“出票”,所以b 是“核查正确”。出票结束后,该乘客的事务已经完成,系统将进入下一个乘客事务的等待,所以c 应该是“出票结束”。对于问题 3,应该按照已经补充完的转换图和状态迁移图,及过程启动表中的规则进行分析,可以很容易得出解答。d是1001,e是1100。)解析:二、试题二 ( 总题数: 1,分数: 5.00)2. 【说明】 学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授各带有若 干研究生;每个班有若干学生,每个学生选修若干课程,每门
7、课可由若干学生选修。【问题 1 】用 E-R 图画出此学校的概念模型,用文字写出各实体和联系的属性。 【问题 2】将 E-R 图转换成关系模型。【问题 3】指出各关系模型的候选键。(分数: 5.00) 正确答案: ( 【问题 1】用 E-R 图表示的概念模型如下所示。 各实体的属性如下所述。系:系编号,系名。 班级:班级编号,班级名。 教研室:教研室编号,教研室名。 学生:学号,姓名,学历。 课程:课程编号,课程名。 教员:职工号,姓名,职称。各联系的属性为: 选修课:成绩。 其他联系无属性。【问题 2】 其关系模型为: 系(系编号,系名,学校名 ) 班级(班级编号,班级名,系编号 ) 教研室
8、 ( 教研室编号,教研室,系编号 ) 学生(学号,姓名,学历,班级编号,导师职工号 ) 正确答案:(参与者1注册用户参与者2图书馆管理员参与者3 借书者参与者4图书馆馆长用例1登录用例2搜索课程(课程编号,课程名)选课(学号,课程编号,成绩)【问题3】各关系模型的候选键为:系一系编号;班级一班级编号,教研室一教研室编号,学生一学号;课程一课程编号;教员一职工号;选课一学号,课程编号。)解析:解析在画E-R图时,可以按照对问题的描述一步一步画出每一句话中涉及的实体,再根据给出的 实际语义,画岀实体之间的联系。例如,每个教研室有若干教员,每个班有若干学生,可以画岀教研室和 教员、班级和学生之间一对
9、多的联系。再比如,有的教授和副教授每人各带若干研究生,而一个研究生一 般指定一个导师,这是通常的规则,所以可以画岀教员和学生之间一对多的关系。按照上述的分析方法,从题的说明中,可以得到如下实体和联系。实体:学校、系、教研室、班级、教员、学生、课程。联系:校一系、系一室、系一班、室一教、班一生、指导、选修。 具体说明:实体“学校”和实体“系”是“一对多”的“校一系”联系。实体“系”和实体“班级”是“一对多”的“系一班”联系。实体“系”和实体“教研室”是“一对多”的“系一室”联系。实体“班级”和实体“学生”是“一对多”的“班一生”联系。实体“教研室”和实体“教员”是“一对多”的“室一教”联系。实体
10、“学生”和实体“课程”是“多对多”的“选修”联系。实体“教员”和实体“学生”是“一对多”的“指导”联系。三、试题三(总题数:1,分数:15.00)3. 【说明】(1) 这是一个图书馆支持系统。(2) 图书馆应用系统可以将图书和杂志借给借书者,这些借书者已经在系统中注册了,图书和杂志也已经注册过了。(3) 图书馆负责新书的购买, 一本流行图书会多买几本。 当旧书和杂志已经过时或破旧不堪时,将它们从图 书馆应用系统中删除。(4) 图书馆馆员是图书馆的员工。他们与客户(借书者)打交道,并且是在图书馆软件系统提供的支持下开展 工作的。(5) 借书者可以预订图书馆中当前还没有的图书或杂志,这样,当某借书
11、者所预订的图书或杂志归还回来或购进时,应用系统就通知这个预订人。当该借书者借阅了他所预订的图书或杂志后,或者通过一个显式的 取消过程取消他的预订后,他的本次预订就被取消了。(6) 图书馆应用系统能够容易地建立、修改和删除系统中的信息,包括书名、借书者、借阅信息和预订信息。 图书馆应用系统能够在所有流行的Web浏览器平台(Internet Explorer 5.1 以上,Netscape 4.0 以上等等)上运行。(8) 图书馆应用系统应该易于扩展新功能。【问题】分析这个图书馆系统中涉及的角色和用例,完成用例图I (分数:15.00 )用例 3浏览用例 4管理借书者用例 5管理书目用例 6管理标
12、题用例 7担任借书者的身份用例 8预订用例 9取消预订用例 10借书用例 11还书 )解析: 解析 由试题给出的用例图可以看到有 4个参与者,并且他们之间是泛化 (继承)的关系,结合案例 描述进行分析。图书馆系统的参与者有图书管理员 (Librarian) 和借书者 (Borrower) ,因为他们二者都是该系统的用户。 图 书管理员具有添加借书者、标题和书目这些管理能力,而借书者则是来借阅或预订图书和杂志的用户。偶 尔,图书馆馆员或另一个图书馆也可能成为借书者。最后,我们有一个图书馆馆长 (Master Librarian) 这 一参与者,这个角色具有管理其他图书馆馆员的能力。另外,在该图书
13、馆有某本书籍的副本 (一个书目 ) 之 前,先向该系统添加一个标题,这是可以的,目的是为了让借书者能够进行预订。图书馆系统中的用例有以下这些: Login(登录) Search(搜索) Browse(浏览) Make Reservation( 预订 ) Remove Reservation( 取消预订 ) Checkout I tem( 借书 ) Return Item( 还书 ) Manage Titles( 管理标题 ) Manage Items( 管理书目 ) Manage Borrowers( 管理借书者 ) Manage Librarians( 图书管理员 ) Assume Iden
14、tity of Borrower( 担任借书者的身份 )上述列表中需要注意的是 Title( 标题)和 Item( 书目)这两个概念。因为在一个图书馆中,一本流行书通常 有多本副本, 所以系统必须把标题 ( 可以是一本书的名称、 书的作者 ) 和同一标题的一个单一物理副本 ( 这是 一个书目 ) 的概念分开。从实用角度考虑,为了限制本题的复杂度,这里不完成某些“ Manage管理)”用例(例如ManageLibrarians和 Manage Borrowers) 的实现。四、试题四 (总题数: 1,分数: 15.00)4. 【说明】本程序在3X3方格中填入1N(N>10)内的某9个互不相
15、同的整数,使所有相邻两个方格内的两个整数之 和为质数。试求出满足这个要求的所有填法。3X3方格中的每个方格按行按列(先行后列)序号排列为:0,1 , 2, 3, 4, 5, 6, 7, 8。程序采用试探法,即从序号为 0 的方格开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填 入后,为下一方格寻找可填入的合理整数。如不能为当前方格找到一个合理的可填整数,就要回退到前一 方格,调整前一方格的填入整数;直至序号为 8 的方格也填入合理的整数后,就找到了一个解,将该解输 出。再调整序号为 8 的方格所填整数,继续去找下一个解。为了检查当前方格的填入整数的合理性,程序 引入二维数组 chec
16、k Matrix ,存放需要进行合理性检查的相邻方格的序号。# include < stdio. h ># define N 12int bN+1;int pos;int a9;/* 用于存储诸方格所填入的整数 */int AIINum=O;/* 统计有多少种填法*/int checkMatrix3= -1,0,-1,1,-1, 0,-1,1,3,-1,2,4,-1,3,-1,4,6,-1,5,7,-1;void write(int a)int i, j;for(i=0; iv 3; i+)for(j=0; jv 3; j+)printf("%3d", a3*i
17、+j); printf("/n");int isPrime(int m)int i;if(m=2)return 1;if(m=1 II m%2=0)return 0;for(i=3; i*i v m;)if(m%i=0)return 0;i+=2;return 1;int selectNum(int start)int j;for(j=start; j v =N; j+)if(bj)return j;return 0;int check()/*检查填入pos位置的整数是否合理*/int i,j;for(i=0; (j= (1) ) > =0; i+)if(!isPri
18、me(apos+aj)(2) ;(3) ;extend ()/*为下一方格找一个尚未使用过的整数*/a (4) =seIectNum(1);bapos=0;void change ()/*为当前方格找下一个尚未使用过的整数(找不到回溯)*/int j;while(pos > =0 && (j=seIectNum( (5) )=0)bapos-=1;if(pos v 0)return;bapos=1; apos=j; bj=0;int find ()int ok=1;pos=0; apos=1; bapos=0;doif(ok)if(pos=8)write(a);chang
19、e();AIINum+;/* 统计有多少种填法*/else extend();else change();ok=check();while(pos > =0);void main()int i;for(i=1; i < =N; i+) bi=1;find();prinrf("共有 d种不同填法!/n", AllNum);(分数:15.00 ) 正确答案:(解析(1) checkMatrixposi本处填空是在循环检查填入pos位置的整数是否合理,把与pos相邻的数都求和判断是否为质数。(2) return 0若不是质数则返回0,表示不可以。(3) return
20、1若相邻的数都是质数则返回1,表示可以。(4) +pos本处填空是为下一个方格找一个尚未使用过的整数。(5) apos+1本处填空是在循环为当前方格找下一个尚未使用过的整数。)解析:五、试题五(总题数:1,分数:15.00)5. 说明】Rectangle作为计算以下C+程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle和Square分别表示三角形、矩形和正方形;抽象类 Figure提供了一个纯虚拟函数getArea(),上述3种图形面积的通用接口。#include < iostream.b >#include < math.h >cl
21、ass Figurepublic:virtual double getArea0=0; /纯虚拟函数class Rectangle: (1)protected:double height;double width;public:Rectangle。;Rectangle(double height, double width)This- > height=height;This- >width=width;double getarea() return (2);class Square: (3)public:Square(double width) ;class Triangle:
22、(5)double la;double lb;double lc;public:Triangle(double la, double lb, double lc) this- > la=la; this- > lb; this- > lc;double getArea()double s=(la+lb+lc)/2.0; return sqrt(s*(s-l«a)*(s-l* b)*(s-l c);viod main()Figure* figures3=new Triangle(2,3,3), new Rectangle(5,8), new Square(5);for
23、(int i=0;i< 3;i+)cout << "figures" << i << "area=" << (figures")->getarea() << endl;(分数:15.00 ) 正确答案:(解析(1) public Figure本处由于Rectangle是派生类,需要公有继承 Figure。> height(2) height*width或 width*height 或 this- > height*this- > width 或 this-
24、 > width*this-本处是计算矩形的面积。(3) public Rectangle本处由于Square是派生类,需要公有继承Rectangle。(4) this-> height=this- > width=width 或 height=this- > width=width本处是正方形的构造函数,是给继承的Rectangle赋初值,由于正方形长等于宽,因此应该填入:this->height=this- > width=width 或 height=this- > width=width 。(5) public Figure本处由于Triangle 是派生类,需要公有继承Figure,因此应该填入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度旅游景点开发合同involving景区建设与经营权分配
- 新版垫资书合同标准版
- 2024年度服务合同:企业信息化建设与维护2篇
- 民办幼儿园教师合同范本
- 土地承包流转合同范本2篇
- 临时聘用协议书样板
- 酒店员工的劳动合同
- 2024版建筑施工用机械租赁合同3篇
- 《对数的创始人》课件
- 财务分析报告范文英文
- 手术再授权申请表
- 【基于杜邦分析体系的企业盈利能力分析文献综述及理论基础2700字】
- 基金经理绩效考核
- 医患沟通的法律基础
- 建筑工程项目管理体系
- 软件使用授权书
- 肥料、农药采购服务方案(技术方案)
- FAB-常用词汇介绍
- 放射防护管理机构(组织构成、管理部门、人员、职责)
- 2023-2024年司考刑法真题(含答案及解析)
- 上肢血管超声检查
评论
0/150
提交评论