C++实现:带优化建议的学生课程选课系统OOP课程设计
以下是一个使用 C++实现学生课程选课系统的示例代码,满足基本要求,并考虑了额外要求: ```cpp #include <iostream> #include <vector> #include <string> #include <map> #include <ctime> // 课程结构体 struct Course { std::string name; std::string teacher; std::string time; std::string location; }; // 学生选课结构体 struct StudentCourse { std::string studentName; std::string courseName; time_t selectTime; }; // 课程容器 std::vector<Course> courses; // 学生选课容器 std::vector<StudentCourse> studentCourses; // 添加新课程 void addCourse() { Course newCourse; std::cout << "请输入课程名称: "; std::cin >> newCourse.name; std::cout << "请输入授课教师: "; std::cin >> newCourse.teacher; std::cout << "请输入上课时间: "; std::cin >> newCourse.time; std::cout << "请输入上课地点: "; std::cin >> newCourse.location; courses.push_back(newCourse); } // 学生选课 void studentSelectCourse() { StudentCourse newStudentCourse; std::cout << "请输入学生姓名: "; std::cin >> newStudentCourse.studentName; std::cout << "请输入选课名称: "; std::cin >> newStudentCourse.courseName; newStudentCourse.selectTime = time(nullptr); studentCourses.push_back(newStudentCourse); } // 学生退课 void studentDropCourse() { std::string studentName, courseName; std::cout << "请输入学生姓名: "; std::cin >> studentName; std::cout << "请输入要退的课程名称: "; std::cin >> courseName; for (auto it = studentCourses.begin(); it!= studentCourses.end(); ++it) { if (it->studentName == studentName && it->courseName == courseName) { studentCourses.erase(it); break; } } } // 显示课程选课情况 void showCourseSelection() { for (const auto& course : courses) { std::cout << "课程名称: " << course.name << ", 授课教师: " << course.teacher << ", 上课时间: " << course.time << ", 上课地点: " << course.location << std::endl; for (const auto& studentCourse : studentCourses) { if (studentCourse.courseName == course.name) { std::cout << " 选课学生: " << studentCourse.studentName << ", 选课时间: " << ctime(&studentCourse.selectTime); } } } } // 修改课程信息 void modifyCourse() { std::string courseName; std::cout << "请输入要修改的课程名称: "; std::cin >> courseName; for (auto& course : courses) { if (course.name == courseName) { std::cout << "请输入新的授课教师: "; std::cin >> course.teacher; std::cout << "请输入新的上课时间: "; std::cin >> course.time; std::cout << "请输入新的上课地点: "; std::cin >> course.location; break; } } } // 删除课程信息 void deleteCourse() { std::string courseName; std::cout << "请输入要删除的课程名称: "; std::cin >> courseName; for (auto it = courses.begin(); it!= courses.end(); ++it) { if (it->name == courseName) { courses.erase(it); break; } } } int main() { int choice; while (true) { 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 << "请选择操作: "; std::cin >> choice; switch (choice) { case 1: addCourse(); break; case 2: studentSelectCourse(); break; case 3: studentDropCourse(); break; case 4: showCourseSelection(); break; case 5: modifyCourse(); break; case 6: deleteCourse(); break; case 7: return 0; default: std::cout << "无效的选择,请重新输入" << std::endl; } } return 0; } ``` 以下是三个改进建议: 1. 代码中可以添加更多的输入验证,例如检查输入的时间格式是否正确。 2. 可以将课程和学生选课的信息存储在文件中,以便程序重启后数据不会丢失。 3. 对于用户界面部分,可以使用图形界面库(如 Qt)来提供更友好的交互体验。 ######[AI写代码神器 | 1302点数解答 | 2024-12-22 19:49:51]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- iOS开发必知:OOA、OOD、OOP深度解析与应用(阿里通义 | 222点数解答 | 2023-11-08 00:43:57)155
- C++实现计算字符矩阵中十字图形个数(字节豆包 | 333点数解答 | 2026-03-14 19:46:38)17
- C++实现矩阵中十字图形个数的计算(字节豆包 | 847点数解答 | 2026-03-14 20:19:15)17
- Java程序模拟教学选课:林老师开课,58 位学生选课男女比例大揭秘( | 2653点数解答 | 2024-04-02 11:00:16)470
- Java程序设计课程:模拟教学管理,统计58位选课学生男女比重( | 363点数解答 | 2024-04-05 18:31:39)473
- R语言实战:用配对样本t检验评估课程强化集训对学生成绩的提升效果(GPT | 630点数解答 | 2024-11-26 22:00:01)321
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- 解析React 15与Vue 2:从O(n^3)到O(n),Diff算法时间复杂度计算及性能对比 (阿里通义 | 379点数解答 | 2023-11-09 01:49:19)332
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)240
- 精准优化:明确需求,开启高效提升之旅! (字节豆包 | 52点数解答 | 2026-02-09 16:44:46)35
- 代码再升级:优化版“获取dump”代码,多机制保障数据读取与保存(字节豆包 | 734点数解答 | 2026-02-10 01:23:31)63