用C语言写一个学生管理系统,包含1.添加学生信息2.删除学生信息3.修改学生信息4.遍历学生信息0.退出学生管理系统
时间: 2024-02-19 07:58:39 浏览: 86
一个简单的学生管理系统可以通过结构体和链表来实现,以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
struct Student {
int id; // 学号
char name[20]; // 姓名
int age; // 年龄
struct Student *next; // 指向下一个学生的指针
};
// 添加学生信息
void add_student(struct Student **head) {
struct Student *new_student = (struct Student*)malloc(sizeof(struct Student));
printf("请输入学号:");
scanf("%d", &(new_student->id));
printf("请输入姓名:");
scanf("%s", new_student->name);
printf("请输入年龄:");
scanf("%d", &(new_student->age));
new_student->next = NULL;
if (*head == NULL) {
*head = new_student;
} else {
struct Student *temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_student;
}
printf("添加成功!\n");
}
// 删除学生信息
void delete_student(struct Student **head) {
int id;
printf("请输入要删除的学生学号:");
scanf("%d", &id);
if (*head == NULL) {
printf("学生列表为空!\n");
} else {
struct Student *temp = *head;
struct 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 modify_student(struct Student *head) {
int id;
printf("请输入要修改的学生学号:");
scanf("%d", &id);
struct Student *temp = head;
while (temp != NULL) {
if (temp->id == id) {
printf("请输入新的学号:");
scanf("%d", &(temp->id));
printf("请输入新的姓名:");
scanf("%s", temp->name);
printf("请输入新的年龄:");
scanf("%d", &(temp->age));
printf("修改成功!\n");
return;
}
temp = temp->next;
}
printf("未找到该学生!\n");
}
// 遍历学生信息
void traverse_student(struct Student *head) {
if (head == NULL) {
printf("学生列表为空!\n");
} else {
struct Student *temp = head;
printf("学号\t姓名\t年龄\n");
while (temp != NULL) {
printf("%d\t%s\t%d\n", temp->id, temp->name, temp->age);
temp = temp->next;
}
}
}
int main() {
struct Student *head = NULL;
int choice;
while (1) {
printf("\n1.添加学生信息\n2.删除学生信息\n3.修改学生信息\n4.遍历学生信息\n0.退出学生管理系统\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student(&head);
break;
case 2:
delete_student(&head);
break;
case 3:
modify_student(head);
break;
case 4:
traverse_student(head);
break;
case 0:
exit(0);
default:
printf("无效的选择,请重新输入!\n");
break;
}
}
return 0;
}
```
注意,这只是一个简单的示例,还有很多需要改进的地方,例如输入时需要进行错误处理,删除时需要释放内存,修改和遍历时需要考虑学生列表为空的情况等等。
阅读全文