前面对C++ 面向对象的基本了解和认识,下面来运用前面的基础知识,来实现一个简单的雇员工资管理系统,雇员分为2中,普通员工和管理者,两者工资和工作年限挂钩。具体参见下图:

具体实现参见下面的代码:
/*File : salarySystem.h*Auth : sjin*Date : 2014-04-27*Mail : 413977243@qq.com*/#ifndef __SALARYSYSTEM_H
#define __SALARYSYSTEM_H#include <string>
#include <iostream>#define MAX_COUNT 1000using namespace std;//员工类
class Emplyee{
public://构造函数//根据员工的名字和入职时间构造员工对象Emplyee(string strName , int nYears) : m_strName(strName),m_nYears(nYears){};//获得得员工的工资。virtual int GetSalary() const {return 0;};//提供一个公共接口,使外界得到员工的名字string GetName() const { return m_strName;};protected:int m_nYears; //入职时间string m_strName; //姓名
};/*经理类*因为经理是员工中的一种,从员工类派生*/
class Manager : public Emplyee {
public:/*使用基类的高走函数,完成对属性的初始化工作*/Manager(string strName,int nYears):Emplyee(strName,nYears) {};/* 对基类提供的纯虚函数进行自定义*/virtual int GetSalary() const { return 5000*m_nYears + 10000;};
};class Worker: public Emplyee {
public:/*使用基类的构造函数,完成对属性的初始化工作*/Worker(string strName,int nYears):Emplyee(strName,nYears) {};/* 对基类提供的纯虚函数进行自定义*/virtual int GetSalary() const { return 200*m_nYears + 2000;};
};class SalaryStstem {
public:/*构造函数和析构函数*/SalaryStstem(void);~SalaryStstem(void);
public:/*输入员工信息*/void InputEmplyee(void);/*现实员工信息*/void DisplaySalary(void);/*计算平均工资*/double GetAverSalary(void);private:/*当前员工总数*/int m_nCount;/*用于保存所有员工对象*/Emplyee *m_arrEmplyee[MAX_COUNT];
};
#endif
/*File : salarySystem.cpp*Auth : sjin*Date : 2014-04-27*Mail : 413977243@qq.com*/#include "salarySystem.h"/*构造函数初始化*/
SalaryStstem::SalaryStstem(void)
{m_nCount = 0;// 初始化员工总数为0
}/*析构函数 清理资源,释放内存*/
SalaryStstem::~SalaryStstem(void)
{int i = 0;for(i = 0; i < m_nCount; i++){Emplyee *pEmplyee = m_arrEmplyee[i];delete pEmplyee;m_arrEmplyee[i] = NULL;}
}void help()
{//提示信息cout << "*************************************************" << endl;cout << "* 请输入员工信息                                *\n" <<"* 格式: 员工姓名 入职时间 是否为经理级别       *\n" <<"* 例如: sjin 4 0                               *\n" <<"* 输入end 表示输入结束                          *\n" << "* 输入help 显示提示信息                         *" << endl;cout << "*************************************************" << endl;
}/*获取用户输入*/void SalaryStstem::InputEmplyee(void)
{string strName = "";int nYears = 0;bool bManager = false;int nIndex = 0;// 提示信息help();/*开始循环接收用户输入的用户数据*/while(nIndex < MAX_COUNT){//清空输入流cin.clear();//读取用户数据cin >> strName ;//cout << strName << nYears << bManager<<endl;if ("end" == strName){break;}if("help" == strName){help();continue;}cin >> nYears >> bManager;Emplyee *pEmplyee = NULL;if(bManager){pEmplyee = new Manager(strName,nYears);} else {pEmplyee = new Worker(strName,nYears);}m_arrEmplyee[nIndex] = pEmplyee;++nIndex;}//保存员工数量总数m_nCount = nIndex;}/*输出员工工资信息*/
void SalaryStstem::DisplaySalary(void)
{cout << "工资管理系统" << endl;cout << "当前员工总数:" << m_nCount <<"\n平均工资" << GetAverSalary() << endl;cout << "员工具体工资信息如下:" << endl;for ( int i = 0; i < m_nCount; i++){cout << "姓名:" << m_arrEmplyee[i]->GetName() << "\t 工资" <<m_arrEmplyee[i]->GetSalary() << endl;}
}/*输入员工平均工资*/
double SalaryStstem::GetAverSalary()
{int nTotal = 0;for ( int i = 0; i < m_nCount; i++){nTotal += m_arrEmplyee[i]->GetSalary();}return (double)nTotal/(m_nCount);
}
/*File : main.cpp*Auth : sjin*Date : 2014-04-27*Mail : 413977243@qq.com*/#include "salarySystem.h"int main()
{//创建SalaryStstem 对象SalaryStstem nSalarySys;//获得用户输入nSalarySys.InputEmplyee();cout << "*********员工的工资信息表**********" << endl;//显示具体的工资信息nSalarySys.DisplaySalary();return 0;
}

通过这个简单的例子,可以将前面的知识进行有效的实践。

走进C++程序世界---------雇员工资管理系统相关推荐

  1. 走进C++程序世界-----函数相关(全局变量)

    全局变量 在函数外面定义的变量的作用域为全局,在程序的任何函数中都可用.与全局变量同名的局部变量不会修改全局变量的值,但会隐藏它.如果函数中有一个与全局变量同 名的局部变量时,则在函数中使用该名称时, ...

  2. 走进C++程序世界-----指针(动态申请空间和释放空间)

    使用关键字NEW分配内存 在讲解分配内存之前,首先来理解下内存区划分.内存分配.常量存储区.堆.栈.自由存储区.全局区这些也是初学者容易混淆的地方.我的博客中有一篇文章描述C语言中代码分配情况,点击链 ...

  3. 走进C++程序世界------操作符运算、操作符重载、转换运算符、双目元算、+=,-+运算符,比较运算符及下标运算符

    重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法.简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法 下面关 ...

  4. 职工工资管理系统程序

    编写一个职工工资管理系统程序,该程序输入职工工号和应发工资,由系统对其完成的实发工资实现计算. 其中职工信息包括职工号.姓名.性别.应发工资.税金.实发工资等(职工号不重复). 功能要求及说明: 系统 ...

  5. 【java毕业设计】基于javaEE+原生servlet+tomcat的教师工资管理系统设计与实现(毕业论文+程序源码)——教师工资管理系统

    基于javaEE+原生servlet+tomcat的教师工资管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生servlet+tomcat的教师工资管理系统设计与实 ...

  6. Springboot企业工资管理系统r9a51计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot企业工资管理系统r9a51计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot企业工资管理系统r9a51计算机毕业设计-课程设计-期末作业-毕设程 ...

  7. 假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:

    假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资: (1)经理(Manager)--每月获得一份固定的工资 (2)销售人员(Sal ...

  8. 职工工资程序c语言doc,职工工资管理系统C语言程序课程设计方案.doc

    职工工资管理系统C语言程序课程设计方案 1 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 职工工资管理系统 专 业 机械电子 班 级 1101班 学 号 1 姓 名 王贝贝 指导教师 肖 ...

  9. 带您走进松本行弘的程序世界

    编者按: 在此书上市之前,特别对此书做一下方向说明,<松本行弘的程序世界>适合各层次程序设计人员和编程爱好者,也可以供相关技术人员参考. 本书的目的不是深入讲解哪种特定的技术,也没有全面讨 ...

最新文章

  1. java gson使用_Java 中 Gson的使用
  2. Effective C#: Item 1 Always use properties instead of accessible data members
  3. 系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]
  4. 数据库开发——MySQL——pymysql模块
  5. Android 文件的存储和加载
  6. java之插入排序算法
  7. SpringBoot实战(二):SpringMvc接收xml请求
  8. 【声源定位】基于matlab单声源双麦克风房间冲激响应【含Matlab源码 547期】
  9. 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  10. AR Camera开发记录(一) -- Rajawali的使用
  11. sip软电话免费下载地址(eyebeam)
  12. win10下, ColorPix取色器错位 指针偏移问题 解决方法
  13. 面试秘籍 | 接口测试常见面试题
  14. NLTK09《Python自然语言处理》code08 分析句子结构
  15. Android安装步骤
  16. MySQL索引面试题六连击
  17. Python新手的数据批量处理教程(TXT文件)
  18. VScode 常用必备插件
  19. P3287 [SCOI2014]方伯伯的玉米田
  20. beyond compare下载安装及使用教程

热门文章

  1. vuex mapGetters的使用
  2. 一个程序员是怎么网上购物的?
  3. Oracle开启内存自动管理
  4. 微软推出Surface Pro 7及Laptop 3 硬件常规升级
  5. 查找和平精英的数据包在android哪,和平精英倍镜切换方法设置一览
  6. 情商高不是让人舒服,而是达到目的
  7. Could not find installable ISAM
  8. 【开源】蓝奏云网盘搜索引擎网站系统源码,提供蓝搜网页版的源代码
  9. Java中getter和setter的一些理解
  10. c语言中int转char数组,将一个int转换为一个4字节的char数组(C)