中级软件设计师下午试题-13_第1页
中级软件设计师下午试题-13_第2页
中级软件设计师下午试题-13_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中级软件设计师下午试题-13(总分:80.00,做题时间:90分钟)、B试题一 /B(总题数:1,分数:15.00)1. 【说明】A公司决定开发一套公共交通自动售票系统,系统要求如下所述。(1)乘客能按以下3步操作购票:选定目的地,投入钱币,获得一张票。(2)并且仅当乘客选定目的地后,系统才接收投钱;每次投入的钱只购买一张票。(3)只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快出票。(4)如需找钱,则在出票的同时应退还多余的钱。(5)如果乘客投入的钱不够票价,或者票库中没有所需要的票时,系统将全额退钱,并允许乘客另选目的地,继续购票。(6)岀票前乘客可以单击“取消”按钮取消购票,

2、系统将全额退出该乘客投入的钱,并允许乘客另选目的地,继续购票。(7)出票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚戋表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。对售票全过程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移图中,用双线 框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在有向边旁用rwii”形式注明4个动作与转换 用0表示不启动。I

3、该公司还制定了一个过程启动表,用以表明状态迁移图中的图中的4个过程之间的“启动”关系, 即说明哪个动作将启动哪个过程。用1表示启动, 启动的过程将根据获得的输入数据产生输岀数据,未唐动的过程则不会产生输岀数据,该表中没有列岀的过程,其执行与否与事件无关。I【问题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。二、B试题二/B( 总题数:1,分数:5.00)2. 【说明】 学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授各带有若干研究生; 每个班有若干学生,每个学生选修

7、若干课程,每门课可由若干学生选修。【问题1】用E-R图画出此学校的概念模型,用文字写出各实体和联系的属性。【问题2】 将E-R图转换成关系模型。【问题3】 指岀各关系模型的候选键。(分数:5.00 )正确答案:()解析:【问题1】用E-R图表示的概念模型如下所示。各实体的属性如下所述。系:系编号,系名。班级:班级编号,班级名。教研室:教研室编号,教研室名。学生:学号,姓名,学历。课程:课程编号,课程名。教员:职工号,姓名,职称。各联系的属性为: 选修课:成绩。 其他联系无属性。【问题2】其关系模型为:系(系编号,系名,学校名)班级(班级编号,班级名,系编号)教研室(教研室编号,教研室,系编号)

8、学生(学号,姓名,学历,班级编号,导师职工号 )课程(课程编号,课程名)选 课(学号,课程编号,成绩)【问题3】 各关系模型的候选键为:系一系编号;班级一班级编号,教研室教研室编号,学生一学号;课程一课程编号;教员一职工号;选课一学号,课程编号。解析在画E-R图时,可以按照对问题的描述一步一步画岀每一句话中涉及的实体,再根据给岀的实际语义,画岀实体之 间的联系。例如,每个教研室有若干教员,每个班有若干学生,可以画岀教研室和教员、班级和学生之间一对多的联系。再比如,有的教授和副教授每人各带若干研究生,而一个研究生一般指定一个导师,这是 通常的规则,所以可以画岀教员和学生之间一对多的关系。按照上述

9、的分析方法,从题的说明中,可以得到如下实体和联系。实体:学校、系、教研室、班级、教员、学生、课程。联系:校一系、系一室、系一班、室一教、班一生、指导、选修。具体说明:实体“学校”和实体“系”是“一对多”的“校系”联系。实体“系”和实体“班级”是“一对多”的“系一班”联系。实体“系”和实体“教研室”是“一对多”的“系一室”联系。实体“班级”和实体“学生”是“一对多”的“班一生”联系。实体“教研室”和实体“教员”是“一对多”的“室一教”联系。实体“学生”和实体“课程”是“多对多”的“选修”联系。实体“教员”和实体“学生”是“一对多”的“指导”联系。、B试题三/B( 总题数:1,分数:15.00)3

10、. 说明】(1)这是一个图书馆支持系统。(2)图书馆应用系统可以将图书和杂志借给借书者,这些借书者已经在系统中注册了,图书和杂志也已经注册过了。(3)图书馆负责新书的购买,一本流行图书会多买几本。当旧书和杂志已经过时或破旧不堪时,将它们从图书馆应用系统中删除。(4)图书馆馆员是图书馆的员工。他们与客户(借书者)打交道,并且是在图书馆软件系统提供的支持下开展工作的。(5)借书者可以预订图书馆中当前还没有的图书或杂志,这样,当某借书者所预订的图书或杂志归还回来或购进时,应 用系统就通知这个预订人。当该借书者借阅了他所预订的图书或杂志后,或者通过一个显式的取消过程取 消他的预订后,他的本次预订就被取

11、消了。(6)图书馆应用系统能够容易地建立、修改和删除系统中的信息,包括书名、借书者、借阅信息和预订信息。(7)图书馆应用系统能够在所有流行的Web浏览器平台(Internet Explorer 5.1以上,Netscape 4.0 以上等等)上运行。(8)图书馆应用系统应该易于扩展新功能。问题】分析这个图书馆系统中涉及的角色和用例,完成用例图。*(分数:15.00 ) 正确答案:()解析:参与者1 注册用户 参与者2图书馆管理员 参与者3借书者参与者4图书馆馆长 用 例1 登录 用例2搜索 用例3浏览 用例4管理借书者 用例5管理书目 用例6管 理标题 用例7担任借书者的身份用例8预订 用例9

