




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 学生成绩管理系统函数与头文件篇两大部分内容第一大部分是:首选将其函数化;第二大部分是,将其头文件化1函数模块将第三章的学生成绩管理系统,各个模块功能改为用函数实现。设计了6个函数来完成系统所有功能,各个函数的具体功能如系统功能与函数的对应图所示。输出学生成绩计算每名学生的总分和平均分每门课程的平均分和不及格率输出每名学生的最高分和最低分输出每门课程的最高分和最低分不及格课程门数和优秀课程门数按学生平均分的高低排序按每门课程平均分的高低排序void outputStudentScore();void calculateStu_Total_Average();void score_Highest_Lowest(int flag);void calculateCourse_Average_Failrate();void countStu_Failed_Excellent();void sort_By_Average(int flag);系统功能与函数对应图1)工程任务根据系统功能与函数对应图,将所有的函数实现,完成系统功能。下面给出代码框架,根据操作步骤完善程序。#include /输入输出头文件#include/system(cls),清屏函数的头文件#include/getchar(),接收一个字符函数的头文件,起到暂停作用;#include /setw()函数的头文件#include /strcpy()函数的头文件函数的声明语句区全局变量定义区void main()int options;/用来存放选项的变量do/循环语句system(cls);/清屏函数cout 学生成绩管理系统endl;cout =endl;coutendl;cout 1输入学生成绩endl;cout 2输出学生成绩endl;cout 3计算每名学生的总分和平均分endl;cout 4. 输出每名学生的最高分和最低分endl;cout 5统计每名学生的不及格课程门数和优秀课程门数endl;cout 6按学生平均分的高低排序endl;cout 7. 计算每门课程的平均分和不及格率endl;cout 8输出每门课程的最高分和最低分endl;cout 9按每门课程平均分的高低排序endl;cout 10. 退出endlendl;cout =endl;coutoptions;switch(options)case 1: /输入学生成绩system(cls);coutendl定义数组时已经初始化,等调试完代码后再修改!endl;getchar();break;case 2: /输出学生成绩函数调用语句break;case 3:/计算每名学生的总分和平均分函数调用语句break;case 4: /输出每名学生的最高分和最低分函数调用语句break;case 5: /统计每名学生的不及格课程门数和优秀课程门数函数调用语句break;case 6: /按学生平均分的高低排序,先执行第3项,计算总分和平均分函数调用语句break;case 7: /计算每门课程的平均分和不及格率函数调用语句break;case 8: /输出每门课程的最高分和最低分函数调用语句break;case 9: /按每门课程平均分的高低排序函数调用语句break;case 10: /退出;while(options!=10);system(cls);void outputStudentScore() /case 2: 输出学生的成绩定义函数体void calculateStu_Total_Average() /case 3: 计算每名学生的总分和平均分定义函数体void score_Highest_Lowest(int flag) /case 4:case 8:求二维数组的最大值和最小值,flag=0:求每行的最高分和最低分;flag=1:求每列的最高分和最低分;system(cls);coutendl;int i,j;int max,min; /最高分和最低分if(flag=0)定义函数体1else if(flag=1)定义函数体2getchar();void countStu_Failed_Excellent() /case 5:统计每名学生的不及格课程门数和优秀课程门数定义函数体/按学生平均分的高低排序,一定已经执行了第3项,计算出了总分和平均分void sort_By_Average(int flag) /case 6:case 9: flag=0:按学生平均分的高低排序;flag=1:按课程平均分排序system(cls);int i,j;if(flag=0)定义函数体1else if(flag=1)定义函数体2getchar();void calculateCourse_Average_Failrate() /case 7:计算每门课程的平均分和不及格率定义函数体2)操作步骤(1)设置全局变量以前只有一个主函数,所有的变量都定义在主函数中,现在要定义多个函数,每个函数都要用到公共的变量,因此将这些变量定义为全局变量。将下面的变量的定义在主函数的外面,写在全局变量定义区框内。char studentname1015=zhanglili,chenjunwei,fanweiyong,tangjinquan, pengtianyi,liuhao,wuling,sunpeipei,shenhaiyan, tangxueyan;char coursename410=math,chinese,english,c+;int studentscore107=0,1,78,56,98,90,0,0,2,65,78,92,98,0,0,3,34,87,89,80,0,0,4,77,88,65,77,0,0,5,56,66,43,66,0,0,6,67,87,77,98,0,0,7,87,67,35,97,0,0,8,78,67,87,60,0,0,9,67,76,88,72,0,0,10,80,96,79,58,0,;/二维数组学生成绩是10行7列,第0列用来排名次,第1列存放学号,/第2,3,4,5列存放4门课程的成绩,第6列存放总分,初始化时为0double studentavg10; /存放每名学生的平均成绩int coursesum4;/存放每门课程总和double courseavg4;/存放每门课程的平均成绩double coursefailed4;/存放每门课程的不及格率(2)函数的定义在main()函数的下面,定义其他函数,主函数和其他函数是并列关系,不是包含关系,切不可将其他函数定义在主函数之内,一定在主函数的外面。A设计outputStudentScore( )函数,输出学生成绩,将原来系统中case 2:中的语句,除了break外,其他语句剪切到outputStudentScore()函数体中,如下面的代码所示。局部变量要自己定义,如这里的循环变量i。void outputStudentScore() /case 2: 输出学生的成绩system(cls);coutendl;coutsetw(5)学号setw(12)姓名setw(8)数学setw(8)语文setw(8)英语setw(8)C+endl;cout-endl;for(int i=0;i10;i+)coutsetw(5)studentscorei1;coutsetw(12)studentnamei;coutsetw(8)studentscorei2setw(8)studentscorei3setw(8)studentscorei4setw(8)studentscorei5endl;cout-endl;getchar();B设计score_Highest_Lowest(int flag)函数,如果flag=0,输出每名学生的最高分和最低分;如果flag=1,输出每门课程的最高分和最低分。将原来系统中case 4:中的语句,剪切到该函数的定义函数体1中;将case 8:中的语句,剪切到该函数的定义函数体2中,如下面代码所示。其他函数的定义与此类似。void score_Highest_Lowest(int flag) /case 4:case 8:求二维数组的最大值和最小值,flag=0:求每行的最高分和最低分;flag=1:求每列的最高分和最低分;system(cls);coutendl;int i,j;int max,min; /最高分和最低分if(flag=0)coutsetw(5)学号setw(12)姓名setw(8)数学setw(8)语文setw(8)英语setw(8)C+setw(8)最高分setw(8)最低分endl;cout-endl;for(i=0;i10;i+)coutsetw(5)studentscorei1;coutsetw(12)studentnamei;coutsetw(8)studentscorei2setw(8)studentscorei3setw(8)studentscorei4setw(8)studentscorei5;/求最高分和最低分max=studentscorei2;min=studentscorei2;for(j=3;j6;j+)if(maxstudentscoreij)min=studentscoreij;/输出最高分和最低分coutsetw(8)maxsetw(8)minendl;cout-endl;elsecoutsetw(8)课程名setw(8)平均分setw(8)最高分setw(8)最低分endl;cout-endl;for(i=0;i4;i+)coutsetw(8)coursenameisetw(8)courseavgi;/求最高分和最低分max=studentscore0i+2;min=studentscore0i+2;for(j=1;j10;j+)if(maxstudentscoreji+2)min=studentscoreji+2;coutsetw(8)maxsetw(8)minendl;cout-endl;getchar();(3)函数声明在主函数的后面定义的函数,在调用之前一定要声明。将下面函数的声明语句,放在“函数的声明语句区”框内。void outputStudentScore(); /case 2: 输出学生的各门课成绩void calculateStu_Total_Average(); /case 3: 计算每名学生的总分和平均分void score_Highest_Lowest(int flag); /case 4:case 8:求二维数组的最大值和最小值, /flag=0:求每行的最高分和最低分; /flag=1:求每列的最高分和最低分;void countStu_Failed_Excellent(); /case 5:统计每名学生不及格课程门数和优秀课程门数void sort_By_Average(int flag); /case 6:case 9:排序/flag=0:按学生平均分的高低排序;/flag=1:按课程平均分排序void calculateCourse_Average_Failrate(); /case 7:计算每门课程的平均分和不及格率(4)函数调用在对应的case语句内,写上对应的函数调用语句,举例略。3)总结函数实现了模块化管理,使主函数更加简洁。在函数外定义的变量,称全局变量,供其他函数使用;在函数内定义的变量,称局部变量,供本函数使用。2头文件模块为了进一步模块化,还可以使用头文件。将函数写在一个头文件中,使用时只需将其包括进来就可以了。用到了多个文件,就使用工作组和项目来管理文件,这样更方便使用VSS来管理。使用多个头文件时,要避免数据重复定义的问题,数据集合中,某个数据如果首次被某个函数使用,就在该函数中定义。其他函数在使用时就不需要再定义,直接使用就行了;如果再定义数据,会出现数据被重复定义的错误信息。char studentname1015int studentscore107double studentavg10char coursename410int coursesum4double courseavg4double coursefailed4void outputStudentScore();void calculateStu_Total_Average();void score_Highest_Lowest(int flag);void countStu_Failed_Excellent();void sort_By_Average(int flag);void calculateCourse_Average_Failrate();数据与首次被使用的函数之间的关系图1)工程任务下面给出程序框架,根据操作步骤完善程序。#include /输入输出头文件#include/system(cls),清屏函数的头文件#include/getchar(),接收一个字符函数的头文件,起到暂停作用;#include /setw()函数的头文件#include /strcpy()函数的头文件包含自定义头文件void main()int options;/用来存放选项的变量do/循环语句system(cls);/清屏函数cout 学生成绩管理系统endl;cout =endl;coutendl;cout 1输入学生成绩endl;cout 2输出学生成绩endl;cout 3计算每名学生的总分和平均分endl;cout 4. 输出每名学生的最高分和最低分endl;cout 5统计每名学生的不及格课程门数和优秀课程门数endl;cout 6按学生平均分的高低排序endl;cout 7. 计算每门课程的平均分和不及格率endl;cout 8输出每门课程的最高分和最低分endl;cout 9按每门课程平均分的高低排序endl;cout 10. 退出endlendl;cout =endl;coutoptions;switch(options)case 1: /输入学生成绩system(cls);coutendl 定义数组时已经初始化,等调试完代码后再修改!endl;getchar();break;case 2: /输出学生成绩outputStudentScore();break;case 3:/计算每名学生的总分和平均分calculateStu_Total_Average();break;case 4: /输出每名学生的最高分和最低分score_Highest_Lowest(0); /flag=0system(cls);break;case 5: /统计每名学生的不及格课程门数和优秀课程门数countStu_Failed_Excellent(); break;case 6: /按学生平均分的高低排序,先执行第3项,计算总分和平均分sort_By_Average(0); /flag=0break;case 7: /计算每门课程的平均分和不及格率calculateCourse_Average_Failrate();break;case 8: /输出每门课程的最高分和最低分score_Highest_Lowest(1); /flag=1break;case 9: /按每门课程平均分的高低排序sort_By_Average(1); /flag=1break;case 10: /退出;while(options!=10);system(cls);2)操作步骤仅此一个为例,其他头文件的方法都类似(1)新建工作组打开Visual C+6.0,选择File菜单New选项,在New对话框中选择Workspaces,设置工作目录为D:,输入工作组名称StudentScoreMIS_3_2,如下图所示,单击OK,就建好了一个空的工作组。(2)新建项目选择File菜单New选项,在New对话框中选择Projects,在左侧窗口中选择Win32 Console Application,在右侧选中Add to current workspace选项,输入项目名称StudentScoreMIS_3_2,如下图所示。单击OK后,出现下图,选择An empty project,单击Finish按钮,在出现的对话框中,如下下图所示,单击OK,就建好了。(3)新建源程序选择File菜单New选项,在New对话框中选择Files,左侧选择C+ Source File,右侧选中Add to project,输入源程序名StudentScore_3_2,单击OK,就进入源代码编辑窗口。将函数模块的代码,全部复制到当前窗口,下面将函数修改成头文件。(4)新建头文件学生成绩管理系统中的第二选项“输出学生成绩”,将函数void outputStudentScore()放在头文件中,选择File菜单New选项,在New对话框中选择Files,在窗口左侧选择C/C+ Header File,右侧输入头文件名outputStudentScore,单击OK,就建了一个空的头文件。编辑头文件,第一:将原来系统中的函数void outputStudentScore()的定义部分,剪切到头文件中;第二:根据函数与数据的关系图,将该函数用到的数据也要剪切到头文件中来;第三:保存头文件。代码如下所示。char studentname1015=zhanglili,chenjunwei,fanweiyong,tangjinquan, pengtianyi,liuhao,wuling,sunpeipei,shenhaiyan, tangxueyan;int studentscore107=0,1,78,56,98,90,0,0,2,65,78,92,98,0,0,3,34,87,89,80,0,0,4,77,88,65,77,0,0,5,56,66,43,66,0,0,6,67,87,77,98,0,0,7,87,67,35,97,0,0,8,78,67,87,60,0,0,9,67,76,88,72,0,0,10,80,96,79,58,0,;/二维数组学生成绩是10行7列,第0列用来排名次,第1列存放学号,/第2,3,4,5列存放4门课程的成绩,第6列存放总分,初始化时为0void outputStudentScore() /case 2: 输出学生的成绩system(cls);coutendl;coutsetw(5)学号setw(12)姓名setw(8)数学setw(8)语文setw(8)英语setw(8)C+endl;cout-endl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公共卫生机构消毒防疫及环境保洁服务协议
- 2025年特种材料采购与高效运输服务专项合同
- 2025年文化创意产业融资担保合作协议
- 2025年雇佣中国员工劳动合同范本
- 2025年检验多选试题及答案
- 续签劳动合同
- 2025年在线教育平台用户增长与留存策略:在线教育平台用户激励与留存策略报告
- 2025年新型城镇化建设可行性研究评估报告
- 2025年海洋生态保护政策与海洋生态环境治理能力建设报告
- 2025年文化遗产数字化保护与利用的数字文化遗产保护人才培养研究
- 刘润年度演讲课件20241026
- DB52T 1724-2023 城市道路指路标志设置与管理规范
- 《信息技术基础》高职全套教学课件
- DB11T 1794-2020 医疗机构临床用血技术规范
- 应急信息报送规章制度
- 商务专员培训
- 格构柱、杯形基础钢结构工程施工组织设计
- 2024公安机关人民警察高级执法资格考试题(解析版)
- 统编版语文一年级上册第八单元单元任务群整体公开课一等奖创新教学设计
- 人教版小学语文1-6年级背诵内容完整版
- 分部、分项工程质量验收记录
评论
0/150
提交评论