當前位置:編程學習大全網 - 源碼下載 - c源代碼6

c源代碼6

# include & lt字符串& gt

# include & ltiostream & gt

# include & lttime.h & gt

# include & ltvector & gt

使用命名空間std

雇員類//定義雇員類。

{

公共:

員工();//構造函數

虛擬VEmployee();

虛擬void Display()= 0;

int GetAge();//獲取年齡

string GetName();//獲取名稱

受保護:

int Id//員工身份證號

字符串名稱;//員工姓名

char Sex[5];//性別

int工資;//工資

弦生日;//出生日期

字符串工作時間;//工作時間

int Age//年齡

};

工人類:公共雇員//定義工人類。

{

公共:

worker();

虛擬VWorker();

void顯示();

};

班主任:公職人員//定義教師類。

{

公共:

老師();

虛擬VTeacher();

void顯示();

string GetAcademy();

私人:

弦樂學院;

};

員工::員工()

{

}

雇員::雇員()

{

}

int Employee::GetAge()

{

回歸年齡;

}

字符串Employee::GetName()

{

返回名稱;

}

Teacher::Teacher() //添加教師信息

{

cout & lt& lt"請輸入教師的信息:"

cout & lt& lt"員工編號:" < & ltendl

CIN & gt;& gtid;

cout & lt& lt"名稱:"

CIN & gt;& gt姓名;

cout & lt& lt"性別:"

CIN & gt;& gt性;

cout & lt& lt"薪水:"

CIN & gt;& gt工資;

cout & lt& lt"出生日期:(格式xxxx/xx/xx)"

CIN & gt;& gt生日;

cout & lt& lt“工作時間:(格式xxxx/xx/xx)”& lt;& ltendl

CIN & gt;& gt工作時間;

cout & lt& lt"教員:" < & ltendl

CIN & gt;& gt學院;

//從生日中提取出生年份。

int Pos =生日. find _ first _ of('/');

字符串出生年份;

BirthYear.assign(生日,0,Pos);

char chBirthYear[6];

strcpy(chBirthYear,birthday . c _ str());

//獲取當前系統的年份。

char now year[5];

time _ t tnow = time(0);

strftime(NowYear,5," %Y ",local time(& amp;tnow));

age = atoi(now year)-atoi(chBirthYear);//計算年齡

}

教師:VTeacher()

{

}

void teacher::display(){//display()同名函數,輸出教師信息。

cout & lt& lt"員工編號:" < & ltId & lt& ltendl

cout & lt& lt"名稱:"

cout & lt& lt"性別:"

cout & lt& lt"薪水:"

cout & lt& lt"出生日期:"

cout & lt& lt"工作時間:"

cout & lt& lt"年齡:"

}

string Teacher::GetAcademy(){

回歸學院;

}

Worker::Worker() //添加工作者信息

{

cout & lt& lt"請輸入該工人的信息:"

cout & lt& lt"員工編號:" < & ltendl

CIN & gt;& gtid;

cout & lt& lt"名稱:"

CIN & gt;& gt姓名;

cout & lt& lt"性別:"

CIN & gt;& gt性;

cout & lt& lt"薪水:"

CIN & gt;& gt工資;

cout & lt& lt"出生日期:(格式xxxx/xx/xx)"

CIN & gt;& gt生日;

cout & lt& lt“工作時間:(格式xxxx/xx/xx)”& lt;& ltendl

CIN & gt;& gt工作時間;

//從生日中提取出生年份。

int Pos =生日. find _ first _ of('/');

字符串出生年份;

BirthYear.assign(生日,0,Pos);

char chBirthYear[6];

strcpy(chBirthYear,birthday . c _ str());

//獲取當前系統的年份。

char now year[5];

time _ t tnow = time(0);

strftime(NowYear,5," %Y ",local time(& amp;tnow));

age = atoi(now year)-atoi(chBirthYear);//計算年齡

}

Worker::VWorker()

{

}

void worker::display(){//display()同名函數,輸出工作者信息。

cout & lt& lt"員工編號:" < & ltId & lt& ltendl

cout & lt& lt"名稱:"

cout & lt& lt"性別:"

cout & lt& lt"薪水:"

cout & lt& lt"出生日期:"

cout & lt& lt"工作時間:"

cout & lt& lt"年齡:"

}

void add teacher(vector & lt;老師& gt*TeaInfo) //添加教師對象

{

系統("顏色05A ");//設置當前窗口的背景色和前景色。

TeaTemp老師;

(*TeaInfo)。push _ back(tea temp);

}

void AddWoker(vector & lt;工人& gt*WorkerInfo) //添加新的工作對象。

{

系統("顏色05A ");

Worker Wokertmp

(*WorkerInfo)。push _ back(Wokertmp);

}

