#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>
using namespace std;
class staff //職工資訊類定義
{
protected:
char name[10]; //職工姓名
int salary; //職工工資
public:
char *getname()
{return name;}
int getsalary()
{return salary;}
};
class jsjl:public staff //技術經理
{
protected:
int level; //業務等級
public:
int getlevel()
{return level;}
void input1() //錄入技術經理資訊
{
cout<<"技術經理姓名:";
cin>>name;
cout<<"業務等級:";
cin>>level;
salary=5000+1000*level;
cout<<salary<<'\n';
}
};
class xsjl:public staff //銷售經理
{
protected:
int profit; //總經額
public:
int getprofit()
{return profit;}
void input2() //錄入銷售經理資訊
{
cout<<"銷售經理姓名:";
cin>>name;
cout<<"總經額:";
cin>>profit;
salary=5000+(profit*3)/1000;
cout<<salary<<'\n';
}
};
class jsry:public staff //技術人員
{
protected:
int time; //作業時間
public:
int gettime()
{return time;}
void input3() //錄入技術人員資訊
{
cout<<"技術人員姓名:";
cin>>name;
cout<<"作業時間:";
cin>>time;
salary=40*time;
cout<<salary<<'\n';
}
};
class xsry:public staff //銷售人員
{
protected:
int sale; //銷售總量
public:
int getsale()
{return sale;}
void input4() //錄入銷售人員資訊
{
cout<<"銷售人員姓名:";
cin>>name;
cout<<"銷售總量:";
cin>>sale;
salary=(5*sale)/100;
cout<<salary<<'\n';
}
};
class wm:public staff //文秘
{
protected:
int sale; //獎金
public:
int getsale()
{return sale;}
void input5() //錄入文秘資訊
{
cout<<"文秘姓名:";
cin>>name;
cout<<"獎金:";
cin>>sale;
salary=4000+sale;
cout<<salary<<'\n';
}
};
jsjl a[2];
xsjl b[2];
jsry c[6];
xsry d[6];
wm e[4];
void use(); //使用介紹
void input(); //錄入職工資訊函式宣告
void show(); //顯示職工資訊函式宣告
void save(); //存檔
void getsave(); //打開存檔
void account(); //計算當月公司總工資
int main()
{
int select;
while(1)
{
system("cls");
cout<<"\t ******************歡迎使用******************\n";
cout<<"\t ****************工資管理系統****************\n";
cout<<"\t *__________________________________________*\n";
cout<<"\t *1使用介紹 *\n";
cout<<"\t *2錄入職工資訊 *\n";
cout<<"\t *3顯示職工資訊 *\n";
cout<<"\t *4存檔 *\n";
cout<<"\t *5打開存檔 *\n";
cout<<"\t *6退出 *\n";
cout<<"\t *__________________________________________*\n";
cout<<"\t 你要輸入的編號是(1--6):";
cin>>select;
if(select==0) break;
switch(select){
case 1:
system("cls");
use(); //使用介紹
system("pause");
break;
case 2:
system("cls");
input(); //錄入職員資訊
system("pause");
break;
case 3:
system("cls");
show(); //呼叫show函式查詢職工資訊
system("pause");
break;
case 4:
system("cls");
save(); //呼叫save函式保存職工資訊
system("pause");
break;
case 5:
system("cls");
getsave(); // 呼叫del函式洗掉職工資訊
system("pause");
break;
default:
system("cls");
cout<<"沒有此選項,請重新選擇!"<<endl;
}
}
return 0;
}
void input() //錄入職工資訊的函式
{
for(int i=0;i<2;i++)a[i].input1();
for(i=0;i<2;i++)b[i].input2();
for(i=0;i<6;i++)c[i].input3();
for(i=0;i<6;i++)d[i].input4();
for(i=0;i<4;i++) e[i].input5();
account();
}
void show() //顯示所有職工資訊函式
{
cout<<left;//設定輸出左對齊
cout<<setw(20)<<"技術經理姓名"<<setw(20)<<"業績等級"<<setw(12)<<"當月工資"<<'\n';
for(int j=0;j<2;j++)
{
cout<<setw(20)<<a[j].getname()<<setw(20)<<a[j].getlevel()<<setw(12)<<a[j].getsalary()<<'\n';
}
cout<<'\n';
cout<<setw(20)<<"銷售經理姓名"<<setw(20)<<"總經額"<<setw(12)<<"當月工資"<<'\n';
for(int n=0;n<2;n++)
{
cout<<setw(20)<<b[n].getname()<<setw(20)<<b[n].getprofit()<<setw(12)<<b[n].getsalary()<<'\n';
}
cout<<'\n';
cout<<setw(20)<<"技術人員姓名"<<setw(20)<<"作業時間"<<setw(12)<<"當月工資"<<'\n';
for(int k=0;k<6;k++)
{
cout<<setw(20)<<c[k].getname()<<setw(20)<<c[k].gettime()<<setw(12)<<c[k].getsalary()<<'\n';
}
cout<<'\n';
cout<<setw(20)<<"銷售人員姓名"<<setw(20)<<"銷售總量"<<setw(12)<<"當月工資"<<'\n';
for(int s=0;s<6;s++)
{
cout<<setw(20)<<d[s].getname()<<setw(20)<<d[s].getsale()<<setw(12)<<d[s].getsalary()<<'\n';
}
cout<<'\n';
cout<<setw(20)<<"文秘姓名:"<<setw(20)<<"獎金:"<<setw(12)<<"當月工資:"<<'\n';
for(int m=0;m<4;m++)
{
cout<<setw(20)<<e[m].getname()<<setw(20)<<e[m].getsale()<<setw(12)<<e[m].getsalary()<<'\n';
}
cout<<'\n';
account();
}
void use()
{
cout<<"該公司有技術經理2名、銷售經理2名、技術人員6名、銷售人員6名和文秘4名,共20名職工。錄入職工資訊時需要逐一全部錄入。錄入相關業績即可顯示其當月工資。只有當存檔以后才能打開存檔。只要存檔過,以后每次打開此系統都可以打開存檔。"<<'\n';
}
void save()
{
ofstream outfile("data.txt",ios::out);
if(!outfile)

{
cout<<"不能打開目的檔案:"<<'\n';
exit(1);
}
cout<<"存檔中......"<<'\n';
outfile<<"----------------------------------------------------------------------------------------"<<'\n';
outfile<<"***技術經理的資料統計***"<<'\n';
outfile<<setw(10)<<"技術經理姓名"<<setw(10)<<"業績等級"<<setw(10)<<"當月工資"<<'\n';
for(int i=0;i<2;i++)
{
outfile<<a[i].getname()<<setw(10)<<a[i].getlevel()<<setw(10)<<a[i].getsalary()<<'\n';
}
outfile<<"---------------------------------------------------------------------------------------"<<'\n';
outfile<<"***銷售經理的資料統計***"<<'\n';
outfile<<setw(10)<<"銷售經理姓名"<<setw(10)<<"總經額"<<setw(10)<<"當月工資"<<'\n';
for(int j=0;j<2;j++)
{
outfile<<setw(10)<<b[j].getname()<<setw(10)<<b[j].getprofit()<<setw(10)<<b[j].getsalary()<<'\n';
}
outfile<<"---------------------------------------------------------------------------------------"<<'\n';
outfile<<"***技術人員的資料統計***"<<'\n';
outfile<<"技術人員姓名:"<<setw(10)<<"作業時間:"<<setw(10)<<"當月工資"<<setw(10)<<'\n';
for(int k=0;i<6;k++)
{
outfile<<setw(10)<<c[k].getname()<<setw(10)<<c[k].gettime()<<setw(10)<<c[k].getsalary()<<'\n';
}
outfile<<"---------------------------------------------------------------------------------------"<<'\n';
outfile<<"***銷售人員的資料統計***"<<'\n';
outfile<<setw(10)<<"銷售人員姓名"<<setw(10)<<"銷售總量"<<setw(10)<<"當月工資"<<'\n';
for(j=0;j<6;j++)
{
outfile<<setw(10)<<d[j].getname()<<setw(10)<<d[j].getsale()<<setw(10)<<d[j].getsalary()<<'\n';
}
outfile<<"---------------------------------------------------------------------------------------"<<'\n';
outfile<<"***文秘的資料統計***"<<'\n';
outfile<<setw(10)<<"文秘姓名"<<setw(10)<<"獎金"<<setw(10)<<"當月工資"<<'\n';
for(j=0;j<4;j++)
{
outfile<<setw(10)<<e[j].getname()<<setw(10)<<e[j].getsale()<<setw(10)<<e[j].getsalary()<<'\n';
}
outfile.close();//關閉磁盤檔案“data.txt”
cout<<"存檔完畢!"<<'\n';
}//向磁盤檔案“data.txt”輸出資料
void getsave()
{
char *filename;
cout<<"自己完善洗掉函式"<<endl;
}
void account()
{
int allsalary=0;
for(int i=0;i<2;i++)
allsalary+=a[i].getsalary();
for(int j=0;j<2;j++)
allsalary+=b[j].getsalary();
for(int k=0;k<6;k++)
allsalary+=c[k].getsalary();
for(int m=0;m<6;m++)
allsalary+=d[m].getsalary();
for(int n=0;n<4;n++)
allsalary+=e[n].getsalary();
cout<<'\n'<<"\t公司當月總工資(元):"<<allsalary<<'\n';
}
uj5u.com熱心網友回復:
字符集問題,在windows,控制臺使用按GBK字符集輸出,VS的創建控制臺專案默認多位元組字符應該也就是GBK,源檔案的保存和編譯也是按多位元組字符集處理,一般寫在原始碼里的中文都能正常顯示出來。問題出在字符資料保存到文本檔案中,反正不知道是系統還是編譯器,默認處理都是存為utf8字符集,再從文本檔案讀取出來已經是utf8的字符集。不經過處理控制臺默認按GBK輸出當然顯示不正常。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/43691.html
標籤:基礎類
上一篇:佇列
下一篇:MFC TAB標簽顯示問題
