職工工資管理系統程式中新增臨時員工的功能 這個職工工資管理系統基本功能都十分完善,代碼也都比較簡潔,運行效率也很高,沒有什麼直接能改的功能,所以我基於現在許多大學生找兼職、臨時工的現象,增添了臨時員工的工資系統,可以方便公司、企業等更加完善公司的財務系統。也方便公司為臨時員工發放工資。 代碼段一是原 ...
職工工資管理系統程式中新增臨時員工的功能
這個職工工資管理系統基本功能都十分完善,代碼也都比較簡潔,運行效率也很高,沒有什麼直接能改的功能,所以我基於現在許多大學生找兼職、臨時工的現象,增添了臨時員工的工資系統,可以方便公司、企業等更加完善公司的財務系統。也方便公司為臨時員工發放工資。
代碼段一是原來的工資程式系統
代碼段二是增添臨時員工後的工資系統
代碼一、
#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;
}
}
}