用c++编写公司人员管理系统(课程设计 vs2010)

这学期马上结束了,刚把课设做完,记录下自己的做过的东西.

一、需求

某公司有四类人员:经理、技术人员、销售人员和销售经理;需要存储雇员的编号、姓名、性别、所在部门、级别,并进行工资的计算。四类人员的月薪计算方法如下:经理领取固定月薪;技术人员按小时领取月薪;销售人员按其当月销售额的提成领取工资;销售经理既领取固定月薪也领取销售提成。可以读取.txt文件,在控制台中显示出文件中的员工信息,在控制台中完成对公司人员的添加,删除,查找,修改功能,完成该功能后自动保存到.txt文件中。

二、流程图和类图


三、涉及知识

  • C++继承
  • C++的多态
  • vector智能指针
  • C++基本语法
  • string类型转换为double

四、源代码

话不多说直接上代码
Base类
#pragma once
#include<string>
#include<iostream>
#include<iomanip>
using namespace std;
extern double strDou(string str);
class Base
{public:string ID,name,sex,section,level;
public:virtual double getsalary();virtual void toString();virtual string getinformation();virtual void setID(string ID);virtual void setname(string name);virtual void setsex(string sex);virtual void setsection(string section);virtual void setlevel(string level);virtual void setmonthsalary(string monthsalary);virtual void setsale(string sale);virtual void setworktime(string worktime);Base(string ID,string name,string sex,string section,string level){this->ID=ID;this->name=name;this->sex=sex;this->section=section;this->level=level;}~Base(void){}#include "StdAfx.h"
#include "Base.h"
double strDou(string str) { //string 转换 doublechar *ch = new char[0];double d;for (int i = 0; i != str.length(); i++)ch[i] = str[i];d = atof(ch);return d;
}
double Base::getsalary(){return 0;
}void  Base::toString(){cout<<"这是基类toString!"<<endl;
}
string Base::getinformation(){return "这是基类的getinformation!";
}
void Base::setID(string ID){}
void Base::setname(string name){ }
void Base::setsex(string sex){}
void Base::setsection(string section){}
void Base::setlevel(string level){}
void Base::setmonthsalary(string monthsalary){  }
void Base::setsale(string sale){ }
void Base::setworktime(string worktime){}
};
Employee类
#pragma once
#include "base.h"
class Employee :public Base
{protected:string monthsalary,sale,worktime;
public:Employee(string ID,string name,string sex,string section,string level,string monthsalary,string sale,string worktime):Base(ID,name,sex,section,level){this->monthsalary=monthsalary;this->sale=sale;this->worktime=worktime;}~Employee(void);virtual double getsalary();virtual void toString();virtual string getinformation();virtual void setID(string ID);virtual void setname(string name);virtual void setsex(string sex);virtual void setsection(string section);virtual void setlevel(string level);virtual void setmonthsalary(string monthsalary);virtual void setsale(string sale);virtual void setworktime(string worktime);#include "StdAfx.h"
#include "Employee.h"
Employee::~Employee(void)
{}
double Employee::getsalary(){//得到销售人员的工资if(strDou(monthsalary)==0 && strDou(worktime)==0){return (strDou(sale)*0.7)+3000;}//得到经理的工资if(strDou(sale)==0 && strDou(worktime)){return strDou(monthsalary);}//得到销售经理的工资if(strDou(worktime)==0){return strDou(monthsalary)+(strDou(sale)*0.7);}//得到技术人员的工资if(strDou(worktime)!=0){return strDou(worktime)*200;}
}void  Employee::toString(){cout<cout<<ID<<setw(13)<<name<<setw(8)<<sex<<setw(12)<<section<<setw(13)<<level<<setw(11)<<monthsalary<<setw(11)<<sale<<setw(16)<<worktime<<setw(15)<<getsalary()<<endl;
}
string Employee::getinformation(){return ID+" "+name+"        "+sex+" "+section+" "+level+"   "+monthsalary+" "+sale+"        "+worktime;;
}
void Employee::setID(string ID){ this->ID=ID;}
void Employee::setname(string name){ this->name=name;}
void Employee::setsex(string sex){this->sex=sex;}
void Employee::setsection(string section){this->section=section;}
void Employee::setlevel(string level){this->level=level;}
void Employee::setmonthsalary(string monthsalary){  this->monthsalary=monthsalary;}
void Employee::setsale(string sale){ this->sale=sale;}
void Employee::setworktime(string worktime){this->worktime=worktime;}
};
Manager类
#pragma once
#include "base.h"
class Manager :public Base
{protected:string monthsalary;
public:virtual double getsalary();virtual void toString();virtual string getinformation();virtual void setID(string ID);virtual void setname(string name);virtual void setsex(string sex);virtual void setsection(string section);virtual void setlevel(string level);virtual void setmonthsalary(string monthsalary);virtual void setsale(string sale);virtual void setworktime(string worktime);Manager(string ID,string name,string sex,string section,string level,string monthsalary):Base(ID,name,sex,section,level){this->monthsalary=monthsalary;}~Manager(void);
};
#include "StdAfx.h"
#include "Manager.h"
double Manager::getsalary(){return strDou(monthsalary);
}
Manager::~Manager(void)
{}
void Manager::toString(){cout<<ID<<setw(13)<<name<<setw(8)<<sex<<setw(12)<<section<<setw(13)<<level<<setw(11)<<monthsalary<<setw(43)<<getsalary()<<endl;
}
string Manager::getinformation(){return ID+"  "+name+"        "+sex+" "+section+" "+level+"   "+monthsalary+" "+"null"+"    "+"null";
}
void Manager::setID(string ID){ this->ID=ID;}
void Manager::setname(string name){ this->name=name;}
void Manager::setsex(string sex){this->sex=sex;}
void Manager::setsection(string section){this->section=section;}
void Manager::setlevel(string level){this->level=level;}
void Manager::setmonthsalary(string monthsalary){   this->monthsalary=monthsalary;}
void Manager::setsale(string sale){cout<<"暂不支持更改该属性!"<<endl;}
void Manager::setworktime(string worktime){cout<<"暂不支持更改该属性!"<<endl;}
salesman类
#pragma once
#include "base.h"
class salesman :public Base
{protected:string sale;
public:salesman(string ID,string name,string sex,string section,string level,string sale):Base(ID,name,sex,section,level){this->sale=sale;}virtual void toString();~salesman(void);virtual double getsalary();virtual string getinformation();virtual void setID(string ID);virtual void setname(string name);virtual void setsex(string sex);virtual void setsection(string section);virtual void setlevel(string level);virtual void setmonthsalary(string monthsalary);virtual void setsale(string sale);virtual void setworktime(string worktime);
};
#include "StdAfx.h"
#include "salesman.h"
double salesman::getsalary(){return (strDou(sale)*0.7)+3000;;
}salesman::~salesman(void)
{}
void salesman::toString(){cout<<ID<<setw(13)<<name<<setw(8)<<sex<<setw(16)<<section<<setw(8)<<level<<setw(23)<<sale<<setw(31)<<getsalary()<<endl;
}
string salesman::getinformation(){return ID+" "+name+"        "+sex+" "+section+" "+level+"   "+"null"+"    "+sale+"        "+"null";
}
void salesman::setID(string ID){ this->ID=ID;}
void salesman::setname(string name){ this->name=name;}
void salesman::setsex(string sex){this->sex=sex;}
void salesman::setsection(string section){this->section=section;}
void salesman::setlevel(string level){this->level=level;}
void salesman::setmonthsalary(string monthsalary){cout<<"暂不支持更改该属性!"<<endl;}
void salesman::setsale(string sale){ this->sale=sale;}
void salesman::setworktime(string worktime){cout<<"暂不支持更改该属性!"<<endl;}
SalesManager类
#pragma once
#include "manager.h"
class SalesManager :public Manager
{protected:string sale;
public:SalesManager(string ID,string name,string sex,string section,string level,string monthsalar,string sale):Manager(ID,name,sex,section,level,monthsalar){this->sale=sale;}~SalesManager(void);virtual double getsalary();virtual void toString();virtual string getinformation();virtual void setID(string ID);virtual void setname(string name);virtual void setsex(string sex);virtual void setsection(string section);virtual void setlevel(string level);virtual void setmonthsalary(string monthsalary);virtual void setsale(string sale);virtual void setworktime(string worktime);
};
#include "StdAfx.h"
#include "SalesManager.h"
SalesManager::~SalesManager(void)
{}
double SalesManager::getsalary(){return strDou(monthsalary)+(strDou(sale)*0.7);
}
void SalesManager::toString(){cout<<ID<<setw(13)<<name<<setw(8)<<sex<<setw(16)<<section<<setw(8)<<level<<setw(11)<<monthsalary<<setw(12)<<sale<<setw(31)<<getsalary()<<endl;
}
string SalesManager::getinformation(){return ID+" "+name+"        "+sex+" "+section+" "+level+"   "+monthsalary+" "+sale+"        "+"null";
}
void SalesManager::setID(string ID){ this->ID=ID;}
void SalesManager::setname(string name){ this->name=name;}
void SalesManager::setsex(string sex){this->sex=sex;}
void SalesManager::setsection(string section){this->section=section;}
void SalesManager::setlevel(string level){this->level=level;}
void SalesManager::setmonthsalary(string monthsalary){  this->monthsalary=monthsalary;}
void SalesManager::setsale(string sale){ this->sale=sale;}
void SalesManager::setworktime(string worktime){cout<<"暂不支持更改该属性!"<<endl;}
Technicist类
#pragma once
#include "base.h"
class Technicist :public Base
{private:string worktime;
public:Technicist(string ID,string name,string sex,string section,string level,string worktime):Base(ID,name,sex,section,level){this->worktime=worktime;}~Technicist(void);virtual double getsalary();virtual void toString();virtual string getinformation();virtual void setID(string ID);virtual void setname(string name);virtual void setsex(string sex);virtual void setsection(string section);virtual void setlevel(string level);virtual void setmonthsalary(string monthsalary);virtual void setsale(string sale);virtual void setworktime(string worktime);
};
#include "StdAfx.h"
#include "Technicist.h"
double Technicist::getsalary(){return strDou(worktime)*200;
}
Technicist::~Technicist(void)
{}
void Technicist::toString(){cout<<ID<<setw(13)<<name<<setw(8)<<sex<<setw(16)<<section<<setw(8)<<level<<setw(38)<<worktime<<setw(16)<<getsalary()<<endl;
}
string Technicist::getinformation(){return ID+"   "+name+"        "+sex+" "+section+" "+level+"   "+"null"+"    "+"null"+"        "+worktime;
}
void Technicist::setID(string ID){ this->ID=ID;}
void Technicist::setname(string name){ this->name=name;}
void Technicist::setsex(string sex){this->sex=sex;}
void Technicist::setsection(string section){this->section=section;}
void Technicist::setlevel(string level){this->level=level;}
void Technicist::setmonthsalary(string monthsalary){cout<<"暂不支持更改该属性!"<<endl;}
void Technicist::setsale(string sale){cout<<"暂不支持更改该属性!"<<endl;}
void Technicist::setworktime(string worktime){ this->worktime=worktime;}
Read类
#pragma once
#include<iostream>
#include<fstream>
#include<vector>
#include"Base.h"
using namespace std;
class Read
{public:Read(void){}~Read(void){}void readFile();//读文件void writeFile();//写文件void addEmployee();//添加功能void display();//显示功能void findEmployee(string ID);//查询功能void modify(string ID);//修改功能void deleteEmployee(string ID);//删除功能void totalEmployee();//统计功能void menu();//菜单选择
};#include "StdAfx.h"
#include "Read.h"
#include"Base.h"
#include"Manager.h"
#include"salesman.h"
#include"SalesManager.h"
#include"Employee.h"
#include"Technicist.h"
#include<cassert>
vector <shared_ptr<Base>> vect_read;
void Read::readFile(){ifstream readfile("E:\\公司人员管理.txt",ios::in);string ID,name,sex,section,level,monthsalary,sale,worktime;if(!readfile){cout<<"FileNotFindException!"<<endl;}while(readfile>>ID>>name>>sex>>section>>level>>monthsalary>>sale>>worktime){if(section=="经理"){shared_ptr<Base> manager= make_shared<Manager>(ID,name,sex,section,level,monthsalary);vect_read.push_back(manager);}//存放经理if(section=="销售人员"){shared_ptr<Base> salesmanw= make_shared<salesman>(ID,name,sex,section,level,sale);vect_read.push_back(salesmanw);}//存放销售   if(section=="技术人员"){shared_ptr<Base> tech= make_shared<Technicist>(ID,name,sex,section,level,worktime);vect_read.push_back(tech);}//存放技术if(section=="销售经理"){shared_ptr<Base> salesmanager= make_shared<SalesManager>(ID,name,sex,section,level,monthsalary,sale);vect_read.push_back(salesmanager);}//存放销售经理}readfile.close();
}
void Read::writeFile(){ofstream outfile("E:\\公司人员管理.txt",ios::out);for(int i=0;i<vect_read.size();i++){outfile<<vect_read[i]->getinformation()<<endl;}
}
void Read::addEmployee(){cout<<"客官您现在已进入增加功能:请依次输入员工:编号|姓名|性别|部门职位|等级|月薪|销售提成|工作时长 !!没有的均输入null"<<endl;string ID,name,sex,section,level,monthsalary,sale,worktime;cin>>ID>>name>>sex>>section>>level>>monthsalary>>sale>>worktime;shared_ptr<Base> addemployee= make_shared<Employee>(ID,name,sex,section,level,monthsalary,sale,worktime);vect_read.push_back(addemployee);writeFile();cout<<"添加成功!该员工信息已自动保存"<<endl;
}
void Read::display(){//先清除当前vect_read的大小;再次读取文件vect_read.clear();readFile();cout<<"*************************公司人员信息*************************"<<endl;cout<<"编号"<<setw(10)<<"姓名"<<setw(10)<<"性别"<<setw(15)<<"部门职位"<<setw(10)<<"等级"<<setw(10)<<"月薪"<<setw(15)<<"销售提成"<<setw(15)<<"工作时长"<<setw(15)<<"本月工资"<<endl;for(int i=0;i<vect_read.size();i++){vect_read[i]->toString();}
}
void Read::findEmployee(string ID){int k=-1;for(int i=0;i<vect_read.size();i++){if(ID==vect_read[i]->ID){k=i;break;}else {continue;}}if(k!=-1){vect_read[k]->toString();}else{cout<<"要查找的员工不存在!"<<endl;}cout<<"查找功能结束!"<<endl;
}
void Read::modify(string ID){cout<<"*******************修改员工信息*******************"<<endl;int k=-1;string IDm,name,sex,section,level,monthsalary,sale,worktime;for(int i=0;i<vect_read.size();i++){if(ID==vect_read[i]->ID){k=i;break;}else {continue;}}if(k!=-1){//打印出当前员工信息findEmployee(vect_read[k]->ID);//修改编号cout<<"输入修改后的编号:如果不修改则输入null"<<endl;cin>>IDm;if(IDm=="null"){}else{vect_read[k]->setID(ID);cout<<"修改成功!"<<endl;}//修改姓名cout<<"输入修改后的姓名:如果不修改则输入null"<<endl;cin>>name;if(name=="null"){}else{vect_read[k]->setname(name);cout<<"修改成功!"<<endl;}//修改性别cout<<"输入修改后的性别:如果不修改则输入null"<<endl;cin>>sex;if(sex=="null"){}else{vect_read[k]->setsex(sex);cout<<"修改成功!"<<endl;}//修改部门职位cout<<"输入修改后的部门职位:如果不修改则输入null"<<endl;cin>>section;if(section=="null"){}else{vect_read[k]->setsection(section);cout<<"修改成功!"<<endl;}//修改等级cout<<"输入修改后的等级:如果不修改则输入null"<<endl;cin>>level;if(level=="null"){}else{vect_read[k]->setlevel(level);cout<<"修改成功!"<<endl;}//修改月薪cout<<"输入修改后的月薪:如果不修改则输入null"<<endl;cin>>monthsalary;if(monthsalary=="null"){}else{vect_read[k]->setmonthsalary(monthsalary);cout<<"修改成功!"<<endl;}//修改销售额度cout<<"输入修改后的销售额度:如果不修改则输入null"<<endl;cin>>sale;if(sale=="null"){}else{vect_read[k]->setsale(sale);cout<<"修改成功!"<<endl;}//修改工作时长cout<<"输入修改后的工作时长:如果不修改则输入null"<<endl;cin>>worktime;if(worktime=="null"){}else{vect_read[k]->setworktime(worktime);cout<<"修改成功!"<<endl;}}else{cout<<"员工不存在!"<<endl;}writeFile();cout<<"修改功能结束!"<<endl;
}
void Read::deleteEmployee(string ID){cout<<"*********************删除员工*********************"<<endl;//重新读取文件ifstream readm("E:\\公司人员管理.txt",ios::in);vector <Employee> vect_a;string IDm,name,sex,section,level,monthsalary,sale,worktime;while(readm>>IDm>>name>>sex>>section>>level>>monthsalary>>sale>>worktime){vect_a.push_back(Employee(IDm,name,sex,section,level,monthsalary,sale,worktime));}readm.close();//准备删除指定员工//迭代器erase后会自动向下一位vector <Employee>::iterator it;for(it = vect_a.begin();it!=vect_a.end();){if((*it).ID==ID){it=vect_a.erase(it);cout<<"删除成功!"<<endl;}else{it++;}}//重新写入文件ofstream out("E:\\公司人员管理.txt",ios::out);for(int i=0;i<vect_a.size();i++){out<<vect_a[i].getinformation()<<endl;}//清理vect_a的长度vect_a.clear();
}
void Read::totalEmployee(){cout<<"改公司的总员工有:"<<vect_read.size()<<endl;
}
void Read::menu(){cout<<"***************************欢迎来到公司人员管理系统***************************"<<endl;cout<<"1、查看公司人员信息"<<endl;cout<<"2、增加员工"<<endl;cout<<"3、修改员工信息"<<endl;cout<<"4、删除员工"<<endl;cout<<"5、查看公司员工总人数"<<endl;cout<<"任意键退出本系统!"<<endl;cout<<"********************************************************************************"<<endl;
}

五、效果图

到此为止,没有啦

用c++编写公司人员管理系统(课程设计 vs2010)相关推荐

  1. 计算机课程设计收费管理系统,C语言机房收费管理系统课程设计

    <C语言机房收费管理系统课程设计>由会员分享,可在线阅读,更多相关<C语言机房收费管理系统课程设计(15页珍藏版)>请在人人文库网上搜索. 1.课程设计报告课程设计题目:机房收 ...

  2. ASP.NET人事管理系统课程设计

    ASP.NET人事管理系统课程设计 前言 疫情耽搁的这段时间里,一直在家上网课,回校后转眼间又迎来了期末季,唉苦不堪言的大学生活. 这一次我的课程设计是利用ASP.NET做一套人事管理系统,鉴于还得写 ...

  3. C语言课程学籍管理课程书面报告,C语言学籍管理系统课程设计报告书

    <C语言学籍管理系统课程设计报告书>由会员分享,可在线阅读,更多相关<C语言学籍管理系统课程设计报告书(30页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计课程设计报告学 ...

  4. java仓库管理设计报告_仓库管理系统(课程设计JSPJAVA大学设计).doc

    仓库管理系统(课程设计JSPJAVA大学设计) 摘 要 随着经济的不断繁荣以及加入WTO后市场环境的变化,对企业的生产经营提出了更高的要求,企业必须综合利用各种先进制造技术,在网络与信息技术的支持下, ...

  5. java技术计算机机房管理系统文档,计算机机房管理系统课程设计报告

    计算机机房管理系统课程设计报告 课课 程程 设设 计计 题题 目目 计算机机房管理系统 学学 院院 专专 业业 信电分院计算机科学与技术 班班 级级 计算机 1101 姓姓 名名 指导教师指导教师 2 ...

  6. c语言航班管理系统报告,c航班管理系统课程设计报告.doc

    c航班管理系统课程设计报告 北华航天工业学院课程设计报告 PAGE 课程设计报告 报告(论文)题目: 1航班信息查询系统 2迷宫问题 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技 ...

  7. c语言学生成员管理代码报告怎么写,C语言学生通信录管理系统课程设计报告

    <C语言学生通信录管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言学生通信录管理系统课程设计报告(18页珍藏版)>请在人人文库网上搜索. 1.实验名称 :学生通信 ...

  8. 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告

    <C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...

  9. c语言课程设计北京电子工业出版社,c语言图书管理系统课程设计报告

    c语言图书管理系统课程设计报告 五.小节: 在这一个星期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性.将理论和实践结合在一起,用先进的计算机工具方便人们的生活.C语言程序的编写首先 ...

最新文章

  1. CCNA模拟器《Packet Tracer 4.11》
  2. 步步为营UML建模系列二、部署图(Deployment Diagram)
  3. get 和post 方式请求数据
  4. UICollectionView的使用
  5. 计算几何常用算法的理论基础【转】
  6. 全球与中国塑料废料粉碎机市场运营状况分析及投资风险评估报告2022-2027年版
  7. OpenCV使用人脸界标检测进行人脸交换
  8. MySQL Front远程连接数据库
  9. SDL_BlitSurface的参数是两个PNG时,如何保护其透明度
  10. 最新SSCI影响因子以及分区名单
  11. Java实现抓取百度识图结果的实现和思路-1-创造百度识图的URL链接
  12. 惠普计算机如何用u盘引导启动不了系统安装系统,惠普笔记本进BIOS设置U盘启动教程...
  13. Gocator三维传感器环境配置结合VS2015 (Gocator自带网页软件使用介绍)
  14. 联想拯救者笔记本加固态硬盘过程重点
  15. AD软件系统属性配置
  16. 【zyc的从零开始】20211012 运算符
  17. 基于vueJs框架的翻页组件
  18. 熊大微评微内核|华为“鸿蒙”所涉及的微内核究竟是什么?
  19. 模块耦合名词解释_名词解释(软件工程)
  20. Verilog实现VGA通信的驱动

热门文章

  1. 推荐一款可以免费使用的企业电脑监控软件
  2. 2015年考研英语二真题
  3. 弘辽科技:拼多多商品发布被驳回是为什么?被驳回怎么办?
  4. learning at command AT+CSQ
  5. R语言——一秒决策树分析
  6. Linux定时服务 crond
  7. canvas进阶——贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
  8. Google小恐龙游戏
  9. 什么是Tor?Tor浏览器更新有什么用?
  10. Flutter SocketException: OS Error: No route to host, errno = 113, address = XXX