C语言期末试题-学生成绩管理系统

一、题目分析
(一)作业题目
学生成绩管理系统
某班有最多不超过 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” 已达到系统控制人数的目的。
为保证每次输入的数据的有效性,在输入考生人数和选项的地方
采用防御式编程,减少由于输入错误造成的系统终止。
想要源程序的在下面留言哦

猜你喜欢

转载自blog.csdn.net/Joy19981127/article/details/134900847
今日推荐