多态练习题.doc

上传人:美****子 文档编号:58084585 上传时间:2022-11-06 格式:DOC 页数:20 大小:31KB
返回 下载 相关 举报
多态练习题.doc_第1页
第1页 / 共20页
多态练习题.doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《多态练习题.doc》由会员分享,可在线阅读,更多相关《多态练习题.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1、生成表示学生的类XS,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄,并将他们全部定义为纯虚函数;生成CZS类表示初中生,包含数据成员xm、xb和nl表示学生的姓名、性别和年龄,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄;再生成类GZS表示高中生和类DXS表示大学生,同样包含相同含义的数据成员xm、xb和nl,也包括成员函数dispXM()、dispXB()和dispNL()。要求:(1) 设计和实现基本类XS(2) 设计和实现派生类CZS,GZS和DXS(3) 分别生成CZS、GZS、DXS类

2、对象(4) 将CZS、GZS、DXS类对象的指针赋给指针赋给XS类的指针变量。(5) 分别用XS类的指针和引用访问dispXM()、dispXB()和dispNL()函数。(6) 观察程序结果。#include #include using namespace std;class XSpublic:virtual void dispXM()=0;virtual void dispXB()=0;virtual void dispNL()=0;class CZS:public XSpublic:CZS(char * m=张三,int b=1,int n=14);void dispXM();void

3、 dispXB();void dispNL();protected:char xm9;int xb,nl;CZS:CZS(char *m,int b,int n)strcpy(xm,m);xb=b,nl=n;void CZS:dispXM()coutname:xmendl;void CZS:dispXB()if(xb=1)coutManendl;if(xb=0)coutWomanendl;void CZS:dispNL()coutage:nlendl;class GZS:public XSpublic:GZS(char * m=张三,int b=1,int n=17);void dispXM(

4、);void dispXB();void dispNL();protected:char xm9;int xb,nl;GZS:GZS(char *m,int b,int n)strcpy(xm,m);xb=b,nl=n;void GZS:dispXM()coutname:xmendl;void GZS:dispXB()if(xb=1)coutManendl;if(xb=0)coutWomanendl;void GZS:dispNL()coutage:nlendl;class DXS:public XSpublic:DXS(char * m=张三,int b=1,int n=20);void d

5、ispXM();void dispXB();void dispNL();protected:char xm9;int xb,nl;DXS:DXS(char *m,int b,int n)strcpy(xm,m);xb=b,nl=n;void DXS:dispXM()coutname:xmendl;void DXS:dispXB()if(xb=1)coutManendl;if(xb=0)coutWomanendl;void DXS:dispNL()coutage:nldispXM(); p-dispXB(); p-dispNL();void displayR( XS &p) p.dispXM()

6、; p.dispXB(); p.dispNL();void main()CZS czs(赵一,1,12);GZS gzs(钱二,0,15);DXS dxs(孙三,1,18);XS *p;/定义抽象基类的指针变量pp=&czs;/将初中生对象czs的地址赋给p displayP(p);p=&gzs;/将高中生对象czs的地址赋给p displayP(p);p=&dxs;/将大学生对象czs的地址赋给p displayP(p);coutn-n;XS &r1=czs;/定义抽象基类的引用变量r1为czs的别名displayR(r1);XS &r2=gzs;/定义抽象基类的引用变量r2为czs的别名d

7、isplayR(r2);XS &r3=dxs;/定义抽象基类的引用变量r3为czs的别名displayR(r3);coutn-n;2、某小型公司主要有3类人员:经理、兼职技术人员、兼职销售员。这些人员分别具有以下属性。 经理:姓名、编号、固定工资、当月薪水、计算月薪、显示信息 兼职技术人员:姓名、编号、工作小时、每小时工资额、当月薪水、计算月薪、显示信息; 兼职销售员:姓名、编号、销售额、销售额提成、当月薪水、计算月薪、显示信息要求: 人员编号基数为1000,每输入一个人员信息编号顺序加1 月薪计算办法是经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职推销员按当月销售额的4%

8、提成。根绝题目要求,设计一个基类employee,然后派生出technician(兼职技术人员)类、manager(经理)类和salesman(兼职销售员)类。 部分成员函数设置为虚函数 将“”运算符#include #include #include #include using namespace std; const int Maxr=100; class Employee /职工类 int tag;/删除标记 int no;/职工编号 char name20; char zw20;/职工姓名 int salary;/职工工资 public: Employee() char *getna

