利用c语言,利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学 生信息、删除学生信息。
时间: 2024-11-06 22:15:40 浏览: 22
【C语言】学生信息管理_链表
在C语言中,我们可以利用链表数据结构来构建一个简单的学生信息管理系统。首先,我们需要定义一个`Student`结构体来存储学生的各项信息:
```c
typedef struct {
int id; // 学号
char name[50]; // 姓名
char gender[10]; // 性别
int age; // 年龄
char phone[20]; // 电话号码
char major[50]; // 所学专业
char class_name[50];// 班级
} Student;
// 定义链表节点
typedef struct Node {
Student info;
struct Node* next;
} Node;
```
接下来,我们创建链表相关的函数:
1. **创建学生信息**:动态分配内存并初始化新节点。
```c
Node* create_student(Student* student_data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode != NULL) {
memcpy(&newNode->info, student_data, sizeof(Student));
newNode->next = NULL;
return newNode;
}
return NULL;
}
```
2. **输出学生信息**:遍历链表打印每个学生的详细信息。
```c
void display_students(Node* head) {
while (head != NULL) {
printf("学号:%d 姓名:%s 性别:%s 年龄:%d 电话:%s 专业:%s 班级:%s\n",
head->info.id, head->info.name, head->info.gender, head->info.age,
head->info.phone, head->info.major, head->info.class_name);
head = head->next;
}
}
```
3. **查询学生信息**:通过学号查找特定学生的信息。
```c
Node* search_student(Node* head, int id) {
while (head != NULL && head->info.id != id) {
head = head->next;
}
return head;
}
```
4. **添加学生信息**:在链表尾部插入新的学生信息。
```c
void add_student(Node** head, Student* student_data) {
Node* newNode = create_student(student_data);
if (newNode != NULL) {
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
}
```
5. **删除学生信息**:根据学号找到并删除指定的学生。
```c
void delete_student(Node** head, int id) {
Node* current = *head;
Node* previous = NULL;
while (current != NULL && current->info.id != id) {
previous = current;
current = current->next;
}
if (current != NULL) {
if (previous == NULL) {
*head = current->next;
} else {
previous->next = current->next;
}
free(current);
}
}
```
阅读全文