中级软件设计师下午试题模拟29有答案.docx

上传人:b****9 文档编号:25003715 上传时间:2023-06-03 格式:DOCX 页数:17 大小:120.51KB
下载 相关 举报
中级软件设计师下午试题模拟29有答案.docx_第1页
第1页 / 共17页
中级软件设计师下午试题模拟29有答案.docx_第2页
第2页 / 共17页
中级软件设计师下午试题模拟29有答案.docx_第3页
第3页 / 共17页
中级软件设计师下午试题模拟29有答案.docx_第4页
第4页 / 共17页
中级软件设计师下午试题模拟29有答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

中级软件设计师下午试题模拟29有答案.docx

《中级软件设计师下午试题模拟29有答案.docx》由会员分享,可在线阅读,更多相关《中级软件设计师下午试题模拟29有答案.docx(17页珍藏版)》请在冰豆网上搜索。

中级软件设计师下午试题模拟29有答案.docx

中级软件设计师下午试题模拟29有答案

中级软件设计师下午试题模拟29

试题一

阅读以下说明和流程图,回答问题1至问题3,将答案写在对应栏内。

【说明】

下面给出的是某高级公寓管理系统的一套分层数据流图。

其功能描述如下所述。

(1)系统随时根据住户送来的入住单更新住户基本信息文件。

(2)每月初系统根据物业管理委员会提供的月附加费(清洁费、保安费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。

住户交费时,系统输入交费凭证,核对后输出数据给住户。

(3)系统定期向物业管理委员会提供住房分配表和交费情况表。

(4)住户因分户或换房,在更新账户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分尸或换房前的房租。

假定题中提供的顶层图是正确的,请回答下列问题。

1.【问题1】

指出哪张图中的哪些文件可不必画出。

答案:

0层图中的“房租文件”和“交费文件”是局部文件,可不必画出。

2.【问题2】

指出在哪些图中遗漏了哪些数据流,回答时请用如下形式之一:

XX图中遗漏了XX加工(或文件)流向XX加工(或文件)的XX数据流。

XX加工XX遗漏了输入(或输出)数据流XX。

答案:

①①加工1子图中,遗漏了从“住户基本信息文件”到加工1.1的数据流。

②加工1子图中,加工1.6遗漏了输出数据流:

“住房分配表”。

③加工2子图中,加工2.1遗漏了输入数据流:

“月附加费表”。

④加工2子图中,加工2.4遗漏了输出数据流:

“收据”。

3.【问题3】

指出加工图2子图中加工2.3能检查出哪些不合格交费凭证。

答案:

交费凭证中有非法字符。

交费文件中不存在相应的交费凭证记录。

[解答]题型特点、解题的思路和方法已经在模拟试题1中的下午试题1的解析中给出,请考生参考,这里不再详述。

问题1是要找出哪些文件不必画出,就是要找出那些在本层图中的非公共文件,观察各个图,可以发现0层图中的房租文件和交费文件是非公共文件。

问题2是要找出遗漏的数据流,可以使用平衡原则。

因为试题中假设顶层图是正确的,所以可以先从0层图开始找。

对比0层图和顶层图,可以看出0层图中完整地包含了顶层图中出现的数据流。

分别对比0层图和加工1子图,0层图与加工2子图,注意加工与加工之间,加工与文件之间,加工与外界之间是否可以完整地表现其父图中概括性表现的事实。

要按照加工的顺序,考虑实际的流程,可以更容易解决问题。

0层图中加工1出现的输出数据流“住房分配表”在加工1子图中没有出现,通过分析流程,“住房分配表”应该由1.6加工“制作住房分配报告”流出。

在加工1子图中,1.1加工需要使用住户基本信息文件,所以该图中遗漏了从“住户基本信息文件”到1.1加工的数据流。

在加工1子图中,没有其他的遗漏。

同理,寻找加工2子图中的遗漏数据流。

问题3,在子加工2.3中可以查出的不合格交费凭证是:

交费凭证中有非法字符(语法错误),凭证文件中不存在相应的记录(语义错误)。

试题二

阅读以下说明,回答问题1至问题3,将答案写在对应栏内。

【说明】

关于一位花商有以下一些事实。

(1)销售在不同地区生长的花,这些地区一年的量低温度在一定范围内变化。

(2)想用编号来表示发货类型。

(3)要出售某些类型的花。

假定已经通过SQL语句建立了基本表:

CREATETABLEZone

IDChar

(2)PRIMARYKEY,

LowerTempNumber(3),

UpperTempNumber(3)

);

