一个完整的比较简单的C语言成绩管理系统并附带报告
时间: 2024-01-22 17:20:30 浏览: 12
以下是一个简单的C语言成绩管理系统,包括添加学生,删除学生,修改学生信息和查看学生成绩等功能。程序的运行需要在命令行窗口中进行。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生结构体
struct student {
char name[20]; // 姓名
int id; // 学号
float score; // 成绩
};
// 设置学生数量上限
#define MAX_STUDENTS 100
// 学生数组
struct student students[MAX_STUDENTS];
// 当前学生数量
int num_students = 0;
// 添加学生
void add_student() {
// 如果学生数量达到上限,输出错误信息并返回
if (num_students >= MAX_STUDENTS) {
printf("Error: too many students\n");
return;
}
// 输入学生信息
printf("Enter student name: ");
scanf("%s", students[num_students].name);
printf("Enter student id: ");
scanf("%d", &students[num_students].id);
printf("Enter student score: ");
scanf("%f", &students[num_students].score);
// 增加学生数量
num_students++;
}
// 删除学生
void delete_student() {
int id;
int i;
int found = 0;
// 输入要删除的学生的学号
printf("Enter student id to delete: ");
scanf("%d", &id);
// 查找对应的学生
for (i = 0; i < num_students; i++) {
if (students[i].id == id) {
// 找到了要删除的学生,将后面的学生向前移动一个位置
found = 1;
memcpy(&students[i], &students[i+1], sizeof(struct student) * (num_students - i - 1));
num_students--;
break;
}
}
// 输出是否删除成功的信息
if (found) {
printf("Student deleted\n");
} else {
printf("Error: student not found\n");
}
}
// 修改学生信息
void modify_student() {
int id;
int i;
int found = 0;
// 输入要修改的学生的学号
printf("Enter student id to modify: ");
scanf("%d", &id);
// 查找对应的学生
for (i = 0; i < num_students; i++) {
if (students[i].id == id) {
// 找到了要修改的学生,输入新的信息
found = 1;
printf("Enter new name (or '-' to keep old name): ");
scanf("%s", students[i].name);
printf("Enter new id (or 0 to keep old id): ");
scanf("%d", &students[i].id);
printf("Enter new score (or -1 to keep old score): ");
scanf("%f", &students[i].score);
break;
}
}
// 输出是否修改成功的信息
if (found) {
printf("Student modified\n");
} else {
printf("Error: student not found\n");
}
}
// 查看学生成绩
void view_students() {
int i;
if (num_students == 0) {
printf("No students\n");
} else {
for (i = 0; i < num_students; i++) {
printf("Name: %s, Id: %d, Score: %f\n", students[i].name, students[i].id, students[i].score);
}
}
}
// 主函数
int main() {
int choice;
// 不断显示菜单,直到用户选择退出
while (1) {
printf("Select option:\n");
printf("1. Add student\n");
printf("2. Delete student\n");
printf("3. Modify student\n");
printf("4. View students\n");
printf("5. Quit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
view_students();
break;
case 5:
return 0;
default:
printf("Invalid choice\n");
break;
}
}
}
```
以下是一个示例运行过程:
```
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
1
Enter student name: Alice
Enter student id: 1234
Enter student score: 90
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
1
Enter student name: Bob
Enter student id: 5678
Enter student score: 80
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
4
Name: Alice, Id: 1234, Score: 90.000000
Name: Bob, Id: 5678, Score: 80.000000
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
3
Enter student id to modify: 1234
Enter new name (or '-' to keep old name): -
Enter new id (or 0 to keep old id): 0
Enter new score (or -1 to keep old score): 95
Student modified
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
4
Name: Alice, Id: 1234, Score: 95.000000
Name: Bob, Id: 5678, Score: 80.000000
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
2
Enter student id to delete: 5678
Student deleted
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
4
Name: Alice, Id: 1234, Score: 95.000000
Select option:
1. Add student
2. Delete student
3. Modify student
4. View students
5. Quit
5
```