用 C 语言 编写学生基本信息管理程序。用链表存储一个班的学生信息(最多100位学生),每个学生的信息有:学号,姓名,性别,联系电话和家庭住址。需要实现的功能有:新建学生信息链表,对学生信息进行增加、删除和查找。有菜单,完整代码
时间: 2024-09-17 07:01:54 浏览: 19
在C语言中编写学生信息管理程序可以分为以下几个步骤:
1. 定义结构体`Student`表示学生信息,包含学号、姓名、性别、联系电话和家庭住址等字段。
```c
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
char gender[10]; // 性别
char phone[20]; // 联系电话
char address[150]; // 家庭住址
} Student;
```
2. 创建链表结构`Node`用于存储单个学生,并链接到下一个节点。
```c
typedef struct Node {
Student info;
struct Node *next;
} Node;
```
3. 初始化链表:创建一个头结点并设置为NULL。
```c
Node* head = NULL;
```
4. 实现函数,如:
- 新建学生信息:分配内存并初始化学生信息。
- 插入学生:在链表尾部添加新节点。
- 删除学生:根据学号查找并移除对应节点。
- 查找学生:遍历链表查找指定学号的学生。
下面是部分核心代码片段:
```c
// 新增学生
void add_student(Node** head, int student_id, const char* name, const char* gender, const char* phone, const char* address) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->info.student_id = student_id;
strcpy(newNode->info.name, name);
strcpy(newNode->info.gender, gender);
strcpy(newNode->info.phone, phone);
strcpy(newNode->info.address, address);
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 删除学生
void delete_student(Node** head, int student_id) {
Node* current = *head;
Node* prev = NULL;
if (current && current->info.student_id == student_id) {
*head = current->next;
free(current);
return;
}
while (current && current->info.student_id != student_id) {
prev = current;
current = current->next;
}
if (current == NULL) return;
prev->next = current->next;
free(current);
}
// 查找学生
Node* find_student(Node* head, int student_id) {
Node* current = head;
while (current != NULL) {
if (current->info.student_id == student_id) {
return current;
}
current = current->next;
}
return NULL;
}
```
最后,提供用户菜单功能,允许用户选择操作并调用相应的函数。
完整代码会相当长,这里仅展示了关键部分。完整的程序还需要处理用户输入验证、错误处理以及主循环等功能。运行时,你可以设计一个简单的命令行界面,让用户通过输入选项(如数字1-3表示新增、删除和查找)来进行操作。
```c
int main() {
// ... 具体实现用户交互、读取输入、调用函数等 ...
return 0;
}