【计算机类职业资格】中级软件设计师下午试题-29及答案解析.doc
《【计算机类职业资格】中级软件设计师下午试题-29及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】中级软件设计师下午试题-29及答案解析.doc(21页珍藏版)》请在麦多课文档分享上搜索。
1、中级软件设计师下午试题-29 及答案解析(总分:74.99,做题时间:90 分钟)一、试题一(总题数:1,分数:10.00)【说明】某大学准备开发一个学生课程注册系统,学生可以使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学习的课程进行登记注册,并可以查询成绩单;教师可以使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成,绩单;注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课程信息等。在每个学期的开始,学生可以获得该学期的课程目录表,课程目录表列出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等。新学期开始前两周为选课注册时间,在此期间学生可以选
2、课注册,并且允许改变或取消注册申请,开学两周后注册管理员负责关闭课程注册。每个学生可以选择不超过 4 门课程,同时指定 2 门侯选课程以备主选课程未选上。每门课程最多不能超过 10 人,最少不能低于 3 人,低于 3 人选课的课程将被取消。一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便学生付费。如果在实际注册过程中名额已满,系统将通知学生在提交课程表之前予以更改。在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取。【用例图】表 1 学生课程注册系统的实体类实体类 说明Professor 学校中讲课的教师student 学校
3、中注册课程的学生Schedule 学生在新学期选择登记的课程列表CourseCatalog 学校所有课程的目录Course 课程的基本信息CourseOffering 新学期课程的开设信息,如讲课教师、时间、地点等信息表 2 学生课程注册系统的边界类边界类 说明LoginForm 为教师、学生和注册管理员提供登录的操作RegisterCoursesForm 为学生提供选课注册的操作ViewReportForm 为学生提供成绩查询的操作selecrTeachCoursesForm 为教师提供查看学生选课情况的操作SubmitCradesForm 为教师提供登记成绩的操作MaintainProfe
4、ssorsForm 为注册管理员提供维护教师信息的操作MaintainStudentsForm 为注册管理员提供维护学生信息的操作MaintainCoursesForm 为注册管理员提供维护课程信息的操作CloseRegistrationForm 为注册管理员提供关闭注册的操作BillingSystemNotice 提供与收费系统的信息交换接口表 3 学生课程注册系统的控制类 控制类 说明RegisterCoursesControl 负责新学期学生的选课登记ViewReportControl 负责学生成绩的查询SelectTeachCoursesControl 负责新学期课程的学生选择情况Su
5、bmitGradesControl 负责学生成绩的登记CloseRegistrationControl 负责关闭课程注册【协作图】(分数:9.99)(1).【问题 1】在 UML 中,用例代表一个完整的功能,如与角色通信、进行计算或在系统内工作等。请简要说明用例具有哪些的特征,并指出用例图中(1)(3)处表示的内容。(分数:3.33)_(2).【问题 2】协作图与时序图是同构的,二者表示的都是同样的系统交互活动,只是各自的侧重点不同而已。根据题目提供的信息,指出协作图中(4)(8)处表示的内容。(分数:3.33)_(3).【问题 3】UML 采用 5 个互联的视图来描述软件系统的体系结构,即用
6、例视图(Usecase View)、设计视图(Design View)、进程视图(Process View)、实现视图(Implementation View)和展开视图(Deployment View)。系统模型中每一个视图的内容是由一些图来描述的,UML 中包含用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、分布图等 9 种图。对整个系统而言,其功能由用例图描述,静态结构由类图和对象图描述,动态行为由状态图、时序图、协作图和活动图描述,而物理架构则是由组件图和分布图描述。请分别指出用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、分布图的作用。(分数:3.33)_
7、二、试题二(总题数:1,分数:10.00)【说明】算法 2-1 是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:文件 提示信息(1+2)abc) 缺少对应左括号:第 2 行,第 4 列(def)gx) 缺少对应左括号:第 3 行,第 10 列(h)ij)(k(1ml) 缺少对应右括号:第 5 行,第 4 列;第 4 行,第 1 列在算法 2-1 中,stack 为一整数栈。算法中各函数的说明见表 4。表 4函数名 函数功能push (int i) 将整数 i 压人栈 stack 中pop( ) stack 的栈顶元素出栈emp
8、ty( ) 判断 stack 栈是否为空。若为空,函数返回 1,否则函数返回 0nextch( ) 读取文本文件中的下个字符,井返回该字符的 ASCII 值,将字符所在的行号以及字符在行中的位置分别存储到变量 row 和 col中,若遇到文件结束符,则将变量 EOF 置为 truekind (char ch) 判断字符 ch 是左括号还是右括号,若是左括号,函数返回 1,若是右括号,函数返回 2,若两者都不是,函数返回。【算法 2-1】将栈 stack 置空,置 EOF 为 falsech - nextch();while( not EOF) k - kind(CH); if(k= (1) )
9、 push( (2) );push( (3) ); elseif(k= (4) ) if(not empty() pop( ) ;pop( ); else 显示错误信息(缺少对应左括号或右括号); 显示行号 row;显示列号 col; endif endif ch - nextch( ); endwhileif(not empty() 显示错误信息(缺少对应左括号或右括号); while(not empty() row - pop() ; col - pop(); 显示行号 row; 显示列号 col; endwhile endif 为了识别更多种类的括号,对算法 2-1 加以改进后得到算法
10、2-2。算法 2-2 能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数 kind(char ch)的参数及其对应的返回值见表 5。 表五ch ( ) 其他返回值 1 2 3 4 5 6 0【算法 2-2】将栈 stack 置空,置 EOF 为 falsech -nextch();while(not EOF)k -kind(ch);if( k 0)if( 判断条件 1 )push( (5) );push( (6) );push( (7) );elseif( 判断条件 2 and 判断条件 3 )pop() ;pop() ;pop();else显示行号 row; 显示列号
11、 col;endifendifch - nextch();endwhileif(not empty( ) )显示错误信息(缺少对应左括号或右括号);while( not empty( ) )pop( ); rowpop( ); colpop( );显示行号 row;显示列号 col;endwhileendif(分数:10.00)(1).【问题 1】请将【算法 2-1】和【算法 2-2】中(1)(7)处补充完整。(分数:5.00)_(2).【问题 2】请从下面的选项中选择相应的判断逻辑填补【算法 2-1】中的“判断条件 1”至“判断条件 3”。注意,若“判断条件 2”的逻辑判断结果为假,就无需对
12、“判断条件 3”进行判断。 (a)字符是括号 (b)字符是左括号 (c)字符是右括号 (d)栈空 (e)栈不空 (f)栈顶元素表示的是与当前字符匹配的左括号(R)栈顶元素表示的是与当前字符匹配的右括号(分数:5.00)_三、试题三(总题数:1,分数:11.00)【说明】某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表 6 所示。(分数:11.00)(1).【问题 1】设计一的关系模式 Invoice 最高满足第几范式?为什么?设计一和设计二哪个更加合理?为什么?(分数:2.75)_(2).【问题 2】根据设计二中关系模式,以下 SQL 语句是用
13、于“建立 2005 年 1 月期间每张发票的发票号,交易日期,交易商品件数和交易总金额的视图”的不完整语句,请填补其中的空缺。CREATE VIEW Invoice -total (1) SELECT Invoice. ino, ldate, (2) , (3) FROM Invoice, lnvoicedetailWHERE (4) ANDldate BETWEEN 2005-01-01AND 2005-01-31GROUPBY (5) ;(分数:2.75)_(3).【问题 3】根据设计二中关系模式,以下 SQL 语句是用于“查询从未售出的商品信息”的不完整语句,请填补其中的空缺。SELEC
14、T Mno, Mname, priceFROM Merchandise (1) WHERE (2) (SELECT (3) FROM lnvoicedetailWHERE A. Mno=lnvoicedetail. Mno);(分数:2.75)_(4).【问题 4】设计二中关系 Merchandise 中由属性 price 表示商品价格,关系 lnvoicedetail 中的属性 unitprice 也表示商品价格。两个是否有必要同时存在?为什么?(分数:2.75)_四、试题四(总题数:1,分数:11.00)1.【函数 1 说明】函数 compare(SqList A, SqList B)的功
15、能是:设 A=(al,am)和 B=(b1,bn)均为顺序表,“比较”,两个顺序表 A 和 B 的大小。设 A 和 B 分别为 A 和 B 中除去最大共同前缀后的子表(例如,A=(y,x,x,z,x,z),B=(y,x,x,2,y,x,x,z),则两者中最大的共同前缀为 (y,x,x,z),在两表中除去最大共同前缀后的子表分别为 A=(x,z)和 B=(y,x,x,z)。若 A=B=空表,则 A=B;若A=空表,而 B空表,或者两者均不为空表,且 A的首元小于 B首元,则 AB:否则 AB。提示:算法的基本思想为:若相等,则 j+1,之后继续比较后继元素;否则即可得出比较结果。显然,j的初值应
16、为 0,循环的条件是 j 不超出其中任何一个表的范围。若在循环内不能得出比较结果,则循环结束时有 3 种可能出现的情况需要区分。【函数 1】int compare ( SqListA, SqList B)/若 AB,则返回-1;若 A=B,则返回 0:若 AB,则返回 1j =0;while(i (1) else (2) ;if(A. length = B. length) return(0);else if(A. lengthB. length)return(-1);else return(1)/compare /函数 1 的时间复杂度是 (3) 。【函数 2 说明】函数 exchanse_
17、L(SLnkL,int m)的功能是:用尽可能少的辅助空间将单链表中前 m 个结点和后 n 个结点的互换。即将单链表(a 1、a 2,a m,b 1,b 2,b n)改变成(b 1,b 2,b n,a 1, a 2,a m,)。【函数 2】void exchange_L(SLink k=1;while( k m+k;if( (6) /以指针 ha 记 a1结点的位置L - next = p - next; /将 B1结点链接在头结点之后p - next = NULL; /设 am的后继为空q= (7) ; /令 q 指向 b1结点while(q-next)q = (8) ; /查找 bn结点q
18、-next= (9) ; /将 a1结点链接到 bn结点之后/函数 2 的时间复杂度是 (10) 。(分数:11.00)_五、试题五(总题数:1,分数:11.00)2.【程序说明】本程序先从文件读人各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二叉树结点的健值是成绩,每个结点带一链表,链表结点存放取得该成绩的考生的准考证号。然后,程序按中序遍历检索二叉树,从高分到低分输出结果,使每行输出成绩及其取得成绩的考生的准考证号。【程序】#include stdio. h typedef struet idnode int id;struct idnode * next;ldNod
19、e;typedef struct marknode Iint mark;ldNode * head;struct marknode * left, * right;MarkNode;char fname = “sp07.dat“;main( )int id, mark;MarkNode * root = null;FILE * fp = fopen(fname,“ r“ );if(!fp) printf(“file%s open error, /n“ , fname);exit(0);while (!feop(fp) fscanf(fp,“ %d%d“, btree(fclose(fp);pr
20、int(root);btree(MarkNod * * mpptr, int id, int mark)ldNode * ip;MarkNode *mp = * mpptr;if (1) if (mark=p-mark) addldNODE ( (2) , id);else if ( mark mp - mark) btree (else btree(elseImp = ( marknode * ) malloc(sizeo (marknode) );mp - mark = mark;mp - left =mp - right = NULL;(3) addldNode(4) ;addldNod
21、e(ldNode * * ipp, int id)ldNode * ip = * ipp;if ( (5) )addldNode ( (6) ), id;else ip = (ldNode * )malloc(sizeof(ldNode) );sp - id = id;ip - next = NULL;(7) print(MarkNode * rap)ldNode *ip, *ip0;if (mp) print ( mp - left);printf(“ %6d: /t“ ,mp - mark);ip = mp - head;while(ip) printf(“ %6d“ ,ip - id);
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 中级 软件 设计师 下午 试题 29 答案 解析 DOC
