帮我写一个学生信息管理系统 使用c语言单链表存储学生信息
时间: 2023-09-02 17:13:15 浏览: 85
C语言单链表版学生信息管理系统
5星 · 资源好评率100%
好的,以下是一个简单的学生信息管理系统的代码示例,使用C语言和单链表实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct student {
int id; // 学号
char name[20]; // 姓名
int score; // 分数
struct student *next; // 指向下一个节点的指针
} Student;
// 添加学生信息
void addStudent(Student **head) {
Student *newStudent = (Student*)malloc(sizeof(Student));
printf("请输入学生的学号:");
scanf("%d", &(newStudent->id));
printf("请输入学生的姓名:");
scanf("%s", newStudent->name);
printf("请输入学生的分数:");
scanf("%d", &(newStudent->score));
// 将新节点插入链表头部
newStudent->next = *head;
*head = newStudent;
printf("添加学生信息成功!\n");
}
// 删除学生信息
void deleteStudent(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 modifyStudent(Student *head, int id) {
Student *p = head;
while (p != NULL) {
if (p->id == id) {
printf("请输入学生的新姓名:");
scanf("%s", p->name);
printf("请输入学生的新分数:");
scanf("%d", &(p->score));
printf("修改学生信息成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生的信息!\n");
}
// 查询学生信息
void queryStudent(Student *head, int id) {
Student *p = head;
while (p != NULL) {
if (p->id == id) {
printf("学生信息如下:\n");
printf("学号:%d\n", p->id);
printf("姓名:%s\n", p->name);
printf("分数:%d\n", p->score);
return;
}
p = p->next;
}
printf("未找到该学生的信息!\n");
}
// 显示所有学生信息
void displayAllStudent(Student *head) {
Student *p = head;
while (p != NULL) {
printf("学号:%d,姓名:%s,分数:%d\n", p->id, p->name, p->score);
p = p->next;
}
}
// 主函数
int main() {
Student *head = NULL;
int choice = 0;
int id = 0;
while (1) {
printf("\n============== 学生信息管理系统 ==============\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 显示所有学生信息\n");
printf("6. 退出\n");
printf("请输入您的选择(1-6):");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent(&head);
break;
case 2:
printf("请输入要删除的学生的学号:");
scanf("%d", &id);
deleteStudent(&head, id);
break;
case 3:
printf("请输入要修改的学生的学号:");
scanf("%d", &id);
modifyStudent(head, id);
break;
case 4:
printf("请输入要查询的学生的学号:");
scanf("%d", &id);
queryStudent(head, id);
break;
case 5:
displayAllStudent(head);
break;
case 6:
printf("谢谢使用学生信息管理系统!\n");
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
该程序通过一个`Student`结构体来存储学生的信息,使用单链表来管理学生信息。具体实现了添加学生信息、删除学生信息、修改学生信息、查询学生信息和显示所有学生信息等功能。
阅读全文