void DisplayAll(矢量& lt老師& gt*TeaInfo,vector & lt工人& gt*WokerInfo){ //顯示所有員工記錄。

系統("顏色05A ");

cout & lt& lt"所有教師的信息:"

向量& lt老師& gt*叠代器pTeaInfo

for (pTeaInfo=(*TeaInfo)。begin();(*TeaInfo)。empty()!=1。& amppTeaInfo!=(*TeaInfo)。end();PTA info++)//如果到達了向量的末尾,則退出。

{

(*pTeaInfo)。顯示();

cout & lt& ltendl

}

cout & lt& lt"所有工人的信息:"

向量& lt工人& gt*叠代器pWorkerInfo

for (pWorkerInfo=(*WokerInfo)。begin();(*WokerInfo)。empty()!=1。& amppWorkerInfo!=(*WokerInfo)。end();PWorkerInfo++) //如果到達向量的末尾,則退出。

{

(*pWorkerInfo)。顯示();

cout & lt& ltendl

}

cout & lt& lt"按回車鍵返回"

getchar();getchar();

}

void disavgthierage(vector & lt;老師& gt*TeaInfo){ //查詢教師平均年齡。

系統("顏色05A ");

int SumAge = 0;

向量& lt老師& gt*叠代器pTeaInfo

for (pTeaInfo=(*TeaInfo)。begin();(*TeaInfo)。empty()!=1。& amppTeaInfo!=(*TeaInfo)。end();PTA info++)//遍歷教師容器

{//如果到達了向量的末尾,則退出。

SumAge+= (*pTeaInfo)。GetAge();

cout & lt& ltendl

}

if((*TeaInfo)。size()!=0)

cout & lt& lt"教師的平均年齡是"

else cout & lt& lt“沒有記錄”

cout & lt& lt"按回車鍵返回"

getchar();getchar();

}

void disavgworeage(vector & lt;工人& gt*WokerInfo){

系統("顏色05A ");

int SumAge = 0;

向量& lt工人& gt*叠代器pWorkerInfo

for (pWorkerInfo=(*WokerInfo)。begin();(*WokerInfo)。empty()!=1。& amppWorkerInfo!=(*WokerInfo)。end();PWorkerInfo++) //如果到達向量的末尾,則退出。

{

SumAge+= (*pWorkerInfo)。GetAge();

cout & lt& ltendl

}

if((*WokerInfo)。size()!=0)

cout & lt& lt“員工的平均年齡是”

else cout & lt& lt“沒有記錄”

cout & lt& lt"按回車鍵返回"

getchar();getchar();

}

void DelTeacher(向量& lt老師& gt*TeaInfo){ //用於刪除教師信息。

系統("顏色05A ");

bool Hflag = false

字符串SearchName

向量& lt老師& gt*叠代器pTeaInfo

cout & lt& lt"請輸入您要刪除的教師姓名:"

cout & lt& lt”名稱:“;

CIN & gt;& gtSearchName

for(pTeaInfo=(*TeaInfo)。begin();(*TeaInfo)。empty()!= 1。& amppTeaInfo!=(*TeaInfo)。end();PTA info++)//如果到達了向量的末尾,則退出。

{

if(0 = = search name . compare(* ptea info)。getname())//如果找到要刪除的老師的名字,就執行。

{

Hflag = true//找到老師

(*TeaInfo)。erase(pTeaInfo);//刪除vector中指定的老師。

繼續;

}

}

If (false==Hflag) //如果沒有老師,執行。

{

cout & lt& lt“沒有這樣的老師!”& lt& ltendl

}

cout & lt& lt"按回車鍵返回"

getchar();getchar();

}

void del worker(vector & lt;工人& gt*WokerInfo) //用於刪除工人信息。

{

系統("顏色05A ");

bool Hflag = false

字符串SearchName

向量& lt工人& gt*叠代器pWorkerInfo

cout & lt& lt"請輸入您想刪除的工作者的姓名:"

cout & lt& lt”名稱:“;

CIN & gt;& gtSearchName

for(pWorkerInfo=(*WokerInfo)。begin();(*WokerInfo)。empty()!= 1。& amppWorkerInfo!=(*WokerInfo)。end();PWorkerInfo++) //如果到達向量的末尾,則退出。

{

if(0 = = search name . compare(* pworkerinfo)。getname())//如果找到要刪除的worker的名字,就執行它。

{

Hflag = true//查找工人

(*WokerInfo)。erase(pWorkerInfo);//刪除vector中指定的worker。

繼續;

}

}

If (false==Hflag) //如果沒有工作線程,則執行。

{

cout & lt& lt“沒有這樣的老師!”& lt& ltendl

}

cout & lt& lt"按回車鍵返回"

getchar();getchar();

}

