资源描述
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。
作业三 结构化系统设计( 第6-8章)
3-1、 用面向数据流的方法设计下列系统的软件结构
(1) 储蓄系统
( 2) 机票预定系统
( 3) 患者监护系统
3-2、 某火车售票系统的数据流程图如下所示, 设计系统的软件结构
系统的软件结构图:
3-3、 已知某系统的需求分析给出的系统数据流程图如下, 画出结构图
系统的软件结构图:
3-4、 画出下列伪码程序的程序流程图和盒图
START
IF p THEN
WHILE q DO
f
END DO
ELSE
BLOCK
g
n
END BLOCK
END IF
STOP
g
n
f
q
T
P
F
3-5、 下图给出的程序流程图代表一个非结构化的程序, 请问:
( 1) 为什么说它是非结构化的?
( 2) 设计一个等价的结构化程序。
( 3) 在( 2) 题的设计中你使用附加的标志变量flag吗? 若没用, 请再设计一个使用flag的程序; 若用了, 再设计一个不用flag的程序
答: ( 1) 一般所说的结构化程序, 是按照狭义的结构程序的定义衡量, 符合定义规定的程序。图示的程序的循环控制结构有两个出口, 显然不符合狭义的结构程序的定义, 因此是非结构化的程序。
( 2) 使用附加的标志变量flag, 至少有两种方法能够把该程序改造为等价的结构化程序, 下图描绘了等价的结构化程序的盒图。
flag=FAlSE
T
F
q
g
P AND flag
flag=TRUE
flag= TRUE
F p T
flag=FLASH g
(NOT q) OR (NOT flag)
(3) 不使用flag把该程序改造为等价的结构化程序的方法如图
F P T
g
(NOT q) OR (NOT q)
3-6、 画出下列伪码程序的流图, 计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗?
C EXAMPLE
LOOP:DO WHILE X>0
A=B+1
IF A>10
THEN X=A
ELSE
Y=Z
END IF
IF Y<5
THEN PRINT X,Y
ELSE
IF Y=2
THEN GOTO LOOP
ELSE
C=3
END IF
END IF
G=H+R
END DO
IF F>0
THEN PRINT G
ELSE
PRINT K
END IF
STOP
3-7、 编码设计
( 1) 某一类服装编码是这样设计的: 编码由6位组成, 其中从左到右, 第一位是大写英文字母, 可由A、 B、 C、 D组成, 第二~六位为0到9的数字。如B32633表示按这种方法进行设计共可组成多少种编码?
4*10*10*10*10*10=400000 共有400000种编码
(2) 设计代码校验位的方案如下: 若原编码为12345, 共五位。从左至右取权11, 7, 5, 3, 2, 对乘积之和以11为模取余作为校验位。试问原编码的校验位应是多少?
(11*1+2*7+3*5+4*3+5*2)/11= 5...7
因此原编码的校验位应是7位
3-8、 某交易所规定给经纪人的手续费计算方法如下:
总手续费等于基本手续费加上与交易
中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元, 则基本手续费为交易金额的8.4%; 如果交易总金额在1000元到10000元之间, 则基本手续费为交易金额的5%, 再加34元; 如果交易总金额超过10000元, 则基本手续费为交易金额的4%加上134元。
当每股售价低于14元时, 附加手续费为基本手续费的5%, 除非买进、 卖出的股数不是100的倍数, 在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时, 附加手续费为基本手续费的2%, 除非交易的股数不是100的倍数, 在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时, 如果交易的股数零散(即, 不是100的倍数), 则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。
要求:
(1) 用判定表表示手续费的计算方法。
(2) 用判定树表示手续费的计算方法。
解: 设 Q=每股价格
S=交易总金额
N=交易的股数是100的倍数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
S< 1000
T
T
T
T
T
T
1000<=S<=10000
T
T
T
T
T
T
S > 10000
T
T
T
T
T
T
Q<14
T
T
T
T
T
T
14<=Q<=25
T
T
T
T
T
T
Q>25
T
T
T
T
T
T
N
T
F
T
F
T
F
T
F
T
F
T
F
T
F
T
F
T
F
结果
√
0.084 S*(1+0.01)
0.084 S*(1+0.02)
√
0.084 S*(1+0.04)
√
0.084 S*(1+0.05)
√
0.084 S*(1+0.06)
√
0.084 S*(1+0.09)
√
(0.05S+34)*(1+0.01)
√
(0.05S+34)*(1+0.02)
√
(0.05S+34)*(1+0.04)
√
(0.05S+34)*(1+0.05)
√
(0.05S+34)*(1+0.06)
√
(0.05S+34)*(1+0.09)
√
(0.05S+134)*(1+0.01)
√
(0.05S+134)*(1+0.02)
√
(0.05S+134)*(1+0.04)
√
(0.05S+134)*(1+0.05)
√
(0.05S+134)*(1+0.06)
√
(0.05S+134)*(1+0.09)
√
展开阅读全文