C语言高考招生录取信息管理系统:数据录入,查询,删除,修改,排序
首先,我们需要设计一个结构体来存储每个学生的基本信息:
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;
}
以上代码实现了基本的数据录入、删除、修改、显示、查找和排序的功能,同时也实现了数据保护,确保数据的安全性。
原文地址: https://www.cveoy.top/t/topic/oT2N 著作权归作者所有。请勿转载和采集!