帮我写一个用C语言数据结构写的简单学生管理系统
时间: 2023-08-04 22:22:50 浏览: 38
好的,以下是一个简单的学生管理系统的C语言实现,使用了链表数据结构:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student {
int id;
char name[20];
int age;
struct student *next;
} Student;
Student *head = NULL;
// 添加学生信息
void add_student() {
int id, age;
char name[20];
printf("请输入学生的学号:");
scanf("%d", &id);
printf("请输入学生的姓名:");
scanf("%s", name);
printf("请输入学生的年龄:");
scanf("%d", &age);
Student *new_student = (Student*) malloc(sizeof(Student));
new_student->id = id;
strcpy(new_student->name, name);
new_student->age = age;
new_student->next = NULL;
if (head == NULL) {
head = new_student;
} else {
Student *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_student;
}
printf("添加成功!\n");
}
// 删除学生信息
void delete_student() {
int id;
printf("请输入要删除学生的学号:");
scanf("%d", &id);
if (head == NULL) {
printf("学生信息为空,删除失败!\n");
return;
}
Student *temp = head, *prev = NULL;
while (temp != NULL && temp->id != id) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
printf("学号为%d的学生不存在,删除失败!\n", id);
return;
}
if (prev == NULL) {
head = temp->next;
} else {
prev->next = temp->next;
}
free(temp);
printf("删除成功!\n");
}
// 修改学生信息
void modify_student() {
int id, age;
char name[20];
printf("请输入要修改学生的学号:");
scanf("%d", &id);
Student *temp = head;
while (temp != NULL && temp->id != id) {
temp = temp->next;
}
if (temp == NULL) {
printf("学号为%d的学生不存在,修改失败!\n", id);
return;
}
printf("请输入学生的姓名:");
scanf("%s", name);
printf("请输入学生的年龄:");
scanf("%d", &age);
strcpy(temp->name, name);
temp->age = age;
printf("修改成功!\n");
}
// 查询学生信息
void query_student() {
int id;
printf("请输入要查询学生的学号:");
scanf("%d", &id);
Student *temp = head;
while (temp != NULL && temp->id != id) {
temp = temp->next;
}
if (temp == NULL) {
printf("学号为%d的学生不存在!\n", id);
return;
}
printf("学号:%d\t姓名:%s\t年龄:%d\n", temp->id, temp->name, temp->age);
}
// 显示所有学生信息
void print_all_students() {
if (head == NULL) {
printf("学生信息为空。\n");
return;
}
printf("学生信息如下:\n");
Student *temp = head;
while (temp != NULL) {
printf("学号:%d\t姓名:%s\t年龄:%d\n", temp->id, temp->name, temp->age);
temp = temp->next;
}
}
int main() {
int choice = 0;
while (1) {
printf("学生管理系统\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 显示所有学生信息\n");
printf("0. 退出系统\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 0:
printf("感谢使用学生管理系统,再见!\n");
return 0;
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
query_student();
break;
case 5:
print_all_students();
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
这个学生管理系统基于链表实现,可以添加、删除、修改、查询和显示所有学生信息。您可以根据实际需要进行修改和扩展。