1
C语言程序设计
1.2.5 1.5 案例研究

1.5 案例研究

案例1 将软件开发过程的工作步骤应用到下面的程序要求中。

1627年,曼哈顿岛被卖给了荷兰定居者,花了大约24美元。如果这次卖出的收入一直存在荷兰银行,年利息5%,按复利计算终值。到2007年本金余额将是多少?程序显示下列输出:

Balance as of December 31,2007,is ×××××

步骤1:分析问题

本步骤验证程序说明的完整性,并确认程序的需求。

a. 确定期望的输出。在确定期望的输出过程中,应关注要求陈述中类似“计算”、“打印”、“决定”、“查找”或“比较”这样的描述词,对于上述例子程序的要求,关键的短语“是按复利计算终值。到2007年的本金额”,这就确定了一个输出项目。

b. 确定输入项目。在明确地确定期望的输出之后,必须确定所有的输入项目,在本阶段,确定输入和输出之间的差别是重要的,输入项目是输入量的名称,而输入值是能够用作输入项目的特定的数字或数量。在我们上述的需求中,输入项目是最初存款、存款利息和存款时间。这些输入项目在这一问题上有一个特定的数字值(已知值,最初存款=24、存款利息=5%、存款时间=2007-1627),实际的输入值在这个阶段一般是不重要的。因为输入和输出的关系并不取决于特定的输入值,而取决于公式,即应该用公式正确地表达输入和输出之间的关系。

c. 列出相关输入和输出的公式。最后的步骤是确定如何根据输入得到输出,这由已知的输入和输出之间的公式来决定。在本例中,公式为NS Z 1 M=+(),其中S表示输出项目,Z,M,N是输入项目。如果你不清楚如何从给定的输入获得所要求的输出,则可能需要更清楚的需求陈述。换句话说,你需要更多的关于所求解问题的信息。

步骤2:选择一个全面解决方案的算法

在前面的内容中介绍的一般问题的计算机算法是:

img56 获得问题的输入;

img57 计算期望的输出;

img58 报告计算的结果。

为了计算2007年的本金额,这个算法变成:

img59 设置Z=24,M=0.05,N=(2007−1627)

img60 使用公式NS Z 1 M=+()计算S;

img61 显示S的结果。

步骤3:编写程序

程序1.4是根据步骤2的算法编写的求解本问题的C语言代码:程序按顺序一次执行一行代码,在程序的5~6行,对程序使用到的变量s,m,n,z进行了定义,在7,8,9行对m,n,z赋了计算值,10行根据公式计算了s的值,11行按问题要求进行了项目的输出。

img62

img63

步骤4:测试和修正程序

因为程序的功能是计算一个表达式的值,因此,测试程序1.4实际上就是验证计算输出的正确性。我们可以把程序的输出和根据公式用手工计算所得到的输出进行比较,如果相符,说明利用这个程序计算的本金额是正确的。

案例2 输出中文图书管理系统欢迎界面。

问题分析 该程序实现输出中文图书管理系统的欢迎界面,主要输出欢迎信息,其功能通过在主函数main()中使用printf()函数输出实现。

程序实现 见程序1.5。

img64

输出结果:

img65