C语言高考招生学校录取信息管理系统源代码
#include <stdio.h> #include <stdlib.h> #include <string.h>
#define MAX_STUDENT 100
typedef struct { char name[50]; int score; char address[100]; } Student;
typedef struct { Student students[MAX_STUDENT]; int count; } School;
void displayMenu() { printf("\n********** 高考招生学校录取信息管理系统 ********** "); printf("1. 添加学生信息 "); printf("2. 删除学生信息 "); printf("3. 修改学生信息 "); printf("4. 显示学生信息 "); printf("5. 查找学生信息 "); printf("6. 排序学生信息 "); printf("0. 退出系统 "); printf("请输入操作编号:"); }
void addStudent(School* school) { if (school->count >= MAX_STUDENT) { printf("学生信息已满,无法添加新学生。 "); return; }
Student student;
printf("请输入学生姓名:");
scanf("%s", student.name);
printf("请输入学生成绩:");
scanf("%d", &student.score);
printf("请输入学生家庭地址:");
scanf("%s", student.address);
school->students[school->count] = student;
school->count++;
FILE *file = fopen("students.txt", "a");
if (file == NULL) {
printf("无法打开文件。
"); return; }
fprintf(file, "%s %d %s\n", student.name, student.score, student.address);
fclose(file);
printf("学生信息添加成功。
"); }
void deleteStudent(School* school) { char name[50]; printf("请输入要删除的学生姓名:"); scanf("%s", name);
int index = -1;
for (int i = 0; i < school->count; i++) {
if (strcmp(school->students[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生。
"); return; }
for (int i = index; i < school->count - 1; i++) {
school->students[i] = school->students[i + 1];
}
school->count--;
FILE *file = fopen("students.txt", "w");
if (file == NULL) {
printf("无法打开文件。
"); return; }
for (int i = 0; i < school->count; i++) {
fprintf(file, "%s %d %s\n", school->students[i].name, school->students[i].score, school->students[i].address);
}
fclose(file);
printf("学生信息删除成功。
"); }
void modifyStudent(School* school) { char name[50]; printf("请输入要修改的学生姓名:"); scanf("%s", name);
int index = -1;
for (int i = 0; i < school->count; i++) {
if (strcmp(school->students[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生。
"); return; }
Student student;
printf("请输入修改后的学生姓名:");
scanf("%s", student.name);
printf("请输入修改后的学生成绩:");
scanf("%d", &student.score);
printf("请输入修改后的学生家庭地址:");
scanf("%s", student.address);
school->students[index] = student;
FILE *file = fopen("students.txt", "w");
if (file == NULL) {
printf("无法打开文件。
"); return; }
for (int i = 0; i < school->count; i++) {
fprintf(file, "%s %d %s\n", school->students[i].name, school->students[i].score, school->students[i].address);
}
fclose(file);
printf("学生信息修改成功。
"); }
void displayStudents(School* school) { printf("学生信息如下: "); for (int i = 0; i < school->count; i++) { printf("姓名:%s\n", school->students[i].name); printf("成绩:%d\n", school->students[i].score); printf("家庭地址:%s\n", school->students[i].address); printf("----------------------------- "); } }
void searchStudent(School* school) { char name[50]; printf("请输入要查找的学生姓名:"); scanf("%s", name);
int index = -1;
for (int i = 0; i < school->count; i++) {
if (strcmp(school->students[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生。
"); return; }
printf("学生信息如下:
"); printf("姓名:%s\n", school->students[index].name); printf("成绩:%d\n", school->students[index].score); printf("家庭地址:%s\n", school->students[index].address); }
void sortStudents(School* school) { for (int i = 0; i < school->count - 1; i++) { for (int j = 0; j < school->count - i - 1; j++) { if (school->students[j].score < school->students[j + 1].score) { Student temp = school->students[j]; school->students[j] = school->students[j + 1]; school->students[j + 1] = temp; } } }
FILE *file = fopen("students.txt", "w");
if (file == NULL) {
printf("无法打开文件。
"); return; }
for (int i = 0; i < school->count; i++) {
fprintf(file, "%s %d %s\n", school->students[i].name, school->students[i].score, school->students[i].address);
}
fclose(file);
printf("学生信息排序成功。
"); }
void loadData(School* school) { FILE *file = fopen("students.txt", "r"); if (file == NULL) { printf("无法打开文件。 "); return; }
while (!feof(file)) {
Student student;
fscanf(file, "%s %d %s\n", student.name, &student.score, student.address);
school->students[school->count] = student;
school->count++;
}
fclose(file);
}
int main() { School school; school.count = 0;
loadData(&school);
int choice;
do {
displayMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent(&school);
break;
case 2:
deleteStudent(&school);
break;
case 3:
modifyStudent(&school);
break;
case 4:
displayStudents(&school);
break;
case 5:
searchStudent(&school);
break;
case 6:
sortStudents(&school);
break;
case 0:
printf("感谢使用,再见!\n");
break;
default:
printf("非法选择,请重新输入。\n");
break;
}
} while (choice != 0);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/o0Ob 著作权归作者所有。请勿转载和采集!