📄 工资管理系统.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<stdlib.h> //包含清屏、退出程序函数。
#include<fstream.h> //备份数据
#include<windows.h>
class Employee
{
public:
friend class worker;
void shanchu() {*name=*sex=0;number=age=0;}
Employee() {next=0;}
virtual void print()=0;
void input()
{
cout<<"员工号:"<<" "
<<"姓名:"<<" "
<<"性别:"<<" "
<<"年龄:"<<endl;
cin>>number>>name>>sex>>age; /*说明此处没用setw()函数,只用空格符号分开来。所以------*/
}
protected: //不能使用私有成员
int number,age;
char name[20],sex[10];
Employee *next;
};
class technician:virtual public Employee
{
public:
technician() {}
virtual void shanchu() {*name=*sex=0;number=age=hour=0;pay1=0;}
void wage() { pay1=100*hour;}
virtual void print()
{
wage();
cout<<"技术员员工号:"<<number<<" "
<<"姓名:"<<name<<" "
<<"性别:"<<sex<<" "
<<"年龄:"<<age<<" "
<<"工资:"<<pay1<<endl;
}
void input()
{
Employee::input();
cout<<"工作时间(以小时计算)"<<endl;
cin>>hour;
}
protected:
int hour,pay1;
};
class manager:virtual public Employee
{
public:
friend class SM;
manager() {}
virtual void shanchu() {*name=*sex=0;number=age=month=0;pay2=0;}
void wage() {pay2=800*month;}
virtual void print()
{
wage();
cout<<"经理的员工号:"<<number<<" "
<<"姓名:"<<name<<" "
<<"性别:"<<sex<<" "
<<"年龄:"<<age<<" "
<<"工资:"<<pay2<<endl;
}
void input()
{
Employee::input();
cout<<"工作时间(以月份计算)"<<endl;
cin>>month;
}
protected:
int month,pay2;
};
class seller:virtual Employee
{
public:
friend class SM;
seller() {}
virtual void shanchu()
{*name=*sex=0;number=age=0;salesvolume=pay3=0;} //salesvolume表示销售额
void wage() {pay3=salesvolume*0.04;}
void input()
{
Employee::input();
cout<<"销售额为(以人民币计算)"<<endl;
cin>>salesvolume;
}
virtual void print()
{
pay3=salesvolume*0.04;
cout<<"销售员员工号:"<<number<<" "
<<"姓名:"<<name<<" "
<<"性别:"<<sex<<" "
<<"年龄:"<<age<<" "
<<"工资:"<<pay3<<endl;
}
protected:
double salesvolume, pay3;
};
class SM:public manager,public seller
{
public:
friend class worker;
SM() {}
virtual void shanchu() {*name=*sex=0;number=age=0;total=pay4=0;}
void wage()
{
pay4=5000+(total)*0.005;
}
void input()
{
Employee::input();
cout<<"销售总额为(以人民币计算):"<<endl; //要用get_sum()*/
cin>>total;
}
virtual void print()
{
wage();
cout<<"销售经理员工号:"<<number<<" "
<<"姓名:"<<name<<" "
<<"性别:"<<sex<<" "
<<"年龄:"<<age<<" "
<<"工资:"<<pay4<<endl;}
protected:
double total,pay4;
};
class worker
{
public:
technician *pa;
seller *pb;
manager *pc;
SM *pd;
Employee *p;
Employee *p1; /* int number,age,hour,month;salemoney;char *name,*sex; 重复定义*/
worker()
{
Employee *p=new technician;p1=p;
}
void add();
void output(); //不能用print() 二义性
void find();
void change();
void del(); //不能使用关键字delete
void save();
};
void worker::add()
{
int a;
Employee *p=p1;
while(p->next)
p=p->next;
cout<<"请选择您所想输入员工的岗位代码,再进行操作.谢谢合作!"<<endl;
cout<<"1.技术员 2.销售员 3.经理 4.销售经理"<<endl;
cin>>a;
switch(a)
{
case 1:
cout<<"技术员数据:"<<endl;
pa=new technician;
pa->input();
p->next=pa;
break;
case 2:
cout<<"销售员数据:"<<endl;
pb=new seller;
pb->input();
p->next=pb;
break;
case 3:
cout<<"经理数据:"<<endl;
pc=new manager;
pc->input();
p->next=pc;
break;
case 4:
cout<<"销售经理数据:"<<endl;
pd=new SM;
pd->input();
p->next=pd;
break;
default:
cout<<"对不起!你所选的操作错误,请重新做作!"<<endl;
}
}
void worker::output()
{
Employee *p=p1;
if(!p)
{
cout<<"无职工记录或者记录已清除!"<<endl;
return;
}
while(p)
{
p->print();
p=p->next;
}
}
void worker::find()
{
Employee *p=p1;
if(!p)
{
cout<<"无职工记录或者记录已清除!"<<endl;
return;
}
cout<<"请输入该员工的员工号:"<<endl;
int b;
cin>>b;
for(p;p=p->next;)
{
if(p->number==b)
{
cout<<"您好,该员工已找到."<<endl;
p->print();
break;
}
}
if(!p)
{
cout<<"对不起!无该员工数据,请重新操作."<<endl;
}
}
void worker::change()
{
Employee *p=p1;
if(!p)
{
cout<<"无职工记录或者记录已清除!"<<endl;
return;
}
cout<<"请输入该员工的员工号:"<<endl;
int c;
cin>>c;
for(p;p=p->next;)
{
if(p->number==c)
{
cout<<"该员工的原数据是"<<endl;
p->print();
cout<<"请输入你想修改的数据"<<endl;
p->input();
cout<<"恭喜您,修改成功!"<<endl;
break;
}
}
if(!p)
{
cout<<"对不起!无该员工数据,请重新操作."<<endl;
}
}
void worker::del()
{
Employee *p=p1;
if(!p)
{
cout<<"无职工记录或者记录已清除!"<<endl;
return;
}
cout<<"请输入该员工的员工号:"<<endl;
int d;
cin>>d;
for(p;p=p->next;)
{
if(p->number==d)
{
cout<<"您好,删除成功!"<<endl;
p->shanchu();
break;
}
}
if(!p)
{
cout<<"对不起!无该员工数据,请重新操作."<<endl;
}
}
void worker::save()
{
char sh;
ifstream f1("F:\\ccx1.cpp");
if(!f1)
{
cout<<"cannot openf1for input";
abort();
}
ofstream f2("F:\\ccx.cpp");
if(!f2)
{
cout<<"cannot open f2 output";
abort();
}
while(f1.get(sh))
f2.put(sh);
f1.close();
f2.close();
cout<<"您好,您的数据已成功备份在F盘ccx.cpp文件中"<<endl;
}
void main()
{
MessageBox(0,"欢迎使用本程序!!"," ",0); //包含在#include<windows.h>头文件里
cout<<"请输入密码(plaese input the pass word):"<<endl;
int e;
cin>>e;
if(e==19871121)
{
cout<<" ********欢迎进入本公司工资管理系统****** "<<endl;
worker w;
int f=1;
while(f)
{
cout<<"以下是菜单选项,请选择!"<<endl;
cout<<"1.输入成员数据"<<endl;
cout<<"2.输出成员数据"<<endl;
cout<<"3.查找成员数据"<<endl;
cout<<"4.修改成员数据"<<endl;
cout<<"5.删除成员数据"<<endl;
cout<<"6.清屏成员数据"<<endl;
cout<<"7.备份成员数据"<<endl;
cout<<"8.退出程序"<<endl;
int g;
cin>>g;
switch(g)
{
case 1:
w.add();
break;
case 2:
w.output();
break;
case 3:
w.find();
break;
case 4:
w.change();
break;
case 5:
w.del();
break;
case 6:
system("cls");
break;
case 7:
w.save();
break;
case 8:
exit(1);
default:
cout<<"对不起!你所选的操作错误,请重新做作!"<<endl;
}
}
}
else
{
cout<<"密码错误,系统将自动关闭!"<<endl;
exit(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -