欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    多态练习题.doc

    • 资源ID:58084585       资源大小:31KB        全文页数:20页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    多态练习题.doc

    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类对象(4) 将CZS、GZS、DXS类对象的指针赋给指针赋给XS类的指针变量。(5) 分别用XS类的指针和引用访问dispXM()、dispXB()和dispNL()函数。(6) 观察程序结果。#include <iostream>#include <string.h>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 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()cout<<"name:"<<xm<<endl;void CZS:dispXB()if(xb=1)cout<<"Man"<<endl;if(xb=0)cout<<"Woman"<<endl;void CZS:dispNL()cout<<"age:"<<nl<<endl;class GZS:public XSpublic:GZS(char * m="张三",int b=1,int n=17);void dispXM();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()cout<<"name:"<<xm<<endl;void GZS:dispXB()if(xb=1)cout<<"Man"<<endl;if(xb=0)cout<<"Woman"<<endl;void GZS:dispNL()cout<<"age:"<<nl<<endl;class DXS:public XSpublic:DXS(char * m="张三",int b=1,int n=20);void dispXM();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()cout<<"name:"<<xm<<endl;void DXS:dispXB()if(xb=1)cout<<"Man"<<endl;if(xb=0)cout<<"Woman"<<endl;void DXS:dispNL()cout<<"age:"<<nl<<endl;void displayP(XS *p) p->dispXM(); p->dispXB(); p->dispNL();void displayR( XS &p) p.dispXM(); 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);cout<<"n-n"XS &r1=czs;/定义抽象基类的引用变量r1为czs的别名displayR(r1);XS &r2=gzs;/定义抽象基类的引用变量r2为czs的别名displayR(r2);XS &r3=dxs;/定义抽象基类的引用变量r3为czs的别名displayR(r3);cout<<"n-n"2、某小型公司主要有3类人员:经理、兼职技术人员、兼职销售员。这些人员分别具有以下属性。 经理:姓名、编号、固定工资、当月薪水、计算月薪、显示信息 兼职技术人员:姓名、编号、工作小时、每小时工资额、当月薪水、计算月薪、显示信息; 兼职销售员:姓名、编号、销售额、销售额提成、当月薪水、计算月薪、显示信息要求: 人员编号基数为1000,每输入一个人员信息编号顺序加1 月薪计算办法是经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职推销员按当月销售额的4%提成。根绝题目要求,设计一个基类employee,然后派生出technician(兼职技术人员)类、manager(经理)类和salesman(兼职销售员)类。 部分成员函数设置为虚函数 将“<<”和“>>”运算符#include <iostream> #include <iomanip> #include <string.h> #include <fstream> using namespace std; const int Maxr=100; class Employee /职工类 int tag;/删除标记 int no;/职工编号 char name20; char zw20;/职工姓名 int salary;/职工工资 public: Employee() char *getname() 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; 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); while (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()=empid && 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中 fstream 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 < <"职工维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>" cin>>choice; switch (choice) case 1: cout < <setw(50) < <" n" cout < <setw(50) < <" 请选择您所需的操作 n" cout < <setw(50) < <" 经理: 1,并按回车键 n" cout < <setw(50) < <" 业务经理:2,并按回车键 n" cout < <setw(50) < <" 普通职工:3,并按回车键 n" cout < <setw(50) < <" n" cin>>m; while(m!=0) switch(m) case 1: cout < <"输入经理编号:" cin>>empid; cout < <"输入奖金: " cin>>empsa; cout < <"输入经理姓名:" cin>>rname; addemp(empid,8000+empsa,rname,"经理"); break; case 2: cout < <"输入业务经理编号:" cin>>empid; cout < <"输入月提成: " cin>>empsa; cout < <"输入业务经理姓名:" cin>>rname; addemp(empid,4000+empsa,rname,"业务经理"); break; case 3: cout < <"输入职工编号:" cin>>empid; cout < <"输入工资: " cin>>empsa; cout < <"输入职工姓名:" cin>>rname; addemp(empid,empsa,rname,"普通职工"); break; break; break; case 2: cout < <"输入职工编号:" cin>>empid; r=query(empid); if (r=NULL) cout < <"该职工不存在" < <endl; break; cout < <"输入新的工资:" < <endl; cin>>empsa; r->getsalary(empsa); cout < <"请输入新的职务" < <endl; cin>>q; r->setzw(q); addemp(empid,empsa,rname,q); break; case 3: cout < <"输入职工编号:" cin>>empid; r=query(empid); if (r=NULL) cout < <"该读者不存在" < <endl; break; r->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) < <" n" cin>>b; while(b!=0) switch(b) case 1: cout < <"输入职工编号:" cin>>empid; r=query(empid); if (r=NULL) cout < <"该职工不存在" < <endl; break; cout < <"" < <endl; cout < <"" < <setw(10) < <"编号" < <"" < <setw(10) < <"姓名" < <"" < <setw(10) < <"工资" < <"" < <setw(10) < <"职务" < <"" < <endl; cout < <"" < <endl; r->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; while(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) < <" n" cin>>choice; switch(choice) case 1: while(1) cout < <setw(20); EmpDB.empdata(); break; break; 3、堆栈的特点是:先进先出 定义了一个堆栈类stack,包括初始化,压栈(就是将元素放在栈顶)、弹栈(取栈顶的一个元素),释放堆栈等操作 要求运用模版实现,堆栈中可以根据需求放入double、int、char*等数据对象。4、上课教材的课后习题第 20 页

    注意事项

    本文(多态练习题.doc)为本站会员(美****子)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开