c语言实现利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学生信息、删除学生信息。
时间: 2024-10-23 13:06:35 浏览: 36
学生信息管理系统,实现学生信息包括:学号、姓名、性别、年龄、班级等信息。
5星 · 资源好评率100%
在C语言中,我们可以使用结构体和链表数据结构来实现一个简单的学生信息管理系统。首先,我们需要定义一个`Student`结构体来存储学生的各项信息:
```c
typedef struct {
int student_id;
char name[50];
char gender[10];
int age;
char phone_number[20];
char major[50];
char class_name[50];
} Student;
// 链表节点
typedef struct Node {
Student info;
struct Node* next;
} Node;
```
接下来,我们定义链表相关的函数:
1. 创建新学生节点并添加到链表头部:
```c
Node* create_student(Student* new_info) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->info = *new_info;
newNode->next = head;
head = newNode;
return newNode;
}
```
2. 显示所有学生信息:
```c
void display_students(Node* current) {
while (current != NULL) {
printf("学号:%d 姓名:%s 性别:%s 年龄:%d 电话:%s 专业:%s 班级:%s\n",
current->info.student_id,
current->info.name,
current->info.gender,
current->info.age,
current->info.phone_number,
current->info.major,
current->info.class_name);
current = current->next;
}
}
```
3. 查询特定学生信息:
```c
Node* find_student(int id) {
Node* current = head;
while (current != NULL && current->info.student_id != id) {
current = current->next;
}
return current;
}
```
4. 插入(增加)和删除学生信息需要遍历链表并在适当位置操作,这里仅提供插入的示例:
```c
void add_student(Student* new_info) {
// 在链表未满的情况下插入
// 具体实现略,需要检查链表是否为空或已满
Node* newNode = create_student(new_info);
if (newNode == NULL) return;
}
void delete_student(int id) {
Node* current = head;
Node* previous = NULL;
if (current != NULL && current->info.student_id == id) {
head = current->next; // 如果头节点就是目标节点
free(current); // 释放内存
return;
}
while (current != NULL && current->info.student_id != id) {
previous = current;
current = current->next;
}
if (current == NULL) return; // 没找到对应的学生
previous->next = current->next;
free(current); // 释放内存
}
```
阅读全文