用c++编写一个学生选课系统1.学生选课系统 课程基本信息:课程名,课时,开课学期,学分 专业选修课信息包括:课程名,课时,开课学期,学分,所属专业; 公共选修课信息包括:课程名,课时,开课学期,学分,面向专业,开课系部。 学生信息:学号,姓名,专业,选课信息 功能要求: (1)课程信息的维护:查询课程信息情况、增加课程信息、删除课程信息、更新课程信息。 (2)学生信息的维护:查询学生信息情况、增加学生信息、删除学生信息、更新学生信息。 (3)选课:每人每学期选课不能超过4门;同一学期选修同一门课程的学生人数不能超过100人。只能选自己专业的专业选修课或面向自己专业的公共选修课。 (4)选课信息:记录学生的选课情况,属性为:课程名,选课时间(学期),成绩。 (5)统计模块包括:每个学生选修课程的门数,每门课程选修的学生人数。
时间: 2023-06-25 22:03:40 浏览: 155
很高兴为您提供一个学生选课系统的C++代码,以下是实现该功能的代码:
```
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Course {
private:
string name;
int hour;
string term;
int credit;
string major;
string department;
public:
Course(string n, int h, string t, int c, string m, string d) {
name = n;
hour = h;
term = t;
credit = c;
major = m;
department = d;
}
string getName() {
return name;
}
int getHour() {
return hour;
}
string getTerm() {
return term;
}
int getCredit() {
return credit;
}
string getMajor() {
return major;
}
string getDepartment() {
return department;
}
void print() {
cout << "课程名:" << name << " 课时:" << hour << " 开课学期:" << term << " 学分:" << credit << " 所属专业:" << major << " 开课系部:" << department << endl;
}
};
class Student {
private:
string id;
string name;
string major;
vector<Course*> courses;
public:
Student(string i, string n, string m) {
id = i;
name = n;
major = m;
}
string getId() {
return id;
}
string getName() {
return name;
}
string getMajor() {
return major;
}
void addCourse(Course* c) {
courses.push_back(c);
}
void print() {
cout << "学号:" << id << " 姓名:" << name << " 专业:" << major << " 选修课程数:" << courses.size() << endl;
}
};
class CourseSystem {
private:
vector<Student*> students;
vector<Course*> courses;
public:
void addCourse(Course* c) {
courses.push_back(c);
}
void addStudent(Student* s) {
students.push_back(s);
}
void printCourses() {
for (int i = 0; i < courses.size(); i++) {
courses[i]->print();
}
}
void printStudents() {
for (int i = 0; i < students.size(); i++) {
students[i]->print();
}
}
void enroll(string studentId, string courseName) {
Student* s = findStudent(studentId);
Course* c = findCourse(courseName);
if (s == nullptr || c == nullptr) {
cout << "学生或课程不存在!" << endl;
return;
}
if (s->getMajor() != c->getMajor() && c->getDepartment() != "所有系部") {
cout << "选课失败,不能选非本专业的专业选修课或非面向本专业的公共选修课!" << endl;
return;
}
if (s->getId() == studentId && c->getName() == courseName) {
for (int i = 0; i < s->courses.size(); i++) {
if (s->courses[i]->getName() == courseName) {
cout << "选课失败,不能重复选课!" << endl;
return;
}
}
if (s->courses.size() >= 4) {
cout << "选课失败,每人每学期选课不能超过4门!" << endl;
return;
}
int count = 0;
for (int i = 0; i < students.size(); i++) {
for (int j = 0; j < students[i]->courses.size(); j++) {
if (students[i]->courses[j]->getName() == courseName) {
count++;
}
}
}
if (count >= 100) {
cout << "选课失败,同一学期选修同一门课程的学生人数不能超过100人!" << endl;
return;
}
s->addCourse(c);
cout << "选课成功!" << endl;
}
}
void printEnrollments() {
for (int i = 0; i < students.size(); i++) {
cout << students[i]->getName() << " 选修了:";
for (int j = 0; j < students[i]->courses.size(); j++) {
cout << students[i]->courses[j]->getName() << ", ";
}
cout << endl;
}
}
private:
Student* findStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i]->getId() == id) {
return students[i];
}
}
return nullptr;
}
Course* findCourse(string name) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i]->getName() == name) {
return courses[i];
}
}
return nullptr;
}
};
int main() {
CourseSystem system;
// 添加课程信息
Course* course1 = new Course("数学", 64, "第一学期", 4, "数学", "所有系部");
Course* course2 = new Course("英语", 64, "第一学期", 4, "英语", "所有系部");
Course* course3 = new Course("计算机", 64, "第二学期", 4, "计算机科学", "计算机系");
Course* course4 = new Course("物理", 64, "第二学期", 4, "物理", "所有系部");
system.addCourse(course1);
system.addCourse(course2);
system.addCourse(course3);
system.addCourse(course4);
// 添加学生信息
Student* student1 = new Student("10001", "张三", "数学");
Student* student2 = new Student("10002", "李四", "计算机科学");
Student* student3 = new Student("10003", "王五", "物理");
Student* student4 = new Student("10004", "赵六", "化学");
system.addStudent(student1);
system.addStudent(student2);
system.addStudent(student3);
system.addStudent(student4);
// 查询课程信息
system.printCourses();
// 查询学生信息
system.printStudents();
// 学生选课
system.enroll("10001", "数学");
system.enroll("10001", "英语");
system.enroll("10001", "物理");
system.enroll("10001", "计算机");
system.enroll("10001", "化学");
system.enroll("10002", "物理");
system.enroll("10002", "化学");
system.enroll("10002", "计算机");
// 查询选课信息
system.printEnrollments();
return 0;
}
```
这个系统包括了课程和学生类,可以维护课程和学生的信息,并且实现了选课功能,可以记录学生的选课信息,并且进行一些限制,如每人每学期选课不能超过4门,同一学期选修同一门课程的学生人数不能超过100人。还可以查询每个学生选修课程的门数,每门课程选修的学生人数。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)