利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学生信息、删除学生信息使用c语言
时间: 2024-12-25 07:34:13 浏览: 3
利用链表实现一个简单的学生信息管理系统,可以分为以下几个步骤:
1. 定义数据结构:首先,我们需要创建一个名为`Student`的结构体,包含学号、姓名、性别、年龄、电话、专业和班级等字段。
```c
typedef struct {
int id;
char name[50];
char gender[10];
int age;
char phone[20];
char major[50];
char class_name[50];
struct Student* next;
} Student;
```
2. 创建节点:创建一个函数用于初始化一个新的学生节点。
```c
void createStudent(Student** node, int id, const char* name, ...) {
*node = malloc(sizeof(Student));
(*node)->id = id;
va_list args;
va_start(args, name);
strcpy((*node)->name, name);
// ...依次获取并设置其他字段
va_end(args);
(*node)->next = NULL;
}
```
3. 功能实现:
- **创建学生**:根据输入的参数调用`createStudent`函数。
- **输出学生信息**:遍历链表,打印每个学生的详细信息。
- **查询学生信息**:通过学号查找特定学生,如果没有找到则提示“未找到”。
- **增加学生信息**:在链表末尾添加新学生。
- **删除学生信息**:根据学号查找并移除指定学生。
```c
// 示例代码
void displayStudents(Student* head) {
while (head != NULL) {
printf("ID: %d, Name: %s\n", head->id, head->name);
head = head->next;
}
}
Student* findStudent(Student* head, int id) {
Student* current = head;
while (current != NULL) {
if (current->id == id)
return current;
current = current->next;
}
return NULL;
}
void addStudent(Student** head, ...) {
// ...类似createStudent函数,接受所有字段作为参数
}
void deleteStudent(Student** head, int id) {
if (*head == NULL)
return;
if ((*head)->id == id) {
Student* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Student* current = *head;
while (current->next != NULL && current->next->id != id) {
current = current->next;
}
if (current->next != NULL)
current->next = current->next->next;
}
```
阅读全文