利用链表实现一个简单的学生信息管理系统,实现学生成绩的录入、查询、统计(排序、求最高和最低分、平均分、及格率等)、输出等功能,与上次实验一样,可以附加菜单操作等功能,其中的相关类型可试用typedef取别名。
时间: 2023-07-10 10:03:15 浏览: 48
好的,我来为您演示一个利用链表实现学生信息管理系统的示例代码。请注意,这里的代码仅供参考,具体实现方式可能因人而异。
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义学生信息结构体
typedef struct student {
string name; // 姓名
int id; // 学号
float score; // 成绩
struct student* next; // 下一个节点指针
} Student;
// 初始化链表头结点
Student* init() {
Student* head = new Student;
head->next = NULL;
return head;
}
// 添加学生信息
void add(Student* head) {
Student* p = head;
while (p->next != NULL) {
p = p->next;
}
Student* node = new Student;
cout << "请输入学生姓名:";
cin >> node->name;
cout << "请输入学生学号:";
cin >> node->id;
cout << "请输入学生成绩:";
cin >> node->score;
node->next = NULL;
p->next = node;
}
// 查询学生信息
void query(Student* head) {
int id;
cout << "请输入要查询的学生学号:";
cin >> id;
Student* p = head->next;
while (p != NULL) {
if (p->id == id) {
cout << "学生姓名:" << p->name << endl;
cout << "学生学号:" << p->id << endl;
cout << "学生成绩:" << p->score << endl;
return;
}
p = p->next;
}
cout << "未找到该学生信息!" << endl;
}
// 统计学生信息
void statistic(Student* head) {
int count = 0; // 学生人数
float sum = 0; // 成绩总和
float max_score = 0; // 最高分
float min_score = 100; // 最低分
float pass_count = 0; // 及格人数
Student* p = head->next;
while (p != NULL) {
count++;
sum += p->score;
if (p->score > max_score) {
max_score = p->score;
}
if (p->score < min_score) {
min_score = p->score;
}
if (p->score >= 60) {
pass_count++;
}
p = p->next;
}
float average_score = sum / count; // 平均分
float pass_rate = pass_count / count * 100; // 及格率
cout << "学生人数:" << count << endl;
cout << "最高分:" << max_score << endl;
cout << "最低分:" << min_score << endl;
cout << "平均分:" << average_score << endl;
cout << "及格率:" << pass_rate << "%" << endl;
}
// 输出学生信息
void display(Student* head) {
Student* p = head->next;
cout << "姓名\t学号\t成绩" << endl;
while (p != NULL) {
cout << p->name << "\t" << p->id << "\t" << p->score << endl;
p = p->next;
}
}
int main() {
Student* head = init();
int choice = 1;
while (choice) {
cout << "1.添加学生信息" << endl;
cout << "2.查询学生信息" << endl;
cout << "3.统计学生信息" << endl;
cout << "4.输出学生信息" << endl;
cout << "0.退出" << endl;
cout << "请输入您的选择:";
cin >> choice;
switch (choice) {
case 1:
add(head);
break;
case 2:
query(head);
break;
case 3:
statistic(head);
break;
case 4:
display(head);
break;
case 0:
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
以上是一个简单的学生信息管理系统的示例代码,其中包括了添加学生信息、查询学生信息、统计学生信息、输出学生信息等功能。在实际开发中,还可以根据需求进行修改和扩展。