Design a class for modeling course and write a test program to t...
需积分: 0 14 浏览量
更新于2014-04-07
收藏 2KB RAR 举报
在C++编程中,设计一个课程(Course)类是面向对象编程的基本练习,它涉及到类的定义、属性和方法的设计,以及如何通过测试程序验证类的功能。以下是对这个任务的详细解析:
我们需要理解“课程”(Course)类可能包含的属性。这些属性可能包括:
1. 课程ID(courseID):标识课程的独特字符串。
2. 课程名称(courseName):课程的全称。
3. 教师姓名(instructorName):负责教授该课程的教师的名字。
4. 学分(creditHours):课程所对应的学分。
5. 学生列表(students):一个存储学生ID的集合,表示选修该课程的学生。
接下来,我们定义课程类的方法,包括但不限于:
1. 构造函数:用于初始化课程的基本信息。
2. 获取和设置属性的访问器和修改器(getter和setter):提供对属性的读取和修改权限。
3. 添加学生:将学生ID添加到学生列表中。
4. 移除学生:从学生列表中移除学生ID。
5. 打印课程信息:输出课程的所有信息。
示例代码如下:
```cpp
#include <iostream>
#include <string>
#include <vector>
class Course {
private:
std::string courseID;
std::string courseName;
std::string instructorName;
int creditHours;
std::vector<std::string> students;
public:
// 构造函数
Course(const std::string& id, const std::string& name, const std::string& instructor, int credit)
: courseID(id), courseName(name), instructorName(instructor), creditHours(credit) {}
// getter 和 setter
std::string getCourseID() const { return courseID; }
void setCourseID(const std::string& id) { courseID = id; }
std::string getCourseName() const { return courseName; }
void setCourseName(const std::string& name) { courseName = name; }
std::string getInstructorName() const { return instructorName; }
void setInstructorName(const std::string& instructor) { instructorName = instructor; }
int getCreditHours() const { return creditHours; }
void setCreditHours(int credit) { creditHours = credit; }
// 添加和移除学生
void addStudent(const std::string& studentID) { students.push_back(studentID); }
void removeStudent(const std::string& studentID) {
students.erase(std::remove(students.begin(), students.end(), studentID), students.end());
}
// 打印课程信息
void printCourseInfo() const {
std::cout << "课程ID: " << courseID << "\n"
<< "课程名称: " << courseName << "\n"
<< "教师姓名: " << instructorName << "\n"
<< "学分: " << creditHours << "\n"
<< "选修学生: ";
for (const auto& student : students) {
std::cout << student << " ";
}
std::cout << "\n";
}
};
// 测试程序
int main() {
Course cs101("CS101", "计算机科学入门", "李老师", 3);
cs101.addStudent("S001");
cs101.addStudent("S002");
cs101.printCourseInfo();
cs101.removeStudent("S001");
cs101.printCourseInfo();
return 0;
}
```
这个测试程序首先创建了一个名为"CS101"的课程实例,并添加了两个学生"S001"和"S002"。然后,它打印了课程的信息,包括学生列表。接着,从课程中移除"S001",再次打印课程信息以验证学生已成功移除。
为了更全面地测试课程类,你可以考虑添加更多测试用例,如检查添加和移除学生的边界情况,尝试使用无效的ID,或者测试修改属性值后的正确性。此外,你还可以扩展课程类,例如添加查找特定学生是否选修该课程的方法,或统计选修课程的学生人数等。
鱼鱼峰峰
- 粉丝: 2
- 资源: 6
最新资源
- 人、垃圾、非垃圾检测18-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 金智维RPA server安装包
- 二维码图形检测6-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- Matlab绘制绚丽烟花动画迎新年
- 厚壁圆筒弹性应力计算,过盈干涉量计算
- 网络实践11111111111111
- GO编写图片上传代码.txt
- LabVIEW采集摄像头数据,实现图像数据存储和浏览
- 几种不同方式生成音乐的 Python 源码示例.txt
- python红包打开后出现烟花代码.txt