数据结构学生成绩管理C++代码
时间: 2023-07-07 15:35:07 浏览: 43
好的,下面是一个使用结构体和链表实现的简单的数据结构学生成绩管理的C++代码:
```c++
#include <iostream>
#include <string>
using namespace std;
// 学生信息结构体
struct Student {
int id; // 学号
string name; // 姓名
float score; // 成绩
Student* next; // 指向下一个节点的指针
};
// 添加学生信息
void addStudent(Student*& head, int id, string name, float score) {
Student* p = new Student;
p->id = id;
p->name = name;
p->score = score;
p->next = head;
head = p;
cout << "添加学生信息成功!" << endl;
}
// 删除学生信息
void removeStudent(Student*& head, int id) {
Student* p = head;
Student* pre = nullptr;
while (p != nullptr && p->id != id) {
pre = p;
p = p->next;
}
if (p == nullptr) {
cout << "学生信息不存在!" << endl;
}
else {
if (pre == nullptr) {
head = p->next;
}
else {
pre->next = p->next;
}
delete p;
cout << "删除学生信息成功!" << endl;
}
}
// 查询学生信息
void queryStudent(Student* head, int id) {
Student* p = head;
while (p != nullptr && p->id != id) {
p = p->next;
}
if (p == nullptr) {
cout << "学生信息不存在!" << endl;
}
else {
cout << "学号:" << p->id << endl;
cout << "姓名:" << p->name << endl;
cout << "成绩:" << p->score << endl;
}
}
// 统计学生平均成绩
void calcAvgScore(Student* head) {
int count = 0;
float sum = 0;
Student* p = head;
while (p != nullptr) {
count++;
sum += p->score;
p = p->next;
}
if (count == 0) {
cout << "没有学生信息!" << endl;
}
else {
float avg = sum / count;
cout << "学生平均成绩为:" << avg << endl;
}
}
int main() {
Student* head = nullptr;
int choice = 0;
while (true) {
cout << "------------------------" << endl;
cout << "请选择操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 查询学生信息" << endl;
cout << "4. 统计学生平均成绩" << endl;
cout << "5. 退出程序" << endl;
cout << "------------------------" << endl;
cin >> choice;
switch (choice) {
case 1:
int id;
string name;
float score;
cout << "请输入学号:";
cin >> id;
cout << "请输入姓名:";
cin >> name;
cout << "请输入成绩:";
cin >> score;
addStudent(head, id, name, score);
break;
case 2:
cout << "请输入要删除的学生的学号:";
cin >> id;
removeStudent(head, id);
break;
case 3:
cout << "请输入要查询的学生的学号:";
cin >> id;
queryStudent(head, id);
break;
case 4:
calcAvgScore(head);
break;
case 5:
cout << "程序已退出!" << endl;
return 0;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
这段代码使用了结构体和链表来存储学生信息,并提供了添加、删除、查询和统计平均成绩等功能。您可以根据自己的需求进行修改和扩展。