#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;

}

C语言高考招生学校录取信息管理系统源代码

原文地址: https://www.cveoy.top/t/topic/o0Ob 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录