职工工资管理系统程序中新增临时员工的功能
这个职工工资管理系统基本功能都十分完善,代码也都比较简洁,运行效率也很高,没有什么直接能改的功能,所以我基于现在许多大学生找兼职、临时工的现象,增添了临时员工的工资系统,可以方便公司、企业等更加完善公司的财务系统。也方便公司为临时员工发放工资。
代码段一是原来的工资程序系统
代码段二是增添临时员工后的工资系统
代码一、
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
class Staff {
protected:
string number;
string name;
string sex;
string address;
int salary;
static int sum_salary; //总工资
static int sum_member; //总员工人数
public:
Staff();
Staff(string number,string name,string sex,string address,int salary);
void print() {};
void setnumber(string num) {
number=num;
}
void setname(string na) {
name=na;
}
void setsex(string se) {
sex=se;
}
void setaddress(string add) {
address=add;
}
void setsalary(int sa) {
salary=sa;
}
int getsalary();
string getname() {
return name;
}
string getnumber() {
return number;
}
string getsex() {
return sex;
}
string getaddress() {
return address;
}
};
Staff::Staff() {
number="";
name="";
sex="";
address="";
salary=0;
}
Staff::Staff(string number,string name,string sex,string address,int salary) {
this->number = number;
this->name = name;
this->sex = sex;
this->address = address;
this->salary = salary;
}
int Staff::getsalary() {
return salary;
}
class Regular_staff:public Staff {
protected:
int allowance; //岗位津贴
int old_age_pension; //养老金
int Housing_Fund; //住房公积金
int medical_insurance; //医疗保险
int tax;
int r_salary; //实际工资
public:
Regular_staff();
Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med);
void getr_salary(); //计算实发工资
void gettax();
int getreal() {
return r_salary;
}
void setallowance(int all) {
allowance=all;
}
void setold_age_pension(int oap) {
old_age_pension=oap;
}
void setHousing_Fund(int Hou) {
Housing_Fund=Hou;
}
void setmedical_insurance(int med) {
medical_insurance=med;
}
void display() {
cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
cout<<"地址:"<<address<<endl;
cout<<"岗位津贴:"<<allowance<<"\t"<<"养老金:"<<old_age_pension<<endl;
cout<<"住房公积金:"<<Housing_Fund<<"\t"<<"医疗保险:"<<medical_insurance<<endl;
cout<<"本月税后实际工资:"<<r_salary<<endl;
}
int getallowance() {
return allowance;
}
int getold_age_pension() {
return old_age_pension;
}
int getHousing_Fund() {
return Housing_Fund;
}
int getmedical_insurance() {
return medical_insurance;
}
} rs[10000];
Regular_staff::Regular_staff() {
number="";
name="";
sex="";
address="";
salary=0;
allowance=0;
old_age_pension=0;
Housing_Fund=0;
medical_insurance=0;
}
void Regular_staff::gettax() {
this->salary = getsalary();
if (salary<5000) {
tax=0;
}
if (salary>5000&&r_salary<41000) {
tax=(salary-5000)*0.03;
}
if (salary>41000&&r_salary<149000) {
tax=(salary-41000)*0.1+2520;
}
if (salary>149000&&r_salary<305000) {
tax=(salary-149000)*0.2+16920;
}
if (salary>305000&&r_salary<425000) {
tax=(salary-305000)*0.25+31920;
}
if (salary>425000&&r_salary<665000) {
tax=(salary-425000)*0.3+52920;
}
if (salary>665000&&r_salary<965000) {
tax=(salary-665000)*0.35+85920;
}
if (salary>965000) {
tax=(salary-965000)*0.45+181920;
}
}
Regular_staff::Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med) : Staff(num,na ,sex, add ,salary) {
this->allowance = all;
this->old_age_pension = oap;
this->Housing_Fund = Hou;
this->medical_insurance = med;
gettax();
r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;
}
void Regular_staff::getr_salary() {
r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;
}
class Temporary_staff:public Staff {
protected:
int bonus; //奖金
int tax;
int r_salary; //实际工资
public:
Temporary_staff();
Temporary_staff(string num,string na,string sex,string add,int salary,int bo );
void gettax();
int getr_salary();
int getreal() {
return r_salary;
}
void setbonus(int bo) {
bonus=bo;
}
void display() {
cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
cout<<"地址:"<<address<<endl;
cout<<"奖金:"<<bonus<<endl;
cout<<"本月税后实际工资:"<<r_salary<<endl;
}
int getbonus() {
return bonus;
}
} ts[10000];
Temporary_staff::Temporary_staff() {
number="";
name="";
sex="";
address="";
salary=0;
bonus=0;
}
void Temporary_staff::gettax() {
if (salary<5000) {
tax=0;
}
if (salary>5000&&salary<41000) {
tax=(salary-5000)*0.03;
}
if (salary>41000&&salary<149000) {
tax=(salary-41000)*0.1+2520;
}
if (salary>149000&&salary<305000) {
tax=(salary-149000)*0.2+16920;
}
if (salary>305000&&salary<425000) {
tax=(salary-305000)*0.25+31920;
}
if (salary>425000&&salary<665000) {
tax=(salary-425000)*0.3+52920;
}
if (salary>665000&&salary<965000) {
tax=(salary-665000)*0.35+85920;
}
if (salary>965000) {
tax=(salary-965000)*0.45+181920;
}
}
Temporary_staff::Temporary_staff(string num,string na,string sex,string add,int salary,int bo ) : Staff(num ,na ,sex, add ,salary) {
this->bonus = bo;
gettax();
r_salary =salary + bonus - tax; //计算最终工资
}
void print_Begin() {
printf("\n\t\t 职工工资管理系统\n\n");
printf("**************************************************\n\n");
printf("1 查找员工信息\n\n2 更新员工数据\n\n3 输出员工信息\n\n4 关闭程序\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void loading() {
printf("\n\n\t\tLoading......\n\n\n");
printf(" ");
for (int i = 1; i <= 40; ++i) {
printf(".");
Sleep(50); //延迟输出
}
printf(" ");
}
void cls() { //清屏加修改颜色
system("cls");
system("color 0B");
}
void refresh() {
cls();
print_Begin();
}
int x=0;
void get_rstxt() { //读取员工的数据
fstream f;
f.open("Regular_staff.txt",ios::in);
string num;
string na;
string sex;
string add;
int salary;
int all ;
int oap;
int Hou;
int med;
int i;
for(i=0; !f.eof(); i++) {
f>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
rs[i].setnumber(num);
rs[i].setname(na);
rs[i].setsex(sex);
rs[i].setaddress(add);
rs[i].setsalary(salary);
rs[i].setallowance(all);
rs[i].setold_age_pension(oap);
rs[i].setHousing_Fund(Hou);
rs[i].setmedical_insurance(med);
rs[i].gettax();
rs[i].getr_salary();
}
x=i-1;
f.close();
}
void find_name_r(string n) { //通过员工姓名,查询正式员工的数据
get_rstxt();
for(int i=0; i<=x; i++) {
if(rs[i].getname()==n) {
rs[i].display();
cout<<endl;
break;
}
if(i==x) {
cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
break;
}
}
}
void find_number_r(string m) { //通过编号查找员工
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==m) {
rs[i].display();
cout<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
break;
}
}
}
void find_salary_r(double a,double b) { //工资范围 ,控制 a <= b 员工
int num=0;
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getreal()>=a&&rs[i].getreal()<=b) {
rs[i].display();
cout<<endl;
num++;
}
if(i==x-1&&num==0) {
cout<<"抱歉,未查询到相应员工,请核实员工信息!"<<endl;
break;
}
}
}
void modify_new_r() { //新增员工信息
string num;
string na;
string sex;
string add;
int salary;
int all ;
int oap;
int Hou;
int med;
cout<<"\n\n请输入新员工的编号、姓名、性别、家庭地址、基础工资、岗位津贴、养老金、住房公积金、医疗保险\n\n";
cin>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==num) {
cout<<"\n编号重复!请核实员工信息!";
break;
}
if(i==x-1) {
fstream f;
f.open("Regular_staff.txt",ios::out|ios::app);
f<<num<<" "<<na<<" "<<sex<<" "<<add<<" "<<salary<<" "<<all<<" "<<oap<<" "<<Hou<<" "<<med<<" ";
f.close();
cout<<"已将"<<na<<"加入系统名单!";
}
}
}
void modify_address_r(string num) { // 地址
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==num) {
cout<<"已找到该员工,请输入该员工新的家庭住址;"<<endl;
string new_address;
cin>>new_address;
rs[i].setaddress(new_address);
cout<<"修改成功!!"<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
break;
}
}
fstream fc("Regular_staff.txt",ios::trunc);
fc.close();
fstream f;
f.open("Regular_staff.txt",ios::out);
for(int i=0; i<x; i++) {
f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
}
f.close();
}
void modify_salary_r(string num) { //修改工资 清屏 重新输入
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==num) {
cout<<"已找到该员工,请输入该员工新的基础工资;"<<endl;
int new_salary;
cin>>new_salary;
rs[i].setsalary(new_salary);
cout<<"修改成功!!"<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
break;
}
}
fstream fc("Regular_staff.txt",ios::trunc);
fc.close();
fstream f;
f.open("Regular_staff.txt",ios::out);
for(int i=0; i<x; i++) {
f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
}
f.close();
}
void print_num_r() { //打印员工信息
get_rstxt();
for(int i=0; i<x; i++) {
cout<<endl<<"员工编号:"<<rs[i].getnumber()<<" 员工姓名:"<<rs[i].getname()<<endl<<endl;
cout<<"员工地址:"<<rs[i].getaddress()<<endl<<endl;
cout<<"员工性别:"<<rs[i].getsex()<<" 员工税后实际工资:"<<rs[i].getreal()<<endl<<endl;
cout<<"--------------------------------------------------------------------"<<endl;
}
}
void print_num(int type) {
int i,j,o = type;
get_rstxt();
Regular_staff temp_r;
Temporary_staff temp_t;
cout<<"按编号由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
// cout<<"按编号顺序输出:1.员工 2."<<endl<<"请输入:"<<endl;
// cin>>o;
switch(o) {
case 1:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (rs[i].getnumber()>rs[i+1].getnumber()) {
temp_r=rs[i];
rs[i]=rs[i+1];
rs[i+1]=temp_r;
}
}
}
print_num_r();
break;
}
}
void print_sequence(int type) {
int i,j,o = type;
get_rstxt();
Regular_staff temp_r;
Temporary_staff temp_t;
cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
switch(o) {
case 1:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (rs[i].getreal()<rs[i+1].getreal()) {
temp_r=rs[i];
rs[i]=rs[i+1];
rs[i+1]=temp_r;
}
}
}
print_num_r();
break;
}
}
void print_flashback(int type) {
int i,j,o = type;
get_rstxt();
Regular_staff temp_r;
Temporary_staff temp_t;
cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
switch(o) {
case 1:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (rs[i].getreal()>rs[i+1].getreal()) {
temp_r=rs[i];
rs[i]=rs[i+1];
rs[i+1]=temp_r;
}
}
}
print_num_r();
break;
}
}
int type=1;
void print_opt1() {
printf("\n\t\t 1 查找员工信息\n\n");
printf("**************************************************\n\n");
printf("1 职工姓名\n\n2 职工编号\n\n3 工资介于a到b的职工\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void opt1() {
string num1;
while(1) {
cls();
print_opt1();
cin>>num1;
if(num1 == "1") {
cls();
cout <<"请输入员工姓名:"<<endl;
string n;
cin >> n;
cout<<endl;
if(type == 1) {
find_name_r(n);
}
break;
}
if (num1 == "2") {
cls();
cout <<"请输入员工编号:"<<endl;
string n;
cin >> n;
cout<<endl;
if(type == 1) {
find_number_r(n);
}
}
break;
}
if (num1 == "3") {
cls();
cout <<"请输入工资范围(最小值和最大值):"<<endl;
double a,b;
cin >> a >> b;
cout<<endl;
if(a>b) {
double temp;
temp = a;
a = b;
b = temp;
}
if(type == 1) {
find_salary_r(a,b);
}
} else {
printf("\n员工信息输入错误!x_x\n请重试!");
Sleep(1500);
}
}
void print_opt2() {
printf("\n\t\t 2 更新员工数据\n\n");
printf("**************************************************\n\n");
printf("1 新增员工数据\n\n2 修改员工数据\n\n3 返回主界面\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void opt2() {
string num2;
while(1) {
cls();
print_opt2();
cin >> num2;
if(num2=="1") {
cls();
cls();
if(type == 1) {
modify_new_r();
}
break;
}
if (num2 == "2") {
cls();
cls();
printf("\n\n1 修改员工地址\n\n2 修改员工工资\n\n请选择:");
int n;
cin >> n;
cls();
string m;
printf("\n\n请输入员工编号:");
cin>>m;
if(type ==1) {
cls();
if(n ==1) modify_address_r(m);
if(n ==2) modify_salary_r(m);
}
break;
}
if(num2=="3") {
cls();
break;
} else {
cls();
printf("\n输入错误!x_x\n\n请重试\n\n");
Sleep(1500);
continue;
}
}
}
void print_opt3() {
printf("\n\t\t 3 输出员工信息\n\n");
printf("**************************************************\n\n");
printf("1 按工资由高到低输出 \n\n2 按工资由低到高输出\n\n3 按编号输出(低到高)\n\n4 返回主界面\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void opt3() {
string num3;
while(1) {
cls();
print_opt3();
cin >> num3;
if(num3 == "1") {
cls();
cls();
print_sequence(type);
break;
}
if(num3 == "2") {
cls();
cls();
print_flashback(type);
break;
}
if(num3 == "3") {
cls();
cls();
print_num(type);
break;
}
if(num3 == "4") {
cls();
break;
} else {
cls();
cout<<"请输入正确的选项!"<<endl;
Sleep(1500);
continue;
}
}
}
void opt4() {
cls();
printf("\n欢迎下次使用!再见^_^\n\n");
}
void opt_error() {
printf("\n\n输入错误!x_x\n\n请输入正确选项!\n\n");
}
int main() {
system("color 0B");
loading();
cls();
print_Begin();
string opt;
int o;
while(1) {
cin >> opt;
o=atoi(opt.c_str());
switch(o) {
case 1:
opt1();
system("pause");
refresh();
break;
case 2:
opt2();
system("pause");
refresh();
break;
case 3:
opt3();
system("pause");
refresh();
break;
case 4:
opt4();
Sleep(500) ;
return 0;
default:
cls();
opt_error();
system("pause");
refresh();
break;
}
}
}
代码二、
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
class Staff {
protected:
string number;
string name;
string sex;
string address;
int salary;
static int sum_salary; //总工资
static int sum_member; //总员工人数
public:
Staff();
Staff(string number,string name,string sex,string address,int salary);
void print() {};
void setnumber(string num) {
number=num;
}
void setname(string na) {
name=na;
}
void setsex(string se) {
sex=se;
}
void setaddress(string add) {
address=add;
}
void setsalary(int sa) {
salary=sa;
}
int getsalary();
string getname() {
return name;
}
string getnumber() {
return number;
}
string getsex() {
return sex;
}
string getaddress() {
return address;
}
};
Staff::Staff() {
number="";
name="";
sex="";
address="";
salary=0;
}
Staff::Staff(string number,string name,string sex,string address,int salary) {
this->number = number;
this->name = name;
this->sex = sex;
this->address = address;
this->salary = salary;
}
int Staff::getsalary() {
return salary;
}
class Regular_staff:public Staff {
protected:
int allowance; //岗位津贴
int old_age_pension; //养老金
int Housing_Fund; //住房公积金
int medical_insurance; //医疗保险
int tax;
int r_salary; //实际工资
public:
Regular_staff();
Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med);
void getr_salary(); //计算实发工资
void gettax();
int getreal() {
return r_salary;
}
void setallowance(int all) {
allowance=all;
}
void setold_age_pension(int oap) {
old_age_pension=oap;
}
void setHousing_Fund(int Hou) {
Housing_Fund=Hou;
}
void setmedical_insurance(int med) {
medical_insurance=med;
}
void display() {
cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
cout<<"地址:"<<address<<endl;
cout<<"岗位津贴:"<<allowance<<"\t"<<"养老金:"<<old_age_pension<<endl;
cout<<"住房公积金:"<<Housing_Fund<<"\t"<<"医疗保险:"<<medical_insurance<<endl;
cout<<"本月税后实际工资:"<<r_salary<<endl;
}
int getallowance() {
return allowance;
}
int getold_age_pension() {
return old_age_pension;
}
int getHousing_Fund() {
return Housing_Fund;
}
int getmedical_insurance() {
return medical_insurance;
}
} rs[10000];
Regular_staff::Regular_staff() {
number="";
name="";
sex="";
address="";
salary=0;
allowance=0;
old_age_pension=0;
Housing_Fund=0;
medical_insurance=0;
}
void Regular_staff::gettax() {
this->salary = getsalary();
if (salary<5000) {
tax=0;
}
if (salary>5000&&r_salary<41000) {
tax=(salary-5000)*0.03;
}
if (salary>41000&&r_salary<149000) {
tax=(salary-41000)*0.1+2520;
}
if (salary>149000&&r_salary<305000) {
tax=(salary-149000)*0.2+16920;
}
if (salary>305000&&r_salary<425000) {
tax=(salary-305000)*0.25+31920;
}
if (salary>425000&&r_salary<665000) {
tax=(salary-425000)*0.3+52920;
}
if (salary>665000&&r_salary<965000) {
tax=(salary-665000)*0.35+85920;
}
if (salary>965000) {
tax=(salary-965000)*0.45+181920;
}
}
Regular_staff::Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med) : Staff(num,na ,sex, add ,salary) {
this->allowance = all;
this->old_age_pension = oap;
this->Housing_Fund = Hou;
this->medical_insurance = med;
gettax();
r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;
}
void Regular_staff::getr_salary() {
r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;
}
class Temporary_staff:public Staff {
protected:
int bonus; //奖金
int tax;
int r_salary; //实际工资
public:
Temporary_staff();
Temporary_staff(string num,string na,string sex,string add,int salary,int bo );
void gettax();
int getr_salary();
int getreal() {
return r_salary;
}
void setbonus(int bo) {
bonus=bo;
}
void display() {
cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
cout<<"地址:"<<address<<endl;
cout<<"奖金:"<<bonus<<endl;
cout<<"本月税后实际工资:"<<r_salary<<endl;
}
int getbonus() {
return bonus;
}
} ts[10000];
Temporary_staff::Temporary_staff() {
number="";
name="";
sex="";
address="";
salary=0;
bonus=0;
}
void Temporary_staff::gettax() {
if (salary<5000) {
tax=0;
}
if (salary>5000&&salary<41000) {
tax=(salary-5000)*0.03;
}
if (salary>41000&&salary<149000) {
tax=(salary-41000)*0.1+2520;
}
if (salary>149000&&salary<305000) {
tax=(salary-149000)*0.2+16920;
}
if (salary>305000&&salary<425000) {
tax=(salary-305000)*0.25+31920;
}
if (salary>425000&&salary<665000) {
tax=(salary-425000)*0.3+52920;
}
if (salary>665000&&salary<965000) {
tax=(salary-665000)*0.35+85920;
}
if (salary>965000) {
tax=(salary-965000)*0.45+181920;
}
}
Temporary_staff::Temporary_staff(string num,string na,string sex,string add,int salary,int bo ) : Staff(num ,na ,sex, add ,salary) {
this->bonus = bo;
gettax();
r_salary =salary + bonus - tax; //计算最终工资
}
void print_Begin() {
printf("\n\t\t 职工工资管理系统\n\n");
printf("**************************************************\n\n");
printf("1 查找员工信息\n\n2 更新员工数据\n\n3 输出员工信息\n\n4 关闭程序\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void loading() {
printf("\n\n\t\tLoading......\n\n\n");
printf(" ");
for (int i = 1; i <= 40; ++i) {
printf(".");
Sleep(50); //延迟输出
}
printf(" ");
}
void cls() { //清屏加修改颜色
system("cls");
system("color 0B");
}
void refresh() {
cls();
print_Begin();
}
int x=0;
void get_rstxt() { //读取正式员工的数据
fstream f;
f.open("Regular_staff.txt",ios::in);
string num;
string na;
string sex;
string add;
int salary;
int all ;
int oap;
int Hou;
int med;
int i;
for(i=0; !f.eof(); i++) {
f>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
rs[i].setnumber(num);
rs[i].setname(na);
rs[i].setsex(sex);
rs[i].setaddress(add);
rs[i].setsalary(salary);
rs[i].setallowance(all);
rs[i].setold_age_pension(oap);
rs[i].setHousing_Fund(Hou);
rs[i].setmedical_insurance(med);
rs[i].gettax();
rs[i].getr_salary();
}
x=i-1;
f.close();
}
void get_tstxt() { //读取临时员工的数据
fstream f;
f.open("Temporary_staff.txt",ios::in);
string num;
string na;
string sex;
string add;
int salary;
int bo;
int i;
for(i=0; f.eof(); i++) {
f>>num>>na>>sex>>add>>salary>>bo;
ts[i].setnumber(num);
ts[i].setname(na);
ts[i].setsex(sex);
ts[i].setaddress(add);
ts[i].setsalary(salary);
ts[i].setbonus(bo);
}
x=i-1;
f.close();
}
void find_name_r(string n) { //通过员工姓名,查询正式员工的数据
get_rstxt();
for(int i=0; i<=x; i++) {
if(rs[i].getname()==n) {
rs[i].display();
cout<<endl;
break;
}
if(i==x) {
cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
break;
}
}
}
void find_name_t(string n) { //通过员工姓名,查询临时员工的数据
get_tstxt();
for(int i=0; i<x; i++) {
if(ts[i].getname()==n) {
ts[i].display();
cout<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
break;
}
}
}
void find_number_r(string m) { //通过编号查找 正式 员工
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==m) {
rs[i].display();
cout<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
break;
}
}
}
void find_number_t(string m) { //通过编号查找 临时 员工
get_tstxt();
for(int i=0; i<x; i++) {
if(ts[i].getnumber()==m) {
ts[i].display();
cout<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
break;
}
}
}
void find_salary_r(double a,double b) { //工资范围 ,控制 a <= b 正式员工
int num=0;
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getreal()>=a&&rs[i].getreal()<=b) {
rs[i].display();
cout<<endl;
num++;
}
if(i==x-1&&num==0) {
cout<<"抱歉,未查询到相应员工,请核实员工信息!"<<endl;
break;
}
}
}
void find_salary_t(double a,double b) { //工资范围 , 同上
int num=0;
get_tstxt();
for(int i=0; i<x; i++) {
if(ts[i].getreal()>=a&&ts[i].getreal()<=b) {
ts[i].display();
cout<<endl;
num++;
}
if(i==x-1&&num==0) {
cout<<"抱歉,未查询到相应员工,请核实员工信息!"<<endl;
break;
}
}
}
void modify_new_r() { //新增员工信息
string num;
string na;
string sex;
string add;
int salary;
int all ;
int oap;
int Hou;
int med;
cout<<"\n\n请输入新正式员工的编号、姓名、性别、家庭地址、基础工资、岗位津贴、养老金、住房公积金、医疗保险\n\n";
cin>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==num) {
cout<<"\n编号重复!请核实员工信息!";
break;
}
if(i==x-1) {
fstream f;
f.open("Regular_staff.txt",ios::out|ios::app);
f<<num<<" "<<na<<" "<<sex<<" "<<add<<" "<<salary<<" "<<all<<" "<<oap<<" "<<Hou<<" "<<med<<" ";
f.close();
cout<<"已将"<<na<<"加入系统名单!";
}
}
}
void modify_new_t() {
string num;
string na;
string sex;
string add;
int salary;
int bo;
cout<<"请输入新临时员工的编号、姓名、性别、家庭地址、基础工资、奖金";
cin>>num>>na>>sex>>add>>salary>>bo;
get_tstxt();
for(int i=0; i<x; i++) {
if(ts[i].getnumber()==num) {
cout<<"\n编号重复!请核实员工信息!";
break;
}
if(i==x-1) {
fstream f;
f.open("Temporary_staff.txt",ios::out|ios::app) ;
f<<num<<" "<<na<<" "<<sex<<" "<<add<<" "<<salary<<" "<<bo<<" ";
f.close();
cout<<"已将"<<na<<"加入系统名单!";
}
}
}
void modify_address_r(string num) { //正式 地址
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==num) {
cout<<"已找到该员工,请输入该员工新的家庭住址;"<<endl;
string new_address;
cin>>new_address;
rs[i].setaddress(new_address);
cout<<"修改成功!!"<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
break;
}
}
fstream fc("Regular_staff.txt",ios::trunc);
fc.close();
fstream f;
f.open("Regular_staff.txt",ios::out);
for(int i=0; i<x; i++) {
f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
}
f.close();
}
void modify_address_t(string num) {
get_tstxt();
for(int i=0; i<x; i++) {
if(ts[i].getnumber()==num) {
cout<<"已找到该员工,请输入该员工新的家庭住址;"<<endl;
string new_address;
cin>>new_address;
ts[i].setaddress(new_address);
cout<<"修改成功!!"<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
break;
}
}
fstream fc("Temporary_staff.txt",ios::trunc);
fc.close();
fstream f;
f.open("Temporary_staff.txt",ios::out);
for(int i=0; i<x; i++) {
f<<ts[i].getnumber()<<" "<<ts[i].getname()<<" "<<ts[i].getsex()<<" "<<ts[i].getaddress()<<" "<<ts[i].getsalary()<<" "<<ts[i].getbonus()<<" ";
}
f.close();
}
void modify_salary_r(string num) { //修改工资 清屏 重新输入 正式
get_rstxt();
for(int i=0; i<x; i++) {
if(rs[i].getnumber()==num) {
cout<<"已找到该员工,请输入该员工新的基础工资;"<<endl;
int new_salary;
cin>>new_salary;
rs[i].setsalary(new_salary);
cout<<"修改成功!!"<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
break;
}
}
fstream fc("Regular_staff.txt",ios::trunc);
fc.close();
fstream f;
f.open("Regular_staff.txt",ios::out);
for(int i=0; i<x; i++) {
f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
}
f.close();
}
void modify_salary_t(string num) {
get_tstxt();
for(int i=0; i<x; i++) {
if(ts[i].getnumber()==num) {
cout<<"已找到该员工,请输入该员工新的基础工资;"<<endl;
int new_salary;
cin>>new_salary;
ts[i].setsalary(new_salary);
cout<<"修改成功!!"<<endl;
break;
}
if(i==x-1) {
cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
break;
}
}
fstream fc("Temporary_staff.txt",ios::trunc);
fc.close();
fstream f;
f.open("Temporary_staff.txt",ios::out);
for(int i=0; i<x; i++) {
f<<ts[i].getnumber()<<" "<<ts[i].getname()<<" "<<ts[i].getsex()<<" "<<ts[i].getaddress()<<" "<<ts[i].getsalary()<<" "<<ts[i].getbonus()<<" ";
}
f.close();
}
void print_num_r() { //打印员工信息 正式
get_rstxt();
for(int i=0; i<x; i++) {
cout<<endl<<"员工编号:"<<rs[i].getnumber()<<" 员工姓名:"<<rs[i].getname()<<endl<<endl;
cout<<"员工地址:"<<rs[i].getaddress()<<endl<<endl;
cout<<"员工性别:"<<rs[i].getsex()<<" 员工税后实际工资:"<<rs[i].getreal()<<endl<<endl;
cout<<"--------------------------------------------------------------------"<<endl;
}
}
void print_num_t() {
get_tstxt();
for(int i=0; i<x; i++) {
cout<<endl<<"员工编号:"<<ts[i].getnumber()<<" 员工姓名:"<<ts[i].getname()<<endl<<endl;
cout<<"员工地址:"<<ts[i].getaddress()<<endl<<endl;
cout<<"员工性别:"<<ts[i].getsex()<<" 员工税后实际工资:"<<ts[i].getreal()<<endl<<endl;
cout<<"--------------------------------------------------------------------"<<endl;
}
}
void print_num(int type) {
int i,j,o = type;
get_rstxt();
get_tstxt();
Regular_staff temp_r;
Temporary_staff temp_t;
cout<<"按编号由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
// cout<<"按编号顺序输出:1.正式员工 2.临时员工"<<endl<<"请输入:"<<endl;
// cin>>o;
switch(o) {
case 1:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (rs[i].getnumber()>rs[i+1].getnumber()) {
temp_r=rs[i];
rs[i]=rs[i+1];
rs[i+1]=temp_r;
}
}
}
print_num_r();
break;
case 2:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (ts[i].getnumber()>ts[i+1].getnumber()) {
temp_t=ts[i];
ts[i]=ts[i+1];
ts[i+1]=temp_t;
}
}
}
print_num_t();
break;
}
}
void print_sequence(int type) {
int i,j,o = type;
get_rstxt();
get_tstxt();
Regular_staff temp_r;
Temporary_staff temp_t;
cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
// cout<<"按工资由高到低输出:1.固定员工 2.临时员工"<<endl<<"请输入:"<<endl;
// cin>>o;
switch(o) {
case 1:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (rs[i].getreal()<rs[i+1].getreal()) {
temp_r=rs[i];
rs[i]=rs[i+1];
rs[i+1]=temp_r;
}
}
}
print_num_r();
break;
case 2:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (ts[i].getreal()<ts[i+1].getreal()) {
temp_t=ts[i];
ts[i]=ts[i+1];
ts[i+1]=temp_t;
}
}
}
print_num_t();
break;
}
}
void print_flashback(int type) {
int i,j,o = type;
get_rstxt();
get_tstxt();
Regular_staff temp_r;
Temporary_staff temp_t;
cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
// cout<<"按工资由低到高输出:1.固定员工 2.临时员工"<<endl<<"请输入:"<<endl;
// cin>>o;
switch(o) {
case 1:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (rs[i].getreal()>rs[i+1].getreal()) {
temp_r=rs[i];
rs[i]=rs[i+1];
rs[i+1]=temp_r;
}
}
}
print_num_r();
break;
case 2:
for (j=0; j<x; j++) {
for (i=0; i<x-j; i++) {
if (ts[i].getreal()>ts[i+1].getreal()) {
temp_t=ts[i];
ts[i]=ts[i+1];
ts[i+1]=temp_t;
}
}
}
print_num_t();
break;
}
}
int type;
void charge_type() {
while(1) {
cls();
printf("请选择职工类型\n\n1 正式职工\n\n2 临时职工\n\n"); //输入职工类型
cin >>type;
if(type != 1 && type !=2) { //判断类型是否输入合法
cls();
printf("\n职工类型输入错误!x_x\n请重试!");
Sleep(1500);
continue;
} else break;
}
}
void print_opt1() {
printf("\n\t\t 1 查找员工信息\n\n");
printf("**************************************************\n\n");
printf("1 职工姓名\n\n2 职工编号\n\n3 工资介于a到b的职工\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void opt1() {
string num1;
while(1) {
cls();
print_opt1();
cin>>num1;
if(num1 == "1") {
charge_type();
cls();
cout <<"请输入员工姓名:"<<endl;
string n;
cin >> n;
cout<<endl;
if(type == 1) {
find_name_r(n);
} else if(type == 2) {
find_name_t(n);
}
break;
}
if (num1 == "2") {
charge_type();
cls();
cout <<"请输入员工编号:"<<endl;
string n;
cin >> n;
cout<<endl;
if(type == 1) {
find_number_r(n);
} else if(type == 2) {
find_number_t(n);
}
break;
}
if (num1 == "3") {
charge_type();
cls();
cout <<"请输入工资范围(最小值和最大值):"<<endl;
double a,b;
cin >> a >> b;
cout<<endl;
if(a>b) {
double temp;
temp = a;
a = b;
b = temp;
}
if(type == 1) {
find_salary_r(a,b);
} else if(type == 2) {
find_salary_t(a,b);
}
break;
} else {
printf("\n员工信息输入错误!x_x\n请重试!");
Sleep(1500);
continue;
}
}
}
void print_opt2() {
printf("\n\t\t 2 更新员工数据\n\n");
printf("**************************************************\n\n");
printf("1 新增员工数据\n\n2 修改员工数据\n\n3 返回主界面\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void opt2() {
string num2;
while(1) {
cls();
print_opt2();
cin >> num2;
if(num2=="1") {
cls();
charge_type();
cls();
if(type == 1) {
modify_new_r();
}
if(type == 2) {
modify_new_t();
}
break;
}
if (num2 == "2") {
cls();
charge_type();
cls();
printf("\n\n1 修改员工地址\n\n2 修改员工工资\n\n请选择:");
int n;
cin >> n;
cls();
string m;
printf("\n\n请输入员工编号:");
cin>>m;
if(type ==1) {
cls();
if(n ==1) modify_address_r(m);
if(n ==2) modify_salary_r(m);
}
if(type ==2) {
cls();
if(n ==1) modify_address_t(m);
if(n ==2) modify_salary_t(m);
}
break;
}
if(num2=="3") {
cls();
break;
} else {
cls();
printf("\n输入错误!x_x\n\n请重试\n\n");
Sleep(1500);
continue;
}
}
}
void print_opt3() {
printf("\n\t\t 3 输出员工信息\n\n");
printf("**************************************************\n\n");
printf("1 按工资由高到低输出 \n\n2 按工资由低到高输出\n\n3 按编号输出(低到高)\n\n4 返回主界面\n\n");
printf("**************************************************\n\n");
printf("请选择:");
}
void opt3() {
string num3;
while(1) {
cls();
print_opt3();
cin >> num3;
if(num3 == "1") {
cls();
charge_type();
cls();
print_sequence(type);
break;
}
if(num3 == "2") {
cls();
charge_type();
cls();
print_flashback(type);
break;
}
if(num3 == "3") {
cls();
charge_type();
cls();
print_num(type);
break;
}
if(num3 == "4") {
cls();
break;
} else {
cls();
cout<<"请输入正确的选项!"<<endl;
Sleep(1500);
continue;
}
}
}
void opt4() {
cls();
printf("\n欢迎下次使用!再见^_^\n\n");
}
void opt_error() {
printf("\n\n输入错误!x_x\n\n请输入正确选项!\n\n");
}
int main() {
system("color 0B");
loading();
cls();
print_Begin();
string opt;
int o;
while(1) {
cin >> opt;
o=atoi(opt.c_str());
switch(o) {
case 1:
opt1();
system("pause");
refresh();
break;
case 2:
opt2();
system("pause");
refresh();
break;
case 3:
opt3();
system("pause");
refresh();
break;
case 4:
opt4();
Sleep(500) ;
return 0;
default:
cls();
opt_error();
system("pause");
refresh();
break;
}
}
}