void search by name(vector & lt;老師& gt*TeaInfo,vector & lt工人& gt*WokerInfo){ //按姓名查找員工信息。

系統("顏色05A ");

bool Hflag = false

字符串SearchName

向量& lt老師& gt*叠代器pTeaInfo

cout & lt& lt"請輸入您要找的員工的姓名:"

cout & lt& lt”名稱:“;

CIN & gt;& gtSearchName

for(pTeaInfo=(*TeaInfo)。begin();pTeaInfo!=(*TeaInfo)。end();pTeaInfo++)

{

if(0 = = search name . compare(* ptea info)。getname())//如果找到輸入的員工,就會執行。

{

Hflag = true//查找員工

cout & lt& lt“這個人是老師,他的信息是”

(*pTeaInfo)。顯示();//顯示員工信息

繼續;

}

}

向量& lt工人& gt*叠代器pWorkerInfo

for(pWorkerInfo=(*WokerInfo)。begin();pWorkerInfo!=(*WokerInfo)。end();pWorkerInfo++)

{

if(0 = = search name . compare(* pworkerinfo)。getname())//如果找到輸入的員工,就會執行。

{

Hflag = true//查找員工

cout & lt& lt此人是教師,他的個人信息是

(*pWorkerInfo)。顯示();//顯示員工信息

繼續;

}

}

if (false==Hflag)

{

cout & lt& lt“沒有這個員工!”& lt& ltendl//找不到任何信息

}

cout & lt& lt"按回車鍵返回"

getchar();getchar();

}

void DisTeacherByAcademy(vector & lt;老師& gtTeaInfo){ //按部門輸出教師信息。

系統("顏色05A ");

bool Hflag = false

字符串SearchName

向量& lt老師& gt*叠代器pTeaInfo

而((TeaInfo)。empty()!=1) {//輸出指定部門的所有教師。

pTeaInfo=(TeaInfo)。begin();

弦樂學院= (*pTeaInfo)。GetAcademy();

cout & lt& lt"部門:"

for(pTeaInfo=(TeaInfo)。begin();(TeaInfo)。empty()!=1。& amppTeaInfo!=(TeaInfo)。end();){

if(0 = = academy . compare(* pTeaInfo)。GetAcademy()))

{

(*pTeaInfo)。顯示();

cout & lt& ltendl

(TeaInfo)。erase(pTeaInfo);

pTeaInfo=(TeaInfo)。begin();

}

else ptea info++;

}

cout & lt& ltendl

}

cout & lt& lt"按回車鍵返回"

getchar();getchar();

}

void WriteFile(vector & lt;老師& gt*TeaInfo,vector & lt工人& gt*WokerInfo) //生成壹個新文件

