学生成绩管理系统函数与头文件篇.docx
- 文档编号:8497947
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:192.16KB
学生成绩管理系统函数与头文件篇.docx
《学生成绩管理系统函数与头文件篇.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统函数与头文件篇.docx(18页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统函数与头文件篇
第四章学生成绩管理系统—函数与头文件篇
两大部分内容
第一大部分是:
首选将其函数化;第二大部分是,将其头文件化
1.函数模块
将第三章的学生成绩管理系统,各个模块功能改为用函数实现。
设计了6个函数来完成系统所有功能,各个函数的具体功能如系统功能与函数的对应图所示。
系统功能与函数对应图
1)工程任务
根据系统功能与函数对应图,将所有的函数实现,完成系统功能。
下面给出代码框架,根据操作步骤完善程序。
#include
#include
#include
#include
#include
voidmain()
{
intoptions;//用来存放选项的变量
do//循环语句
{
system("cls");//清屏函数
cout<<"学生成绩管理系统"< cout<<"=========================================="< cout< cout<<"1.输入学生成绩"< cout<<"2.输出学生成绩"< cout<<"3.计算每名学生的总分和平均分"< cout<<"4.输出每名学生的最高分和最低分"< cout<<"5.统计每名学生的不及格课程门数和优秀课程门数"< cout<<"6.按学生平均分的高低排序"< cout<<"7.计算每门课程的平均分和不及格率"< cout<<"8.输出每门课程的最高分和最低分"< cout<<"9.按每门课程平均分的高低排序"< cout<<"10.退出"< cout<<"=========================================="< cout<<"输入选项(1-10): "; cin>>options; switch(options) { case1: //输入学生成绩 system("cls"); cout< "< getchar(); break; case2: //输出学生成绩 break; case3: //计算每名学生的总分和平均分 break; case4: //输出每名学生的最高分和最低分 break; case5: //统计每名学生的不及格课程门数和优秀课程门数 break; case6: //按学生平均分的高低排序,先执行第3项,计算总分和平均分 break; case7: //计算每门课程的平均分和不及格率 break; case8: //输出每门课程的最高分和最低分 break; case9: //按每门课程平均分的高低排序 break; case10: //退出 ; } }while(options! =10); system("cls"); } voidoutputStudentScore()//case2: 输出学生的成绩 { } voidcalculateStu_Total_Average()//case3: 计算每名学生的总分和平均分 { } voidscore_Highest_Lowest(intflag)//case4: case8: 求二维数组的最大值和最小值,flag=0: 求每行的最高分和最低分;flag=1: 求每列的最高分和最低分; {system("cls"); cout< inti,j; intmax,min;//最高分和最低分 if(flag==0) { } elseif(flag==1) { } getchar(); } voidcountStu_Failed_Excellent()//case5: 统计每名学生的不及格课程门数和优秀课程门数 { } //按学生平均分的高低排序,一定已经执行了第3项,计算出了总分和平均分 voidsort_By_Average(intflag)//case6: case9: flag=0: 按学生平均分的高低排序;flag=1: 按课程平均分排序 { system("cls"); inti,j; if(flag==0) { } elseif(flag==1) { } getchar(); } voidcalculateCourse_Average_Failrate()//case7: 计算每门课程的平均分和不及格率 { } 2)操作步骤 (1)设置全局变量 以前只有一个主函数,所有的变量都定义在主函数中,现在要定义多个函数,每个函数都要用到公共的变量,因此将这些变量定义为全局变量。 将下面的变量的定义在主函数的外面,写在全局变量定义区框内。 charstudentname[10][15]={"zhanglili","chenjunwei","fanweiyong","tangjinquan", "pengtianyi","liuhao","wuling","sunpeipei","shenhaiyan", "tangxueyan"}; charcoursename[4][10]={"math","chinese","english","c++"}; intstudentscore[10][7]={{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列存放总分,初始化时为0 doublestudentavg[10];//存放每名学生的平均成绩 intcoursesum[4];//存放每门课程总和 doublecourseavg[4];//存放每门课程的平均成绩 doublecoursefailed[4];//存放每门课程的不及格率 (2)函数的定义 在main()函数的下面,定义其他函数,主函数和其他函数是并列关系,不是包含关系,切不可将其他函数定义在主函数之内,一定在主函数的外面。 A.设计outputStudentScore()函数,输出学生成绩,将原来系统中case2: 中的语句,除了break外,其他语句剪切到outputStudentScore()函数体中,如下面的代码所示。 局部变量要自己定义,如这里的循环变量i。 voidoutputStudentScore()//case2: 输出学生的成绩 { system("cls"); cout< cout< < < cout<<"---------------------------------------------------------"< for(inti=0;i<10;i++) { cout< cout< cout< < < < } cout<<"---------------------------------------------------------"< getchar(); } B.设计score_Highest_Lowest(intflag)函数,如果flag=0,输出每名学生的最高分和最低分;如果flag=1,输出每门课程的最高分和最低分。 将原来系统中case4: 中的语句,剪切到该函数的定义函数体1中;将case8: 中的语句,剪切到该函数的定义函数体2中,如下面代码所示。 其他函数的定义与此类似。 voidscore_Highest_Lowest(intflag)//case4: case8: 求二维数组的最大值和最小值,flag=0: 求每行的最高分和最低分;flag=1: 求每列的最高分和最低分; { system("cls"); cout< inti,j; intmax,min;//最高分和最低分 if(flag==0) { cout< < < < cout<<"--------------------------------------------------------------------"< for(i=0;i<10;i++) { cout< cout< cout< < < < //求最高分和最低分 max=studentscore[i][2]; min=studentscore[i][2]; for(j=3;j<6;j++) { if(max max=studentscore[i][j]; if(min>studentscore[i][j]) min=studentscore[i][j]; } //输出最高分和最低分 cout< } cout<<"--------------------------------------------------------------------"< } else { cout< < cout<<"--------------------------------------------"< for(i=0;i<4;i++) { cout< //求最高分和最低分 max=studentscore[0][i+2]; min=studentscore[0][i+2]; for(j=1;j<10;j++) { if(max max=studentscore[j][i+2]; if(min>studentscore[j][i+2]) min=studentscore[j][i+2]; } cout< } cout<<"--------------------------------------------"< } getchar(); } (3)函数声明 在主函数的后面定义的函数,在调用之前一定要声明。 将下面函数的声明语句,放在“函数的声明语句区”框内。 voidoutputStudentScore();//case2: 输出学生的各门课成绩 voidcalculateStu_Total_Average();//case3: 计算每名学生的总分和平均分 voidscore_Highest_Lowest(intflag);//case4: case8: 求二维数组的最大值和最小值, //flag=0: 求每行的最高分和最低分; //flag=1: 求每列的最高分和最低分; voidcountStu_Failed_Excellent();//case5: 统计每名学生不及格课程门数和优秀课程门数 voidsort_By_Average(intflag);//case6: case9: 排序 //flag=0: 按学生平均分的高低排序; //flag=1: 按课程平均分排序 voidcalculateCourse_Average_Failrate();//case7: 计算每门课程的平均分和不及格率 (4)函数调用 在对应的case语句内,写上对应的函数调用语句,举例略。 3)总结 函数实现了模块化管理,使主函数更加简洁。 在函数外定义的变量,称全局变量,供其他函数使用;在函数内定义的变量,称局部变量,供本函数使用。 2.头文件模块 为了进一步模块化,还可以使用头文件。 将函数写在一个头文件中,使用时只需将其包括进来就可以了。 用到了多个文件,就使用工作组和项目来管理文件,这样更方便使用VSS来管理。 使用多个头文件时,要避免数据重复定义的问题,数据集合中,某个数据如果首次被某个函数使用,就在该函数中定义。 其他函数在使用时就不需要再定义,直接使用就行了;如果再定义数据,会出现数据被重复定义的错误信息。 数据与首次被使用的函数之间的关系图 1)工程任务 下面给出程序框架,根据操作步骤完善程序。 #include #include #include #include #include voidmain() { intoptions;//用来存放选项的变量 do//循环语句 { system("cls");//清屏函数 cout<<"学生成绩管理系统"< cout<<"=========================================="< cout< cout<<"1.输入学生成绩"< cout<<"2.输出学生成绩"< cout<<"3.计算每名学生的总分和平均分"< cout<<"4.输出每名学生的最高分和最低分"< cout<<"5.统计每名学生的不及格课程门数和优秀课程门数"< cout<<"6.按学生平均分的高低排序"< cout<<"7.计算每门课程的平均分和不及格率"< cout<<"8.输出每门课程的最高分和最低分"< cout<<"9.按每门课程平均分的高低排序"< cout<<"10.退出"< cout<<"=========================================="< cout<<"输入选项(1-10): "; cin>>options; switch(options) { case1: //输入学生成绩 system("cls"); cout< "< getchar(); break; case2: //输出学生成绩 outputStudentScore(); break; case3: //计算每名学生的总分和平均分 calculateStu_Total_Average(); break; case4: //输出每名学生的最高分和最低分 score_Highest_Lowest(0);//flag=0 system("cls"); break; case5: //统计每名学生的不及格课程门数和优秀课程门数 countStu_Failed_Excellent(); break; case6: //按学生平均分的高低排序,先执行第3项,计算总分和平均分 sort_By_Average(0);//flag=0 break; case7: //计算每门课程的平均分和不及格率 calculateCourse_Average_Failrate(); break; case8: //输出每门课程的最高分和最低分 score_Highest_Lowest (1);//flag=1 break; case9: //按每门课程平均分的高低排序 sort_By_Average (1);//flag=1 break; case10: //退出 ; } }while(options! =10); system("cls"); } 2)操作步骤 仅此一个为例,其他头文件的方法都类似 (1)新建工作组 打开VisualC++6.0,选择File菜单New选项,在New对话框中选择Workspaces,设置工作目录为D: \,输入工作组名称StudentScoreMIS_3_2,如下图所示,单击OK,就建好了一个空的工作组。 (2)新建项目 选择File菜单New选项,在New对话框中选择Projects,在左侧窗口中选择Win32ConsoleApplication,在右侧选中Addtocurrentworkspace选项,输入项目名称StudentScoreMIS_3_2,如下图所示。 单击OK后,出现下图,选择Anemptyproject,单击Finish按钮,在出现的对话框中,如下下图所示,单击OK,就建好了。 (3)新建源程序 选择File菜单New选项,在New对话框中选择Files,左侧选择C++SourceFile,右侧选中Addtoproject,输入源程序名StudentScore_3_2,单击OK,就进入源代码编辑窗口。 将函数模块的代码,全部复制到当前窗口,下面将函数修改成头文件。 (4)新建头文件 学生成绩管理系统中的第二选项“输出学生成绩”,将函数voidoutputStudentScore()放在头文件中,选择File菜单New选项,在New对话框中选择Files,在窗口左侧选择C/C++HeaderFile,右侧输入头文件名outputStudentScore,单击OK,就建了一个空的头文件。 编辑头文件,第一: 将原来系统中的函数voidoutputStudentScore()的定义部分,剪切到头文件中;第二: 根据函数与数据的关系图,将该函数用到的数据也要剪切到头文件中来;第三: 保存头文件。 代码如下所示。 charstudentname[10][15]={"zhanglili","chenjunwei","fanweiyong","tangjinquan", "pengtianyi","liuhao","wuling","sunpeipei","shenhaiyan", "tangxueyan"}; intstudentscore[10][7]={{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列存放总分,初始化时为0 voidoutputStudentScore()//case2: 输出学生的成绩 { system("cls"); cout< cout< <<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 函数 文件