用c语言以链表形式制作一个学生管理系统,要求能够储存学生12位学号,姓名,身份证号,并能够增、删、改、查学生信息。
时间: 2023-05-20 16:03:40 浏览: 44
好的,这是一个很常见的问题,可以使用C语言中的结构体和链表来实现。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ID_LENGTH 12
#define NAME_LENGTH 20
#define ID_NUM_LENGTH 18
typedef struct student {
char id[ID_LENGTH];
char name[NAME_LENGTH];
char id_num[ID_NUM_LENGTH];
struct student *next;
} Student;
Student *head = NULL;
void add_student() {
Student *new_student = (Student*)malloc(sizeof(Student));
printf("请输入学生的学号:");
scanf("%s", new_student->id);
printf("请输入学生的姓名:");
scanf("%s", new_student->name);
printf("请输入学生的身份证号:");
scanf("%s", new_student->id_num);
new_student->next = head;
head = new_student;
printf("添加成功!\n");
}
void delete_student() {
char id[ID_LENGTH];
printf("请输入要删除的学生的学号:");
scanf("%s", id);
Student *current = head;
Student *previous = NULL;
while (current != NULL) {
if (strcmp(current->id, id) == 0) {
if (previous == NULL) {
head = current->next;
} else {
previous->next = current->next;
}
free(current);
printf("删除成功!\n");
return;
}
previous = current;
current = current->next;
}
printf("未找到该学生!\n");
}
void modify_student() {
char id[ID_LENGTH];
printf("请输入要修改的学生的学号:");
scanf("%s", id);
Student *current = head;
while (current != NULL) {
if (strcmp(current->id, id) == 0) {
printf("请输入学生的新姓名:");
scanf("%s", current->name);
printf("请输入学生的新身份证号:");
scanf("%s", current->id_num);
printf("修改成功!\n");
return;
}
current = current->next;
}
printf("未找到该学生!\n");
}
void search_student() {
char id[ID_LENGTH];
printf("请输入要查找的学生的学号:");
scanf("%s", id);
Student *current = head;
while (current != NULL) {
if (strcmp(current->id, id) == 0) {
printf("学号:%s\n姓名:%s\n身份证号:%s\n", current->id, current->name, current->id_num);
return;
}
current = current->next;
}
printf("未找到该学生!\n");
}
void print_menu() {
printf("学生管理系统\n");
printf("1. 添加学生\n");
printf("2. 删除学生\n");
printf("3. 修改学生信息\n");
printf("4. 查找学生\n");
printf("5. 退出\n");
printf("请选择操作:");
}
int main() {
int choice;
while (1) {
print_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
search_student();
break;
case 5:
return 0;
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
这个程序使用了一个链表来存储学生信息,每个学生信息包括学号、姓名和身份证号。可以通过添加、删除、修改和查找学生信息来管理学生。