Design a class for modeling course and write a test program to t...

preview
共4个文件
cpp:3个
h:1个
需积分: 0 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,或者测试修改属性值后的正确性。此外,你还可以扩展课程类,例如添加查找特定学生是否选修该课程的方法,或统计选修课程的学生人数等。