




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、題目:職工信息系統功能包括:l 建立職工信息數據(職工編號,姓名,性別,年齡,電話,職務,工資和家庭成員信息)和信息簡表(編號,姓名,電話)l 根據職工編號查詢職工信息(查詢時需要身份確認。單位領導和人事秘書可以看到職工所有信息;財務處人員可以看到職工編號,姓名,性別,年齡,電話,工資;一般職工僅能查到信息簡表)l 增加新職工信息(由人事秘書完成,需要身份確認)l 刪除職工信息(由人事秘書完成,需要身份確認)l 修改職工工資(由財務處人員完成,需要身份確認)l 要求所有信息能夠存儲在文件中,并具有良好的用戶界面#include#include#include#includeusing name
2、space std;const char * file = staff.dat;const int LIM =8;int ct=0;int Admin;int na; /ct用來儲存文件中數據組數,Admin用來儲存登陸后該用戶的權限, /na用來儲存登錄所輸的編號,方便主菜單內使用其顯示當前用戶void hline(int);inline void eatline()while(cin.get()!=n) continue;class staff/*職工編號,姓名,性別,年齡,職務,電話,工資和家庭成員信息*/public:int num;char nameLIM,sex3;int age;
3、char job10,phone15;double wages;char home20;int admin;void printf();void printf1();void printf2();void printf3();void staff:printf() /輸出的選擇,判斷其職務,選擇調用哪個輸出if(Admin=1|Admin=2)printf1();elseif(Admin=3)printf2();elseprintf3();void staff:printf1() /領導及人事秘書能見的輸出coutleft;hline(1);coutsetw(6)numsetw(LIM)nam
4、esetw(6)sexsetw(6)agesetw(10)jobsetw(15)phonesetw(8)wagessetw(20)homeendl;void staff:printf2() /財務人員能見的輸出coutleft;hline(2);coutsetw(6)numsetw(LIM)namesetw(6)sexsetw(6)agesetw(15)phonesetw(8)wagesendl;void staff:printf3() /普通員工能見的輸出coutleft;hline(3);coutsetw(6)numsetw(LIM)namesetw(15)phoneendl;void h
5、line(int n) /輸出信息的頭部switch(n)case 1:coutleft;coutsetw(6)編號setw(LIM)姓名setw(6)性別setw(6)年齡setw(10)職務setw(15)電話號碼setw(8)工資setw(20)家庭信息endl; ;break;case 2:coutleft;coutsetw(6)編號setw(LIM)姓名setw(6)性別setw(6)年齡setw(15)電話號碼setw(8)工資endl; ;break;case 3:coutleft;coutsetw(6)編號setw(LIM)姓名setw(15)電話號碼endl; ;break;
6、void menu() /主菜單coutt職工編號: naendl;coutt如需更改身份登錄請關閉重新打開程序endl;couttendl;coutt*職工信息管理系統*endl;coutt*endl;coutt*1-職工信息查詢*endl;coutt*2-增加新職工信息*endl;coutt*3-刪除職工信息*endl;coutt*4-修改職工工資*endl;coutt*5-退出系統*endl;couttendl;void menu2() /二級菜單couttendl;coutt*1-職工編號查詢*endl;coutt*2-職工姓名查詢*endl;coutt*3-全部職工查詢*endl;c
7、outtendl;void loading() /登陸的實現部分couttendl;coutt*登錄程序:*endl;coutt*請輸入你的職工編號:*endl;couttna)cin.clear(); while(cin.get()!=n)continue;cout輸入有誤,編號為一串數字,請重新輸入:n;fstream find;find.open(file,ios_base:in|ios_base:out|ios_base:binary);eatline();staff stu;for(int i=1;i=ct;i+)streampos place =(i-1) * sizeof stu
8、;find.seekp(place);if (find.fail() cerr 查找出錯!程序將退出!n; system(pause); exit(EXIT_FAILURE);find.read(char *) &stu, sizeof stu);if(stu.num=na)w=1;Admin=stu.admin;if(w=0)coutt*登錄失敗!未找到相應的信息!程序將退出*endl;exit(EXIT_FAILURE);find.close();couttendl;coutt*=登錄成功=*endl;coutt*歡迎進入職工信息管理系統*endl;couttendl;system(pau
9、se);system(cls);int stu_num() /計算數據組數staff stu;ifstream stunum;stunum.open(file,ios_base:in|ios_base:binary);if(stunum.is_open()stunum.seekg(0);while(stunum.read(char *)&stu,sizeof stu)ct+;stunum.close();return ct;void setadmin(staff &stu,char jobs10) /增加職工時根據職務設置權限char job110=總經理;char job210=副總經理;c
10、har job310=人事秘書;char job410=財務人員;if(!strcmp(stu.job,job1)|(!strcmp(stu.job,job2)stu.admin=1;elseif(!strcmp(stu.job,job3)stu.admin=2;elseif(!strcmp(stu.job,job4)stu.admin=3;void add() / 輸入數據的函數,增加職工if(Admin=2)staff stu; ofstream fout(file, ios_base:out | ios_base:app | ios_base:binary); if (!fout.is_
11、open() cerr 不能打開 file 文件:n; exit(EXIT_FAILURE); cout 增加職員信息請輸入職工姓名: (按Enter鍵退出輸入!):n;eatline(); cin.get(, LIM); while (0 != 0) cout stu.num;cout 增加職員信息請輸入職工性別:;eatline();cin.get(stu.sex, 3);cout stu.age; cout 增加職員信息請輸入職工職務:;eatline();cin.get(stu.job, 10); cout 增加職員信息請輸入職工電話:;eatline(
12、); cin.get(stu.phone, 15); cout stu.wages; cout 增加職員信息請輸入職工家庭信息: (按Enter鍵退出輸入!):n;eatline(); cin.get(stu.home, 20);setadmin(stu,stu.job); fout.write(char *) &stu, sizeof stu);cout 增加職員信息請輸入職工姓名: (按Enter鍵退出輸入!):n;eatline();cin.get(,LIM); fout.close();elsecout*無權限,請與人事部秘書聯系*endl;void output()
13、/輸出全部職工信息的函數staff stu;ifstream find;find.open(file,ios_base:in|ios_base:binary);hline(1);while(find.read(char *) &stu,sizeof stu)coutleft;coutsetw(6)stu.numsetw(LIM)setw(6)stu.sexsetw(6)stu.agesetw(10)etw(15)stu.phonesetw(8)stu.wagessetw(20)stu.homeendl;find.close();void change() /修改
14、數據函數if(Admin=3)fstream change; int w=0;staff stu;streampos place;change.open(file,ios_base:in|ios_base:out|ios_base:binary);if(change.eof()change.clear(); /清除EOFcout請輸入你要修改的職員編號:rec;eatline();for(int i=0;ict;i+)place =i* sizeof stu;change.seekg(place);if (change.fail() cerr 查找出錯!程序將退出!n; system(paus
15、e); exit(EXIT_FAILURE);change.read(char *) &stu, sizeof stu);if(stu.num=rec)w=1; cout 你選擇的是:n;stu.printf2();break;if(w=1)cout stu.wages)if(stu.wages100000) cout輸入的工資錯誤!請重新輸入:n; cin.clear();while(cin.get()!=n);continue;break;change.seekp(place); / 回到查找到的地點change.write(char *) &stu, sizeof stu) flush;
16、if (change.fail() cerr -查找失敗!程序將退出-n;system(pause); exit(EXIT_FAILURE);change.close();cout-修改成功!-endl;elsecout-未找到相應編號的職工-endl;elsecout*無權限,請與財務處人員聯系*endl;void del() /刪除指定編號的職工信息if(Admin=2)while(1)eatline();int delnum;coutdelnum;fstream in;in.open(staff.dat,ios_base:in|ios_base:binary);if(!in) cout打
17、開失敗;return;fstream temp;temp.open(temp.dat,ios_base:out|ios_base:binary);staff stu;int q;in.read(char*)&stu,sizeof(stu);while(!in.eof() /將文件內容修改后臨時寸到另一個文件中q=0;if(stu.num=delnum)q=1;if(q=0)temp.write(char*)&stu,sizeof(stu);in.read(char*)&stu,sizeof(stu);in.close();temp.close(); /修改完成,將原文件清空,并將臨時文件內容復
18、制回原文件 temp.open(temp.dat,ios_base:in|ios_base:binary);if(!temp) cout打開失敗;return;ofstream out;out.open(staff.dat,ios_base:out|ios_base:trunc|ios_base:binary);temp.read(char*)&stu,sizeof(stu);while(!temp.eof() /將文件內容修改后臨時寸到另一個文件中out.write(char*)&stu,sizeof(stu);temp.read(char*)&stu,sizeof(stu);/完成復制ou
19、t.close();temp.close(); coutx;if(!(x=y|x=Y)break;elsecout*無權限,請與人事部秘書聯系*a;int na;char snaLIM;fstream find;find.open(file,ios_base:in|ios_base:out|ios_base:binary);eatline();staff stu;switch(a)case 1:cout請輸入職工編號:na;break;case 2:cout請輸入職工姓名:sna;break;case 3:w=1;if(Admin=1|Admin=2)output();else cout*無權
20、限,請與單位領導或人事部秘書聯系*endl; break;default: cout選擇執行的操作錯誤!n; cin.clear();while(cin.get()!=n);continue; for(int i=1;i=ct;i+)streampos place =(i-1) * sizeof stu;find.seekp(place);if (find.fail() cerr 查找出錯!程序將退出!n; system(pause); exit(EXIT_FAILURE);find.read(char *) &stu, sizeof stu);switch(a)case 1:if(stu.n
21、um=na)w=1;stu.printf();break;case 2:if(!strcmp(,sna) w=1; stu.printf(); ;break;case 3:break;default: cout選擇執行的操作錯誤!n; cin.clear();while(cin.get()!=n);continue; if(w=0)cout未找到此人!endl;find.close();coutx;if(!(x=y|x=Y)break;/* 建立職工信息數據(職工編號,姓名,性別,年齡,電話,職務,工資和家庭成員信息)和信息簡表(編號,姓名,電話) 根據職工編號查詢職工信息(查詢時需要身份確認。單位領導和人事秘書可以看到職工所有信息;財務處人員可以看到職工編號,姓名,性別,年齡,電話,工資;一般職工僅能查到信息簡表) 增加新職工信息(由人事秘書完成,需要身份確認) 刪除職工信息(由人事秘書完成,需要身份確認) 修改職工工資(由財務處人員完成,需要身份確認) 要求所有信息能夠存儲在文件中,并具有良好的用戶界面*/int main()system(color 6F);ifstream fin;fin.open(fi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重大自然災害中檔案應急管理機制研究
- 主動脈夾層診斷與護理
- 零售行業代收貨款服務條款協議
- 文化創意產業財產抵押貸款協議
- 菜園種植與城市垃圾分類回收合同
- 茶樓茶藝與茶文化主題酒店合作合同范本
- 車庫租賃與停車場綜合管理合同
- 拆遷安置補償居間服務協議書
- 電視劇拍攝現場制片助理勞務合作協議
- 彩鋼房倉儲物流合作項目承包協議
- 2024年石家莊市市屬國有企業招聘筆試真題
- 2024年廣東“三支一扶”計劃招募筆試真題
- 設備租賃方案(3篇)
- 公關費用標準管理制度
- 2025-2030年中國潔凈室風扇過濾單元行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025至2030中國汽車租賃行業發展分析及發展戰略與市場策略報告
- 2025年煙臺市中考地理試卷真題
- 安徽省合肥市名校2025屆八年級英語第二學期期末統考試題含答案
- 2024年廣東省廣州市初中生物會考真題(含答案)
- 2025年河北省中考麒麟卷生物(一)
- 妊娠期急性脂肪肝臨床管理指南(2022版)解讀
評論
0/150
提交評論