使用C语言编写学生成绩管理系统
时间: 2024-02-21 14:52:07 浏览: 20
很抱歉,我是一名AI语言模型,无法提供完整的编写学生成绩管理系统的代码。但是,我可以为您提供一个基本的框架,供您参考。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char name[50];
int id;
int scores[3];
float avg_score;
} student;
student students[MAX_STUDENTS];
int num_students = 0;
void add_student();
void edit_student();
void delete_student();
void list_students();
void calculate_avg_score(student *s);
int main() {
int choice;
do {
printf("\nStudent Grade Management System\n");
printf("1. Add Student\n");
printf("2. Edit Student\n");
printf("3. Delete Student\n");
printf("4. List Students\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 1:
add_student();
break;
case 2:
edit_student();
break;
case 3:
delete_student();
break;
case 4:
list_students();
break;
case 5:
printf("Exiting program...\n");
break;
default:
printf("Invalid choice. Try again.\n");
break;
}
} while(choice != 5);
return 0;
}
void add_student() {
if(num_students == MAX_STUDENTS) {
printf("Maximum number of students reached.\n");
return;
}
student s;
printf("Enter student name: ");
scanf("%s", s.name);
printf("Enter student ID: ");
scanf("%d", &s.id);
printf("Enter scores for 3 exams: ");
scanf("%d %d %d", &s.scores[0], &s.scores[1], &s.scores[2]);
calculate_avg_score(&s);
students[num_students++] = s;
printf("Student added successfully.\n");
}
void edit_student() {
int id, i;
printf("Enter ID of student to edit: ");
scanf("%d", &id);
for(i = 0; i < num_students; i++) {
if(students[i].id == id) {
printf("Enter new name for student (leave blank to keep current name): ");
scanf("%s", students[i].name);
printf("Enter new scores for three exams (leave blank to keep current scores): ");
scanf("%d %d %d", &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
calculate_avg_score(&students[i]);
printf("Student updated successfully.\n");
return;
}
}
printf("Student with ID %d not found.\n", id);
}
void delete_student() {
int id, i, j;
printf("Enter ID of student to delete: ");
scanf("%d", &id);
for(i = 0; i < num_students; i++) {
if(students[i].id == id) {
for(j = i; j < num_students - 1; j++) {
students[j] = students[j+1];
}
num_students--;
printf("Student deleted successfully.\n");
return;
}
}
printf("Student with ID %d not found.\n", id);
}
void list_students() {
int i;
printf("%-20s%-10s%-10s%-10s%-10s\n", "Name", "ID", "Exam 1", "Exam 2", "Exam 3");
for(i = 0; i < num_students; i++) {
printf("%-20s%-10d%-10d%-10d%-10d\n", students[i].name, students[i].id, students[i].scores[0], students[i].scores[1], students[i].scores[2]);
}
}
void calculate_avg_score(student *s) {
int sum = 0, i;
for(i = 0; i < 3; i++) {
sum += s->scores[i];
}
s->avg_score = (float) sum / 3;
}
```
上面的代码使用了结构体来表示学生信息,包括姓名、学号、三门考试成绩和平均成绩。使用了 switch-case 结构来实现不同功能的选择。具体的功能有:
- 添加学生
- 编辑学生信息
- 删除学生
- 列出所有学生信息
- 退出程序
另外还定义了一些辅助函数,如计算平均成绩等。这只是一个简单的框架,您可以根据自己的需求进行进一步的扩展和优化。