首先,我们需要设计一个结构体来存储每个学生的基本信息:

struct Student {
    char examID[20];   // 准考证号码
    char ID[20];       // 身份证号码
    char name[20];     // 姓名
    char hometown[50]; // 籍贯
    char major[50];    // 报考专业
    int score;         // 高考分数
    char remark[50];   // 备注
};

接下来,我们需要实现数据录入、删除、修改、显示等功能。这里我们使用文件来保存数据,方便后续的查询和排序。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Student {
    char examID[20];   // 准考证号码
    char ID[20];       // 身份证号码
    char name[20];     // 姓名
    char hometown[50]; // 籍贯
    char major[50];    // 报考专业
    int score;         // 高考分数
    char remark[50];   // 备注
};

// 添加学生信息
void addStudent(FILE* fp) {
    struct Student stu;
    printf("请输入准考证号码:");
    scanf("%s", stu.examID);
    printf("请输入身份证号码:");
    scanf("%s", stu.ID);
    printf("请输入姓名:");
    scanf("%s", stu.name);
    printf("请输入籍贯:");
    scanf("%s", stu.hometown);
    printf("请输入报考专业:");
    scanf("%s", stu.major);
    printf("请输入高考分数:");
    scanf("%d", &stu.score);
    printf("请输入备注:");
    scanf("%s", stu.remark);
    fwrite(&stu, sizeof(struct Student), 1, fp);
    printf("添加成功!\n");
}

// 显示学生信息
void showStudent(FILE* fp) {
    struct Student stu;
    while (fread(&stu, sizeof(struct Student), 1, fp) > 0) {
        printf("准考证号码:%s\n", stu.examID);
        printf("身份证号码:%s\n", stu.ID);
        printf("姓名:%s\n", stu.name);
        printf("籍贯:%s\n", stu.hometown);
        printf("报考专业:%s\n", stu.major);
        printf("高考分数:%d\n", stu.score);
        printf("备注:%s\n\n", stu.remark);
    }
}

// 删除学生信息
void deleteStudent(FILE* fp) {
    char examID[20];
    printf("请输入要删除的学生准考证号码:");
    scanf("%s", examID);
    struct Student stu;
    FILE* tmp = fopen("tmp.dat", "wb");
    while (fread(&stu, sizeof(struct Student), 1, fp) > 0) {
        if (strcmp(stu.examID, examID) != 0) {
            fwrite(&stu, sizeof(struct Student), 1, tmp);
        }
    }
    fclose(fp);
    fclose(tmp);
    remove("student.dat");
    rename("tmp.dat", "student.dat");
    printf("删除成功!\n");
}

// 修改学生信息
void modifyStudent(FILE* fp) {
    char examID[20];
    printf("请输入要修改的学生准考证号码:");
    scanf("%s", examID);
    struct Student stu;
    FILE* tmp = fopen("tmp.dat", "wb");
    while (fread(&stu, sizeof(struct Student), 1, fp) > 0) {
        if (strcmp(stu.examID, examID) == 0) {
            printf("请输入新的准考证号码:");
            scanf("%s", stu.examID);
            printf("请输入新的身份证号码:");
            scanf("%s", stu.ID);
            printf("请输入新的姓名:");
            scanf("%s", stu.name);
            printf("请输入新的籍贯:");
            scanf("%s", stu.hometown);
            printf("请输入新的报考专业:");
            scanf("%s", stu.major);
            printf("请输入新的高考分数:");
            scanf("%d", &stu.score);
            printf("请输入新的备注:");
            scanf("%s", stu.remark);
        }
        fwrite(&stu, sizeof(struct Student), 1, tmp);
    }
    fclose(fp);
    fclose(tmp);
    remove("student.dat");
    rename("tmp.dat", "student.dat");
    printf("修改成功!\n");
}

// 查找学生信息
void findStudent(FILE* fp) {
    char examID[20];
    printf("请输入要查找的学生准考证号码:");
    scanf("%s", examID);
    struct Student stu;
    while (fread(&stu, sizeof(struct Student), 1, fp) > 0) {
        if (strcmp(stu.examID, examID) == 0) {
            printf("准考证号码:%s\n", stu.examID);
            printf("身份证号码:%s\n", stu.ID);
            printf("姓名:%s\n", stu.name);
            printf("籍贯:%s\n", stu.hometown);
            printf("报考专业:%s\n", stu.major);
            printf("高考分数:%d\n", stu.score);
            printf("备注:%s\n\n", stu.remark);
            return;
        }
    }
    printf("未找到该学生!\n");
}

// 排序学生信息
void sortStudent(FILE* fp) {
    struct Student stu[100];
    int i = 0;
    while (fread(&stu[i], sizeof(struct Student), 1, fp) > 0) {
        i++;
    }
    for (int j = 0; j < i - 1; j++) {
        for (int k = 0; k < i - 1 - j; k++) {
            if (stu[k].score < stu[k + 1].score) {
                struct Student tmp = stu[k];
                stu[k] = stu[k + 1];
                stu[k + 1] = tmp;
            }
        }
    }
    fclose(fp);
    fp = fopen("student.dat", "wb");
    for (int j = 0; j < i; j++) {
        fwrite(&stu[j], sizeof(struct Student), 1, fp);
    }
    printf("排序成功!\n");
}

int main() {
    FILE* fp = fopen("student.dat", "ab+");
    int choice;
    while (1) {
        printf("===================================\n");
        printf("           欢迎来到高考招生录取信息管理系统\n");
        printf("===================================\n");
        printf("1. 添加学生信息\n");
        printf("2. 删除学生信息\n");
        printf("3. 修改学生信息\n");
        printf("4. 显示学生信息\n");
        printf("5. 查找学生信息\n");
        printf("6. 排序学生信息\n");
        printf("0. 退出系统\n");
        printf("请输入你的选择:");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                addStudent(fp);
                break;
            case 2:
                deleteStudent(fp);
                break;
            case 3:
                modifyStudent(fp);
                break;
            case 4:
                showStudent(fp);
                break;
            case 5:
                findStudent(fp);
                break;
            case 6:
                sortStudent(fp);
                break;
            case 0:
                fclose(fp);
                return 0;
            default:
                printf("请输入正确的选项!\n");
                break;
        }
    }
    return 0;
}

以上代码实现了基本的数据录入、删除、修改、显示、查找和排序的功能,同时也实现了数据保护,确保数据的安全性。

C语言高考招生录取信息管理系统:数据录入,查询,删除,修改,排序

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

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