CREATETABLEDelivery

IDchar

(2)PRIMARYKEY,

CategoryVarChar(5),

DelSizeNumber(5,3)

):

CREATETABLEFlowerInfo

IDChar(3)CONSTRAINT

Flowerinfo_id_pkPRIMARYKEY,

ComNameVarChar(25),

LatNameVarChar(30),

CzoneNumber(3),

HzoneNumber(3),

DeliveredNumber(3),

SunNeedChar(3),

PRIMARYKEY(ID)

):

地区(ID,最高温度,最低温度)

发货(ID,发货类型,发货规格)

花的信息(ID,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)1.【问题1】

写出语句,将(ID=1,Category=pot,DelSize=1.5)的数据插入DELIVERY表中。

答案:

INSERTINTODelivery(ID,Category,DelSize)VALUE('1','pot',1.5);

2.【问题2】

写出实现语句:

查询以花瓶(pot)形式发货的所有鲜花的ID,普通名以及花瓶的规格。

得到结果表按普通名的字母逆序打印。

答案:

SELECTFlowerinfo.ID,FlowerInfo.ComName,Delivery.DelSize

FromFLOWERINFOASF,DELIVERYASD

WHEREF.Delivered=D.idANDD.Category='pot'

ORDERBYF.ComNameDESC;

3.【问题3】

(1)把对表ZONE的INSERT权限授予用户Smith,并允许他再将此权限授予其他人。

(2)收回已经授予Tom的对FlowerInfo中属性ComName的修改权限。

(3)建立视图viewpot,表现问题2的功能。

答案:

(1)GRANTINSERTONTABLEZONETOSMITHWITHGRANTOPTION;

(2)REVOKEUPDATE(ComName)ONTABLEFLOWERINFOFROMTOM;

(3)CREATEVIEWViewpot(ID,ComName,DelSize)

AS

SELECTFlowerInfo.ID,FlowerInfo.ComName,Delivery.DelSize

FromFLOWERINFOASP,DELIVERYASD

WHEREF.Delivered=D.IDANDD.Category='pot'

ORDERBYF.ComNameDESC;

[解答]问题1的插入语句很简单,只是考查考生基本的SQL语言能力。

Insert语句的基本格式如下:

INSERTINTO基本表名(字段名[,字段名]…)

VALUES(常量[,常量]…);

问题2中的查询需要两个表:

delivery和flowerinfo,必须知道如何连接这两个表。

SELECT语句的基本格式如下:

SELECT[ALL|DISTINCT]<目标列表达式>[别名][,<目标列表达式>[别名]]…

FROM<表名或视图名>[别名][,<表名或视图名>别名]]…

[WHERE<条件表达式>]

[GROUPBY<列名1>[HAVING<条件表达办>]]

[ORDERBY<列名2>[ASC|DESC]];

SQL语言中的数据控制语句有授权(GRANT),收回权限(REVOKE),一般考生对这两个语句的掌握可能会不熟悉。

SQL语言用CREATEVIEW命令建立视图,其一般格式为:

CREATEVIEW<视图名>[(<列名>(<,<列名>)…)]

AS<子查询>

[WITHCHECKOPTION];

SQL语言用GRANT语句向用户授予操作权限,GRANT语句的一般格式为:

