利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学生信息、删除学生信息。利用c语言
时间: 2024-11-29 22:35:49 浏览: 24
人工智能-项目实践-信息管理系统-学生信息管理系统之链表的使用
在C语言中,我们可以使用链表数据结构来实现一个简单的学生信息管理系统。首先,我们需要定义一个`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;
typedef struct Node {
Student info; // 学生信息
struct Node* next; // 指向下一个节点的指针
} Node;
```
接下来,我们可以实现主要的功能:
1. **创建学生信息**:创建一个新的`Node`并初始化学生信息。
```c
void create(Student* student, ...) {
... // 实现从用户输入获取信息并分配内存
}
```
2. **输出学生信息**:遍历链表,打印每个学生的详细信息。
```c
void display(Node* head) {
while (head != NULL) {
printf("%d %s %s %d %s %s %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;
}
}
```
3. **查询学生信息**:查找指定条件(如学号)的学生。
```c
Node* search(int id, Node* head) {
while (head != NULL) {
if (head->info.id == id)
return head;
head = head->next;
}
return NULL;
}
```
4. **增加学生信息**:在链表末尾添加新的学生。
```c
void add(Student* new_student, Node** head) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->info = *new_student;
newNode->next = NULL;
if (*head == NULL)
*head = newNode;
else
(*head)->next = newNode;
}
```
5. **删除学生信息**:根据学号删除某个学生。
```c
void delete(Node** head, int id) {
Node* temp = *head, *prev;
if (temp && temp->info.id == id) {
*head = temp->next;
free(temp);
return;
}
while (temp && temp->info.id != id) {
prev = temp;
temp = temp->next;
}
if (temp)
prev->next = temp->next;
free(temp);
}
```
阅读全文