资源描述:
《模块化程序设计实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、9.5模块化程序设计实例《程序设计基础》(基于C语言讲解)石光华编著—北京:清华大学出版社下面以设计一个简单的成绩管理软件为例,一步一步地按模块化程序设计方法进行设计。1.定义问题设计一个成绩管理软件,其基本功能包括:输入成绩,成绩加分,计算平均成绩,找出最高分,找出最低分,输出成绩等。2.确定组成程序的模块根据成绩管理软件的功能,确定软件的基本模块包括:输入模块,加分模块,平均分模块,最高分模块,最低分模块,输出模块等。142程序设计基础3.绘制程序结构图成绩管理软件的结构图如图9-5所示。图9-5成绩管理软件结构图4.流程图用流程
2、图确定主程序的逻辑结构,如图9-6所示。在流程图中,istate的作用是记录是否已经输入成绩。istate的使用有如下两种方式。(1)作为全局变量使用。此时istate可以在所有模块中改变其值,主程序更简洁,但可能产生边际效应。(2)作为主程序的局部变量使用。此时istate只能在主程序中改变其值。在主程序中可以直观地看到其变化,能够防止边际效应。采用方式(2)的主程序如下。#include#defineSIZE10voidmain(){intiscore[SIZE]={0};intkey=-1;intiresult
3、=0;floatfresult=0;intistate=0;printf(″1:Inputscores;″);第9章模块化程序设计143图9-6成绩管理软件主程序流程图printf(″2:Outputscores;″);printf(″3:Countforthemaxscore;″);printf(″4:Countfortheminimumscore;″);printf(″5:Countforthetotalscore;″);printf(″6:Countfortheaveragescore;″);printf
4、(″-1:Exit.″);while(1){printf(″Pleaseinputyourchoose:″);scanf(″%d″,&key);if(key==-1)144程序设计基础break;switch(key){case1:istate=input_all_numbers(iscore,SIZE);break;case2:if(istate==0)printf(″ERROR:Youmustinputscoresfirst!″);elseoutput_all_numbers(iscore,SIZE);break;case
5、3:if(istate==0)printf(″ERROR:Youmustinputscoresfirst!″);else{iresult=count_for_max(iscore,SIZE);printf(″themaxscoreis%d″,iresult);}break;case4:if(istate==0)printf(″ERROR:Youmustinputscoresfirst!″);else{iresult=count_for_min(iscore,SIZE);printf(″theminscoreis%d″,
6、iresult);}break;case5:if(istate==0)printf(″ERROR:Youmustinputscoresfirst!″);else第9章模块化程序设计145{iresult=count_for_total(iscore,SIZE);printf(″thetotalscoreis%d″,iresult);}break;case6:if(istate==0)printf(″ERROR:Youmustinputscoresfirst!″);else{fresult=count_for_average
7、(iscore,SIZE);printf(″theaveragescoreis%.2f″,fresult);}break;default:printf(″ERROR:Inputerror,pleaseinputagain!″);}}}5.编写算法为程序结构图中每个模块编写算法。在前面的学习中,已经学过如何加分,计算平均分,以及查找最高、最低分,在这里就不再画出流程图了。6.审查算法最后审查整个算法,直到没有任何逻辑错误。7.编程调试审查算法后,即可进行编程调试。【例9-12】成绩管理软件的完整程序。/*name:amanage
8、mentsystemaboutscores*//*creat:stone,2004/3/8*/146程序设计基础/*modify:stone,2004/3/20*//*version:1.0#include