本项目是对考试报名管理的简单模拟,用菜单选择方式完成下列功能:输入考生信息;输出考生信息;查询考生信息;添加考生信息;修改考生信息;删除考生信息。本项目的数据是一组考生信息,每条考生信息由准考证号、姓名、性别、年龄、报考类别等信息组成,这组考生信息具有相同特性,属于同一数据对象,相邻数据元素之间存在序偶关系。由此可以看出,这些数据也具有线性表中数据元素的性质,所以该系统的数据可以采用线性表来存储。c语言带注释
时间: 2024-04-07 10:33:20 浏览: 13
好的,请看下面的C语言代码,它实现了对考试报名管理的简单模拟,采用菜单选择方式完成各项功能,并通过线性表来存储考生信息。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义考生信息结构体
typedef struct {
char id[20]; // 准考证号
char name[20]; // 姓名
char gender[10]; // 性别
int age; // 年龄
char category[20]; // 报考类别
} Student;
// 定义线性表结构体
typedef struct {
Student *data; // 存储考生信息的数组
int length; // 线性表长度
int capacity; // 数组容量
} List;
// 初始化线性表
void initList(List *list) {
list->data = (Student *)malloc(sizeof(Student) * 10);
list->length = 0;
list->capacity = 10;
}
// 扩容线性表
void expandList(List *list) {
list->data = (Student *)realloc(list->data, sizeof(Student) * (list->capacity + 10));
list->capacity += 10;
}
// 输入考生信息
void inputStudentInfo(List *list) {
if (list->length == list->capacity) {
expandList(list);
}
Student *student = &(list->data[list->length]);
printf("请输入准考证号:");
scanf("%s", student->id);
printf("请输入姓名:");
scanf("%s", student->name);
printf("请输入性别:");
scanf("%s", student->gender);
printf("请输入年龄:");
scanf("%d", &(student->age));
printf("请输入报考类别:");
scanf("%s", student->category);
list->length++;
}
// 输出考生信息
void outputStudentInfo(List *list) {
printf("准考证号\t姓名\t性别\t年龄\t报考类别\n");
for (int i = 0; i < list->length; i++) {
Student *student = &(list->data[i]);
printf("%s\t%s\t%s\t%d\t%s\n", student->id, student->name, student->gender, student->age, student->category);
}
}
// 查询考生信息
void queryStudentInfo(List *list) {
char id[20];
printf("请输入要查询的准考证号:");
scanf("%s", id);
for (int i = 0; i < list->length; i++) {
Student *student = &(list->data[i]);
if (strcmp(student->id, id) == 0) {
printf("准考证号\t姓名\t性别\t年龄\t报考类别\n");
printf("%s\t%s\t%s\t%d\t%s\n", student->id, student->name, student->gender, student->age, student->category);
return;
}
}
printf("未找到该准考证号的考生信息。\n");
}
// 添加考生信息
void addStudentInfo(List *list) {
inputStudentInfo(list);
printf("添加成功!\n");
}
// 修改考生信息
void modifyStudentInfo(List *list) {
char id[20];
printf("请输入要修改的准考证号:");
scanf("%s", id);
for (int i = 0; i < list->length; i++) {
Student *student = &(list->data[i]);
if (strcmp(student->id, id) == 0) {
printf("请输入新的姓名:");
scanf("%s", student->name);
printf("请输入新的性别:");
scanf("%s", student->gender);
printf("请输入新的年龄:");
scanf("%d", &(student->age));
printf("请输入新的报考类别:");
scanf("%s", student->category);
printf("修改成功!\n");
return;
}
}
printf("未找到该准考证号的考生信息。\n");
}
// 删除考生信息
void deleteStudentInfo(List *list) {
char id[20];
printf("请输入要删除的准考证号:");
scanf("%s", id);
for (int i = 0; i < list->length; i++) {
Student *student = &(list->data[i]);
if (strcmp(student->id, id) == 0) {
// 将最后一个考生信息覆盖到当前位置
memcpy(student, &(list->data[list->length - 1]), sizeof(Student));
list->length--;
printf("删除成功!\n");
return;
}
}
printf("未找到该准考证号的考生信息。\n");
}
int main() {
List list;
initList(&list);
int choice;
while (1) {
printf("========== 考试报名管理系统 ==========\n");
printf("1. 输入考生信息\n");
printf("2. 输出考生信息\n");
printf("3. 查询考生信息\n");
printf("4. 添加考生信息\n");
printf("5. 修改考生信息\n");
printf("6. 删除考生信息\n");
printf("0. 退出系统\n");
printf("=====================================\n");
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
inputStudentInfo(&list);
break;
case 2:
outputStudentInfo(&list);
break;
case 3:
queryStudentInfo(&list);
break;
case 4:
addStudentInfo(&list);
break;
case 5:
modifyStudentInfo(&list);
break;
case 6:
deleteStudentInfo(&list);
break;
case 0:
printf("感谢使用,再见!\n");
return 0;
default:
printf("请输入正确的操作编号!\n");
break;
}
}
return 0;
}
```
这段代码实现了对考生信息进行输入、输出、查询、添加、修改和删除等操作。它使用了线性表(数组)来存储考生信息,通过菜单选择方式完成各项功能。你可以根据自己的需求进行修改和扩展。