GRANT<权限>[,<权限>]…

[ON<对象类型><对象名>]

TO<用户>[,用户>]…

[WITHGRANTOPTION];

其语义是将对指定操作对象的指定操作权限授予指定的用户。

[WITHGRANTOPTION]是可将获得的权限授予他人。

授予的权限可以由DBA或其他授权者用REVOKE语句收回。

REVOKE语句的一般格式为:

REVOKE<权限>[,<权限>]…

[ON<时象类型><对象名>]

FROM<用户>[,<用户>]…;

试题三

阅读以下说明和图,回答问题1和问题2,将答案写在对应栏内。

【说明】

某教学管理系统的用户是教学管理人员、教师和学生。

系统主要提供学生选课管理和学生成绩管理两方面的功能。

(1)学生选修课管理

主要功能是管理新学期开始时,学生对选修的课程进行选课注册工作。

新学期开始后的前两周为学生试听、选课注册时间;允许校内各院系学生跨专业跨年级选修课程;学生可以在校园网的任何一个终端进行选课。

①新学期选修课程表生成:

各学院教学管理人员在新学期开始前,将准备开设的选修课程名称、课程代码、总课时、上课时间、学分、任课教师和上课教室录入系统,供学生选课使用。

新学期开学两周后,系统自动将实际选课学生少于10人的课程停开,并删除该课程;教学管理人员打印学生选课注册名单和开课通知书,送交有关部门和任课教师。

②学生选课注册:

新学期开学前两周为学生试听、选课注册时间,并允许改变或取消注册申请。

学生调用待选课程表,系统显示课程名、课程代码、任课教师、上课时间、总课时、上课教室、学分和本课程己选修人数。

学生所选几门课程在上课时间上不能冲突:

若一门课程实际选课学生已达到40人时,停止选课。

当学生退出系统时,系统提示该学生所选的几门课程、任课教师、上课时间、教室、学分和学分总计。

③选修课程查询:

选修课程表信息查询,用户是教师、学生和教学管理人员。

系统显示课程名、课程代码、任课教师、上课时间、总课时、上课教室、学分和本课程已选修人数。

查询关键词可为学院名称、专业、授课教师等。

学生选课情况查询:

教师和教学管理人员可以查看学生的选课情况。

查询关键词可以为学生姓名(学号)、课程名称(课程代码)、授课教师等。

学生只能查自己所选课程内容,不允许查其他同学选课情况。

教师简历查询:

用户是学生、教师和教学管理人员。

查询关键词可为教师姓名、性别、职称、年龄等单关键词或组合关键词。

④信息统计与报表生成:

各学院教学管理人员对学生选课注册信息进行统计(按课程、专业等),打印汇总报表。

⑤把学生选课注册信息传送到财务管理系统,计算学生应交纳的费用。

(2)学生成绩管理

①学生考试成绩录入:

各学院教学管理人员将学生考试成绩录入系统。

录入学生成绩时,系统自动检查财务系统传来的选课交费信息,核对该学生是否已经交纳本门课程的费用,没有交纳费用者,不给成绩。

②成绩查询;教师和教学管理人员可查询学生各门课程的成绩。

查询关键词可为学生姓名(学号),课程名(课程代码)等。

学生只能查自己各门课程的成绩,不允许查其他同学成绩。

③成绩汇总与报表生成:

教学管理人员对学生考试成绩信息进行统计(按学生、课程、专业等),打印汇总报表。

向学校教务管理系统发送汇总信息表格等,不反馈信息。

1.【问题1】

完成下面的教学管理系统最高层用例图。

答案:

1——教学管理员

2——财务系统

3——学校教务系统

4——选修课管理

5——学生成绩管理

2.【问题2】

说明用例模型的功能,用例图的主要组成部分,用例建模的步骤。

答案:

用例模型是表达系统外部事物(行为者)与系统之间交互的可视化工具。

