C 语言 编写学生基本信息管理程序。用链表存储一个班的学生信息(最多100位学生),每个学生的信息有:学号,姓名,性别,联系电话和家庭住址。需要实现的功能有:新建学生信息链表,对学生信息进行增加、删除和查找。有菜单显示
时间: 2024-09-17 17:01:58 浏览: 29
编写一个基于链表的学生信息管理系统,可以使用C语言来实现。以下是基本的步骤和伪代码:
首先,创建一个结构体`Student`,用于存储学生的各项信息:
```c
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
char gender[10]; // 性别
char phone[20]; // 联系电话
char address[150]; // 家庭住址
} Student;
```
接着,定义一个链表结构`StudentList`:
```c
typedef struct {
Student info;
struct StudentList* next;
} StudentList;
// 初始化链表
StudentList* create_list() {
return (StudentList*) malloc(sizeof(StudentList));
}
// 新增学生到链表
void add_student(StudentList** head, Student new_info) {
StudentList* newNode = create_list();
newNode->info = new_info;
newNode->next = *head;
*head = newNode;
}
```
对于删除和查找功能,你可以添加以下几个函数:
```c
// 删除学生信息,按学号删除
void delete_student_by_id(StudentList** head, int id) {
if (*head == NULL) return;
if ((*head)->info.student_id == id) {
StudentList* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
StudentList* current = *head;
while (current->next != NULL && current->next->info.student_id != id) {
current = current->next;
}
if (current->next != NULL) {
StudentList* temp = current->next;
current->next = current->next->next;
free(temp);
}
}
// 查找学生信息
Student find_student(StudentList* head, int id) {
StudentList* current = head;
while (current != NULL) {
if (current->info.student_id == id) {
return current->info;
}
current = current->next;
}
return NULL; // 如果没找到,则返回NULL
}
```
最后,设计一个简单的菜单驱动程序,让用户选择操作:
```c
int main() {
StudentList* head = create_list(); // 初始化空链表
int choice;
do {
printf("1. 添加学生\n2. 删除学生\n3. 查找学生\n4. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1: // 添加学生
// 实现添加逻辑
break;
case 2: // 删除学生
int id;
scanf("%d", &id); // 输入学号
delete_student_by_id(&head, id);
break;
case 3: // 查找学生
int search_id;
scanf("%d", &search_id);
Student found_info = find_student(head, search_id);
if (found_info) {
// 输出找到的学生信息
} else {
printf("未找到该学生。\n");
}
break;
case 4: // 退出
break;
default:
printf("无效选择,请重新输入。\n");
}
} while (choice != 4);
return 0;
}
```
阅读全文