{

FILE * fp

if(NULL = =(FP = fopen(" employee . txt "," w+"))

{

cout & lt& lt"打開文件時出錯"

退出(-1);

}

向量& lt工人& gt*叠代器pWorkerInfo

向量& lt老師& gt*叠代器pTeaInfo

for(pTeaInfo=(*TeaInfo)。begin();pTeaInfo!=(*TeaInfo)。end();PTA info++)//將所有教師的信息寫入向量。

{

Fputs("教師信息:\n ",FP);

Fprintf(fp," name:% s \ n ",(* pteainfo)。getname()。c _ str());

Fprintf(fp,"年齡:%d\n ",(*pTeaInfo)。GetAge());

fputs("\n ",FP);

}

Fputs("教師信息結束\n ",FP);

for(pWorkerInfo=(*WokerInfo)。begin();pWorkerInfo!=(*WokerInfo)。end();PWorkerInfo++) //用vector寫出所有老師的信息。

{

Fputs("員工信息:\n ",FP);

Fprintf(fp," name:% s \ n ",(* pworkerinfo)。getname()。c _ str());

Fprintf(fp,"年齡:%d\n ",(*pWorkerInfo)。GetAge());

fputs("\n ",FP);

}

Fputs("員工信息結束\n ",FP);

fclose(FP);

}

Void Mainmenu(){//菜單界面

系統("顏色05A ");//設置當前窗口的背景色和前景色。

cout & lt& lt“╭╭╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮9 & lt;endl

cout & lt& lt“∣請選擇壹個功能∣"<;& ltendl

cout & lt& lt“├――――――――――――――――――――――――――――┤"<;& ltendl

cout & lt& lt"∣ 1.創建和輸入員工數據∣"<;& ltendl

cout & lt& lt"∣ 2.根據條件輸出員工數據∣" < & lt;endl

cout & lt& lt"∣ 3.刪除員工數據∣"endl

cout & lt& lt"0.退出" < & ltendl

cout & lt& lt“╰――――――――――――――――――――――――――――╯"<;& ltendl

cout & lt& lt“―――――――――――――――――――――――――――――――”& lt;& ltendl

cout & lt& lt"請選擇您要提供的類別:";

}

空插入(vector & lt老師& gt*TeaInfo,vector & lt工人& gt*WorkerInfo) //添加員工數據的菜單界面。

{

系統("顏色05A ");//設置當前窗口的背景色和前景色。

int select =-1;

而(選擇!=0)

{

cout & lt& lt“╭╭╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮9 & lt;endl

cout & lt& lt“∣請選擇壹項行動:∣”

cout & lt& lt“├――――――――――――――――――――――――――――┤"<;& ltendl

cout & lt& lt“∣ 1添加壹個教師記錄∣"<;& ltendl

cout & lt& lt《∣ 2添加壹個工人記錄∣》< & lt;endl

cout & lt& lt“∣ 0返回主菜單∣”< & lt;endl

cout & lt& lt“╰――――――――――――――――――――――――――――╯"<;& ltendl

CIN & gt;& gt選擇;

開關(選擇){

案例1:add teacher(TeaInfo);打破;

案例二:AddWoker(worker info);打破;

案例三:main menu();打破;

默認值:

cout & lt& lt“回到主菜單!”& lt& ltendl

}

}

}

無效搜索(vector & lt老師& gt*TeaInfo,vector & lt工人& gt*WorkerInfo) //員工數據查詢菜單界面

{

系統("顏色05A ");//設置當前窗口的背景色和前景色。

int select =-1;

而(選擇!=0)

{

cout & lt& lt“╭╭╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮9 & lt;endl

cout & lt& lt“∣請選擇壹項行動:∣”

cout & lt& lt“├――――――――――――――――――――――――――――┤"<;& ltendl

cout & lt& lt“∣ 1顯示∣"<的所有員工記錄;& ltendl

cout & lt& lt“∣二中按∣系輸出教師信息”< & ltendl

cout & lt& lt“∣ 3號通過∣的名字檢索所有信息”endl

cout & lt& lt《∣ 4中算出∣教師的平均年齡》< & ltendl

cout & lt& lt《∣ 5日計算∣工人平均年齡》< & ltendl

cout & lt& lt“∣ 0返回主菜單∣”< & lt;endl

cout & lt& lt“╰――――――――――――――――――――――――――――╯"<;& ltendl

CIN & gt;& gt選擇;

開關(選擇){

案例1:DisplayAll(TeaInfo,worker info);打破;

案例二:DisTeacherByAcademy(* TeaInfo);打破;

案例三:SearchByName(TeaInfo,worker info);打破;

案例四:disavgthierage(TeaInfo);打破;

案例五:DisAvgWorkerAge(worker info);打破;

案例6:main menu();打破;

默認值:

cout & lt& lt“回到主菜單!”& lt& ltendl

}

}

}

void刪除(vector & lt老師& gt*TeaInfo,vector & lt工人& gt*WorkerInfo) //刪除員工數據

{

系統("顏色05A ");//設置當前窗口的背景色和前景色。

int select =-1;

而(選擇!=0)

{

cout & lt& lt“╭╭╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮9 & lt;endl

cout & lt& lt“∣請選擇壹項行動:∣”

cout & lt& lt“├――――――――――――――――――――――――――――┤"<;& ltendl

cout & lt& lt“∣ 1刪除壹條∣"<教師記錄;& ltendl

cout & lt& lt《∣ 2刪除∣壹名工人的記錄》< & ltendl

cout & lt& lt“∣ 0返回主菜單∣”< & lt;endl

cout & lt& lt“╰――――――――――――――――――――――――――――╯"<;& ltendl

CIN & gt;& gt選擇;

開關(選擇){

案例1:del teacher(TeaInfo);打破;

案例二:del worker(worker info);打破;

案例三:main menu();打破;

默認值:

cout & lt& lt“回到主菜單!”& lt& ltendl

}

}

}

void MainCho(vector & lt;老師& gt*TeaInfo,vector & lt工人& gt*工人信息)

{//主菜單操作

int choice =-1;

而(選擇!=0){

main menu();

CIN & gt;& gt選擇;

開關(選擇){

案例1:Insert(TeaInfo,worker info);打破;

案例二:搜索(TeaInfo,worker info);打破;

情況三:刪除(TeaInfo,worker info);打破;

案例0:破;

默認值:

cout & lt& lt“操作錯誤!”& lt& ltendl

}

}

}

Void main() //主函數

{

向量& lt老師& gtTeaInfo//

向量& lt工人& gtWorkerInfo//

向量& lt老師& gt*叠代器pTeacher//

向量& lt工人& gt*叠代器pWoker//

pte acher = tea info . begin();//

pwo ker = worker info . begin();//

美因喬(& ampTeaInfo。worker info);//調用主處理程序

WriteFile(& amp;TeaInfo。worker info);//保存文件操作

}

  • 上一篇:REPUBLIKA NG PILIPINAS是哪個國家的幣種
  • 下一篇:EasyDarwin怎樣在linux下編譯
  • copyright 2024編程學習大全網