c++程序设计 学生选课系统
时间: 2023-09-02 22:08:42 浏览: 114
c++ 学生选课系统
好的,学生选课系统可以分为以下几个模块:
1. 学生管理模块:包括学生信息的增、删、改、查等操作。
2. 课程管理模块:包括课程信息的增、删、改、查等操作。
3. 选课模块:学生可以在此模块中选择自己感兴趣的课程。
4. 成绩管理模块:包括学生成绩的录入、查询、修改等操作。
以下是一个简单的实现示例:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 学生类
class Student {
public:
Student(int id, const string& name) : m_id(id), m_name(name) {}
int getId() const { return m_id; }
string getName() const { return m_name; }
private:
int m_id; // 学号
string m_name; // 姓名
};
// 课程类
class Course {
public:
Course(int id, const string& name, int credit) : m_id(id), m_name(name), m_credit(credit) {}
int getId() const { return m_id; }
string getName() const { return m_name; }
int getCredit() const { return m_credit; }
private:
int m_id; // 课程编号
string m_name; // 课程名称
int m_credit; // 学分
};
// 成绩类
class Score {
public:
Score(int courseId, int grade) : m_courseId(courseId), m_grade(grade) {}
int getCourseId() const { return m_courseId; }
int getGrade() const { return m_grade; }
private:
int m_courseId; // 课程编号
int m_grade; // 成绩
};
// 学生管理类
class StudentManager {
public:
void addStudent(const Student& student) { m_students.push_back(student); }
void deleteStudent(int id) {
for (auto iter = m_students.begin(); iter != m_students.end(); ++iter) {
if (iter->getId() == id) {
m_students.erase(iter);
break;
}
}
}
void updateStudent(const Student& student) {
for (auto& s : m_students) {
if (s.getId() == student.getId()) {
s = student;
break;
}
}
}
Student* findStudent(int id) {
for (auto& s : m_students) {
if (s.getId() == id) {
return &s;
}
}
return nullptr;
}
private:
vector<Student> m_students; // 学生列表
};
// 课程管理类
class CourseManager {
public:
void addCourse(const Course& course) { m_courses.push_back(course); }
void deleteCourse(int id) {
for (auto iter = m_courses.begin(); iter != m_courses.end(); ++iter) {
if (iter->getId() == id) {
m_courses.erase(iter);
break;
}
}
}
void updateCourse(const Course& course) {
for (auto& c : m_courses) {
if (c.getId() == course.getId()) {
c = course;
break;
}
}
}
Course* findCourse(int id) {
for (auto& c : m_courses) {
if (c.getId() == id) {
return &c;
}
}
return nullptr;
}
private:
vector<Course> m_courses; // 课程列表
};
// 选课类
class CourseSelector {
public:
CourseSelector(StudentManager* studentManager, CourseManager* courseManager) :
m_studentManager(studentManager), m_courseManager(courseManager) {}
bool selectCourse(int studentId, int courseId) {
auto student = m_studentManager->findStudent(studentId);
auto course = m_courseManager->findCourse(courseId);
if (student && course) {
m_selectedCourses[studentId].push_back(courseId);
return true;
}
return false;
}
vector<int> getSelectedCourses(int studentId) {
if (m_selectedCourses.find(studentId) != m_selectedCourses.end()) {
return m_selectedCourses[studentId];
}
return vector<int>();
}
private:
StudentManager* m_studentManager; // 学生管理器
CourseManager* m_courseManager; // 课程管理器
map<int, vector<int>> m_selectedCourses; // 已选课程列表
};
// 成绩管理类
class ScoreManager {
public:
void addScore(int studentId, int courseId, int grade) {
m_scores[studentId][courseId] = grade;
}
void updateScore(int studentId, int courseId, int grade) {
m_scores[studentId][courseId] = grade;
}
int getScore(int studentId, int courseId) {
if (m_scores.find(studentId) != m_scores.end()) {
auto& scores = m_scores[studentId];
if (scores.find(courseId) != scores.end()) {
return scores[courseId];
}
}
return -1;
}
private:
map<int, map<int, int>> m_scores; // 成绩列表
};
int main() {
StudentManager studentManager;
CourseManager courseManager;
CourseSelector courseSelector(&studentManager, &courseManager);
ScoreManager scoreManager;
// 添加学生
Student s1(1, "张三");
studentManager.addStudent(s1);
Student s2(2, "李四");
studentManager.addStudent(s2);
Student s3(3, "王五");
studentManager.addStudent(s3);
// 添加课程
Course c1(1, "高等数学", 5);
courseManager.addCourse(c1);
Course c2(2, "大学英语", 3);
courseManager.addCourse(c2);
Course c3(3, "计算机基础", 4);
courseManager.addCourse(c3);
// 选课
courseSelector.selectCourse(1, 1);
courseSelector.selectCourse(1, 2);
courseSelector.selectCourse(2, 2);
courseSelector.selectCourse(3, 1);
courseSelector.selectCourse(3, 3);
// 录入成绩
scoreManager.addScore(1, 1, 85);
scoreManager.addScore(1, 2, 90);
scoreManager.addScore(2, 2, 78);
scoreManager.addScore(3, 1, 92);
scoreManager.addScore(3, 3, 86);
// 查询成绩
cout << "张三的高等数学成绩为:" << scoreManager.getScore(1, 1) << endl;
cout << "王五的计算机基础成绩为:" << scoreManager.getScore(3, 3) << endl;
return 0;
}
```
以上是一个简单的学生选课系统实现,其中包含了学生管理、课程管理、选课、成绩管理等模块。由于时间和篇幅限制,代码中可能存在一些不足之处,需要根据实际需求进行完善和改进。
阅读全文