设计程序,具备以下功能(要求用到继承): a) 学生分本科生(学号、姓名、班级)和研究生(学号、姓名、班级、导师)两种; b) 课程(编号、课程名、学分)分必修和选修两种; c) 创建4个学生信息(2个本科生,2个研究生) d) 创建4门课程信息(2门必修,2门选修) e) 自动选课部分:为每个学生自动选修所有必修课; f) 秘书手动选课部分:为每个同学选修1-2门选修课; g) 打印出每个学生的选课信息
时间: 2023-05-29 16:06:38 浏览: 78
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 课程类
class Course {
protected:
string id; // 编号
string name; // 课程名
int credit; // 学分
public:
Course(string i, string n, int c) {
id = i;
name = n;
credit = c;
}
string getId() {
return id;
}
string getName() {
return name;
}
int getCredit() {
return credit;
}
};
// 必修课程类
class RequiredCourse: public Course {
public:
RequiredCourse(string i, string n, int c): Course(i, n, c) {}
};
// 选修课程类
class ElectiveCourse: public Course {
public:
ElectiveCourse(string i, string n, int c): Course(i, n, c) {}
};
// 学生类
class Student {
protected:
string id; // 学号
string name; // 姓名
string classNo; // 班级
vector<Course*> courses; // 选修的课程
public:
Student(string i, string n, string c): id(i), name(n), classNo(c) {}
string getId() {
return id;
}
string getName() {
return name;
}
string getClassNo() {
return classNo;
}
void addCourse(Course* c) {
courses.push_back(c);
}
void printCourses() {
cout << "选修课程:" << endl;
for (int i = 0; i < courses.size(); i++) {
cout << courses[i]->getId() << " " << courses[i]->getName() << " " << courses[i]->getCredit() << "学分" << endl;
}
}
};
// 本科生类
class Undergraduate: public Student {
public:
Undergraduate(string i, string n, string c): Student(i, n, c) {}
};
// 研究生类
class Graduate: public Student {
private:
string tutor; // 导师
public:
Graduate(string i, string n, string c, string t): Student(i, n, c), tutor(t) {}
string getTutor() {
return tutor;
}
};
int main() {
RequiredCourse c1("001", "高等数学", 4);
RequiredCourse c2("002", "线性代数", 3);
ElectiveCourse c3("003", "程序设计基础", 3);
ElectiveCourse c4("004", "计算机组成原理", 4);
Undergraduate s1("101", "张三", "计算机科学与技术1班");
Undergraduate s2("102", "李四", "计算机科学与技术2班");
Graduate s3("201", "王五", "软件工程1班", "赵六");
Graduate s4("202", "赵六", "软件工程2班", "孙七");
// 自动选修必修课程
s1.addCourse(&c1);
s1.addCourse(&c2);
s2.addCourse(&c1);
s2.addCourse(&c2);
s3.addCourse(&c1);
s3.addCourse(&c2);
s4.addCourse(&c1);
s4.addCourse(&c2);
// 手动选修选修课程
s1.addCourse(&c3);
s1.addCourse(&c4);
s2.addCourse(&c3);
s3.addCourse(&c4);
s1.printCourses();
s2.printCourses();
s3.printCourses();
s4.printCourses();
return 0;
}