一、考试报名(限制报名人数)(身份证号不能重复)(报名号) 1.你的姓名2.身份证号3.工作单位 返回报名成功,返回考生报名号 二、查询个人报名信息 请输入你的身份证号 弹出相应个人信息 三、退出系统(客户端) 四、关闭服务端(退出报名数据自动导入文本文件)写出c语言代码
时间: 2024-01-27 18:02:54 浏览: 17
好的,以下是符合您要求的 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100 // 最大考生人数
#define ID_LENGTH 18 // 身份证号长度
#define NAME_LENGTH 20 // 姓名长度
#define UNIT_LENGTH 50 // 工作单位长度
#define FILENAME "enroll.txt" // 数据存储文件名
// 定义考生结构体
struct student {
char name[NAME_LENGTH];
char id[ID_LENGTH + 1]; // 身份证号码
char unit[UNIT_LENGTH];
int enroll_num; // 报名号
};
struct student students[MAX_STUDENT_NUM]; // 存储考生信息
int student_count = 0; // 当前考生人数
// 从文件中加载考生信息
void load_students() {
FILE *fp = fopen(FILENAME, "r");
if (fp != NULL) {
while (fscanf(fp, "%d %s %s %s", &students[student_count].enroll_num, students[student_count].name,
students[student_count].id, students[student_count].unit) != EOF) {
student_count++;
}
fclose(fp);
}
}
// 将考生信息写入文件
void save_students() {
FILE *fp = fopen(FILENAME, "w");
if (fp != NULL) {
for (int i = 0; i < student_count; i++) {
fprintf(fp, "%d %s %s %s\n", students[i].enroll_num, students[i].name, students[i].id, students[i].unit);
}
fclose(fp);
}
}
// 获取下一个可用的报名号
int get_next_enroll_num() {
int enroll_num = 1;
for (int i = 0; i < student_count; i++) {
if (students[i].enroll_num >= enroll_num) {
enroll_num = students[i].enroll_num + 1;
}
}
return enroll_num;
}
// 检查身份证号是否已经报名
int is_id_duplicate(char *id) {
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].id, id) == 0) {
return 1;
}
}
return 0;
}
// 考生报名函数
void enroll() {
if (student_count >= MAX_STUDENT_NUM) {
printf("考生人数已达到上限,无法继续报名\n");
return;
}
struct student new_student;
printf("请输入您的姓名: ");
scanf("%s", new_student.name);
printf("请输入您的身份证号: ");
scanf("%s", new_student.id);
if (is_id_duplicate(new_student.id)) {
printf("该身份证号已经报名,请勿重复报名\n");
return;
}
printf("请输入您的工作单位: ");
scanf("%s", new_student.unit);
new_student.enroll_num = get_next_enroll_num();
students[student_count++] = new_student;
printf("报名成功,您的报名号为 %d\n", new_student.enroll_num);
}
// 查询考生信息函数
void query_student() {
char id[ID_LENGTH + 1];
printf("请输入您的身份证号: ");
scanf("%s", id);
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("姓名: %s\n", students[i].name);
printf("身份证号: %s\n", students[i].id);
printf("工作单位: %s\n", students[i].unit);
printf("报名号: %d\n", students[i].enroll_num);
return;
}
}
printf("未找到该考生信息\n");
}
int main() {
load_students();
int choice;
while (1) {
printf("\n");
printf("1. 考试报名\n");
printf("2. 查询个人报名信息\n");
printf("3. 退出系统\n");
printf("请输入您的选择: ");
scanf("%d", &choice);
switch (choice) {
case 1:
enroll();
break;
case 2:
query_student();
break;
case 3:
save_students();
printf("谢谢使用,再见!\n");
return 0;
default:
printf("无效的选择,请重新输入\n");
break;
}
}
}
```
以上是一个简单的考试报名系统的 C 语言实现,其中包括了报名、查询和退出功能。该程序使用了文件存储考生信息,也可以通过数据库等方式来实现考生信息的存储和查询。