某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。定义结构体类型描述学生信息,每个学生信息包括:学号、姓名、多门课的成绩、总成绩和平均成绩。用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。
(1) 录入每个学生的学号、姓名和各科考试成绩。
(2) 计算每门课程的总分和平均分。
(3) 计算每个学生的总分和平均分。.
(4) 按每个学生的总分由高到低排出名次表。
(5) 按学号由小到大排出成绩表。.
(6) 按姓名的字典顺序排出成绩表。.
(7) 按学号查询学生排名极其考试成绩。
(8) 按姓名查询学生排名极其考试成绩。
(9) 按优秀(90-100)、良好(80-90)、中等(70-80)、及格(60-70)、不及格(0-59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比。”
(10)输出每个学生的学号、姓名、各科考试成绩以及每门课程的总分和平均分。
要求程序运行后先显示如下菜单,并提示用户输入选项:.
参考GPT和自己的思路:
当然,我愿意回答你的问题。
针对你的问题,以下是我给出的解答:
程序实现可参考以下步骤:
定义结构体类型描述学生信息,如下:
struct Student {
string id; // 学号
string name; // 姓名
float scores[6]; // 成绩,每个学生最多不超过6门课
float sumScore; // 总成绩
float avgScore; // 平均成绩
int rank; // 排名
};
编写函数以录入学生信息:
void inputStudents(Student students[], int n);
其中,n 为输入学生的数量,students 为存储学生信息的结构体数组。
编写函数以计算每门课程的总分和平均分:
void sumAvgScoreByCourse(Student students[], int n, float sumScores[], float avgScores[]);
其中,n 为学生的数量,students 为存储学生信息的结构体数组,sumScores 为按课程顺序存储的总分数组,avgScores 为按课程顺序存储的平均分数组。
编写函数以计算每个学生的总分和平均分:
void sumAvgScoreByStudent(Student students[], int n);
其中,n 为学生的数量,students 为存储学生信息的结构体数组。
编写函数以按每个学生的总分由高到低排出名次表:
void rankBySumScore(Student students[], int n);
其中,n 为学生的数量,students 为存储学生信息的结构体数组。
编写函数以按学号由小到大排出成绩表:
void sortByStudentId(Student students[], int n);
其中,n 为学生的数量,students 为存储学生信息的结构体数组。
编写函数以按姓名的字典顺序排出成绩表:
void sortByStudentName(Student students[], int n);
其中,n 为学生的数量,students 为存储学生信息的结构体数组。
编写函数以按学号查询学生排名及其考试成绩:
void searchByStudentId(Student students[], int n, string searchId);
其中,n 为学生的数量,students 为存储学生信息的结构体数组,searchId 为需要查询的学生的学号。
编写函数以按姓名查询学生排名及其考试成绩:
void searchByStudentName(Student students[], int n, string searchName);
其中,n 为学生的数量,students 为存储学生信息的结构体数组,searchName 为需要查询的学生的姓名。
编写函数以按优秀、良好、中等、及格、不及格五个类别,对每门课程分别统计每个类别的人数以及所占的百分比:
void countScoreByCategory(Student students[], int n);
其中,n 为学生的数量,students 为存储学生信息的结构体数组。
编写函数以输出每个学生的学号、姓名、各科考试成绩以及每门课程的总分和平均分:
void displayStudents(Student students[], int n);
其中,n 为学生的数量,students 为存储学生信息的结构体数组。
以上是一个简单的学生成绩管理系统的实现,你可以根据需要进行进一步的优化和扩展。
希望以上的解决方案能够帮到你,祝你在计算机领域取得更多的成功!