学生成绩管理系统函数与头文件篇.docx

上传人:b****6 文档编号:8497947 上传时间:2023-01-31 格式:DOCX 页数:18 大小:192.16KB
下载 相关 举报
学生成绩管理系统函数与头文件篇.docx_第1页
第1页 / 共18页
学生成绩管理系统函数与头文件篇.docx_第2页
第2页 / 共18页
学生成绩管理系统函数与头文件篇.docx_第3页
第3页 / 共18页
学生成绩管理系统函数与头文件篇.docx_第4页
第4页 / 共18页
学生成绩管理系统函数与头文件篇.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统函数与头文件篇.docx

《学生成绩管理系统函数与头文件篇.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统函数与头文件篇.docx(18页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统函数与头文件篇.docx

学生成绩管理系统函数与头文件篇

第四章学生成绩管理系统—函数与头文件篇

两大部分内容

第一大部分是:

首选将其函数化;第二大部分是,将其头文件化

1.函数模块

将第三章的学生成绩管理系统,各个模块功能改为用函数实现。

设计了6个函数来完成系统所有功能,各个函数的具体功能如系统功能与函数的对应图所示。

系统功能与函数对应图

1)工程任务

根据系统功能与函数对应图,将所有的函数实现,完成系统功能。

下面给出代码框架,根据操作步骤完善程序。

#include//输入输出头文件

#include//system("cls"),清屏函数的头文件

#include//getchar(),接收一个字符函数的头文件,起到暂停作用;

#include//setw()函数的头文件

#include//strcpy()函数的头文件

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//system("cls"),清屏函数的头文件

#include//getchar(),接收一个字符函数的头文件,起到暂停作用;

#include//setw()函数的头文件

#include//strcpy()函数的头文件

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<

<<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1