一、题目分析
(一)作业题目
学生成绩管理系统
某班有最多不超过 30 人(由键盘输入)参加考试。考试科目为
数学、英语和物理,定义结构体类型,用结构体数组做函数参数,实
现以下可供用户选择的菜单项。
(
0
)
exit
;
(1)录入每个学生的学号、姓名和各科考试成绩;
(2)计算每门课程的总分和平均分;
(3)计算每个学生的总分和平均分;
(4)按每个学生的总分由高到低排出名次表;
(5)按每个学生的总分由低到高排出名次表;
(6)按学号由小到大排出成绩表;
(7)按姓名的字典顺序排出成绩表;
(8)按学号查询学生排名及其考试成绩;
(9)按姓名查询学生排名及其考试成绩;
(10)按优秀(
90~100
)、良好(
80~89
)、中等(
70~79
)、及格(
60~69
)、
不及格(
0~59
)五个类别。对每门课程分别统计每个类别的人数以及
所占的百分比;
(11)输出每个学生的学号、姓名、各科考试成绩,以及每门课
程的总分和平均分。
(二)题目分析
1、程序要能做什么
根据题意,本系统要能做到手动输入学生人数以及考生相关信息
(学号、姓名、三科成绩),并能对输入的考生信息进行相应的分析
并显示结果,能根据要求进行查找相关数据信息。
2、程序处理什么
对输入的考生的三科成绩进行各自求和、取平均值;
对数学、英语、物理三科进行分析即求其各自平均值、统计各类
别的学生人数及所占百分比;
分别按学号顺序、姓名、考生总分高低对考生进行排序并输出;
根据提示,分别按给定学号和姓名进行查找并输出。
二、编程思想
2
1、定义结构体
结构体应包括学生学号、姓名、数学成绩、英语成绩、物理成绩、
成绩总分及平均分。用结构体数组
struct student stu[]
表示。具体如下:
struct student{
char no[15];
// 学生学号
char name[10];
// 学生姓名
float math;
// 数学成绩
float english;
// 英语成绩
float physics;
// 物理成绩
float sum;
// 成绩总分
float aver;
// 平均分
}stu[N];
2、定义函数
包括显示菜单项函数、输入数据函数、计算学科平均分函数、按
总分从高到低显示名次表、按总分从低到高显示名次表、按学号从小
到大显示成绩单、按姓名顺序显示成绩单、按学号查询信息函数、按
姓名查询信息函数、统计各学科各类别的学生人数及所占百分比函数
及输出所有考生信息的函数。
为减少程序长度,单独建立一个供输出单个学生学号、姓名、数
学成绩、英语成绩、物理成绩、总分、平均分的函数。有结构体数组
做函数参数,具体如下:
void menu(struct student stu[]);
// 选择菜单
void input(struct student stu[]);
// 输入信息,计算学生成绩总分
和平均分
void class_ave(struct student stu[]);
// 计算课程平均分
void h_ranking(struct student stu[]);
// 按每个学生的总分由高到
低排出名次表
void l_ranking(struct student stu[]);
// 按每个学生的总分由低到
高排出名次表
void No_ranking(struct student stu[]);
// 按学号由小到大排出成
绩表
void Name_ranking(struct student stu[]);
// 按姓名的字典顺序
排出成绩表
void No_choose(struct student stu[]);
//按学号查询学生排名及其
3
考试成绩
void Name_choose(struct student stu[]);
// 按姓名查询学生排
名及其考试成绩
void cate(struct student stu[]);
// 统计每个类别的人数以及所占
的百分比
void output(struct student stu[]);
// 输出学生成绩信息
void prin(struct student stu);
// 输出函数
3、构建主函数
主函数主要是控制用户的选择及输出,采用
do
……
while
循环语
句和
switch
语句以实现功能。
为减少显示屏幕中的数据,采用
“system("cls");”
语句进行清屏处
理,考虑到可语句是放在
do
……
while
循环语句中的,为了能是用户
清晰的看见输出的内容,采用
“system("pause");”
语句进行暂停处理。
4、其他说明
为达到题目说的参加考试的学生人数不超过 30 人,故在程序开
头采用宏定义
“#define N 30”
已达到系统控制人数的目的。
为保证每次输入的数据的有效性,在输入考生人数和选项的地方
采用防御式编程,减少由于输入错误造成的系统终止。
![](https://i-blog.csdnimg.cn/blog_migrate/296bf1ae47a5ca6d7727d62a3f4e30cc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cbb077f8ca5d28bea3e25f05a9d65615.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f2b405e838cd72c04f99c0f169d44c73.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a838535a12ef1f65c7337bba5bf2c21b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3427c1f96587d270f23012ffe3d0b290.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a75aa3670008928a0068a6113a300cd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cf4a6802dacaa4b4084f309d4339413b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9fdaf04d6278249f0e80cb9c825b1db3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a3f23adafc684df07ede92f775c616d4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1fd31682374f29f4b87e8e4a227d8923.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2a4377f951563da19cd812458787d8d2.png)
想要源程序的在下面留言哦