员工信息管理系统(c++继承)
来源:互联网 发布:淘宝丝袜买家秀 编辑:程序博客网 时间:2024/06/06 10:38
- 简单介绍
- 代码
- educationh
- educationcpp
- maincpp
简单介绍
- 在员工(Staff)类中有一个属性是教育背景,它又包含了毕业院校和员工学历两个属性,因此把教育背景设计成一个CEducation类,而由他创建的对象作为一个子对象组合出Staff类。
- 从企业员工中划分出来的销售人员、行政人员和经理都具有企业员工的一般特征,因此这三个类可以继承Staff类,而销售经理同时具有销售人员和经理这两个类的共同特征,因此该类可以由这两个类共同派生出来。由此产生一个局部的多继承关系。在这个局部多继承关系中,Staff类是公共基类,销售经理类就是公共派生类。为了避免二义性的发生,可以把Staff类声明为虚基类。为了避免繁琐的初始化,所有的虚基类的构造函数都不带参数,他们的数据成员都通过键盘录入的方式进行有效的赋值。
代码
education.h
#ifndef __EDUCATION__H__#define __EDUCATION__H__#include <iostream>#include <string.h>using namespace std;const int LEN = 50;class CEducation{public: CEducation(); CEducation(char cSchool[], char cDegree); ~CEducation(); void GetEdu(void); void PutEdu(void) const;private: char m_cSchool[LEN]; char m_cDegree;};class Staff{public: Staff(); ~Staff(); void CalculateSal(); void OutPut(); void InPut();protected: CEducation Edu; int m_iStaffNum; char m_cName; float m_fRateOfAttend; float m_fBasicSal; float m_fPrize; static int s_iCount;};class CAdminStaff: public Staff{public: CAdminStaff(); ~CAdminStaff(); void CalculateSal();};class CManager: virtual public Staff{public: CManager(); ~CManager(); void SetMData(); void CalculateSal();protected: float m_fDeductTRate; float m_fTAmount;};class CSaleMan: virtual public Staff{public: CSaleMan(); ~CSaleMan(); void SetSData(); void CalculateSal();protected: float m_fDeductRate; float m_fPersonAmount;};class CSaleManager: public CSaleMan, public CManager{public: CSaleManager(); ~CSaleManager(); void CalculateSal();};#endif
education.cpp
#include "education.h"int Staff::s_iCount = 1000;CEducation:: CEducation(){};CEducation:: CEducation(char cSchool[], char cDegree){ strcpy(m_cSchool, cSchool); m_cDegree = cDegree;}CEducation:: ~CEducation(){};void CEducation:: GetEdu(void){ cout << "School:"<< endl; cin >> m_cSchool; cout << "Degree:"<< endl; cin >> m_cDegree; m_cDegree = toupper(m_cDegree);}void CEducation:: PutEdu(void) const{ cout << "School: " << m_cSchool << endl; cout << "Degree: "; switch (m_cDegree) { case 'c': cout << "college" << endl; break; case 'u': cout << "undergraduate college" << endl; break; case 'M': cout << "master" << endl; break; case 'D': cout << "doctor" << endl; break; default: cout << "void" << endl; break; }}Staff:: Staff(){};Staff:: ~Staff(){};void Staff:: CalculateSal(){};void Staff:: InPut(){ m_iStaffNum = ++s_iCount; cout << "No: "<< m_iStaffNum << endl; cout << "name :"; cin >> m_cName; Edu.GetEdu(); cout << " Basic salary:"; cin >> m_fBasicSal; cout << " Prize: "; cin >> m_fPrize; cout << "Rate Of Attend: "; cin >> m_fRateOfAttend; if (m_fRateOfAttend > 1.0) { m_fRateOfAttend = 1.0; } else if (m_fRateOfAttend < 0) { m_fRateOfAttend = 0; }}void Staff:: OutPut(){ cout << "No: " << m_iStaffNum << endl; cout << "name: " << m_cName << endl; Edu.PutEdu(); cout << "basic saraly: " << m_fBasicSal << endl; cout << "Prize: " << m_fPrize << endl; cout << "Rate of Attend" << m_fRateOfAttend * 100 << "%" << endl;}CAdminStaff:: CAdminStaff(){};CAdminStaff:: ~CAdminStaff(){};void CAdminStaff::CalculateSal(){ cout << "the fact salary:"; cout << m_fBasicSal + m_fRateOfAttend * m_fPrize << endl;}CManager:: CManager(){};CManager:: ~CManager(){};void CManager:: SetMData(){ cout << "the company sales"; cin >> m_fTAmount; cout << "the rates of person getted"; cin >> m_fDeductTRate;}void CManager:: CalculateSal(){ cout << "the fact salary:"; cout << m_fBasicSal + m_fDeductTRate * m_fTAmount << endl;}CSaleMan :: CSaleMan(){};CSaleMan :: ~CSaleMan(){};void CSaleMan:: SetSData(){ cout << "the person sales"; cin >> m_fPersonAmount; cout << "the rates of person getted"; cin >> m_fDeductRate;}void CSaleMan:: CalculateSal(){ cout << "the fact salary:"; cout << m_fBasicSal + m_fPersonAmount * m_fDeductRate << endl;}CSaleManager:: CSaleManager(){};CSaleManager:: ~CSaleManager(){};void CSaleManager:: CalculateSal(){ cout << "the fact salary:"; cout << m_fBasicSal + m_fPersonAmount * m_fDeductRate + m_fTAmount * m_fDeductTRate << endl;}
main.cpp
#include "education.h"int main(int argc, char const *argv[]){ char flag = 'Y'; while (toupper (flag) == 'Y') { cout << "1.maneger 2.saleman 3.saleanager 4.administor" << endl; int n; cin >> n; switch(n) { case 1: { CManager staff; staff.InPut(); staff.SetMData(); staff.OutPut(); staff.CalculateSal(); break; } case 2: { CSaleMan staff; staff.InPut(); staff.SetSData(); staff.OutPut(); staff.CalculateSal(); break; } case 3: { CSaleManager staff; staff.InPut(); staff.SetMData(); staff.SetSData(); staff.OutPut(); staff.CalculateSal(); break; } case 4: { CAdminStaff staff; staff.InPut(); staff.OutPut(); staff.CalculateSal(); break; } default: { cout << "error" << endl; break; } } cout << "continue?(y/n)" << endl; cin >> flag; } return 0;}
阅读全文
0 0
- 员工信息管理系统(c++继承)
- 员工信息管理系统--C语言
- 员工信息管理系统总结(链表)
- (学生信息管理系统)进销存管理系统--员工管理篇
- MFC制作员工信息管理系统
- 学生信息管理系统(c++)
- 基于二叉排序树的员工信息管理系统
- Linux多线程编程之员工信息管理系统
- 学生信息管理系统(c语言)
- 学生信息管理系统(C语言)
- 学生信息管理系统(C语言)
- 学生信息管理系统(C实现)
- C语言学生信息管理系统(单链表)
- 课程设计--图书信息管理系统(C语言)
- 单链表构建学生信息管理系统(C++)
- c信息管理系统
- C#-学生信息管理系统
- 学生信息管理系统(C++)
- Vue.js组件——组件通信小demo
- 10个提高CSS技巧的小知识
- 软件工程(C编码实践篇)学习总结
- KEIL中启动文件详解(汇编语言)
- Weblogic12c (12.2.1.3)集群环境搭建 两台物理机
- 员工信息管理系统(c++继承)
- 【UML 建模】在线UML建模工具 ProcessOn 使用详解
- 51单片机学习随笔(3)
- StreamToString
- 安卓okhttp的常见用法
- 算法导论16.2-2
- 07_Java基础语法_第7天(练习)
- 【排序】1.3快速排序
- 封装OkHttp工具类