设计一个程序,要求用 C++语言设计程序,设计实现学生成绩管理系统的应用程序,程序具 体要求如下: 通过二维数组构建学生的成绩单 学号 语文 数学 英语 物理 化学 生物 101 96 79 88 77 76 83 102 79 82 86 82 67 91 103 83 98 95 92 93 88 104 92 82 78 89 81 79 105 87 95 91 85 87 75 程序包含的功能: 1、 输入学号和科目名称(如语文、数学等)查询所有同学该科门科目的平 均成绩以及该生该门科目的排名。 2、 输入学号,输出所有同学根据总成绩的排名,并输出该学号的排名。 3、 输入学号、科目名称、修改的成绩分数对成绩单中成绩进行修改。 4、程序在最开始可以选择想执行的业务选项
时间: 2024-02-22 12:01:30 浏览: 135
好的,这是一个学生成绩管理系统的应用程序,它可以通过二维数组构建学生的成绩单。以下是程序的具体要求:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int MAX_N = 100;
const int MAX_M = 6;
struct Student {
int id;
int score[MAX_M];
double total_score;
};
int n, m; // n为学生数,m为科目数
Student students[MAX_N]; // 学生数组
// 按照总成绩从大到小排序
bool cmp(const Student& a, const Student& b) {
return a.total_score > b.total_score;
}
// 输入学生信息
void input() {
cout << "请输入学生数和科目数(以空格分隔):" << endl;
cin >> n >> m;
cout << "请输入学生信息(学号 语文 数学 英语 物理 化学 生物):" << endl;
for (int i = 0; i < n; i++) {
cin >> students[i].id;
students[i].total_score = 0;
for (int j = 0; j < m; j++) {
cin >> students[i].score[j];
students[i].total_score += students[i].score[j];
}
}
}
// 查询所有同学该科门科目的平均成绩以及该生该门科目的排名
void querySubject() {
int subject_id;
cout << "请输入科目编号(从1开始):" << endl;
cin >> subject_id;
double sum = 0; // 总成绩
for (int i = 0; i < n; i++) {
sum += students[i].score[subject_id-1];
}
double avg = sum / n; // 平均成绩
cout << "平均成绩为:" << avg << endl;
// 对该科目成绩进行排序
sort(students, students+n, [](const Student& a, const Student& b){
return a.score[subject_id-1] > b.score[subject_id-1];
});
int rank = 1; // 排名
for (int i = 0; i < n; i++) {
if (students[i].id == subject_id) {
cout << "排名为:" << rank << endl;
break;
}
rank++;
}
}
// 输出所有同学根据总成绩的排名,并输出该学号的排名
void queryTotal() {
// 计算总成绩并排序
for (int i = 0; i < n; i++) {
students[i].total_score = 0;
for (int j = 0; j < m; j++) {
students[i].total_score += students[i].score[j];
}
}
sort(students, students+n, cmp);
int rank = 1; // 总排名
for (int i = 0; i < n; i++) {
if (students[i].id == subject_id) {
cout << "排名为:" << rank << endl;
break;
}
rank++;
}
// 输出排名
for (int i = 0; i < n; i++) {
cout << "排名为:" << i+1 << ", 学号为:" << students[i].id << ", 总成绩为:" << students[i].total_score << endl;
}
}
// 修改成绩
void modify() {
int student_id, subject_id, score;
cout << "请输入学生编号和科目编号(从1开始)以及修改的成绩:" << endl;
cin >> student_id >> subject_id >> score;
for (int i = 0; i < n; i++) {
if (students[i].id == student_id) {
students[i].score[subject_id-1] = score;
students[i].total_score = 0;
for (int j = 0; j < m; j++) {
students[i].total_score += students[i].score[j];
}
break;
}
}
}
// 主函数
int main() {
int option;
while (true) {
cout << "请选择操作(1. 输入学生信息 2. 查询科目平均成绩和排名 3. 查询总排名 4. 修改成绩 5. 退出):" << endl;
cin >> option;
if (option == 1) {
input();
} else if (option == 2) {
querySubject();
} else if (option == 3) {
queryTotal();
} else if (option == 4) {
modify();
} else if (option == 5) {
break;
} else {
cout << "无效操作,请重新选择!" << endl;
}
}
return 0;
}
```
这个程序包含了以下功能:
1. 输入学号和科目名称(如语文、数学等)查询所有同学该科门科目的平均成绩以及该生该门科目的排名。
2. 输入学号,输出所有同学根据总成绩的排名,并输出该学号的排名。
3. 输入学号、科目名称、修改的成绩分数对成绩单中成绩进行修改。
4. 程序在最开始可以选择想执行的业务选项。
阅读全文