C++ 实现学生成绩管理系统:含代码及额外逻辑注意点
以下是为您编写的 C++ 代码: ```cpp #include <iostream> #include <string> #include <vector> // 学生结构体 struct Student { int id; std::string name; int score1; int score2; int score3; int totalScore; }; // 添加学生信息 void addStudent(std::vector<Student>& students) { Student student; std::cout << "请输入学号: "; std::cin >> student.id; std::cout << "请输入课程成绩 1: "; std::cin >> student.score1; std::cout << "请输入课程成绩 2: "; std::cin >> student.score2; std::cout << "请输入课程成绩 3: "; std::cin >> student.score3; std::cout << "请输入姓名: "; std::cin >> student.name; student.totalScore = student.score1 + student.score2 + student.score3; students.push_back(student); } // 修改学生信息 void modifyStudent(std::vector<Student>& students) { int id; std::cout << "请输入要修改的学号: "; std::cin >> id; for (auto& student : students) { if (student.id == id) { std::cout << "请输入新的课程成绩 1: "; std::cin >> student.score1; std::cout << "请输入新的课程成绩 2: "; std::cin >> student.score2; std::cout << "请输入新的课程成绩 3: "; std::cin >> student.score3; std::cout << "请输入新的姓名: "; std::cin >> student.name; student.totalScore = student.score1 + student.score2 + student.score3; break; } } } // 按学号删除学生 void deleteStudentByID(std::vector<Student>& students) { int id; std::cout << "请输入要删除的学号: "; std::cin >> id; for (auto it = students.begin(); it!= students.end(); ++it) { if (it->id == id) { students.erase(it); break; } } } // 按学号查询学生信息 void queryStudentByID(std::vector<Student>& students) { int id; std::cout << "请输入要查询的学号: "; std::cin >> id; for (const auto& student : students) { if (student.id == id) { std::cout << "学号: " << student.id << ", 姓名: " << student.name << ", 课程成绩 1: " << student.score1 << ", 课程成绩 2: " << student.score2 << ", 课程成绩 3: " << student.score3 << std::endl; break; } } } // 按姓名查询学生信息 void queryStudentByName(std::vector<Student>& students) { std::string name; std::cout << "请输入要查询的姓名: "; std::cin >> name; bool found = false; for (const auto& student : students) { if (student.name == name) { std::cout << "学号: " << student.id << ", 姓名: " << student.name << ", 课程成绩 1: " << student.score1 << ", 课程成绩 2: " << student.score2 << ", 课程成绩 3: " << student.score3 << std::endl; found = true; } } if (!found) { std::cout << "未找到该姓名的学生信息" << std::endl; } } // 按学号升序排序 void sortByIDAscending(std::vector<Student>& students) { std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) { return a.id < b.id; }); } // 按总分降序排序 void sortByTotalScoreDescending(std::vector<Student>& students) { std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) { return a.totalScore > b.totalScore; }); } int main() { std::vector<Student> students; int choice; do { std::cout << "1. 添加学生信息" << std::endl; std::cout << "2. 修改学生信息" << std::endl; std::cout << "3. 按学号删除学生" << std::endl; std::cout << "4. 按学号查询学生信息" << std::endl; std::cout << "5. 按姓名查询学生信息" << std::endl; std::cout << "6. 按学号升序排序" << std::endl; std::cout << "7. 按总分降序排序" << std::endl; std::cout << "0. 退出" << std::endl; std::cout << "请选择: "; std::cin >> choice; switch (choice) { case 1: addStudent(students); break; case 2: modifyStudent(students); break; case 3: deleteStudentByID(students); break; case 4: queryStudentByID(students); break; case 5: queryStudentByName(students); break; case 6: sortByIDAscending(students); break; case 7: sortByTotalScoreDescending(students); break; case 0: break; default: std::cout << "无效的选择,请重新输入" << std::endl; } } while (choice!= 0); return 0; } ``` 额外需要注意的逻辑点: 1. 输入数据的合法性校验,比如学号是否为整数,成绩是否在合理范围内,姓名是否符合规范等。 2. 处理删除和修改操作时,要确保输入的学号或姓名存在,避免出现异常情况。 3. 排序算法的效率和稳定性,根据实际数据量和性能要求,可以考虑优化排序算法。 ######[AI写代码神器 | 1494点数解答 | 2024-12-12 11:56:50]
- C 语言:快速实现 5 个学生信息录入、按成绩升序排序并输出!(字节豆包 | 373点数解答 | 2024-10-30 00:37:20)410
- C语言实现:输入5名学生信息并按成绩升序排序输出(字节豆包 | 354点数解答 | 2024-10-30 18:45:58)354
- C语言:输入5个学生信息,按成绩升序排序并输出(字节豆包 | 373点数解答 | 2024-10-31 19:49:58)345
- C语言:输入5名学生信息并按成绩升序排序输出(字节豆包 | 326点数解答 | 2025-01-01 20:11:47)340
- 成绩等级统计:20个60 - 100分成绩的等级数量揭秘(字节豆包 | 219点数解答 | 2025-04-09 10:20:32)219
- 培训机构学员成绩与年龄更新:C++ 代码实现(DeepSeek | 186点数解答 | 2025-12-16 18:04:31)59
- Python 处理培训机构学员培训后年龄与 NOIP 成绩提升情况(DeepSeek | 73点数解答 | 2025-12-16 18:05:20)62
- 培训机构学员成绩提升:C++代码实现年龄与NOIP成绩更新(DeepSeek | 178点数解答 | 2025-12-31 12:20:24)59
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 工程师必备!10 种工程日常易用管理工具大揭秘(百度文心 | 346点数解答 | 2023-11-09 18:26:09)290
- Java程序模拟教学选课:林老师开课,58 位学生选课男女比例大揭秘( | 2653点数解答 | 2024-04-02 11:00:16)470
- Java程序设计课程:模拟教学管理,统计58位选课学生男女比重( | 363点数解答 | 2024-04-05 18:31:39)473