C++第三次上机.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C第三次上机

《面向对象程序设计》 上机报告 题目:继承与派生类上机实践指导 班级: 学号: 姓名:吕琳涛 上机时间:12月13日上午一节二节 题目要求 某小型公司的人员管理信息系统。 三类人员:经理(manager)、技术人员(technician)、销售人员(salesman);后期又增加一类人员:销售经理(sales_manager)。 要求存储这些人员的姓名、编号、当月工资、计算月薪总额并显示全部信息。 (1)人员编号:基数为1000,每增加一名人员时,人员编号加1; (2)月薪计算:经理=固定月薪8000元;技术人员=100元/小时; 销售人员=当月个人销售额*4%;销售经理=固定月薪5000+所辖部门当月销售额*5%。 二、题目分析 这种数据结构与过程分离有很多问题,例如增加一类人员---销售经理,则三个C函数都必须重新编写。 继承与派生类可以很好地解决两个或多个类之间的关系,很 好地减少了对垒的建立,可以节省很多的时间与编写量,从而 达到很好地效果。 源代码 #include Employee.h int main() { CManager m1; CTechnician t1; CSalesmanager sm1; CSalesman s1; m1.Promote(3); m1.Pay(); m1.DisplayStatus(); t1.Promote(2); t1.Pay(); t1.DisplayStatus(); sm1.Promote(2); sm1.Pay(); sm1.DisplayStatus(); s1.Pay(); s1.DisplayStatus(); return 0; } class CEmployee { protected: char *Name; int m_nIndividualEmpNo; int m_nGrade; float m_fAccumPay; static int m_nEmployeeNo; public: CEmployee(); ~CEmployee(); void Pay(); void Promote(int); void DisplayStatus(); }; class CTechnician : public CEmployee { protected: float m_fHourlyRate; int m_nWorkHours; public: CTechnician(); void Pay(); void DisplayStatus(); }; class CSalesman : virtual public CEmployee { protected: float m_fCommRate; float m_nSales; public: CSalesman(); void Pay(); void DisplayStatus(); }; class CManager : virtual public CEmployee { protected: float m_fMonthlyPay; public: CManager(); void Pay(); void DisplayStatus(); }; class CSalesmanager : public CManager , public CSalesman { public: CSalesmanager(); void Pay(); void DisplayStatus(); }; #include iostream.h #include string.h #include Employee.h int CEmployee::m_nEmployeeNo=1000; //人员编号基数为1000 CEmployee::CEmployee() //构造函数 { char Namestr[50]; //输入人员姓名时首先临时存放在Namestr中 cout请输入下一个雇员的姓名:; cinNamestr; Name=new char[strlen(Namestr)+1]; //动态申请用于存放姓名的内存空间 strcpy(Name,Namestr); //将临时存放的姓名复制到Name m_nIndividualEmpNo=m_nEmployeeNo++; //新输入的人员,其编号为目前最大编号加1 m_nGrade=1; //级别初值为1 m_fAccumPay=0; //月薪总额初值为0 }

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档