软件工程导论试题集汇总Word文档下载推荐.docx
《软件工程导论试题集汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软件工程导论试题集汇总Word文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。
用结构化方法学对定货系统进行分析与设计,分别完成以下工作:
(1)给出定货系统的功能模型。
(2)用数据字典描述该定货系统中主要加工“处理定货”和主要数据存储“定货报表”。
(3)给出定货系统的软件体系结构(用H图或结构图表示)。
参考答案:
(1)
(2)
(3)
6.高考录取统分子系统有如下功能:
(1)计算标准分:
根据考生原始分计算,得到标准分,存入考生分数文件;
(2)计算录取线分:
根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。
用结构化方法学对高考录取统分子系统进行分析与设计,分别完成以下工作:
(1)给出高考录取统分子系统的功能模型(用数据流图表示)。
(2)给出高考录取统分子系统的软件体系结构(用H图或结构图表示)。
7.需求描述如下:
8.
9.
10.某运动会概括力相同接受来自运动员的包名单、裁判的比赛项目及项目成绩,产生运动员号码单发送给运动员,项目参加者发送给裁判,单项名次发送给发布会。
该系统的功能如下:
(1)登记报名单
接受报名单、比赛项目,产生运动员号码单、项目参加者,形成运动员名单及团体成绩表两种数据存储。
(2)统计成绩
接受项目成绩,查询运动员名单,产生单项名次,填写团体成绩,最后产生团体名次。
11.现开发一个银行的活期存取款业务的处理系统,系统功能如下:
(1)审查分类:
系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理。
(2)处理存款:
系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;
最后将存折还给储户。
(3)处理取款:
系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;
最后将现金和存折还给储户。
绘制该系统的数据流图和软件结构图。
顶层
一层
(2)系统结构图如下:
12.银行储蓄系统的业务流程:
Ø
储户填写的存款单或取款单由业务员键入系统;
如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率、密码(可选)等信息,并印出存单给储户;
如果是取款而且开户时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
要求画出分层的数据流图,并细化到2层数据流图。
0层:
1层:
2层:
13.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。
某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。
(1)局部监视
在医院的病房里,将病症监视器安置在每个病床,对病人进行监护。
监视器将病人的病症信号(血压、体温、脉搏等组合)实时地传送到中央监护系统进行分析处理。
(2)中央监视
在中心值班室里,值班护士使用中央监护系统对病员的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,根据标准病症信号库中的值,判断是否报警;
(3)更新日志
中央监视系统根据分析数据将病人的病症信号进行格式化并加入更新日期、时间,更新病历库中病人的信息,并写入病员日志文件中。
(4)产生报告
根据医生的要求随时打印病人的病情报告,系统还定期自动更新病历。
14.需求陈述:
现有某库存管理系统,其主要功能如下:
1.建立物资采购单流水账
根据计划部门转来的收货通知单和已存的物资编码文件,建立物资采购单流水账。
2.更新物资台账
根据技术部门的物资验收报告和物资采购单流水账,更新物资台账文件。
3.汇总物资台账
对物资台账分类汇总,将结果存储于物资总账文件。
要求:
用结构化方法学对库存管理系统进行分析与设计,分别完成以下工作:
给出库存管理系统的功能模型(用数据流图表示)。
(10分)
给出库存管理系统的体系结构(用H图或结构图表示)。
1.数据流图(15分)(评分标准:
基本给出两个数据源、三个功能模块和四个文件12分,少一个扣2分)
2.结构图(15分)(评分标准:
基本给三个功能模块和主框架的15分,少一个扣3分)
面向对象开发技术
1.根据以下描述,使用面向对象的分析方法,分析有那些主要对象和这些对象的主要属性、方法,画出对象图。
一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;
若某一种饮料已销售完毕,则售完灯会亮。
顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。
顾客按键后饮料由出物口掉出,并自动结算及找钱。
顾客可在按下选择键前任何一个时刻,可以拉动退币杆取消交易收回硬币。
类图
2.设计一个简单的学生选课系统,系统能注册符合要求的同学,同学注册以后就能进行选课。
选课过程如下:
先选课名,然后根据课程的上课老师、时间、地点和人数限制来决定是否成功选课;
老师也可以根据情况提供新的课程说明或修改过去课程的说明;
教务处的老师统一管理注册的情况,可以有删除、修改学生、老师和课程的权限。
请用面向对象方法设计出对象模型(对象类图,标出多重性、角色、限定词和关系:
泛化、聚集、关联)、动态模型(学生成功注册后选课的顺序图)、功能模型(用例图)三大模型。
(1)类图
(2)用例图:
(3)顺序图
3.请画出一个用户使用银行ATM的状态转换图。
从用户将卡插入卡槽开始,到用户取卡结束(如果用户忘记,ATM应报警),用户可以完成以下几个步骤:
登录(卡片进入ATM机后,如果不是可读卡,退卡;
如是,等待用户输入密码,三次错,吞卡,正确后进入主菜单),取钱(进入取钱菜单,输入金额,如果帐户余额不足,提示余额,并要求用户重新输入,如果帐上钱够,吐钱币,并询问是否打印凭证,最后返回主菜单),主菜单提供退出取卡选择。
5.用例UC1:
预定航班
………
主事件流(主成功场景):
1.顾客向系统提交航班预订信息(出发地、目的地、出发日期和人数)
2.系统检索满足这些条件的航班
3.系统显示满足条件的航班信息
4.顾客选择所要的航班
5.系统检索该航班剩余的座位信息
6.系统显示可预订的座位信息
7.顾客选择所要的座位
8.系统生成一个临时预订记录
9.系统将顾客选择的座位状态从“未预订”修改为“已预订”
…………
备选事件流(扩展场景):
1a.顾客撤销购票请求,退出用例
2a.系统检索不到满足条件的航班
3a.系统向用户显示没有满足条件的航班
3b.系统建议顾客返回步骤1
4a.顾客撤销购票请求,退出用例
问题:
(1)系统分析员认为与该用例相关的类至少有Reservation(预定)、Seat(座位)和Flight(航班),请补充必要的类,建立对应于该用例的主成功场景的顺序图。
(2)请为对象Flight对象建立状态图。
用例“预订航班”的顺序图:
类图:
用例“预订航班”的活动图:
航班状态图:
6.需求陈述:
下面是-大学教学管理系统的子系统的简单说明:
首先接受学生提交的学生证和申请单,根据学生档案情况检验学生证的有效性和申请单是否填写的正确,如果有误则拒绝,如果无误则根据学生的注册情况审查接收学生的申请要求。
如果是申请注册,则进行注册登记;
如果是申请选课,则先查询课程档案是否有满足申请要求的课程,如果有则进行选课登记,如果没有则通知学生无此课。
用面向对象方法学对该系统进行分析与设计,分别完成以下工作:
(1)给出教学管理系统的用例模型,并对主要用例进行简单说明。
(2)给出教学管理系统中所涉及到的主要类。
(3)给出教学管理系统的类图。
(4)给出教学管理系统中注册的顺序图。
1).用例图(10分)(基本给出用例模型5分,给出用例说明再5分,其他酌情给分)
注册登记:
每学期开学注册时间执行该用例,执行前必须先完成学生审查和接受申请的过程。
登记选课:
审查和接受申请的过程后,实现学生每学期的选课。
2).主要类:
课程,选课单,学生,注册记录,本科课程,本科生等。
3.)类图如下:
4.)注册顺序图如下:
(5分)
7.下面是自动售货机系统的需求陈述,试建立它的对象模型、动态模型和功能模型:
自动售货机系统是一种无人售货系统。
售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。
有效的硬币是一元币、五角币、五分币、二分币、一分币。
其他货币被认为是假币。
机器拒绝接受假币,并将其从退币孔退出。
当机器接受了有效的硬币之后,就把硬币送入硬币储藏器中。
顾客支付的货币根据硬币的面值进行累加。
自动售货机装有货物分配器。
每个货物分配器中包含零个或多个价格相同的货物。
顾客通过选择货物分配器来选择货物。
如果货物分配器中有货物,而且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返还到退币孔。
如果分配器是空的,则和顾客支付的货币值相等的硬币将被送回到退币孔。
如果顾客支付的货币值少于所选择的分配器中货物的价格,机器将等待顾客投进更多的货币。
如果顾客决定不买所选择的货物,他投放进的货币将从退币孔中退出。
(2)活动图
8.有一房地产销售管理系统,主要功能有房源查询、房源预定、房源签约、退房操作、换房操作、房款管理、销售统计、房款统计,销售人员主要进行房源的销售操作,财务人员负责房款的收取,销售主管能够及时汇总销售情况和房款收取情况。
1)请画出房地产管理系统的UML用例图。
2)对于一套房源,有三种状态:
待售状态、预定状态、已售状态,请用UML状态图给出房源的状态变迁情况,并用文字简单说明。
3)采用面向对象的设计思想,试给出该系统应该包含的主要类,并做简单说明。
(1)用例图
(2)状态图
(3)类图(略)
9.某银行系统的需求概述如下:
某银行系统为该行的客户提供以下业务:
存款、取款、转账和查询。
拥有该行账户的客户可以利用该银行系统实现各种银行业务,如客户可以存款,也可以取款,或者将存款从一个账户转到另一个账户。
客户还可以随时查询自己账户的情况,并查询以前所进行的存款、取款等交易记录。
客户也有权利要求关闭账户。
由上述描述可知这个简化的银行系统至少应该具有如下功能:
●客户可以取款
●客户可以存款
●客户可以在不同的账户之间转账
●客户可以查询自己账户的余额
●银行职员负责系统的维护
附:
银行系统的”取款”用例的描述
主事件流:
当客户(Customer)想从自己的账户中取钱时,要向银行职员(Clerk)提交取款单,“取款”用例启动。
(1)系统提示输入用户信息,进行帐户有效性的验证
(2)客户输入有关帐户的信息(帐户信息、密码等)
(3)系统确认账户的有效性。
A1:
账户验证不合法
(4)系统提示进行取款交易
(5)客户按照系统提示进行取款交易(交易类型,交易金额)。
A2:
账户余额不足
(6)系统建立取款事件记录,并更新账户的相关信息
(7)用例结束
扩展事件流:
A1:
若账户不存在或无效,显示提示信息,用户可以重新输入或终止该用例。
。
A2:
账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。
用面向对象方法学对银行系统进行分析与设计,分别完成以下工作:
(1)画出银行系统的用例图
(2)画出银行所在的银行系统的类图
(3)画出银行取款顺序图(时序图)
(4)画出银行取款活动图
1.用例图
2.类与对象模型
3.“取款”用例的顺序图
4.“取款”用例的活动图
10.需求陈述:
某银行系统为该行的客户提供以下业务:
附:
银行系统的”存款”用例的描述。
当客户(Customer)想向自己的账户中存钱时,要向银行职员(Clerk)提交存款单和现金,“存款”用例启动。
(1)系统提示Clerk输入用户姓名、用户的id号、账号和所存款项的金额。
(2)Clerk输入相关信息后提交,系统确认账户是否存在并有效(当用户名、用户id与账户的户主信息一致,且账户处于非冻结状态时,账户有效。
否则转E-1。
(3)客户按照系统提示进行存款交易(交易类型,交易金额)。
(4)系统建立存款事件记录,并更新账户的相关信息。
(5)用例结束
E-1:
账户不存在或无效,显示提示信息,用户可以重新输入或终止该用例。
1)给出银行系统的用例模型
2)给出银行系统的类图
3)给出存款用例的顺序图
4)给出存款用例的活动图
3.“存款”用例的顺序图
4.“存款”用例的活动图
11.下面是某选课系统的子功能“添加课程”用例的事件流。
主事件流:
(1)管理员选择进入管理界面,用例开始。
(2)系统提示输入管理员密码。
(3)管理员输入密码。
(4)系统验证密码。
密码错误
(5)进入管理界面,系统显示目前所建立的全部课程信息。
(6)管理员选择添加课程。
(7)系统提示输入新课程信息。
(8)管理员输入信息。
(9)系统验证是否和已有课程冲突。
A2:
有冲突
(10)系统添加新课程,提示课程添加成功。
(11)系统重新进入管理主界面,显示所有课程。
(12)用例结束。
扩展事件流:
(1)系统提示再次输入。
(2)用户确认。
(3)三次错误,拒绝再次访问。
(4)否则进入添加课程事件流第5步。
(1)系统提示冲突,显示冲突课程信息。
(2)用户重新输入。
(3)继续验证直到无冲突。
(4)进入添加课程事件流第10步。
用面向对象的开发技术分析上述用例,回答下面的问题。
(1)给出该用例的活动图
(2)给出该系统的类图
(3)针对用例中涉及的主要类“Course(课程类)”,建立该类的状态图
(4)给出“添加课程”用例的顺序图
(1)活动图
(2)类图
(3)状态图
(4)顺序图
12.
算法描述:
1.给出一组数从小到大的排序算法,分别用下列工具描述其详细过程:
(1)流程图;
(2)N—S图;
(3)PAD图;
(4)PDL语言。
PDL语言略
2.下面是程序流程图,试分别用N-S图和伪代码(类C语言描述)表示。
3.阅读下面算法的PDl(伪代码)描述,请给出该算法的流程图和n-s盒图。
(共20分,每题10分)
START
IF(p)THEN
WHILE(q)
{
f
}
ELSE
{
g
n
STOP
1.n-s盒图(10分,能正确n-s描述的循环
和分支的10分,否则酌情给分)
2.程序流程图(10分,能正确给出循环和两个分支的10分,否则酌情给分)
测试试题:
:
1.阅读下面C语言函数,回答后面的问题:
//求取数组arr中的最大数据,并返回该元素在数组中的位置。
intgetMax(intn,intarr)//n是数组a的长度
{intk=0;
for(inti=1;
i<
n;
i++){
if(arr[i]>
arr[k])k=i;
returnk;
}
请用基本路径的测试技术完成该函数的测试。
(1)给出程序的有向流图,并算该函数的环形复杂度。
(2)给出基本路径集和测试用例。
1).控制流图如下,McCabe环路复杂性为3。
(2)1.基本路径:
(少一个最多3分)
Path1:
①→②→⑥
ath2:
①→②→③→⑤→②→⑥→…
Path3:
①→②→③→④→⑤→②→⑥…
2.测试用例:
(少一个最多3分)
取n=1,a[0]=1,
预期结果:
k=0
Path2:
取n=2,a[0]=3,a[1]=1,
k=0
取n=3,a[0]=0,a[1]=1,a[2]=5
k=2
2.阅读下面的程序流程图,回答后面的问题:
1)画出上述程序的有向流图,并计算该函数的环形复杂度。
2)给出基本路径集。
(1)如下图所示。
程序复杂度为4
3)
(2)基本路径1:
1-11
基本路径2:
1-2,3-4,5-10-1-11
基本路径3:
1-2,3-6-7-9-10-1–11
基本路径4:
1-2,3-6-8-9-10-1-11
3.阅读下面用伪代码编写的程序段,回答后面的问题:
start
input(a,b,c,d)
if(a>
0)&
&
(b>
0)
x=a+b
elsex= a-b
endif
if(c>
a)||(d<
b)
y=c+d
elsey=c–d
endif
print(x,y)
stop
(1)画出上述程序的有向流图,并计算该函数的环形复杂度。
(2)请用基本路径的测试技术完成该函数的测试。
要求给出基本路径和测试用例。
4.