C语言结构体链表学生信息管理
时间: 2023-06-23 11:52:54 浏览: 69
下面是一个简单的C语言结构体链表学生信息管理的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生信息结构体
typedef struct student {
char name[20]; // 学生姓名
int id; // 学生学号
char sex[5]; // 学生性别
int age; // 学生年龄
struct student *next; // 指向下一个学生的指针
} student;
// 添加学生信息
void add_student(student **head) {
student *p = (student *)malloc(sizeof(student));
printf("请输入学生姓名:");
scanf("%s", p->name);
printf("请输入学生学号:");
scanf("%d", &(p->id));
printf("请输入学生性别:");
scanf("%s", p->sex);
printf("请输入学生年龄:");
scanf("%d", &(p->age));
p->next = *head;
*head = p;
}
// 删除学生信息
void delete_student(student **head, int id) {
student *p = *head;
student *prev = NULL;
while (p != NULL) {
if (p->id == id) {
if (prev == NULL) {
*head = p->next;
} else {
prev->next = p->next;
}
free(p);
printf("删除成功!\n");
return;
}
prev = p;
p = p->next;
}
printf("未找到该学生!\n");
}
// 修改学生信息
void modify_student(student *head, int id) {
student *p = head;
while (p != NULL) {
if (p->id == id) {
printf("请输入学生姓名:");
scanf("%s", p->name);
printf("请输入学生学号:");
scanf("%d", &(p->id));
printf("请输入学生性别:");
scanf("%s", p->sex);
printf("请输入学生年龄:");
scanf("%d", &(p->age));
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
// 查询学生信息
void query_student(student *head, int id) {
student *p = head;
while (p != NULL) {
if (p->id == id) {
printf("姓名:%s\n", p->name);
printf("学号:%d\n", p->id);
printf("性别:%s\n", p->sex);
printf("年龄:%d\n", p->age);
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
// 显示所有学生信息
void show_all_student(student *head) {
student *p = head;
while (p != NULL) {
printf("姓名:%s\n", p->name);
printf("学号:%d\n", p->id);
printf("性别:%s\n", p->sex);
printf("年龄:%d\n\n", p->age);
p = p->next;
}
}
int main() {
student *head = NULL;
int choice, id;
while (1) {
printf("学生信息管理系统\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 显示所有学生信息\n");
printf("6. 退出系统\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student(&head);
break;
case 2:
printf("请输入要删除学生的学号:");
scanf("%d", &id);
delete_student(&head, id);
break;
case 3:
printf("请输入要修改学生的学号:");
scanf("%d", &id);
modify_student(head, id);
break;
case 4:
printf("请输入要查询学生的学号:");
scanf("%d", &id);
query_student(head, id);
break;
case 5:
show_all_student(head);
break;
case 6:
printf("谢谢使用!\n");
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
以上代码实现了一个简单的学生信息管理系统,通过结构体链表实现对学生信息的增删改查。每个学生信息包括姓名、学号、性别、年龄等字段。用户可以通过菜单选择相应的操作,包括添加、删除、修改、查询和显示所有学生信息。