请用C语言实现某班最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体 门数由键盘输入)。请使用模块化程序设计方法编程实现如下菜单驱动的学生成绩管理系统:(1)输入每个学生的学号、姓名和各科考试成绩;(2)按每个学生的总分由高到低排出名次表;
时间: 2023-12-30 21:02:34 浏览: 97
今天给大家分享一个C语言环境下开发的学生成绩管理系统 这个系统原理很简单:成绩的录入,输出,修改,排序,删除等等
好的,根据您的要求,我来给您写一个 C 语言程序,实现学生成绩管理系统的功能。
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 30
#define MAX_COURSE_NUM 6
int student_num; // 学生人数
int course_num; // 课程数
struct Student {
int id; // 学号
char name[20]; // 姓名
int score[MAX_COURSE_NUM]; // 各科考试成绩
int total_score; // 总分
int rank; // 排名
};
struct Student students[MAX_STUDENT_NUM]; // 定义一个学生数组
// 输入每个学生的学号、姓名和各科考试成绩
void input_scores() {
printf("请输入学生人数:");
scanf("%d", &student_num);
printf("请输入课程数:");
scanf("%d", &course_num);
for (int i = 0; i < student_num; i++) {
printf("请输入第%d个学生的学号、姓名和各科考试成绩:\n", i + 1);
scanf("%d%s", &students[i].id, students[i].name);
students[i].total_score = 0;
for (int j = 0; j < course_num; j++) {
scanf("%d", &students[i].score[j]);
students[i].total_score += students[i].score[j];
}
}
printf("输入完成。\n");
}
// 按每个学生的总分由高到低排出名次表
void calc_rank() {
struct Student temp;
for (int i = 0; i < student_num - 1; i++) {
for (int j = 0; j < student_num - 1 - i; j++) {
if (students[j].total_score < students[j + 1].total_score) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
for (int i = 0; i < student_num; i++) {
students[i].rank = i + 1;
}
}
// 显示菜单
void show_menu() {
printf("\n");
printf("学生成绩管理系统菜单\n");
printf("====================\n");
printf("1. 输入学生信息\n");
printf("2. 按总分排序并输出名次表\n");
printf("0. 退出程序\n");
}
// 输出名次表
void print_rank() {
printf("学号\t姓名\t总分\t排名\n");
for (int i = 0; i < student_num; i++) {
printf("%d\t%s\t%d\t%d\n", students[i].id, students[i].name, students[i].total_score, students[i].rank);
}
}
int main() {
int choice; // 用户选择的菜单选项
do {
show_menu(); // 显示菜单
printf("请选择菜单选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_scores(); // 输入每个学生的学号、姓名和各科考试成绩
break;
case 2:
calc_rank(); // 按每个学生的总分由高到低排出名次表
print_rank(); // 输出名次表
break;
case 0:
printf("程序已退出。\n");
break;
default:
printf("错误的菜单选项,请重新选择。\n");
}
} while (choice != 0);
return 0;
}
```
以上就是一个简单的学生成绩管理系统的实现,您可以根据需要进行修改和完善。
阅读全文