用C语言编写可以实现学生成绩简单管理系统。本系统主要实现以下功能: (1)录入学生信息。 (2)按学号查询学生信息。 (3)按姓名查询学生信息。 (4)添加一个学生信息。 (5)按学号删除学生信息 (6)按学号修改学生信息 (7)显示所有学生信息 (8)按课程排序(有高到底)输出显示学生信息 (9)按分数段统计学生信息 (10)退出系统
时间: 2023-12-01 11:02:46 浏览: 95
学生成绩管理系统(C语言实现)
以下是一个简单的学生成绩管理系统的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STU_NUM 100
#define MAX_NAME_LEN 20
#define MAX_COURSE_NUM 5
typedef struct {
int id; // 学号
char name[MAX_NAME_LEN]; // 姓名
int scores[MAX_COURSE_NUM]; // 课程成绩
int total_score; // 总成绩
} Student;
Student stu_list[MAX_STU_NUM];
int stu_num = 0;
void clear_input_buffer() {
char c;
while ((c = getchar()) != '\n' && c != EOF);
}
void add_student() {
if (stu_num >= MAX_STU_NUM) {
printf("学生数量已达到上限,无法添加\n");
return;
}
Student new_stu;
printf("请输入学号:");
scanf("%d", &new_stu.id);
clear_input_buffer();
for (int i = 0; i < stu_num; i++) {
if (stu_list[i].id == new_stu.id) {
printf("学号已存在,请重新输入\n");
return;
}
}
printf("请输入姓名:");
fgets(new_stu.name, MAX_NAME_LEN, stdin);
for (int i = 0; i < MAX_COURSE_NUM; i++) {
printf("请输入第%d门课程成绩:", i + 1);
scanf("%d", &new_stu.scores[i]);
new_stu.total_score += new_stu.scores[i];
}
stu_list[stu_num] = new_stu;
stu_num++;
printf("添加成功\n");
}
void print_student(Student stu) {
printf("学号:%d,姓名:%s,", stu.id, stu.name);
printf("课程成绩:%d", stu.scores[0]);
for (int i = 1; i < MAX_COURSE_NUM; i++) {
printf(", %d", stu.scores[i]);
}
printf(",总成绩:%d\n", stu.total_score);
}
void query_student_by_id() {
int id;
printf("请输入要查询的学号:");
scanf("%d", &id);
clear_input_buffer();
for (int i = 0; i < stu_num; i++) {
if (stu_list[i].id == id) {
print_student(stu_list[i]);
return;
}
}
printf("未找到该学生\n");
}
void query_student_by_name() {
char name[MAX_NAME_LEN];
printf("请输入要查询的姓名:");
fgets(name, MAX_NAME_LEN, stdin);
for (int i = 0; i < stu_num; i++) {
if (strcmp(stu_list[i].name, name) == 0) {
print_student(stu_list[i]);
return;
}
}
printf("未找到该学生\n");
}
void delete_student_by_id() {
int id;
printf("请输入要删除的学号:");
scanf("%d", &id);
clear_input_buffer();
for (int i = 0; i < stu_num; i++) {
if (stu_list[i].id == id) {
for (int j = i; j < stu_num - 1; j++) {
stu_list[j] = stu_list[j + 1];
}
stu_num--;
printf("删除成功\n");
return;
}
}
printf("未找到该学生\n");
}
void modify_student_by_id() {
int id;
printf("请输入要修改的学号:");
scanf("%d", &id);
clear_input_buffer();
for (int i = 0; i < stu_num; i++) {
if (stu_list[i].id == id) {
printf("请输入新的姓名:");
fgets(stu_list[i].name, MAX_NAME_LEN, stdin);
for (int j = 0; j < MAX_COURSE_NUM; j++) {
printf("请输入第%d门课程成绩:", j + 1);
scanf("%d", &stu_list[i].scores[j]);
stu_list[i].total_score += stu_list[i].scores[j];
}
printf("修改成功\n");
return;
}
}
printf("未找到该学生\n");
}
void sort_students_by_score() {
for (int i = 0; i < stu_num - 1; i++) {
for (int j = i + 1; j < stu_num; j++) {
if (stu_list[i].total_score < stu_list[j].total_score) {
Student tmp = stu_list[i];
stu_list[i] = stu_list[j];
stu_list[j] = tmp;
}
}
}
printf("排序成功\n");
}
void count_students_by_score() {
int score_min, score_max;
printf("请输入统计分数段的最小值和最大值:");
scanf("%d %d", &score_min, &score_max);
clear_input_buffer();
int count = 0;
for (int i = 0; i < stu_num; i++) {
if (stu_list[i].total_score >= score_min && stu_list[i].total_score <= score_max) {
count++;
}
}
printf("分数段%d-%d的学生人数为%d\n", score_min, score_max, count);
}
void print_menu() {
printf("\n");
printf("请选择操作:\n");
printf("1. 录入学生信息\n");
printf("2. 按学号查询学生信息\n");
printf("3. 按姓名查询学生信息\n");
printf("4. 添加一个学生信息\n");
printf("5. 按学号删除学生信息\n");
printf("6. 按学号修改学生信息\n");
printf("7. 显示所有学生信息\n");
printf("8. 按课程排序输出所有学生信息\n");
printf("9. 按分数段统计学生信息\n");
printf("10. 退出系统\n");
}
int main() {
int choice;
while (1) {
print_menu();
scanf("%d", &choice);
clear_input_buffer();
switch (choice) {
case 1:
add_student();
break;
case 2:
query_student_by_id();
break;
case 3:
query_student_by_name();
break;
case 4:
add_student();
break;
case 5:
delete_student_by_id();
break;
case 6:
modify_student_by_id();
break;
case 7:
for (int i = 0; i < stu_num; i++) {
print_student(stu_list[i]);
}
break;
case 8:
sort_students_by_score();
for (int i = 0; i < stu_num; i++) {
print_student(stu_list[i]);
}
break;
case 9:
count_students_by_score();
break;
case 10:
exit(0);
default:
printf("请输入正确的选项\n");
break;
}
}
return 0;
}
```
该程序使用结构体存储学生信息,通过数组来管理多个学生的信息。程序提供了一系列操作,如录入学生信息、查询学生信息、添加学生信息、删除学生信息、修改学生信息、显示所有学生信息、按课程排序输出所有学生信息和按分数段统计学生信息等。用户可以根据自己的需要进行选择。
阅读全文