酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

设计一个学生成绩管理c++程序,实现对n个学生的3门课程的成绩的记录与统计工作。学生信息包括:学号,姓名,课程成绩1,课程成绩2,课程成绩3。 程序基本功能要求如下: 1---添加学生信息(依次输入学号、三门课程的分数、姓名) 2---修改学生信息(依次输入学号、三门课程的分数、姓名) 3---按学号删除学生(输入学号) 4---按学号查询学生信息(输入学号,输出学号、姓名、三门课程的分数) 5---按姓名查询学生信息(输入姓名,按学号升序依次输出学生信息) 6---按学号升序排序 7---按总分降序排序 0---退出

以下是为您编写的 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. 排序算法的效率和稳定性,根据实际数据量和性能要求,可以考虑优化排序算法。 [2024-12-12 11:56:50 | AI写代码神器 | 1494点数解答]

相关提问