一个系统的用例模型由若干用例图组成,用例图的主要成分有用例、行为者和系统,它用简单的图标元素准确地描述了行为者(角色)与系统的交互情况和系统的功能(用例)。

用例建模的步骤是:

(1)确定系统的范围和边界。

(2)确定角色和用例。

(3)对用例进行描述。

(4)定义用例之间的关系。

(5)审核用例模型。

[解答]首先分析系统边界,这个教学管理系统与学校教务管理系统和财务管理系统有系统边界,学校教务管理系统只接受学院教学管理系统的汇总信息报表等,不反馈信息;财务管理系统接收学院学生选课情况信息作为收费依据,反馈学生交费信息。

试题中给出的最高层用例图中显示,有5名参与者,并且已经标出教师和学生,可以从已知中得出还有教学管理员。

角色2和角色3都只对一个用例发生关系,并且角色3与用例5是单向传递,综合分析可得出角色3是学校教务管理系统,用例5是学生成绩管理,那么,角色2就是财务系统,用例4是选修课管理,角色1是教学管理员。

试题四

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。

1.【说明】设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。

本程序,输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。

程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j>。

如果这样,从站点x至站点y的最少上车次数便对应图G中从点x到点y的最短路径长度。

而程序要求的换车次数就是上车次数减1。

#include<stdio.h>

#defineM20

#defineN50

inta[N+1];/*用于存放一条线路上的各站编号*/

intg[N][N];/*严存储对应的邻接矩阵*/

intdist[N];/*严存储站0到各站的最短路径*/

intm,n;

voidbuildG()

{inti,j,k,sc,dd

printf(“输入公交线路数,公交站数\n”);

scanf("%d%d",&m,&n);

for(i=0;i<n;i++)/*邻接矩阵清0*/

for(j=0;j<n;j++)

g[i][j]=0;

for(i=0;i<m;i++)

{printf("沿第%d条公交线路的各站编号(0<=编号<=%d,-1结束):

\n)",i+1,n-1);

sc=0;/*当前线路站计数器*/

while

{scanf("%d",&dd);

if(dd=-1)break;

if(dd>=0&&dd<n);

}

a[sc]=-1;

for(k=1;a[k]>=0;k++)/*处理第i+1条公交线路*/

for(j=0;j<k;j++)

g=1;

}

}

intminLen()

{intj,k;

for(j=0;j<n;j++)

dist[j]=g[0][j];

dist[0]=1;

do{

for(k=-1,j=0;j<n;j++)/*找下一个最少上车次数的站*/

if(dist[j]>0&&(k==-1||dist[j]<dist[k]))

k=j;

if(k<0||k==n-1)

break;

dist[k]=-dist[k];/*设置k站已求得上车次数的标记*/

for(j=1;j<n;j++)/*调整经过k站能到达的其余各站的上车次数*/

if(&&(dist[j]=0||-dist[k]+1<dist[j]))

dist[j]=;

}while;

j=dist[n-1];

return;

}

voidmain()

