设计一个学生成绩管理程序(每个学生至少三门课),主要实现如下功能:输入学生成绩,删除学生成绩,修改学生成绩,查询学生成绩和统计成绩数据。
时间: 2024-06-08 20:11:22 浏览: 50
学生成绩管理程序设计
好的,以下是一个简单的学生成绩管理程序的设计:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
vector<int> scores;
};
vector<Student> students;
void inputScore() {
Student student;
cout << "请输入学生姓名:";
cin >> student.name;
cout << "请输入该学生的三门课程成绩:" << endl;
for (int i = 1; i <= 3; i++) {
int score;
cout << "第" << i << "门课程成绩:";
cin >> score;
student.scores.push_back(score);
}
students.push_back(student);
cout << "添加成功!" << endl;
}
void deleteScore() {
string name;
cout << "请输入要删除的学生姓名:";
cin >> name;
auto iter = find_if(students.begin(), students.end(), [&](const Student& s) { return s.name == name; });
if (iter != students.end()) {
students.erase(iter);
cout << "删除成功!" << endl;
} else {
cout << "未找到该学生!" << endl;
}
}
void modifyScore() {
string name;
cout << "请输入要修改成绩的学生姓名:";
cin >> name;
auto iter = find_if(students.begin(), students.end(), [&](const Student& s) { return s.name == name; });
if (iter != students.end()) {
cout << "请输入该学生的三门课程成绩:" << endl;
for (int i = 0; i < 3; i++) {
int score;
cout << "第" << i + 1 << "门课程成绩:";
cin >> score;
(*iter).scores[i] = score;
}
cout << "修改成功!" << endl;
} else {
cout << "未找到该学生!" << endl;
}
}
void queryScore() {
string name;
cout << "请输入要查询成绩的学生姓名:";
cin >> name;
auto iter = find_if(students.begin(), students.end(), [&](const Student& s) { return s.name == name; });
if (iter != students.end()) {
cout << "该学生的成绩为:" << endl;
for (int i = 0; i < 3; i++) {
cout << "第" << i + 1 << "门课程成绩:" << (*iter).scores[i] << endl;
}
} else {
cout << "未找到该学生!" << endl;
}
}
void statistics() {
int total = 0;
double average = 0.0;
for (auto& s : students) {
int sum = 0;
for (auto score : s.scores) {
sum += score;
}
total += sum;
average += (double)sum / 3.0;
}
int count = students.size();
if (count > 0) {
average /= (double)count;
}
cout << "总分:" << total << endl;
cout << "平均分:" << average << endl;
}
int main() {
while (true) {
cout << "请选择操作:" << endl;
cout << "1. 输入学生成绩" << endl;
cout << "2. 删除学生成绩" << endl;
cout << "3. 修改学生成绩" << endl;
cout << "4. 查询学生成绩" << endl;
cout << "5. 统计成绩数据" << endl;
cout << "6. 退出程序" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
inputScore();
break;
case 2:
deleteScore();
break;
case 3:
modifyScore();
break;
case 4:
queryScore();
break;
case 5:
statistics();
break;
case 6:
return 0;
default:
cout << "无效的选择,请重新输入!" << endl;
}
}
return 0;
}
```
这个程序中,我们使用了一个 `Student` 结构体来存储学生的信息,包括姓名和三门课程的成绩,然后使用一个 vector 来存储所有学生的信息。
程序中实现了五个主要功能:
1. 输入学生成绩:按照提示输入学生的姓名和三门课程的成绩,然后将其添加到 vector 中。
2. 删除学生成绩:按照提示输入要删除的学生姓名,然后在 vector 中查找该学生并删除。
3. 修改学生成绩:按照提示输入要修改成绩的学生姓名,然后在 vector 中查找该学生并修改其三门课程的成绩。
4. 查询学生成绩:按照提示输入要查询成绩的学生姓名,然后在 vector 中查找该学生并输出其三门课程的成绩。
5. 统计成绩数据:遍历 vector 中所有学生的成绩,计算总分和平均分,并输出结果。
程序还包括一个循环菜单,可以让用户选择不同的操作。当用户选择退出程序时,程序结束。
阅读全文