9、me() return name;/获取名字 int gettag() return tag;/获取标记 int getno() return no;/获取编号 int getsalary()return salary; void setzw(char q)/设置名字 strcpy(zw,q); void setname(char na)/设置名字 strcpy(name,na); void getsalary(int sa)salary=sa; void delna()tag=1;/删除 void addemp(int n,int sa,char *na,char *q)/增加 tag=0;

10、 no=n; salary=sa; strcpy(name,na); strcpy(zw,q); void disp()/显示职工信息 cout setw(10) no setw(10) name setw(10) salary setw(10) zw endl; cout endl; ; class Database/职工数据类 int top; Employee readMaxr; public: Database()/将职工信息从employee.txt读取到read中 Employee s; top=-1; fstream file(employee.txt,ios:in); whil

11、e (1) (char *)&s,sizeof(s); if (!file) break; top+; readtop=s; (); void clear()/删除所有 top=-1; int addemp (int n, int sa,char *na,char*q) /增加职工 Employee *p=query(n); if (p=NULL) top+; readtop.addemp(n,sa,na,q); return 1; return 0; Employee *query(int empid) for (int i=0;i =top;i+) if (readi.getno()=em

12、pid & readi.gettag()=0) return &readi; return NULL; Employee *query1(char empna20) for (int i=0;i =top;i+) if (readi.getname()=empna) & readi.gettag()=0) return &readi; return NULL; void disp() /职工信息显示 for (int i=0;i =top;i+) readi.disp(); void empdata(); Database() /将read中的信息读如到employee.txt中 fstrea

13、m file(employee.txt,ios:out); for (int i=0;i =top;i+) if (readi.gettag()=0) (char *)&readi,sizeof(readi); (); ; void Database:empdata()/职工维护 int choice=1; int m=1;int b=1; char rname20; int empid; int empsa;char q20; Employee *r; while (choice!=0) cout ; cinchoice; switch (choice) case 1: cout setw(

14、50) n; cout setw(50) 请选择您所需的操作 n; cout setw(50) 经理: 1,并按回车键 n; cout setw(50) 业务经理:2,并按回车键 n; cout setw(50) 普通职工:3,并按回车键 n; cout setw(50) m; while(m!=0) switch(m) case 1: cout empid; cout empsa; cout rname; addemp(empid,8000+empsa,rname,经理); break; case 2: cout empid; cout empsa; cout rname; addemp(e

15、mpid,4000+empsa,rname,业务经理); break; case 3: cout empid; cout empsa; cout rname; addemp(empid,empsa,rname,普通职工); break; break; break; case 2: cout empid; r=query(empid); if (r=NULL) cout 该职工不存在 endl; break; cout 输入新的工资: empsa; r-getsalary(empsa); cout 请输入新的职务 q; r-setzw(q); addemp(empid,empsa,rname,q

16、); break; case 3: cout empid; r=query(empid); if (r=NULL) cout 该读者不存在 delna(); break; case 4: cout setw(50) n; cout setw(50) 请选择您所需的操作 n; cout setw(50) 按编号查找1,并按回车键 n; cout setw(50) 返回 2,并按回车键 n; cout setw(50) b; while(b!=0) switch(b) case 1: cout empid; r=query(empid); if (r=NULL) cout 该职工不存在 endl;

17、 break; cout endl; cout setw(10) 编号 setw(10) 姓名 setw(10) 工资 setw(10) 职务 endl; cout disp(); break; case 2: break; break; break; case 5: cout endl; cout setw(10) 编号 setw(10) 姓名 setw(10) 工资 setw(10) 职务 endl; cout endl; disp(); break; case 6: clear(); break; void main() int choice=1;Database EmpDB; whil

18、e(choice!=0) cout * endl; cout endl; cout endl; cout setw(20) *欢迎使用职工管理系统* endl; cout endl; cout endl; cout setw(50) n; cout setw(50) 请选择您所需的操作 n; cout setw(50) n; cout setw(50) 操作 1,并按回车键 n; cout setw(50) n; cout setw(50) 返回 0,并按回车键 n; cout setw(50) choice; switch(choice) case 1: while(1) cout setw(20); EmpDB.empdata(); break; break; 3、堆栈的特点是:先进先出 定义了一个堆栈类stack,包括初始化,压栈(就是将元素放在栈顶)、弹栈(取栈顶的一个元素),释放堆栈等操作 要求运用模版实现,堆栈中可以根据需求放入double、int、char*等数据对象。4、上课教材的课后习题第 20 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