c++链表实现学生成绩管理系统
时间: 2023-10-10 14:05:43 浏览: 228
···学生成绩管理系统 ·
你可以使用C语言中的结构体和链表来实现学生成绩管理系统。首先,你可以定义一个结构体来表示学生的信息,包括学号、姓名和成绩等字段。然后,你可以创建一个链表来存储多个学生的信息。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct Student {
int id;
char name[50];
float score;
struct Student *next;
} Student;
// 创建新学生节点
Student* createStudent(int id, const char* name, float score) {
Student *newStudent = (Student*)malloc(sizeof(Student));
newStudent->id = id;
strcpy(newStudent->name, name);
newStudent->score = score;
newStudent->next = NULL;
return newStudent;
}
// 添加学生到链表末尾
void addStudent(Student **head, int id, const char* name, float score) {
Student *newStudent = createStudent(id, name, score);
// 链表为空时,直接将新节点设为头节点
if (*head == NULL) {
*head = newStudent;
return;
}
// 遍历链表,找到最后一个节点
Student *current = *head;
while (current->next != NULL) {
current = current->next;
}
// 在最后一个节点后添加新节点
current->next = newStudent;
}
// 打印所有学生信息
void printStudents(Student *head) {
if (head == NULL) {
printf("学生信息为空。\n");
return;
}
printf("学生信息如下:\n");
Student *current = head;
while (current != NULL) {
printf("学号:%d, 姓名:%s, 成绩:%.2f\n", current->id, current->name, current->score);
current = current->next;
}
}
// 主函数
int main() {
Student *head = NULL;
// 添加示例学生信息
addStudent(&head, 1, "张三", 90.5);
addStudent(&head, 2, "李四", 85.0);
addStudent(&head, 3, "王五", 95.5);
// 打印学生信息
printStudents(head);
// 清空链表,释放内存
Student *current = head;
while (current != NULL) {
Student *temp = current;
current = current->next;
free(temp);
}
return 0;
}
```
这段代码演示了如何创建学生结构体、添加学生到链表末尾,并打印出所有学生的信息。你可以根据需要扩展该代码,实现更多功能,比如按照成绩排序、根据学号查找学生等。希望对你有所帮助!
阅读全文