用c语言以链表方式写一个学生管理系统,要求可以增,删,改,查学生的信息。
时间: 2023-05-21 13:01:05 浏览: 51
好的,以下是一个简单的学生管理系统的代码,使用链表实现:
```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 addStudent() {
Student *newStudent = (Student *)malloc(sizeof(Student));
printf("请输入学生的学号:");
scanf("%d", &newStudent->id);
printf("请输入学生的姓名:");
scanf("%s", newStudent->name);
printf("请输入学生的年龄:");
scanf("%d", &newStudent->age);
newStudent->next = NULL;
if (head == NULL) {
head = newStudent;
} else {
Student *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newStudent;
}
printf("添加成功!\n");
}
// 删除学生信息
void deleteStudent() {
int id;
printf("请输入要删除的学生的学号:");
scanf("%d", &id);
if (head == NULL) {
printf("链表为空,无法删除!\n");
return;
}
Student *temp = head;
Student *prev = NULL;
while (temp != NULL) {
if (temp->id == id) {
if (prev == NULL) {
head = temp->next;
} else {
prev->next = temp->next;
}
free(temp);
printf("删除成功!\n");
return;
}
prev = temp;
temp = temp->next;
}
printf("未找到该学生,无法删除!\n");
}
// 修改学生信息
void modifyStudent() {
int id;
printf("请输入要修改的学生的学号:");
scanf("%d", &id);
if (head == NULL) {
printf("链表为空,无法修改!\n");
return;
}
Student *temp = head;
while (temp != NULL) {
if (temp->id == id) {
printf("请输入修改后的学生姓名:");
scanf("%s", temp->name);
printf("请输入修改后的学生年龄:");
scanf("%d", &temp->age);
printf("修改成功!\n");
return;
}
temp = temp->next;
}
printf("未找到该学生,无法修改!\n");
}
// 查找学生信息
void searchStudent() {
int id;
printf("请输入要查找的学生的学号:");
scanf("%d", &id);
if (head == NULL) {
printf("链表为空,无法查找!\n");
return;
}
Student *temp = head;
while (temp != NULL) {
if (temp->id == id) {
printf("学号:%d,姓名:%s,年龄:%d\n", temp->id, temp->name, temp->age);
return;
}
temp = temp->next;
}
printf("未找到该学生!\n");
}
// 显示所有学生信息
void displayStudents() {
if (head == NULL) {
printf("链表为空,无法显示!\n");
return;
}
Student *temp = head;
while (temp != NULL) {
printf("学号:%d,姓名:%s,年龄:%d\n", temp->id, temp->name, temp->age);
temp = temp->next;
}
}
int main() {
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("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
deleteStudent();
break;
case 3:
modifyStudent();
break;
case 4:
searchStudent();
break;
case 5:
displayStudents();
break;
case 6:
printf("程序已退出!\n");
exit(0);
default:
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
```
希望这个代码能够帮到你!