一 设计题目一
使用继承的方法,编写最多能输入10个职工的信息表,再根据这个表产生一个职工信息简表,并利用多态性实现信息的输出。
1 基本设计要求
设计要求实现如下功能:
1)建立职工信息数据,包括职工编号、姓名、性别和年龄。
2)根据职工信息表,建立只含有姓名和年龄的职工信息简表。
3)使用继承的方法构造2个类,使用相应的对象数组放置10个职工信息。
4)编写同名display()成员函数,用来输出数组的内容。
5)另外编制一个函数printer(),用来根据实际对象输出它们的内容。
2 进一步的要求
设计菜单,简单界面为:
1.增加职工记录
2.生成信息简表
3.显示原始记录
4.显示简表记录
5.结束程序运行
选择1-5:
3 涉及到的主要知识点:
(1)函数的定义;(2)类的定义;(3)类的继承;(4)对象数组(向量数组)等。
二、内容要求
1、设计题目
使用继承的方法,编写最多能输入10个职工的信息表,再根据这个表产生一个职工信息简表,并利用多态性实现信息的输出。
2、设计要求
设计要求实现如下功能:
(1).建立职工信息数据,包括职工编号、姓名,性别和年龄。
(2)据职工信息表,建立只含姓名和年龄的职工信息简表。
(3)使用继承的方法构造2个类,使用相应的对象数组放置10个职工信息。
(4)编写同名display( )成员函数,用来输出数组的内容。
(5)编写函数printer( ),用来根据实际对象输出它们的内容。
三、设计思想
1、类的结构
这里把简表的内容作为基类worker,由它派生详表类workers。这样,简表可以由赋值兼容规则得到。例如workers的一个对象wks为:
编 号 姓 名 性 别 年 龄
1001 张三 男 25
则worker的对象wk可以通过以下赋值兼容规则得到:
wk=wks;
这时wk的信息为:
姓名 年龄
张三 25
2、多态性
将worker的display()成员函数设计为虚函数,printer()函数使用基类worker对象的引用作为参数,即可实现多态性。
void printer(worker&s)
{
s.display();
}
3、设计主函数
要求编写最多输入10个职工的信息表,这里的意思是可以少于10个职工。使用ch存放读入的字符,当输入0时退出输入,同时将输入个数作为输出语句的循环次数。例如使用整型变量number存放输入个数,则可使用如下方法实现:
if(0==w_num)
{
number=i;
break;
}
使用const定义一个常量SIZE=10,这样可以增加程序的灵活性。
四、程序代码
#include #include using namespace std; const int SIZE=10; //职工简表类 class Worker{ private: int age; public: char name[100]; void setname(char n[100]); char getname(); void setage(int a); int getage(); virtual void display(); }; class Workers:public Worker{ private: int num; char sex[6]; public: void setnum(int n); int getnum(); void setsex(char s[SIZE]); char getsex(); void display(); }; void printer(Worker&); void Worker::setname(char n[100]) {strcpy(name,n);} char Worker::getname() { cout< } void Worker::setage(int a) {age=a;} int Worker::getage() {return age;} void Worker::display(){ cout<<"\"< void Workers::setnum(int n) {num=n;} int Workers::getnum() {return num;} void Workers::setsex(char s[SIZE]) {strcpy(sex,s);} char Workers::getsex() {cout< } void Workers::display(){ cout< //显示职工信息处理函数 void printer(Worker&s) {s.display();} //主函数 void main(){ Workers wks[SIZE]; Worker wk[SIZE]; int number; int w_num; char ch[10]; int w_age; cout< cin>>w_num; if(0==w_num){ number=i; break; } wks[i].setnum(w_num); cout<<"姓名:"; cin>>ch; wks[i].setname(ch); cout<<"性别:"; cin>>ch; wks[i].setsex(ch); cout<<"年龄:"; cin>>w_age; wks[i].setage(w_age); cout< cout< cout<<"\职工信息详表"< "\年 龄"<<"\性 别"< cout< } int main() { 计算职工人数 职工信息记录\\n"; //破碎之圆 按1后, 增加职工记录\\n"; 按2后, 显示职工人数\\n"; 按3后, 显示所有职工简表记录\\n"; 按4后, 显示所有职工原始记录\\n"; 按5后, 显示特定编号的职工\\n"; 按6后, 结束程序(数据无法保存)"< 职工人数为\:"< 增加职工信息 显示职工简表 显示所有职工 输入要显示职工的编号\\n"; 请输入1-6的数字!"< return 0; } 运行结果:下载本文