模块化程序设计实例

上传人:鲁** 文档编号:490102377 上传时间:2023-06-27 格式:DOC 页数:22 大小:186KB
返回 下载 相关 举报
模块化程序设计实例_第1页
第1页 / 共22页
模块化程序设计实例_第2页
第2页 / 共22页
模块化程序设计实例_第3页
第3页 / 共22页
模块化程序设计实例_第4页
第4页 / 共22页
模块化程序设计实例_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《模块化程序设计实例》由会员分享,可在线阅读,更多相关《模块化程序设计实例(22页珍藏版)》请在金锄头文库上搜索。

1、9 .5模块化程序设计实例程序设计基础(基于C语言讲解)石光华编著一北京:清华大学出版社下面以设计一个简单的成绩管理软件为例,一步一步地按模块化程序设计方法进 行设计。1 .定义问题设计一个成绩管理软件,其基本功能包括:输入成绩,成绩加分,计算平均成绩,找 出最高分,找出最低分,输出成绩等。2. 确定组成程序的模块根据成绩管理软件的功能,确定软件的基本模块包括:输入模块,加分模块,平均 分模块,最高分模块,最低分模块,输出模块等。142程序设计基础3. 绘制程序结构图成绩管理软件的结构图如图9-5所示。图9-5成绩管理软件结构图4 .流程图用流程图确定主程序的逻辑结构,如图9-6所示。在流程图

2、中,istate的作用是记录是否已经输入成绩。istate 的使用有如下两种方式。(1) 作为全局变量使用。此时istate可以在所有模块中改变其值,主程序更简洁, 但可能产生边际效应。(2) 作为主程序的局部变量使用。此时istate只能在主程序中改变其值。在主 程序中可以直观地看到其变化,能够防止边际效应。采用方式(2)的主程序如下#include #define SIZE 10void main()int iscoreSIZE =0;int key= - 1;int iresult=0;float fresult=0;int istate=0;printf( 1:1 nput score

3、s; n);第 9 章 模块化程序设计 143图 9-6 成绩管理软件主程序流程图printf( 2:Output scores;n);printf( 3:Count for the max score;n);printf ( 4:Count for the minimum score;n);printf( 5:Count for the total score;n);printf( 6:Count for theaverage score;n);printf( n);while(1)printf( Please input your choose:);scanf( %d ,&key);if

4、(key = = - 1) 144 程序设计基础break;switch(key)case1:istate=input_all_numbers(iscore,SIZE);break;case2:if (istate = =0)printf( ERROR:You must in put scoresfirst !n);elseoutput_all_numbers(iscore,SIZE);break;case3:if (istate = =0)printf( ERROR:You must in put scoresfirst !n);elseiresult=count_for_max(iscor

5、e,SIZE);printf( the max score is %d n ,iresult);break;case4:if (istate = =0)printf( ERROR:You must in put scoresfirst !n);elseiresult=count_for_min(iscore,SIZE);printf( the min score is %d n ,iresult);break;case5:if (istate = =0)printf( ERROR:You must in put scoresfirst !n);else第 9 章 模块化程序设计 145ires

6、ult=count_for_total(iscore,SIZE);printf( the total score is %dn ,iresult);break;case6:if (istate = =0)printf( ERROR:You must in put scoresfirst !n);elsefresult=count_for_average(iscore,SIZE);printf( the average score is % .2f n ,fresult);break;default:printf( ERROR:I nput error,please in put aga in!

7、n);5 . 编写算法为程序结构图中每个模块编写算法。在前面的学习中 , 已经学过如何加分 , 计算平均分 , 以及查找最高、最低分 , 在这里 就不再画出流程图了。6 . 审查算法最后审查整个算法 , 直到没有任何逻辑错误。7 . 编程调试审查算法后 , 即可进行编程调试。【例 9-12 】 成绩管理软件的完整程序。/ *name:a management system about scores*/ *creat:stone,2004/ 3/ 8*/146 程序设计基础/ *modify:stone,2004/ 3/ 20*/ *version:1 .0#include #define SI

8、ZE 5 / * 定义成绩个数的符号常量 */int input_all_numbers(int iscore,int isize);void output_all_numbers(int iscore,int isize);int count_for_max(int iscore,int isize);int count_for_min(int iscore,int isize);int count_for_total(int iscore,int isize); floatcount_for_average(int iscore,int isize); void main()int isc

9、oreSIZE =0;int key= - 1;int iresult=0;printf( - 1:Exit .n);printf( - 1:Exit .n);float fresult=0;/ * 用于区分是否已经输入数据的标志 ,0 表示未输入 ,1int istate=0;/ * 主菜单 , 可以选择完成不同的成绩统计功能 */printf( *printf( This is a managementsystem about scores .printf( *表示已经输入 */ff Xn );nttWELCOME ! n );ff Xn );printf( - 1:Exit .n);pr

10、intf( - 1:Exit .n);printf( 1:1 nput scores;n);printf( 2:Output scores; n);printf( 3:Count for the max score; n);printf( 4:Count for the minimum score;n);printf( 5:Count for the total score;n);printf( 6:Count for theaverage score; n );while(1)printf( - 1:Exit .n);printf( Please in put your choose:);s

11、eanf( %d,&key);/ * 根据输入选择的不同 , 分别进行不同的处理 */第 9章 模块化程序设计 147if (key = = - 1)break;switch(key)case 1:istate=input_all_numbers(iscore,SIZE);break;case 2:if (istate = =0)printf( ERROR:You must in putn);elseoutput_all_numbers(iscore,SIZE);break;case 3:if (istate = =0)printf( ERROR:You must in put scoresf

12、irst !n);elseiresult=count_for_max(iscore,SIZE);break;case 4:if (istate = =0)printf( ERROR:You must in put scores first !n);elseiresult=count_for_min(iscore,SIZE);printf( the min score is %d n ,iresult);break;case 5:if (istate = =0)printf( ERROR:You must in put scores first !n);148 程序设计基础elseiresult

13、=count_for_total(iscore,SIZE);printf( the total score is %dn ,iresult);break;case 6:if (istate = =0)printf( ERROR:You must in put scores first !n);elsefresult=count_for_average(iscore,SIZE);printf( the average score is % .2fn ,fresult);break;default:printf( ERROR:I nput error,please in put aga in!n);/ * 功能 : 输入学生成绩 */int input_all_numbers(int iscore,int isize)int iindex=0;printf( please in put %d scores:n ,isize);for(iindex=0; iindexscanf( %d ,&iscoreiindex);return1;/ * 功能 : 输出学生成绩 */第 9 章 模块化程序设计 149void output_all_numbers(int iscore,int isize)int iindex=0;for(iindex=0; iindex

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号