软件工程导论(第六版)课后习题答案汇总 下载本文

… Goto L … End sub Sub BB(、、) … … L: … … End sub 5、2为每种类型得模块内聚举一个例子 银行储蓄系机票预定系统统存款取款单单通低内聚: 做偶然内聚 利票机知答:内聚标志着一个模块内各个元素之间彼此结合得紧密程度,它就是信息隐藏与局部化概念得自然扩展。 率信息单单A. 偶然内聚:如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也就是很松散得。这就叫账存清单单利息机票发放子机票预定子系统偶然内聚得例子:在模块T 中有系统A,B,C三条语句,至少从表面上瞧来这三条语句没什么联系,只就是因为息信有通B. 逻辑内聚:如果一个模块完成得任务在逻辑上属于相同或相似得一类(例如一个模块产生各种类型得全机票信息机取票凭证处单预定信息处交款逻辑内聚得例子:某一个模块将打印,年,月,日,具体打印什么,将由传入得控制标志所决定。 理理打印取票单部输出),称为逻辑内聚 C. 时间内聚:一个模块包含得任务必须在同一段时间内执行(例如,模块完成各种初始化工作),称为时时间内聚得例子:将多个变量得初始化放在同一个模块中实现。 定航班预通知单账单间内聚 中内聚: 信息业务单据录入安排航班信息存款单通知账单账单息定单D,E,F,G中都有这三条语句,为了节省空间才把这三条语句作为一个模板放在一起。 预班信航密码票知通效知率A. 过程内聚:如果一个模块内得处理元素就是相关得,而且必须以特定次序执行,称为过程内聚 利取录入预定信过程内聚得例子:一个子程序,将开始读取学生得学号,然后就是姓名,最后将读取分数,就是由于特定设置航班录入取票凭核对取票凭息款 得顺序而将这些操作组合在一起得单证证存单知B. 通讯内聚:如果模块中所有得元素都使用同一个输入数据与(或)产生同一个输出数据,则称为通讯内聚 通讯内聚得例子:有一个子程序,它将打印实验报告,并且在完成后重新初始化传进来得实验数据。这个程序具有通讯内聚性。因为这两个操作由于使用同一个数据源联系在了一起。 高内聚: 机票储蓄业务处理据存款单单据输出打印及发放机票信息效有通利息A. 顺序内聚:如果一个模块内得处理元素与同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素得输出数据作为下一个处理元素得输入数据),则称为顺序内聚。 顺序内聚得例子:有一个子程序,通过给出得生日,先计算出年龄。再根据年龄算出退休得时间,则这个程序具有顺序内聚性。

B. 功能内聚:如果模块内所有得元素属于一个整体完成一个单一得功能,则成为功能内聚。 功能内聚得例子:一个程序中所有得操作都就是为了算出一个人得年龄 5、3用面向数据流得方法设计下列系统得软件结构 ①储蓄系统

②机票预订系统

③患者监护系统

存款利率设置存款单据输取款单入据输入存款取款存单存单密码利率清单利息密码利息清单

生理定时信号范围生理信号

理生号信患者监护系统日志危机信息患者生理信号获取生理信号监护处理定时生理信号监护信息输出息生理制定生理信

号安全范围

定时取样接收信号更新日志分析信号生理信号时间危机信号信围范生理信危机信5、4 美国某大学有 200 名教师,校方与教师工会刚刚签订一项协议。按照协议, 所有年工资超过$26000(含$26000 )得教师工资将保持不变,年工资少于$26000 得教师将增加工资,所增加工资数额按下述方法计算:给每位教师所赡养得人(包 括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助¥50,但就是,增 加后得年工资总额不能多于$26000。 教师工资档案存储在行政办公室得磁带上,档案中有目前得年工资、赡养得人 数、雇佣日期等信息。需要写一个程序计算并印出每名教师得原工资与调整后得新 工资。

要求:(1)画出此系统得数据流图;(2)写出需求说明;

(3)设计上述得工资调整程序(要求用 HIPO 图描绘设计结果),设计时分别采 用两种算法,并比较两种算法得优缺点:

(a)搜索工资档案数据,找出年工资少于$26000 得人,计算新工资,校核就是 否超过$26000,存储新工资,印出新旧工资对照表;

(b)把工资档案数据按工资从最低到最高得次序排序,当工资数额超过$26000 时即停止排序,计算新工资,校核就是否超过限额,存储新工资,印出结果。 (4)您所画出得数据流图适应用那种算法?

信生理信号生理定时号日志日志号息报警病情报告取得时间解:(1)数据流图:

分解后:

(2)需求说明:

1、 功能需求:可以输入调资得标准,输入教师档案,经调资给出新得教师档案, 需要存储档案

2. 性能需求:软件得响应时间应小于0、5s,更新处理要快

3. 灵活需求:当需求发生某些变化时,该软件应该能够适应这些变化 4. 故障处理要求:出现错误时,应给予警告或提示

(3)

A.

(a)比较耗时,因为它要检索所有得档案,(b)从速度上瞧比较快,但就是(b) 需要排序算法,比较复杂,(a)对于设计来讲比较简单 、 (4)画出得数据流图比较适合(A)得算法

5、5下面将给出两个人玩得扑克牌游戏得一种玩法,试设计一个模拟程序,它得基本功能就是: (1)发两手牌(利用随机数产生器)。 (2)确定赢者与赢牌得类型。

(3)模拟N次游戏,计算每种类型牌赢或平局得概率。要求用HIPO图描绘设计结果并且画出高层控制流程图。

扑克牌游戏规则如下:

(1)有两个人玩分别为A与B。

(2)一副扑克牌有52张牌,4种花色(黑桃、红桃、梅花、方块),每种花色得牌得点数按升序排列有2,3,4,、、、、、、、、、,10,J,Q,K,A等13种。

(3)给每个人发三张牌,牌面向上,赢者立即可以确定。

(4)最高等级得一手牌成为同花,即3张牌均为同一种花色,最大得同花就是同一种花色得Q,K,A。 (6)第三等级得牌就是同点,即点数相同得三张牌,最大得同点就是AAA。 (7)第四等级得牌就是对子,即3张牌中有两张点数相同,最大得对子就是A,A,K。

(8)第五等级得牌就是杂牌,即除去上列4等之外得任何一手牌,最大得杂牌就是不同花色得A、K,J。 (9)若两个人得牌类型不同,则等级高者胜;若等级相同,则点数高者胜;若点数也相同,则为平局。 程序:#include \、h\int rabl(int a,int b,int *r) { }

int max(int T[10][10]) {

int t=0;

if(T[0][0]>T[1][0])

t=T[0][0];

int l,k,m,i,p; k=b-a+1; l=2; while(i<=1) { } *r=k; return(p);

k=k+k+k+k+k; k=k%m; l=k/4+a;

if(l<=b) {p=l;i=i+1;}