当前位置:蚂蚁文档网 > 作文范文 > c,,公司人事管理

c,,公司人事管理

时间:2022-06-30 11:50:06 浏览次数:

 // 852369.cpp : 定义控制台应用程序的入口点。

 //

  #include "stdafx.h"

 #include <iostream>

 #include <fstream>

 #include <iomanip>

 #include <string>

 #include <string.h>

 #include <stdlib.h>

 #include<time.h>

 #include<windows.h>

 #include<conio.h>

 using namespace std;

 class Staff

  //声明员工类

 {

 protected:

  int

 num,post;

  char name[20];

 float income;

  public:

  friend class Boss;//在一个非成员函数中,要想访问类的私有数据成员

  //,该函数必须声明为该类的友元函数

  Staff(){}

 //声明一个无参的构造函数 Staff

  Staff (int id,char *Name,int post,double pay);//定义一个有参的构造函数,用参数的初始化表对数据成员初始化

  virtual double Pay(){return 0;}

  };

  Staff ::Staff (int id,char *Name,int Post,double pay)

  //在类外定义有参构造函数

 {

  num=id;

  post=Post;

  income= pay;

  strcpy(name,Name);

 }

 class TechniqueManager:public Staff

  //声明技术经理类

 {

 public:

  TechniqueManager(int id,char *Name,int

 post,double pay):Staff (id,Name,post,pay){}

  double Pay(){return income=5000;}

  void display();

 ~TechniqueManager(){}

 };

 void TechniqueManager::display()//构造函数

 {

  Pay();

 cout<<num<<"

 "<<name<<"

  技术经理

 "<<income<<endl;

 }

  class BusinessManager:public Staff

  //声明业务经理类

 {

 public:

  double Amount, Programe;

  BusinessManager(int id,char *Name,int post,double amount,double programe,double pay);

  void SetAmount(double s,double d);

  double Pay();

 ~BusinessManager(){}

 };

 BusinessManager::BusinessManager(int id,char *Name,int post,double amount,double programe,double pay):Staff (id,Name,post,pay)

 //构造函数

 {

  Amount=amount;

  Programe=programe;

 }

 void BusinessManager::SetAmount(double s,double d)

 {

  Amount=s;

  Programe=d;

 }

 double BusinessManager::Pay()

 {

  return income=2000+Amount*15/100+Programe*10/100;

 }

  class Secretary:public

 Staff

 //声明文秘类

 {

  public:

  Secretary(int

 id,char *Name,int post,double pay):Staff (id,Name,post,pay){}

  double Pay(){return income=1500;}

  void display();

  ~Secretary(){}

  };

 void Secretary::display()

  //构造函数

 {

  Pay();

 cout<<num<<"

 "<<name<<"

  文 秘

  "<<income<<endl;

  }

  class Financial:public Staff

  //声明财务人员类

 {

 public:

 Financial(int id,char *Name,int post,double pay):Staff (id,Name,post,pay){}

  double Pay(){return income=2000;}

  void display();

  ~Financial(){}

 };

 void Financial::display()

 //构造函数

 {

  Pay();

  cout<<num<<"

  "<<name<<"

  财务

  "<<income<<endl;}

  class Sales:public

 Staff

 //声明业务人员类

 {

  public:

 double Amount,Programe;

 Sales(int id,char *Name,int post,double amount,double programe,double pay);

 void SetAmount(double s,double d);

 virtual double Pay();

 ~Sales(){}

 };

 Sales::Sales(int id,char *Name,int post,double amount,double programe,double pay):Staff (id,Name,post,pay)

 //在类外定义有参构造函数

 {

  Amount=Amount;//销售额

  Programe=programe;//项目额

  }

 double Sales::Pay()

 {

  return

 income=Amount*15/100+Programe*10/100;

 }

  void Sales::SetAmount(double s,double d)

  {Amount=s;Programe=d;}

  class Technician:public Staff

 //声明技术员类

 {

 public:

 double Line;

 Technician(int id,char *Name,int post,double line,double pay):Staff (id,Name,post,pay)

 {

 Line=line;

  }

 double Pay();

 void display();

  ~Technician(){}

 };

  double Technician::Pay()

 //在类外定义无参构造函数

 {

  return income=Line;

 }

 void Technician::display(){

 Pay();cout<<num<<"

 "<<name<<"

  技术人员

  "<<income<<endl; }

  class Boss

  // 声明老板类

 {

 public:

  Boss(){};

  void Add();

  void Search();

 void Delete();

  void Modify();

 void DisPlay();

  ~Boss()

  {}

 };

 void Boss::Add()

 {

 time_t t = time(0);

 char tmp[64];

 strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j

 天 %z",localtime(&t) );

 puts( tmp );

  Staff

 p,*p1;

  int post,id;

 char Name[20],ch;

  double pay,Amount,sell,programe;

  cout<<endl;

  cout<<endl;

 cout<<"\n\n\n\n\t\t\t"<<"

 添加职工信息"<<endl;

  cout<<"\t\t\t"<<"1---------技术经理"<<endl;

 cout<<"\t\t\t"<<"2---------业务经理"<<endl;

 cout<<"\t\t\t"<<"3---------文

 秘"<<endl;

  cout<<"\t\t\t"<<"4---------业务人员"<<endl;

  cout<<"\t\t\t"<<"5---------技术人员"<<endl;

 cout<<"\t\t\t"<<"6---------财务人员"<<endl;

 do

 {

  fstream file("company.dat",ios::out|ios::app|ios::binary);//以写,追加,二进制形式打开文件

  if(())

  {

  cout<<"can not open file!"<<endl;

 }

 cout<<endl<<"输入岗位:";

  cin>>post;

  cout<<"编号:";

  cin>>id;

  cout<<"输入姓名:";

  cin>>Name;

  switch(post)

  {

  case 1:p1=new TechniqueManager(id,Name,post,0); //声明一个基类的指针指向派生类,用 new 创建了派生类的对象

 pay=(*p1).Pay();p=TechniqueManager(id,Name,post,pay);

  break;

 case 2: cout<<"本月销售额:";

 cin>>sell;

  cout<<"本月产品额:";

  cin>>programe;

  cout<<endl;

  p1=new BusinessManager(id,Name,post,sell,programe,0);

  pay=(*p1).Pay();

  p=BusinessManager(id,Name,post,sell,programe,pay); break;

  case 3:p1=new Secretary(id,Name,post,0);

 pay=(*p1).Pay();p=Secretary(id,Name,post,pay);

 break;

 case 4:cout<<"本月销售额:";

  cin>>sell;

 cout<<"本月产品额:";

 cin>>programe;

 cout<<endl;

 p1=new Sales(id,Name, post,sell,programe,0);

 pay=(*p1).Pay();

 p=Sales(id,Name, post,sell,programe,pay);break;

  case 5: cout<<"代码行数:";

 cin>>Amount;

  p1=new Technician(id,Name,post,Amount,0);

  pay=(*p1).Pay();

  p=Technician(id,Name,post,Amount,pay);break;

  case 6:p1=new Financial(id,Name,post,0);

 pay=(*p1).Pay();p=Financial(id,Name,post,pay);

 break;

  }

  ((char *)(&p),sizeof(p));//以写的方式读入文件中

  ();

  cout<<"是否继续添加?y 或 Y: 继续

  n 或 N:结束并返回主菜单[ ]\b\b";

 cin>>ch;

 if(ch == "n"||ch == "N")

 {

  break;

 }

  }while(ch=="y"||ch=="Y");

  system(" cls");

 }

  void Boss::Search()

 //查找员工信息

 {

 time_t t = time(0);

 char tmp[64];

 strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );

 puts( tmp );

 int d;

 Staff p;

 char ch;

  cout<<"\n\n\n\n\n\n

  查找员工信息"<<endl;

  cout<<"\t\t\t"<<"1----技术经理"<<endl;

  cout<<"\t\t\t"<<"2----业务经理"<<endl;

  cout<<"\t\t\t"<<"3----文

 秘"<<endl;

  cout<<"\t\t\t"<<"4----业务人员"<<endl;

  cout<<"\t\t\t"<<"5----技术人员"<<endl;

  cout<<"\t\t\t"<<"6----财务人员"<<endl;

  do{

 cout<<"请输入岗位:";

 cin>>d;

 cout<<endl;

 fstream file("company.dat",ios::in|ios::binary);// 以读的方式打开文件,

 if(())

 {

  cout<<"can not open the file!"<<endl;

 }

 while(((char *)&p,sizeof(p)))//文件中的内容一个一个的读出来,不停止,直到文件尾

 {

 if(d==1&&p.post==1)

  {

  cout<<p.num<<"

  \t"<<p.name<<"

  "<<"技术经理"<<"

 "<<p.income<<endl;

 }

  else if(d==2&&p.post==2)

  {

  cout<<p.num<<"

  "<<p.name<<"

  "<<"财务经理"<<"

 "<<p.income<<endl;

 }

 else if(d==3&&p.post==3)

  {

  cout<<p.num<<"

 "<<p.name<<"

  "<<" 文

  秘"<<"

 "<<p.income<<endl;

 }

  else if(d==4&&p.post==4)

  {

  cout<<p.num<<"

  "<<p.name<<"

  "<<"业务人员"<<"

 "<<p.income<<endl;

  }

 else if(d==5&&p.post==5)

 {

  cout<<p.num<<"

 "<<p.name<<"

 "<<"技术人员"<<"

 "<<p.income<<endl;

 }

  else if(d==6&&p.post==6)

 {

  cout<<p.num<<"

 "<<p.name<<"

 "<<"财务人员"<<"

 "<<p.income<<endl;

  }

  }

 ();

 cout<<"是否继续添加?y 或 Y: 继续

  n 或 N:结束并返回主菜单[ ]\b\b";

 cin>>ch;

 if(ch == "n"||ch == "N")

 {

  break;

 }

  }while(ch=="y"||ch=="Y");

  system(" cls");

 }

  void Boss::Modify()

  //-----修改信息-----

 {

  time_t t = time(0);

 char tmp[64];

 strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );

 puts( tmp );

  char Name[20];

 Staff p3[10];

 Staff *p1;

 Staff p;

  int post,id,i=0,j=0;

  double pay,Amount,sell,programe;

  cout<<"\n\n\n\n\n\n

  修改员工信息"<<endl;

 cout<<"\t\t\t"<<"1--------------------技术经理"<<endl;

  cout<<"\t\t\t"<<"2-------------------- 业 务 经 理"<<endl;

 cout<<"\t\t\t"<<"3--------------------文

 秘"<<endl;

 cout<<"\t\t\t"<<"4--------------------业务人员"<<endl;

 cout<<"\t\t\t"<<"5--------------------技术人员"<<endl;

 cout<<"\t\t\t"<<"6--------------------财务人员"<<endl;

  cout<<"输入所要修改员工的编号:";

  cin>>id;

  fstream file("company.dat",ios::in|ios::binary);

  if(())

  {

 cout<<"can not open the file!"<<endl;

  }

 (0,ios::beg);

 //把文件指针放在文件的开始

  while(((char *)&p,sizeof(p)))

 {

 p3[i]=p;

  if(p3[i].num==id)

 {

  cout<<"修改岗位为:

 ";

  cin>>post;

  cout<<"修改名字为:

 ";

 cin>>Name;

 cout<<endl;

  switch(post)

  {

  case 1:p1=new TechniqueManager(id,Name,post,0); pay=(*p1).Pay();p3[i]=TechniqueManager(id,Name,post,pay);

 break;

 case 2:cout<<"销售额:

 ";

 cin>>sell;

 cout<<"产品额:";

  cin>>programe;

  cout<<endl;

 p1=new BusinessManager(id,Name, post,sell,programe,0);

 pay=(*p1).Pay();

 p3[i]=BusinessManager(id,Name, post,sell,programe,pay); break;

 case 3:p1=new Secretary(id,Name,post,0);pay=(*p1).Pay();p3[i]=Secretary(id,Name,post,pay);

 break;

 case 4:cout<<"销售额:

 ";

 cin>>sell;

 cout<<"产品额:

 ";

  cin>>programe;

 cout<<endl;

 p1=new Sales(id,Name, post,sell,programe,0);

 pay=(*p1).Pay();

 p3[i]=Sales(id,Name, post,sell,programe,pay); break;

 case 5:cout<<"代码行数:";

  cin>>Amount;

 cout<<endl;

 p1=new Technician(id,Name,post,Amount,0);

 pay=(*p1).Pay();

 p3[i]=Technician(id,Name,post,Amount,pay);

  case 6:p1=new Financial(id,Name,post,0);pay=(*p1).Pay();p3[i]=Financial(id,Name,post,pay);

 break;

  }

 }

  i++;

 }

  ();

  ofstream file1("company.dat",ios::out|ios::binary);

  if(())

  {

 cout<<"can not open the file!"<<endl;

  }

 for(j=0;j<i;j++)

  //把修改后的信息存入文件中

  {

 ((char *)&p3[j],sizeof(p3[j]));

  }

  ();

 system(" cls");

 }

  void Boss::Delete()

  //-----删除人员----

 {

  time_t t = time(0);

 char tmp[64];

 strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );

 puts( tmp );

  int num,i,j=0;

  Staff

 p1[10];

  Staff

 p;

  char ch;

 do{

 i=0;

 cout<<"

  删除员工信息";

 cout<<"编号:";

  cin>>num;

 fstream file("company.dat",ios::in|ios::binary);

  //输入文件流类

 if(())

 {

  cout<<"can not open the file!"<<endl;

 }

 while(((char *)&p,sizeof(p)))

 {

  if(p.num==num)

  {

  switch(p.post)

 {

 case 1:

 cout<<p.num<<"

 "<<p.name<<"

 "<<"技术经理"<<"

 "<<p.income<<endl;break;

 case 2:

  cout<<p.num<<"

 "<<p.name<<"

 "<<"财务经理"<<"

  "<<p.income<<endl;break;

 case 3:

 cout<<p.num<<"

 "<<p.name<<"

 "<<" 文

 秘"<<"

 "<<p.income<<endl; break;

  case 4:

  cout<<p.num<<"

 "<<p.name<<"

 "<<"业务人员"<<"

  "<<p.income<<endl;break;

 case 5:

  cout<<p.num<<"

  "<<p.name<<"

  "<<"技术员"<<"

  "<<p.income<<endl;break;

 case 6:

  cout<<p.num<<"

 "<<p.name<<"

 "<<"财务人员"<<"

  "<<p.income<<endl;break;

 }

  }

  else

  {

 p1[i]=p;

 i++;

  }

 }

 ();

 fstream file1("company.dat",ios::out|ios::binary);

 //输出文件流类

 if(())

 {

  cout<<"can not open the file!"<<endl;

 }

  for(j=0;j<i;j++)

 {

  ((char *)&p1[j],sizeof(p1[j]));

 }

 ();

 cout<<"是否继续添加?y 或 Y: 继续

  n 或 N:结束并返回主菜单[ ]\b\b";

 cin>>ch;

 if(ch == "n"||ch == "N")

 {

  break;

 }

  }while(ch=="y"||ch=="Y");

  system(" cls");

 }

  void Boss::DisPlay()

 //------显示人员信息-----

 {

  Staff

 p;//P 是职员类的对象

 cout<<"

  编号

 "<<"│"<<"

  员工姓名

  "<<"│"<<"

  级别

  "<<"│"<<"

  工资

  "<<"│"<<endl;

  fstream file("company.dat",ios::in|ios::out|ios::binary);

  if(())

  {

  cout<<"can not open the file!"<<endl;

  }

  while(((char *)(&p),sizeof(p)))

  {

 // cout<<"

  编号

 "<<"

 姓名

  "<<"

  岗位

  "<<"

 工资

 "<<endl;

  switch(p.post)

  {

  case 1:cout<<"

 "<<p.num<<"

  "<<setw(6)<<p.name<<"

  "<<setw(6)<<"技术经理"<<"

 "<<p.income<<endl;break;

  case 2:cout<<"

 "<<p.num<<"

  "<<setw(6)<<p.name<<"

  "<<setw(6)<<"业务经理"<<"

 "<<p.income<<endl; break;

 case 3:cout<<"

 "<<p.num<<"

  "<<setw(6)<<p.name<<"

  "<<setw(6)<<" 文秘

  "<<"

 "<<p.income<<endl;

  break;

 case 4:cout<<"

 "<<p.num<<"

  "<<setw(6)<<p.name<<"

  "<<setw(6)<<"业务人员"<<"

 "<<p.income<<endl;

 break;

  case 5:cout<<"

 "<<p.num<<"

  "<<setw(6)<<p.name<<"

  "<<setw(6)<<"技术人员"<<"

 "<<p.income<<endl; break;

 case 6:cout<<"

 "<<p.num<<"

  "<<setw(6)<<p.name<<"

  "<<setw(6)<<"财务人员"<<"

 "<<p.income<<endl; break;

  }

 }

  ();

 cout << "\n 按任意键返回主菜单..............\n";

  getch();

  getchar();

  }

 void menu()

 //-------菜单函数-------

 {

  system(" cls");

  time_t t = time(0);

 char tmp[64];

 strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );

 puts( tmp );

 cout<<"

 欢迎进入公司管理系统

 "<<endl;

  cout<<"

  *******************************************"<<endl;

 cout<<"

 ★★★★★★公司管理系统 ★★★★★★"<<endl;

 cout<<"

  *******************************************"<<endl;

 cout<<"\t\t|--------------1 录 入 职 工 信 息-----------------|"<<endl;

 cout<<"\t\t|--------------2 查 询 职 工 信 息-----------------|"<<endl;

 cout<<"\t\t|--------------3 修 改 职 工 信 息-----------------|"<<endl;

 cout<<"\t\t|--------------4 删 除 职 工 信 息-----------------|"<<endl;

 cout<<"\t\t|--------------5 显 示 职 工 信 息-----------------|"<<endl;

 cout<<"\t\t|--------------6 退 出

 -----------------|"<<endl;

 cout<<"\t\t|*********************************************|"<<endl;

 cout<<"输入所要实现的功能:[ ]\b\b";

 }

  int main()

  //-----主函数----

 {

  cout<<"\n\n\n\n\n\n\n\n\n\n\t\t\t 系统正在启动,请稍候 ";

  for(int i=0;i<7;i++)

  {

  system("color B");

 cout<<" .";

 Sleep(200);

  }

  system(" cls");

 int a;

  Boss boss;

  system("color B");

  do

 {

 menu();

  cin>>a;

  switch(a)

 {

 case 1:

  system(" cls"); boss.Add();

  break;

 case 2:

 system(" cls"); boss.Search();

 break;

 case 3:

 system(" cls"); boss.Modify();

 break;

 case 4:

 system(" cls"); boss.Delete();

 break;

 case 5:

  system(" cls"); boss.DisPlay(); break;

  }

  }while(a!=6);

  system(" cls");

  cout<<"\n\n\n\n\n\n\n\n\n\n\t\t\t 欢迎使用,谢谢 ";

  for(int i=0;i<7;i++)

  {

 system("color B");

 cout<<" .";

 Sleep(200);

  }

  system(" cls");

 return 0;

 }

  (学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)

 (学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)

推荐访问:人事管理 公司

猜你喜欢