用C++编写:在某系的成绩登记册中,每个班最多有40个学生,每份成绩表中的成绩信息包括:学号(9位字符),姓名(8位字符),成绩(百分制),备注(20位字符)。设计程序以处理一个班级的成绩信息,包括输入、输出、查询(给定分数以上或以下的学生信息)、按分数排序等。
时间: 2024-12-23 13:12:47 浏览: 6
在C++中,你可以设计一个简单的结构体来表示学生的成绩信息,并使用数组或动态容器(如std::vector)来存储一个班级的数据。下面是一个基本的实现思路:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
// 定义学生结构体
struct Student {
std::string id;
std::string name;
int score;
std::string remark;
};
class GradeBook {
private:
const int MAX_STUDENTS = 40;
std::vector<Student> students;
public:
// 添加学生信息
void addStudent(const std::string& id, const std::string& name, int score, const std::string& remark) {
if (students.size() < MAX_STUDENTS) {
students.push_back(Student{id, name, score, remark});
} else {
std::cout << "班级人数已满,无法添加更多学生。\n";
}
}
// 输入学生信息
void inputStudentInfo() {
Student temp;
std::cout << "请输入学生信息(学号,姓名,分数,备注):" << std::endl;
std::cin >> temp.id >> temp.name >> temp.score >> temp.remark;
addStudent(temp.id, temp.name, temp.score, temp.remark);
}
// 输出所有学生信息
void outputAllStudents() {
for (const auto& student : students) {
std::cout << "学号:" << student.id << ", 姓名:" << student.name << ", 成绩:" << student.score << ", 备注:" << student.remark << "\n";
}
}
// 查询成绩
void searchByScore(int targetScore, bool aboveTarget) {
std::vector<Student> filteredStudents;
for (const auto& student : students) {
if ((aboveTarget ? student.score > targetScore : student.score <= targetScore)) {
filteredStudents.push_back(student);
}
}
if (!filteredStudents.empty()) {
std::cout << "满足条件的学生信息:\n";
for (const auto& student : filteredStudents) {
std::cout << "学号:" << student.id << ", 姓名:" << student.name << ", 成绩:" << student.score << ", 备注:" << student.remark << "\n";
}
} else {
std::cout << "没有找到符合条件的学生。\n";
}
}
// 按成绩排序
void sortStudentsByScore() {
std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) { return a.score > b.score; });
std::cout << "按照成绩降序排列的学生信息:\n";
outputAllStudents();
}
};
int main() {
GradeBook gradeBook;
while (true) {
std::cout << "请选择操作:1. 输入学生信息 2. 查找成绩 3. 按成绩排序 4. 退出\n";
int choice;
std::cin >> choice;
switch (choice) {
case 1:
gradeBook.inputStudentInfo();
break;
case 2:
int targetScore;
std::cout << "请输入查询目标分数:";
std::cin >> targetScore;
std::string aboveBelow;
std::cout << "查找高于还是低于该分数的学生?(h/l)";
std::cin >> aboveBelow;
bool aboveTarget = aboveBelow == 'h';
gradeBook.searchByScore(targetScore, aboveTarget);
break;
case 3:
gradeBook.sortStudentsByScore();
break;
case 4:
return 0;
break;
default:
std::cout << "无效选择,重新输入。\n";
}
}
}
```
这个程序包含了基本的操作如添加学生、显示所有学生、搜索成绩和排序,可以根据需求进行扩展。在实际项目中,你可能还需要考虑错误处理和用户交互的友好性。
阅读全文