企业人员管理系统 C++

企业人员管理系统

  1. 项目描述:某小型公司,主要有4类人员:经理、兼职技术人员、销售经理和兼职推销员。现在需要存储这些人员的姓名、编号、级别、当月薪水、计算月薪 总额并显示全部信息。
  2. 系统设计说明:

人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1.

程序对所有人员有提升级别的功能。

月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成,销售经理既拿固定月薪也领取销售提成。

能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。

这有完整的企业人员管理系统 C++代码和思路,希望能帮到你。c _课程设计_公司人员管理系统(完全代码) - 豆丁网 (docin.com)

#include <iostream> 
#include <iomanip> 
#include <string.h> 
#include <fstream> 

using namespace std; 

const int Maxr=100; 
class Employee //职工类 
{ 
int tag;//删除标记 
int no;//职工编号 
char name[20]; 
char zw[20];//职工姓名 
int salary;//职工工资 
public: 
Employee(){} 
char *getname() {return name;}//获取名字 
int gettag() {return tag;}//获取标记 
int getno() {return no;}//获取编号 
int getsalary(){return salary;} 
void setzw(char q[])//设置名字 
{ 
  strcpy(zw,q); 
} 
void setname(char na[])//设置名字 
{ 
  strcpy(name,na); 
} 
void getsalary(int sa){salary=sa;} 
void delna(){tag=1;}//删除 
void addemp(int n,int sa,char *na,char *q)//增加 
{ 
  tag=0; 
  no=n; 
    salary=sa; 
  strcpy(name,na); 
  strcpy(zw,q); 
} 

  


void disp()//显示职工信息 
{  

cout < <"│" < <setw(10) < <no < <"│" < <setw(10) < <name < <"│" < <setw(10) < <salary < <"│" < <setw(10) < <zw < <"│" < <endl; 
cout < <"├—————┼—————┼—————┼—————┤" < <endl; 
} 
}; 
class Database//职工数据类 
{ 
int top; 
Employee read[Maxr]; 

public: 
Database()//将职工信息从employee.txt读取到read[]中 
{  Employee s; 
top=-1; 
fstream file("employee.txt",ios::in); 
while (1) 
{ 
file.read((char *)&s,sizeof(s)); 
if (!file) break; 
top++; 
read[top]=s; 
} 
file.close(); 

} 
void clear()//删除所有 
{ 
top=-1; 
} 
int addemp (int n, int sa,char *na,char*q)  //增加职工 
{ 
Employee *p=query(n); 
if (p==NULL) 
{ 
top++; 
read[top].addemp(n,sa,na,q); 
return 1; 
} 
return 0; 
} 
Employee *query(int empid) 
{ 
for (int i=0;i <=top;i++) 
if (read[i].getno()==empid && read[i].gettag()==0) 
return &read[i]; 
return NULL; 
} 
Employee *query1(char empna[20]) 
{ 
for (int i=0;i <=top;i++) 
if ((read[i].getname()==empna) && read[i].gettag()==0) 
return &read[i]; 
return NULL; 
} 
void disp()  //职工信息显示 
{ 
for (int i=0;i <=top;i++) 
read[i].disp(); 
} 
void empdata();  
~Database()  //将read[]中的信息读如到employee.txt中 
{ 
fstream file("employee.txt",ios::out); 
for (int i=0;i <=top;i++) 
if (read[i].gettag()==0) 
file.write((char *)&read[i],sizeof(read[i])); 
file.close(); 
} 
}; 
void Database::empdata()//职工维护 
{ 
int choice=1; 
int m=1;int b=1; 
char rname[20]; 
int empid; int empsa;char q[20]; 
Employee *r; 
while (choice!=0) 
{ 
cout < <"职工维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>"; 
cin>>choice; 
switch (choice) 
{ 
case 1: 
cout < <setw(50) < <" ┌—————————————┐\n"; 
cout < <setw(50) < <" │ 请选择您所需的操作      │\n"; 
cout < <setw(50) < <" │ 经理:    1,并按回车键  │\n"; 
cout < <setw(50) < <" │ 业务经理:2,并按回车键  │\n"; 
cout < <setw(50) < <" │ 普通职工:3,并按回车键  │\n"; 
cout < <setw(50) < <" └—————————————┘\n"; 
cin>>m; 
while(m!=0){ 
switch(m) 
{ 
case 1: 
cout < <"输入经理编号:"; 
cin>>empid; 
cout < <"输入奖金: "; 
cin>>empsa; 
cout < <"输入经理姓名:"; 
cin>>rname; 
addemp(empid,8000+empsa,rname,"经理"); 
break; 
case 2: 
cout < <"输入业务经理编号:"; 
cin>>empid; 
cout < <"输入月提成:  "; 
cin>>empsa; 
cout < <"输入业务经理姓名:"; 
cin>>rname; 
addemp(empid,4000+empsa,rname,"业务经理"); 
break; 
case 3: 
cout < <"输入职工编号:"; 
cin>>empid; 
cout < <"输入工资: "; 
cin>>empsa; 
cout < <"输入职工姓名:"; 
cin>>rname; 
addemp(empid,empsa,rname,"普通职工"); 
break; 
} 
break; 
} 
break; 
case 2: 
cout < <"输入职工编号:"; 
cin>>empid; 
r=query(empid); 
if (r==NULL) 
{ 
cout < <"该职工不存在" < <endl; 
break; 
} 
cout < <"输入新的工资:" < <endl; 
cin>>empsa; 
r->getsalary(empsa); 
cout < <"请输入新的职务" < <endl; 
cin>>q; 
r->setzw(q); 
addemp(empid,empsa,rname,q); 
break; 
case 3: 
cout < <"输入职工编号:"; 
cin>>empid; 
r=query(empid); 
if (r==NULL) 
{ 
cout < <"该读者不存在" < <endl; 
break; 

} 
r->delna(); 
break; 
case 4:  
cout < <setw(50) < <" ┌—————————————┐\n"; 
cout < <setw(50) < <" │ 请选择您所需的操作      │\n"; 
cout < <setw(50) < <" │ 按编号查找1,并按回车键  │\n"; 
cout < <setw(50) < <" │ 返回      2,并按回车键  │\n"; 
cout < <setw(50) < <" └—————————————┘\n"; 
cin>>b; 
while(b!=0){ 
switch(b) 
{ 
case 1: 
cout < <"输入职工编号:"; 
cin>>empid; 
r=query(empid); 
if (r==NULL) 
{ 
cout < <"该职工不存在" < <endl; 
break; 
} 

    cout < <"├—————┼—————┼—————┼—————┤" < <endl; 
    cout < <"│" < <setw(10) < <"编号" < <"│" < <setw(10) < <"姓名" < <"│" < <setw(10) < <"工资" < <"│" < <setw(10) < <"职务" < <"│" < <endl; 
    cout < <"├—————┼—————┼—————┼—————┤" < <endl; 
r->disp(); 

break; 
case 2: 
break; 
} 
break; 
} 
break; 
case 5: 
    cout < <"├—————┼—————┼—————┼—————┤" < <endl; 
    cout < <"│" < <setw(10) < <"编号" < <"│" < <setw(10) < <"姓名" < <"│" < <setw(10) < <"工资" < <"│" < <setw(10) < <"职务" < <"│" < <endl; 
    cout < <"├—————┼—————┼—————┼—————┤" < <endl; 
disp(); 
break; 
case 6: 
clear(); 
break; 
} 
} 
} 
void main() 

{ 
int choice=1;Database EmpDB; 
while(choice!=0) 
{ 
cout < <"********************************************************************************" < <endl; 
cout < <endl; 
cout < <endl; 
cout < <setw(20) < <"******************************欢迎使用职工管理系统******************************" < <endl; 
cout < <endl; 
cout < <endl; 
cout < <setw(50) < <" ┌—————————————┐\n"; 
cout < <setw(50) < <" │ 请选择您所需的操作      │\n"; 
cout < <setw(50) < <" │                          │\n";  
cout < <setw(50) < <" │ 操作      1,并按回车键  │\n"; 
cout < <setw(50) < <" │                          │\n";  
cout < <setw(50) < <" │ 返回      0,并按回车键  │\n"; 
cout < <setw(50) < <" └—————————————┘\n"; 
  cin>>choice; 
  switch(choice) 
  { 
  case 1: 
  while(1){ 
  cout < <setw(20); 
  EmpDB.empdata(); 
  break; 

  
  break;} 
  } 
} 
} 

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

实现功能吗?用DOS界面还是MFC呢。