{intt;

buildG();

if((t=minLen())<0)

printf("无解!

\n");

else

printf(“从0号站到%d站需换车%d次\n”,n-1,t);

}

答案:

[解答]

(1)a[sc++]=dd

将dd赋值给当前线路的a[sc],并同时将当前线路站计数器加1。

(2)[a[J][a[k]]

将a[j]和a[k]之间置为通路1。

(3)dist[j]>=0&&g[k][j]==1

若dist[j]并且k和j之间有通路,或-dist[k]+1<dist[j],也就是经过k对于j来说上车次数更少,则调整经过k站能到达的其余各站的上车次数。

(4)-dist[k]+1

让dist[j]取经过k的更少上车次数-dist[k]+1。

(5)k<0?

-1:

j-1

若k小于0,表示无解;否则返回j-1也就是上车次数减1。

试题五

阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。

1.【说明】[程序6说明]单源最短路径的分支限界算法。

constintMAXNUM=29999;

#include<iostream>

#include<vector>

#include<algorithm>

#include<functional>

usingnamespacestd;

template<classVertexType,classEdgeType>

classMinNode{//程序中使用的最小化堆的结点说明

friendclassGraph<VertexType,EdgeType>

public:

MinNode(intnl,EdgeTypelength1)

{VexNum=nl;

length=length1;

}

booloperator>(constMinNode<VertexType,EdgeType>&p)const

{return>p.length;

}

private:

intVexNum;

//记录源点序号,序号数组p及distance下标相一致。

源点为初始扩展顶点

EdgeTypelength;

//记录源点到本顶点的当前最短路径的长度,源点到自身的长度为0

}

template<classVertexType,classEdgeType>

voidGraph<VertexType,EdgeType>:

:

shortestpath(VertexTypestart){

intj,k,source;//source记录源点的序号。

EdgeType*distance=;

int*p=newint[MaxNumVertex];

vector<MinNode<VertexType,EdgeType>>H;

for(source=0;source<MaxNumVertex;source++)

{if(NodeList[source]==start)break;}

if(source>=MaxNumVertex){cout<<”Thisiserror!

”<<end1;return;}

MinNode<VertexType,EdgeType>;

for(k=0;k<MaxNumVertex;k++)

{distance[k]:

MAXXUM;//记录源点到本顶点k的最终的最短路径的长度

p[k]=source;//记录最短路径上的本顶点的直接前驱顶点的序号

}

distance[source]=0;p[source]=-1;//m是源点,前一顶点不存在

vector<MinNode<VertexType,EdgeType>>:

:

iteratorq;

while{

for(j=0;j<MaxNumVertex;j++)

if((AdjMatrix[E.VexNum*MaxNumVertex+j]<MAXNUM)

&&(<distance[j]))

{distance[j]=E.length+AdjMatrix[E.VexNum*MaxNumVertex+j];

p[j]=E.VexNum;//记录顶点j的前一顶点

MinNode<VertexType,EdgeType>;

H.push_back(N);

push_heap(H.begin(),H.end(),greater<MinNode<VertexType,

EdgeType>>());

}

if(H.empty()=true)break;//若优先队列为空,那么算法结束

else{

pop_heap(H.begin(),H.end(),greater<MinNode<VertexType,

EdgeType>>());

q=H.end()-1;//从最小化堆中取路径最短的顶点

E=*q;

H.pop_back();//删除从最小化堆中“挤”出的顶点

}

}//endwhile

for(k=0;k<MaxNumVertex;k++){

cout<<"Shorstestpathfromvertex"<<k<<"is"<<distance[k]<<end1;

j=k;cout<<"Allverticesare:

";

while(j!

=source){cout<<j<<"->";j=p[j];}

cout<<source<<”.”<<end1;

}//打印顶点的最短路径长度和至源点的最短路径上经过的顶点序列

return;

}

答案:

[解答]

(1)this->length或(*this).length

操作符,的成员函数,比较两个对象的最短路径的长度length,大于则返回真

(1)。

(2)newEdgeType[MaxNumVertex]

动态申请EdgeType类的对象数组distance,长度为MaxNumVertex,存放最短路径的长度。

(3)E(source,0)

定义最小化堆模板类MinNode<VertexType,EdgeType>的对象E(source,0)。

(4)E.length+AdjMatrix[E.VcxNum*MaxNumVertex+j]

若E.length+AdjMatrix[E.VexNum*MaxNumVertex+j]小于distance[j],则distance[j]取这个更小值。

(5)N(j,distance[j])

定义最小化堆模板类MinNode<VertexType,EdgeType>的对象N(j,distance[j])。

试题六

阅读下列Java程序和程序说明,将应填入(n)处的字句写在对应栏内。

1.【说明】清点盒子。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1