面向对象的程序设计-期中测试
根据题目实现求职中心应用程序。
1.求职者对“求职中心”的职位需求信息非常关心,很想跟踪“求职中心”中职位需求信息的变化。因此,“求职中心”会让求职者把个人信息登记下来。当出现新的职位需求时,“求职中心”会通知全体求职者,而求职者会根据不同的职位需求做出不同的响应:应聘或忽略。
2.编写程序,模拟求职者在“求职中心”进行登记,“求职中心”发布职位需求信息,求职者决定是否应聘的过程。
(1)定义“求职中心”类JobCenter,其成员变量可以保存所有的求职者;
(2)定义求职者类JobSeeker,定义2种不同类型的求职者对象,应届大学毕业生Student类和有工作经验的求职者Experienced类,并在“求职中心”中进行注册登记;
(3)“求职中心”发布新的职位需求信息,并及时通知所有注册过的求职者。
(4)求职者能够自动接收信息,并做出响应:应聘或忽略。
(5)应届大学毕业生做出应聘的响应之前,还必须先进行自我审核:绩点(GPA)不低于2.5分才可以毕业和参加应聘;否则,不能参加应聘。
3.题目要求
(1)创建新的工程项目Findjob;
(2)为每个类编写单独的头文件和源文件,例如JobCenter.h和JobCenter.cpp;
(3)主程序对应的源文件名为Findjob.cpp,里面包含main()函数。
4.编写程序并测试。可以自由扩展程序。
class JobCenter {
public:
void addStudent(Student *pStudent); // 添加学生求职者
void addExperienced(Experienced *pExperienced); // 添加有工作经验求职者
void publishMessage(const string &message); // 发布职位需求信息
void notifyJobSeekers(); // 通知所有的求职者,让他们接收职位需求信息
private:
string message; // 职位需求信息
········ // 其他属性
int numJobSeeker; // 当前求职者的数量
Student *studentsList[100]; // 指针数组,保存Student对象的指针
Experienced *experiencedList[100]; // 指针数组,保存Experienced对象的指针
};
class JobSeeker {
public:
JobSeeker(const string &name, int age);
void answerPhone(const string &message); // 接收职位需求信息
protected:
string name; //名字
int age; //年龄
};
class Student: public JobSeeker { // 应届大学毕业生
public:
Student(const string &name, int age, double GPA, JobCenter *,…); // 在求职中心登记
void answerPhone(const string &message);
};
class Experienced: public JobSeeker { // 有工作经验的求职者
public:
Experienced(const string &name, int age, JobCenter *jobCenter);
void answerPhone(const string &message); // 如果是程序员的工作,就应聘
};
int main() {
JobCenter *jobCenter = new JobCenter(); // 创建“求职中心”
// 创建求职者,并在求职中心登记
Student *zhang = new Student(“小张”, 22, 3.3, jobCenter);
Experienced *wang = new Experienced(“小王”, 30, jobCenter);
Student *li = new Student(“小李”, 21, 2.4, jobCenter);
// 求职中心发布职位需求信息,并通知全体求职者
jobCenter->publishMessage(“腾辉公司需要10个C++程序员。”);
jobCenter-> notifyJobSeekers();
cout << endl;
jobCenter->publishMessage(“海景公司需要8个动画设计师。”);
jobCenter-> notifyJobSeekers();
cout << endl;
jobCenter->publishMessage(“仁海公司需要9个电工。”);
jobCenter-> notifyJobSeekers();
cout << endl;
delete li;
...... // 其他代码,完成收尾工作
}
9.程序执行完毕后,命令行窗口显示的结果:
求职中心成立了
发布招聘信息:腾辉公司需要10个C++程序员。
通知所有求职者...
我叫小张,我是一名毕业生,我收到了招聘信息:腾辉公司需要10个C++程序员。可以应聘。
我叫小王,我有工作经验,待遇要好。我收到了招聘信息:腾辉公司需要10个C++程序员。可以应聘。
我叫小李,我是一名毕业生,我收到了招聘信息:腾辉公司需要10个C++程序员。无法毕业,不能应聘。
发布招聘信息:海景公司需要8个动画设计师。
通知所有求职者...
我叫小张,我是一名毕业生,我收到了招聘信息:海景公司需要8个动画设计师。可以应聘。
我叫小王,我有工作经验,待遇要好。我收到了招聘信息:海景公司需要8个动画设计师。工作不合适,不应聘。
我叫小李,我是一名毕业生,我收到了招聘信息:海景公司需要8个动画设计师。无法毕业,不能应聘。
发布招聘信息:仁海公司需要9个电工。
通知所有求职者...
我叫小张,我是一名毕业生,我收到了招聘信息:仁海公司需要9个电工。可以应聘。
我叫小王,我有工作经验,待遇要好。我收到了招聘信息:仁海公司需要9个电工。工作不合适,不应聘。
我叫小李,我是一名毕业生,我收到了招聘信息:仁海公司需要9个电工。无法毕业,不能应聘。
求职中心关闭了
提示:采用下面的方法判断一个字符串中是否含有指定的子串。
if (str1.find(str2) != string::npos) {
cout << "found!" << endl;
}