C程序设计(第四版)第10章 C语言综合应用程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、模块化程序组织
使用模块化编程技术的处理过程大致如下: 1、首先将一个大的源程序根据其功能合理地划 分成若干个小的源程序,每个小源程序均以程 序文件(.C)的形式保存在磁盘上。并建立一个 包括各个源程序模块的文件名的工程文件 (.prj)。 2、然后用编译器进行编译,将工程文件中指定 的多个源程序文件进行编译,生成多个目标文 件和一个可执行文件。注意,在分模块单独编 译处理的各个程序模块中,必须有且只有一个 主函数 main( ) 。
模块化程序设计开发步骤
讨论以c语言程序模块化设计小规模软件开发的一般步骤:
1、通过与最终用户的交流,明确软件应达到的功能,写出相 应的“功能说明”。 2、根据“功能说明”,确定存放有关数据的数据结构。 3、根据数据结构确定算法。
4、根据数据结构和算法,采用某种计算机语言编写的程序源
代码。 5、对程序进行调试和测试。 6、最后整理出有关的文档资料。
4、程序的编译和连接 5、程序的测试 6、编写程序文档
经过以上步骤,程序设计工作基本完成。要 想将一个程序最终交付给用户使用,必须提供详 尽程序文档。它包括用户文档和技术文档。用户 文档一般包括:程序的功能;数据的录入格式和 取值限制;程序及相关文件的数量、名称、内容 及存放路径等;程序运行的环境;安装、启动方 法等。技术文档一般包括:各模块的描述;硬件 信息;算法的解释和描述;变量的名称、作用; 程序代码清单。
三、模块化程序中模块间的通信 1、使用外部变量 即一个程序文件file1.c中定义一个外部 变量,另一个程序文件file2.c中的函数 可以通过外部变量说明后来使用这个变量, 以实现模块间的通信。
说明形式:extern 类型说明符 外部 变量名 ; 注意:只是进行了说明,并不是变量定义。
2、举例
4、 正确性与容错性要求 a) 程序首先是正确,其次是优美。 b) 无法证明你的程序没有错误,因此在编写完一段程序后, 应先回头检查。 c) 改一个错误时可能产生新的错误,因此在修改前首先考虑 对其它程序的影响。 d) 所有变量在调用前必须被初始化。 e) 对所有的用户输入,必须进行合法性检查。 f) 不要比较浮点数的相等,如:10.0 * 0.1 == 1.0 ,不可靠 g) 程序与环境或状态发生关系时,必须主动去处理发生的意 外事件,如文件能否逻辑锁定、打印机是否联机等。 h) 单元测试也是编程的一部份,提交联调测试的程序必须通 过单元测试。
利用外部变量实现程序模块file1.c与程序模块file2.c之间的通信。 设程序模块文件 file1.c 的内容如下: #include<stdio.h> int n=2; /* 定义n为全局变量*/ main( ) { printf(“%d”,n); proc1( ); printf(“%d\n”,n); } 程序模块文件file2.c 的内容如下: extern int n; /* 说明n为外部变量*/ proc1() { n = 10 ; } 程序编译连接生成可执行文件,执行结果为: 2 10
10.4 综合实例
一、综合实例内容
用C语言编写一个简单的成绩管理系统。要求数 据以记录的形式,存放在数据文件中。每条记录包 含:学号;姓名;性别;三科成绩;平均成绩。在 菜单驱动下,能对数据文件进行改(modify)、显 示(display)、增(insert)、删(del)、排序 (sort)等操作。
第10章 C语言综合应用程序设计
10.1 模块化程序设计基本概念 10.2 模块化程序设计开发步骤 10.3 模块化程序设计的基本编辑要求
10.4 综合实例
10.1 模块化程序设计基Βιβλιοθήκη Baidu概念
一、模块程序设计的基本概念
1.一个复杂程序可以分成若干个模块,可由不同 人员分头完成. 2.每个模块的任务明确,便于理解. 3.单个模块易于编写和调试. 4.便于程序的维护和修改. 5.可以直接利用已有的模块.
二、基本要求和设计步骤 ① 设计程序之前,要求给出分析过程。 ② 在分析的基础上,完成总体设计方案。 ③ 依据总体方案,详细设计各子模块,并 完成程序源代码的编辑。 ④ 完成程序调试。 ⑤ 编写程序文档,包括用户文档和技术文 档。
三、程序的开发过程 1、分析 分析问题就是要了解问题所涉及的相关领域, 在清楚的需求分析基础以上构建解决问题的模 型。实例中设计的算法有:构建菜单算法;对 文件中的数据改(modify)、显示(display)、 增(insert)、删(del)、排序( sort )等操作 的算法。
2、总体设计 根据实例的内容要求,设计出总体方案如图:
系统共分7大模块:录入信息模块;排序信息模块; 显示信息模块;增加信息模块;删除信息模块;查 询信息模块;修改信息模块。
3、各模块的设计
在模块的设计部分,应当详细阐述各个模块的数 据结构和算法,给出描述算法的流程图。在本实例 中,需要完成七个不同模块的详细设计。 ① 录入信息模块的设计 ② 排序信息模块的设计 ③ 显示信息模块的设计 ④ 增加信息模块的设计 ⑤ 删除信息模块的设计 ⑥ 查询信息模块的设计 ⑦ 修改信息模块的设计
7、实例程序代码
四、预处理命令#include的应用
1、#include命令经过预处理后,会将其后有关文件的内容 拷贝到命令所在的源程序文件中。 2、在上一个例子中,程序要能够编译运行,需建立一个工 程文件file.prj,其内容为: file1.c file2.c 然后对file.prj文件编译运行即可。 3、也可以在file1.c文件开头加一预处理命令: #include<stdio.h> #include<file2.c> int n=2; main() { …… } 对file1.c文件直接编译运行即可。
3、 结构化要求 a) 禁止出现两条等价的支路。 b) 禁止GOTO语句。 c) 用 IF 语句来强调只执行两组语句中的一 组。禁止 ELSE GOTO 和 ELSE RETURN。 d) 用 CASE 实现多路分支。 e) 避免从循环引出多个出口。 f) 函数只有一个出口。 g) 不使用条件赋值语句。 h) 避免不必要的分支。 i) 不要轻易用条件分支去替换逻辑表达 式。
10.3模块化程序设计的基本编辑要求
1、基本要求 a) 程序结构清晰,简单易懂,单个函数的程序 行数不得超过100行。 b) 打算干什么,要简单,直截了当,代码精简, 避免垃圾程序。 c) 尽量使用标准库函数和公共函数。
d) 不要随意定义全局变量,尽量使用局部变量。
e) 使用括号以避免二义性。
2、可读性要求 a) 可读性第一,效率第二。 b) 保持注释与代码完全一致。 c) 每个源程序文件,都有文件头说明,说明规格见规范。 d) 每个函数,都有函数头说明,说明规格见规范。 e) 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。 f) 常量定义(DEFINE)有相应说明。 g) 处理过程的每个阶段都有相关注释说明。 h) 在典型算法前都有注释。 i) 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 6 个 字节。 j) 循环、分支层次不要超过五层。 k) 注释可以与语句在同一行,也可以在上行。 l) 空行和空白字符也是一种特殊注释。 m) 一目了然的语句不加注释。 n) 注释的作用范围可以为:定义、引用、条件分支以及一段代码。 o) 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 到 1/3 。