利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学 生信息、删除学生信息c语言
时间: 2024-11-25 10:32:47 浏览: 34
为了利用链表实现一个简单的学生信息管理系统,我们可以设计如下的数据结构和函数:
1. **数据结构**:
- 创建一个名为`Student`的结构体,包含学生的各项信息:
```c
typedef struct {
int id; // 学号
char name[50]; // 姓名
char sex[10]; // 性别
int age; // 年龄
char phone[20]; // 电话号码
char major[50]; // 所学专业
char class_name[50]; // 班级
} Student;
```
2. **链表操作**:
- 定义一个指向学生节点的指针类型:
```c
typedef struct Node {
Student info;
struct Node* next;
} Node;
```
- 创建链表头结点:
```c
Node* head = NULL;
```
3. **主要功能函数**:
- **添加学生信息**(Create): 动态分配内存并初始化新节点,然后插入到链表尾部:
```c
void addStudent(Node** head, Student newStudent) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->info = newStudent;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
```
- **查询学生信息**(Query): 遍历链表查找指定学号的信息:
```c
Node* searchById(Node* head, int id) {
Node* temp = head;
while (temp != NULL && temp->info.id != id) {
temp = temp- **输出学生信息**(Output): 根据指针遍历链表打印所有学生信息:
```c
void displayStudents(Node* head) {
if (head == NULL) {
printf("No students in the system.\n");
} else {
while (head != NULL) {
printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\n",
head->info.id, head->info.name, head->info.sex,
head->info.age, head->info.phone, head->info.major,
head->info.class_name);
head = head->next;
}
}
}
// ...其他功能函数如删除和更新可以类似实现
```
阅读全文