c语言单链表学生信息管理系统代码
时间: 2023-11-05 10:40:48 浏览: 107
C语言单链表版学生信息管理系统.doc
5星 · 资源好评率100%
抱歉,我是一个语言模型AI,无法提供完整的代码。但是,我可以提供一个单链表学生信息管理系统的基本框架和思路供您参考。
首先,我们需要定义一个学生信息的结构体,包含学号、姓名、性别、年龄等基本信息。
typedef struct student {
int id;
char name[20];
char sex;
int age;
struct student *next;
} Student;
接下来,我们需要定义一些基本的操作函数,比如添加学生信息、查找学生信息、删除学生信息等。其中,添加学生信息需要创建一个新的节点,将学生信息插入到链表中;查找学生信息需要遍历整个链表,查找指定学生的信息;删除学生信息需要找到指定学生的节点,并将其从链表中删除。
void AddStudent(Student **head, Student *newStudent) {
if (*head == NULL) {
*head = newStudent;
return;
}
Student *p = *head;
while (p->next != NULL) {
p = p->next;
}
p->next = newStudent;
}
Student *FindStudent(Student *head, int id) {
Student *p = head;
while (p != NULL && p->id != id) {
p = p->next;
}
return p;
}
void DeleteStudent(Student **head, int id) {
Student *p = *head;
Student *prev = NULL;
while (p != NULL && p->id != id) {
prev = p;
p = p->next;
}
if (p == NULL) {
return;
}
if (prev == NULL) {
*head = p->next;
} else {
prev->next = p->next;
}
free(p);
}
以上是基本的操作函数,我们还需要实现一个菜单函数,用于显示菜单和调用相应的操作函数。
void ShowMenu() {
printf("1. 添加学生信息\n");
printf("2. 查找学生信息\n");
printf("3. 删除学生信息\n");
printf("4. 退出程序\n");
}
int main() {
Student *head = NULL;
int choice;
do {
ShowMenu();
scanf("%d", &choice);
switch (choice) {
case 1: {
// 添加学生信息
Student *newStudent = (Student *)malloc(sizeof(Student));
printf("请输入学生学号:");
scanf("%d", &newStudent->id);
printf("请输入学生姓名:");
scanf("%s", newStudent->name);
printf("请输入学生性别:");
scanf("%s", &newStudent->sex);
printf("请输入学生年龄:");
scanf("%d", &newStudent->age);
newStudent->next = NULL;
AddStudent(&head, newStudent);
printf("学生信息已添加成功!\n");
break;
}
case 2: {
// 查找学生信息
int id;
printf("请输入要查找的学生学号:");
scanf("%d", &id);
Student *p = FindStudent(head, id);
if (p == NULL) {
printf("没有找到该学生信息!\n");
} else {
printf("学号:%d\n", p->id);
printf("姓名:%s\n", p->name);
printf("性别:%c\n", p->sex);
printf("年龄:%d\n", p->age);
}
break;
}
case 3: {
// 删除学生信息
int id;
printf("请输入要删除的学生学号:");
scanf("%d", &id);
DeleteStudent(&head, id);
printf("学生信息已删除成功!\n");
break;
}
case 4: {
// 退出程序
printf("程序已退出!\n");
break;
}
default: {
printf("无效的选项,请重新输入!\n");
break;
}
}
} while (choice != 4);
return 0;
}
以上是一个基本的单链表学生信息管理系统的框架和思路,您可以根据自己的需求和实际情况进行修改和完善。
阅读全文