程序实例——一个小型公司的人员信息管理系统
以一个小型公司的人员信息管理为例,说明类的派生过程及虚函数和虚基类的应用。
问题的提出
某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。
人员编号基数为1000,每输入一个人员信息编号顺序加1。
程序要有对所有人员提升级别的功能。本例中为简单起见,所有人员的初始级别均为1级,然后进行升级,经理升为4级,兼职技术人员和销售经理升为3级,推销员仍为1级。
月薪计算办法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;兼职推销员的月薪按该推销员当月销售额的4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的5‰。
类设计
根据上述需求,设计一个基类employee,然后派生出technician(兼职技术人员)类、manager(经理)类和salesman(兼职推销员)类。由于销售经理既是经理又是销售人员,兼具两类人员的特点,因此同时继承manager和salesman两个类。
在基类中,除了定义构造函数和析构函数以外,还应统一定义对各类人员信息应有的操作,这样可以规范类族中各派生类的基本行为。但是各类人员的月薪计算方法不同,不能在基类employee中统一确定计算方法。各类人员信息的显示内容也不同,同样不能在基类employee中统一确定显示方法。因此,在本例中可以使基类中实现上述行为的函数体为空,然后在派生类中再根据同名覆盖原则定义各自的同名函数实现具体功能。类图设计如图所示。
由于本例的问题比较简单,因此对于类图中各类属性的详细说明请参看源程序注释。
由于salesmanager类的两个基类又有公共基类employee,为了避免二义性,这里将employee设计为虚基类。
本站资料来源于网络或网友提供,如有不妥之处,请来信说明,我们将及时处理。Email: ckzlnet#126.com
(#改为@)