软件设计师模拟题第四套.docx
- 文档编号:13085112
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:16
- 大小:222.61KB
软件设计师模拟题第四套.docx
《软件设计师模拟题第四套.docx》由会员分享,可在线阅读,更多相关《软件设计师模拟题第四套.docx(16页珍藏版)》请在冰点文库上搜索。
软件设计师模拟题第四套
软件设计师模拟题第四套
●试题一
阅读下列说明以及图示(如图1所示),回答问题1~3。
【说明】
某大学准备开发一个学生课程注册系统,学生可以使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学习的课程进行登记注册,并可以查询成绩单;教师可以使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩单;注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课程信息等。
在每个学期的开始,学生可以获得该学期的课程目录表,课程目录表列出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等。
新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允许改变或取消注册申请,开学两周后注册管理员负责关闭课程注册。
每个学生可以选择不超过4门课程,同时指定2门侯选课程以备主选课程未选上。
每门课程最多不能超过10人,最少不能低于3人,低于3人选课的课程将被取消。
一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便学生付费。
如果在实际注册过程中名额已满,系统将通知学生在提交课程表之前予以更改。
在学期结束时,学生可以存取系统查看电子成绩单。
由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取。
【用例图】
图1学生课程注册系统的用例图
【协作图】
图2创建课程登记表的协作图
【时序图】
注释1:
学生打算注册新的课程。
注释2:
一张这学期可选择的课程列表。
注释3:
显示一张为学生选课用的空白登记表。
图3创建课程登记表的时序图
【问题1】
在UML中,用例代表一个完整的功能,如与角色通信、进行计算或在系统内工作等。
请简要说明用例具有哪些的特征,并指出用例图中
(1)~(3)处表示的内容。
【问题2】
协作图与时序图是同构的,二者表示的都是同样的系统交互活动,只是各自的侧重点不同而已。
根据题目提供的信息,指出协作图中(4)~(8)处表示的内容。
【问题3】
UML采用5个互联的视图来描述软件系统的体系结构,即用例视图(Use-caseView)、设计视图(DesignView)、进程视图(ProcessView)、实现视图(ImplementationView)和展开视图(DeploymentView)。
系统模型中每一个视图的内容是由一些图来描述的,UML中包含用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、分布图等9种图。
对整个系统而言,其功能由用例图描述,静态结构由类图和对象图描述,动态行为由状态图、时序图、协作图和活动图描述,而物理架构则是由组件图和分布图描述。
请分别指出用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、分布图的作用。
●试题二
阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。
【说明】
算法2-1是用来检查文本文件中的圆括号是否匹配。
若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:
文件提示信息
(1+2)
abc)缺少对应左括号:
第2行,第4列
((def)gx)缺少对应左括号:
第3行,第10列
(((h)
ij)(k
(1ml)缺少对应右括号:
第5行,第4列;第4行,第1列
在算法2-1中,stack为一整数栈。
算法中各函数的说明见表4。
【算法2-1】
将栈stack置空,置EOF为false
ch<-nextch();
while(notEOF)
k<-kind(CH);
if(k==
(1))
push(
(2));push((3));
elseif(k==(4))
if(notempty())
pop();pop();
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch<-nextch();
endwhile
if(notempty())
显示错误信息(缺少对应左括号或右括号);
while(notempty())
row<-pop();col<-pop();
显示行号row;显示列号co1;
endwhile
endif
为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。
算法2-2能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。
改进后,函数kind(charch)的参数及其对应的返回值见表5。
【算法2-2】
将栈stack置空,置EOF为false
ch<-nextch();
while(notEOF)
k<-kind(ch);
if(k>0)
if(判断条件1)
push((5));push((6));push((7));
elseif(判断条件2and判断条件3)
pop();pop();pop();
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch<-nextch();
endwhile
if(notempty())
显示错误信息(缺少对应左括号或右括号);
while(notempty())
pop();rowpop();colpop();
显示行号row;显示列号col;
endwhile
endif
【问题1】
请将【算法2-1】和【算法2-2】中
(1)~(7)处补充完整。
【问题2】
请从下面的选项中选择相应的判断逻辑填补【算法2-2】中的"判断条件1"至"判断条件3"。
注意,若"判断条件2"的逻辑判断结果为假,就无需对"判断条件3"进行判断。
(a)字符是括号
(b)字符是左括号
(c)字符是右括号
(d)栈空
(e)栈不空
(f)栈顶元素表示的是与当前字符匹配的左括号
(g)栈顶元素表示的是与当前字符匹配的右括号
●试题三
阅读下列说明,回答问题1~问题3,将解答填入答题纸的对应栏内。
【说明】
某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表6所示。
对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计(下划线表示主关键字)
设计一:
顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)
收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话phone)
商品Merchandise(商品代码Mno,商品名称Mname,价格price)
发票Invoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno,商品代码Mno,单价unitprice,数量amount)
设计二:
顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)
收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话phone)
商品Merchandise(商品代码Mno,商品名称Mname,价格price)
发票Ivoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno)
发票明细Invoicedetail(发票号码Ino,商品代码Mno,单价unitprice,数量amount)
【问题1】
设计一的关系模式Invoice最高满足第几范式?
为什么?
设计一和设计二哪个更加合理?
为什么?
【问题2】
根据设计二中关系模式,以下SQL语句是用于"建立2005年1月期间每张发票的发票号,交易日期,交易商品件数和交易总金额的视图"的不完整语句,请填补其中的空缺。
CREATEVIEWInvoice-total
(1)
SELECTInvoice.Ino,Idate,
(2),(3)
FROMInvoice,Invoicedetail
WHERE(4)AND
IdateBETWEEN′2005-01-01′AND′2005-01-31′
GROUPBY(5);
【问题3】
根据设计二中关系模式,以下SQL语句是用于"查询从未售出的商品信息"的不完整语句,请填补其中的空缺。
SELECTMno,Mname,price
FROMMerchandise
(1)
WHERE
(2)
(SELECT(3)
FROMInvoicedetail
WHEREA.Mno=Invoicedetail.Mno);
【问题4】
设计二中关系Merchandise中由属性price表示商品价格,关系Invoicedetail中的属性unitprice也表示商品价格。
两个是否有必要同时存在?
为什么?
●试题四
阅读下列函数说明,将应填入(n)处的字句写在答卷纸的对应栏内。
【函数1说明】
函数compare(SqListA,SqListB)的功能是:
设A=(al,…,am)和B=(bl,…,bn)均为顺序表,"比较",两个顺序表A和B的大小。
设A'和B'分别为A和B中除去最大共同前缀后的子表(例如,A=(y,x,x,z,x,z),B=(y,x,x,z,y,x,x,z),则两者中最大的共同前缀为(y,x,x,z),在两表中除去最大共同前缀后的子表分别为A′=(x,z)和B′=(y,x,x,z))。
若A′=B′=空表,则A=B;若A′=空表,而B′≠空表,或者两者均不为空表,且A′的首元小于B'的首元,则A 否则a>B。 提示: 算法的基本思想为: 若相等,则j+l,之后继续比较后继元素;否则即可得出比较结果。 显然,j的初值应为0,循环的条件是j不超出其中任何一个表的范围。 若在循环内不能得出比较结果,则循环结束时有3种可能出现的情况需要区分。 【函数1】 intcompare(SqListA,SqListB) { //若A 若a>B,则返回1 j=0; while(i< (1)&&j< B.length) if(A.elem[j]< B.elem[j])return(-1); elseif(A.elem[j]> B.elem[j])return (1); else (2); if(A.length== B.length)return(0); elseif(A.length< B.length)return(-1); elsereturn (1); }//compare //函数1的时间复杂度是(3)。 【函数2说明】 函数exchange_L(SLink&L,intm)的功能是: 用尽可能少的辅助空间将单链表中前m个结点和后n个结点的互换。 即将单链表(a1,a2…,am,b1,b2,…,bn)改变成(b1,b2,…,bn,a1,a2,…,am)。 【函数2】 voidexchange_L(SLink&L,intm) { if((4)&&L->next)//链表不空且m! =0 { P=L->next;k=1; while(k { P=(5);++k; } if((6)&&p->next)//n! =0时才需要修改指针 { ha=L->next;//以指针ha记a1结点的位置 L->next=p->next;//将b1结点链接在头结点之后 p->next=NULL;//设am的后继为空 q=(7);//令q指向b1结点 while(q->next)q=(8);//查找bn结点 q->next=(9);//将a1结点链接到bn结点之后 } } } //函数2的时间复杂度是(10)。 ●试题五 阅读下列程序说明和C程序,将应填入程序中(n)处的字句,写在答卷纸的对应栏内。 【程序说明】 本程序先从文件读入各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二叉树结点的健值是成绩,每个结点带一链表,链表结点存放取得该成绩的考生的准考证号。 然后,程序按中序遍历检索二叉树,从高分到低分输出结果,使每行输出成绩及其取得成绩的考生的准考证号。 【程序】 #include typedefstructidnode{ intid; structidnode*next; }IdNode; typedefstructmarknode{ intmark; IdNode*head; structmarknode*left,*right; }MarkNode; charfname[]="sp07.dat"; main() {intid,mark; MarkNode*root=null; FILE*fp=fopen(fname,"r"); if(! fp){ printf("file%sopenerror.\n",fname); exit(0); } while(! feop(fp)){ fscanf(fp,"%d%d",&id,&mark); btree(&root,id,mark); } fclose(fp); print(root); } btree(MarkNod**mpptr,intid,intmark) {IdNode*ip; MarkNode*mp=*mpptr; if (1){ if(mark==p->mark)addIdNODE( (2),id); elseif(mark>mp->mark)btree(&mp->left,id,mark); elsebtree(&mp->right,id,mark); }else {mp=(marknode*)malloc(sizeo(marknode)); mp->mark=mark; mp->left=mp->right=NULL; (3) addIdNode(&mp->head,id); (4); } } addIdNode(IdNode**ipp,intid) {IdNode*ip=*ipp; if((5))addIdNode((6)),id; else{ ip=(IdNode*)malloc(sizeof(IdNode)); sp->id=id; ip->next=NULL; (7) } } print(MarkNode*mp) {IdNode*ip,*ip0; if(mp){ print(mp->left); printf("%6d: \t",mp->mark); ip=mp->head; while(ip){ printf("%6d",ip->id); ip0=ip; ip=ip->next; free(ip0); } printf("\n");printf(mp->right);free(mp); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 设计师 模拟 第四