好的,下面是一个简单的C++程序,用于实现学生信息管理系统。这个系统包括信息维护、信息查询、成绩统计和课程成绩排序功能。 ```cpp #include <iostream> #include <vector> #include <algorithm> #include <string> struct Student { std::string name; int id; float score; }; class StudentManagementSystem { public: void addStudent() { Student student; std::cout << "输入学生姓名: "; std::cin >> student.name; std::cout << "输入学生ID: "; std::cin >> student.id; std::cout << "输入学生成绩: "; std::cin >> student.score; students.push_back(student); std::cout << "学生信息添加成功!" << std::endl; } void removeStudent() { int id; std::cout << "输入要删除的学生ID: "; std::cin >> id; auto it = std::find_if(students.begin(), students.end(), [id](const Student& s) { return s.id == id; }); if (it != students.end()) { students.erase(it); std::cout << "学生信息删除成功!" << std::endl; } else { std::cout << "未找到该学生信息!" << std::endl; } } void queryStudent() { int id; std::cout << "输入要查询的学生ID: "; std::cin >> id; auto it = std::find_if(students.begin(), students.end(), [id](const Student& s) { return s.id == id; }); if (it != students.end()) { std::cout << "学生姓名: " << it->name << ", 学生ID: " << it->id << ", 成绩: " << it->score << std::endl; } else { std::cout << "未找到该学生信息!" << std::endl; } } void displayAllStudents() { for (const auto& student : students) { std::cout << "学生姓名: " << student.name << ", 学生ID: " << student.id << ", 成绩: " << student.score << std::endl; } } void sortStudentsByScore() { std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) { return a.score > b.score; }); std::cout << "按成绩排序后的学生信息:" << std::endl; displayAllStudents(); } private: std::vector<Student> students; }; int main() { StudentManagementSystem sms; int choice; while (true) { std::cout << "\n学生信息管理系统\n"; std::cout << "1. 添加学生信息\n"; std::cout << "2. 删除学生信息\n"; std::cout << "3. 查询学生信息\n"; std::cout << "4. 显示所有学生信息\n"; std::cout << "5. 按成绩排序\n"; std::cout << "6. 退出\n"; std::cout << "请选择操作: "; std::cin >> choice; switch (choice) { case 1: sms.addStudent(); break; case 2: sms.removeStudent(); break; case 3: sms.queryStudent(); break; case 4: sms.displayAllStudents(); break; case 5: sms.sortStudentsByScore(); break; case 6: return 0; default: std::cout << "无效的选择,请重新输入!" << std::endl; } } return 0; } ``` ### 额外需要注意的逻辑点: 1. **输入验证**:在添加或查询学生信息时,确保输入的数据格式正确,例如ID应该是整数,成绩应该是浮点数。 2. **异常处理**:在删除学生信息时,如果未找到该学生,应该给出提示而不是直接报错。 3. **数据持久化**:当前程序在程序关闭后会丢失所有数据。可以考虑将数据保存到文件中,以便下次启动时恢复。 [2024-11-24 18:33:37 | AI写代码神器 | 915点数解答]