#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
int id;
char name[50];
int score;
struct Student *next;
};
struct Teacher {
int id;
char name[50];
struct Teacher *next;
};
struct Classroom {
int id;
int capacity;
struct Classroom *next;
};
struct Student *studentHead = NULL;
struct Teacher *teacherHead = NULL;
struct Classroom *classroomHead = NULL;
void insertStudent();
void insertTeacher();
void insertClassroom();
void displayMainMenu();
void printStudents();
void printTeachers();
void printClassrooms();
void deleteStudent(int id);
void deleteTeacher(int id);
void deleteClassroom(int id);
void manageScores(int id, int score);
void insertStudent() {
int id, score;
char name[50];
printf("请输入学生学号: ");
scanf("%d", &id);
printf("请输入学生姓名: ");
scanf("%s", name);
printf("请输入学生成绩: ");
scanf("%d", &score);
struct Student *newStudent = (struct Student*)malloc(sizeof(struct Student));
newStudent->id = id;
strcpy(newStudent->name, name);
newStudent->score = score;
newStudent->next = studentHead;
studentHead = newStudent;
}
void insertTeacher() {
int id;
char name[50];
printf("请输入老师工号: ");
scanf("%d", &id);
printf("请输入老师姓名: ");
scanf("%s", name);
struct Teacher *newTeacher = (struct Teacher*)malloc(sizeof(struct Teacher));
newTeacher->id = id;
strcpy(newTeacher->name, name);
newTeacher->next = teacherHead;
teacherHead = newTeacher;
}
void insertClassroom() {
int id, capacity;
printf("请输入教室编号: ");
scanf("%d", &id);
printf("请输入教室容量: ");
scanf("%d", &capacity);
struct Classroom *newClassroom = (struct Classroom*)malloc(sizeof(struct Classroom));
newClassroom->id = id;
newClassroom->capacity = capacity;
newClassroom->next = classroomHead;
classroomHead = newClassroom;
}
void deleteStudent(int id) {
struct Student *current = studentHead;
struct Student *prev = NULL;
while (current != NULL) {
if (current->id == id) {
if (prev == NULL) {
studentHead = current->next;
} else {
prev->next = current->next;
}
free(current);
return;
}
prev = current;
current = current->next;
}
printf("未找到学号为 %d 的学生\n", id);
}
void deleteTeacher(int id) {
struct Teacher *current = teacherHead;
struct Teacher *prev = NULL;
while (current != NULL) {
if (current->id == id) {
if (prev == NULL) {
teacherHead = current->next;
} else {
prev->next = current->next;
}
free(current);
return;
}
prev = current;
current = current->next;
}
printf("未找到工号为 %d 的老师\n", id);
}
void deleteClassroom(int id) {
struct Classroom *current = classroomHead;
struct Classroom *prev = NULL;
while (current != NULL) {
if (current->id == id) {
if (prev == NULL) {
classroomHead = current->next;
} else {
prev->next = current->next;
}
free(current);
return;
}
prev = current;
current = current->next;
}
printf("未找到编号为 %d 的教室\n", id);
}
void manageScores(int id, int score) {
struct Student *current = studentHead;
while (current != NULL) {
if (current->id == id) {
current->score = score;
return;
}
current = current->next;
}
printf("未找到学号为 %d 的学生\n", id);
}
void displayMainMenu() {
printf("\n主菜单\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");
printf("11. 退出\n");
}
void printStudents() {
struct Student *current = studentHead;
printf("学生信息:\n");
while (current != NULL) {
printf("学号: %d, 姓名: %s, 成绩: %d\n", current->id, current->name, current->score);
current = current->next;
}
}
void printTeachers() {
struct Teacher *current = teacherHead;
printf("老师信息:\n");
while (current != NULL) {
printf("工号: %d, 姓名: %s\n", current->id, current->name);
current = current->next;
}
}
void printClassrooms() {
struct Classroom *current = classroomHead;
printf("教室信息:\n");
while (current != NULL) {
printf("编号: %d, 容量: %d\n", current->id, current->capacity);
current = current->next;
}
}
int main() {
int choice;
do {
displayMainMenu();
printf("请选择操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
insertStudent();
break;
case 2:
insertTeacher();
break;
case 3:
insertClassroom();
break;
case 4:
printf("\n学生信息:\n");
printStudents();
break;
case 5:
printf("\n老师信息:\n");
printTeachers();
break;
case 6:
printf("\n教室信息:\n");
printClassrooms();
break;
case 7: {
int id;
printf("请输入要删除的学生学号: ");
scanf("%d", &id);
deleteStudent(id);
break;
}
case 8: {
int id;
printf("请输入要删除的老师工号: ");
scanf("%d", &id);
deleteTeacher(id);
break;
}
case 9: {
int id;
printf("请输入要删除的教室编号: ");
scanf("%d", &id);
deleteClassroom(id);
break;
}
case 10: {
int id, score;
printf("请输入学生学号: ");
scanf("%d", &id);
printf("请输入学生成绩: ");
scanf("%d", &score);
manageScores(id, score);
break;
}
case 11:
printf("退出程序\n");
break;
default:
printf("无效的选项\n");
}
} while (choice != 12);
return 0;
}