12、取消预订 用例10借书 用例11 还书解析由试题给岀的用例图可以看到有4个参与者,并且他们之间是泛化(继承)的关系,结合案例描述进行分析。图书馆系统的参与者有图书管理员(Librarian) 和借书者(Borrower),因为他们二者都是该系统的用户。图书管理员具有添加借书者、标题和书目这些管理能力,而借书者则是来借阅或预订图书 和杂志的用户。偶尔,图书馆馆员或另一个图书馆也可能成为借书者。最后,我们有一个图书馆馆长(MasterLibrarian)这一参与者,这个角色具有管理其他图书馆馆员的能力。另外,在该图书馆有某本书籍的副本(一个书目)之前,先向该系统添加一个标题,这是可以的,目的是为了

13、让借书者能够进行预订。图书馆系统中的用例有以下这些: Login(登录) Search(搜索) Browse(浏览) Make Reservation 预订) Remove Reservation 取消预订) Checkout ltem(借书) Return ltem(还书) Manage Titles(管 理标题) Manage Items(管理书目) Manage Borrowers(管理借书者) Manage Librarians(图书管理 员) Assume Identity of Borrower(担任借书者的身份)上述列表中需要注意的是Title(标题)和ltem(书目)这两个概念

14、。因为在一个图书馆中,一本流行书通常有多本副本,所以系统必须把标题(可以是一本书的名称、书的作者 ) 和同一标题的一个单一物理副本 ( 这是一个书目 ) 的概念分开。 从实用角度考虑,为了 限制本题的复杂度,这里不完成某些“ Manage管理)”用例 (例如ManageLibrarians 和ManageBorrowers) 的实现。四、B 试题四 /B( 总题数: 1,分数: 15.00)4. 【说明】本程序在3X3方格中填入1N(N>10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3X3方格中的每个方格按行按列(先行后列)序号排

15、列为: 0, 1, 2, 3, 4, 5, 6, 7, 8。 程序采用试探法,即从序号为 0的方格开始,为当前方格寻找 一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格 找到一个合理的可填整数,就要回退到前一方格,调整前一方格的填入整数;直至序号为8 的方格也填入合理的整数后,就找到了一个解,将该解输出。再调整序号为 8 的方格所填整数,继续去找下一个解。为 了检查当前方格的填入整数的合理性,程序引入二维数组 check Matrix ,存放需要进行合理性检查的相邻 方格的序号。# include < stdio. h > # defin

16、e N 12 int bN+1; int pos; int a9;/*用于存储诸方格所填入的整数 */ int AllNum=0;/* 统计有多少种填法 */ 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;i<3; i+) for(j=0; j <3; j+) printf("%3d", a3*i+j); printf("/n"); int isPrime(int m) in

17、t i; if(m=2)return 1; if(m=1II m%2=0)return 0; for(i=3; i*i < m;) if(m%i=O)return 0;i+=2; return 1; int selectNum(int start) int j; for(j=start; j< =N; j+) if(bj)returnj; return 0; int check()/*检查填入 pos 位置的整数是否合理 */ int i,j; for(i=0; (j=U (1)/U)>=0; i+) if(!isPrime(apos+aj) U(2) /U; U(3) /U

18、; extend ()/*为下一方格找一个尚未使用过的整数 */ aU(4) /U=selectNum(1);bapos=0; void change()/* 为当前方格找下一个尚未使用过的整数 (找不到回溯 )*/ int j; while(pos>=0 &&(j=selectNum(U (5) /U)=0) bapos-=1; if(pos< 0)return; bapos=1; apos=j;bj=0; int find () int ok=1; pos=0; apos=1;bapos=0; do if(ok) if(pos=8) write(a);chang

19、e(); AllNum+;/* 统计有多少种填法 */ 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 若不是质数则返

20、回 0,表示不可以。 (3)return 1 若相 邻的数都是质数则返回 1,表示可以。 (4)+pos 本处填空是为下一个方格找一个尚未使用过的整数。 (5)apos+1 本处填空是在循环为当前方格找下一个尚未使用过的整数。五、B 试题五 /B( 总题数: 1,分数: 15.00)5. 【说明】以下C+程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle 和 Square 分别表示三角形、矩形和正方形;抽象类 Figure 提供了一个纯虚拟函数 getArea() 作为计算上述 3 种图形面积的通用接口。 #include < io

21、stream.b > #include < math.h > classFigure public: virtual double getArea0=0; /纯虚拟函数 ; class Rectangle:U (1)/U protected: double height; double width; public: Rectangle(); Rectangle(double height, double width) This- > height=height; This- > width=width; double getarea() returnU (2) /

22、U; ; class Square:U (3) /U public: Square(double width) U (4) /U; ;class Triangle:U (5) /U double la; double lb; double lc; public: Triangle(double la, double lb, double lc) this-> la=la; this- > lb; this- > lc; double getArea() doubles=(la+lb+lc)/2.0; return sqrt(s*(s-la)*(s-lb)*(s-lc); ;

23、viod main() Figure* figures3= new Triangle(2,3,3), new Rectangle(5,8), new Square(5); for(int i=0;i3;i+) cout << "figures" << i << "area=" << (figuresi)- >getarea() << endl; (分数: 15.00 ) 正确答案: ()解析: 解析 (1)public Figure 本处由于 Rectangle 是派生类,需要公有继承 F

24、igure 。 (2)height*width 或 width*height 或 this- > height*this- > width 或 this- > width*this- > height 本处是计算矩形的面 积。(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 ,因此应该填入: public Figure 。六、B 试题六 /B( 总题数:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论