版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、this->Save();/職工信息排序功能void Workers:Sort()buffer = NUM;this->Num();if (NUM = 0)cout << "沒有職工信息存入,系統(tǒng)將返回主菜單" << endl;NUM = buffer;return;elsecout << "請選擇排序方式:" << endl;cout << " *" << endl;cout << " * 1.按工號排序(升序) *"
2、 << endl;cout << " * 2.按工號排序(降序) *" << endl;cout << " * 3.按姓名排序(升序) *" << endl;cout << " * 4.按姓名排序(降序) *" << endl;cout << " * 5.按工資排序(升序) *" << endl;cout << " * 6.按工資排序(降序) *" << endl;
3、cout << " * 0.返回主菜單 *" << endl;cout << " *" << endl;cout << endl;cout << "請選擇數(shù)字編號06" << endl;int choice2;cin >> choice2;while (choice2 < 0 | choice2>6)cout << "輸入有誤,請重新輸入:" << endl;cin >>
4、choice2;if (choice2 = 1)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - 1 - i; j+)if (wj.ID.size()>wj + 1.ID.size() | (wj.ID.size() = wj + 1.ID.size() && wj.ID > wj + 1.ID)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工號升序后的信
5、息如下:" << endl;cout << "工號t姓名t性別t學(xué)歷t年齡t地址t電話tt實際收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout <<
6、; 't' << wi.address << 't' << wi.tel << 't'<< wi.pay << endl;else if (choice2 = 2)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - 1 - i; j+)if (wj.ID.size()<wj + 1.ID.size() | (wj.ID.size() = wj + 1.ID.size() &&
7、wj.ID < wj + 1.ID)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工號降序后的信息如下:" << endl;cout << "工號t姓名t性別t學(xué)歷t年齡t地址t電話tt實際收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << <&
8、lt; 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't' << wi.pay << endl;else if (choice2 = 3)int i, j;for (i = 0; i < NUM - 1; i+
9、)for (j = 0; j < NUM - 1 - i; j+)if ( > wj + 1.name)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按姓名升序后的信息如下:" << endl;cout << "工號t姓名t性別t學(xué)歷t年齡t地址t電話tt實際收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID
10、 << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't'<< wi.pay << endl;else if (choice2
11、= 4)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - i - 1; j+)if ( < wj + 1.name)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按姓名降序后的信息如下:" << endl;cout << "工號t姓名t性別t學(xué)歷t年齡t地址t電話tt實際收入" << endl;for
12、 (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't' <
13、;< wi.pay << endl;else if (choice2 = 5)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - i - 1; j+)if (wj.pay > wj + 1.pay)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工資升序后的信息如下:" << endl;cout << "工號t姓名t性別
14、t學(xué)歷t年齡t地址t電話tt實際收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't'
15、; << wi.tel << 't'<< wi.pay << endl;else if (choice2 = 6)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - i - 1; j+)if (wj.pay < wj + 1.pay)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工資降序后的信息如下:" &
16、lt;< endl;cout << "工號t姓名t性別t學(xué)歷t年齡t地址t電話tt實際收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't'
17、; << wi.address << 't' << wi.tel << 't'<< wi.pay << endl;else if (choice2 = 0)return;ofstream fout;fout.open("E:worker.txt", ios_base:ate);if (!fout)cout << "File open error!n"exit(1);cout << "文件正在保存.請稍候!"
18、<< endl;cout << "數(shù)據(jù)保存成功!" << endl;for (int i = 0; i < NUM; i+)fout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;fout << 't' << wi.
19、address << 't' << wi.tel << 't' << wi.salary << 't' << wi.tax << 't' << wi.pay << endl;cout << "系統(tǒng)返回主菜單:" << endl;fout.close();NUM = buffer;/ 職工信息刪除功能void Workers:Delete()if (NUM = 0)cout <
20、< "沒有職工信息輸入,系統(tǒng)將返回主菜單" << endl;return;elseofstream fout, foutp;fout.open("E:worker.txt", ios_base:trunc);if (!fout)cout << "File open error!n"exit(1);SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_NORMAL);foutp.open("E:password.txt"
21、;, ios_base:trunc);if (!foutp)cout << "File open error!n"SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);exit(1);cout << "文件正在保存.請稍候!" << endl;cout << "數(shù)據(jù)保存成功!" << endl;for (int i = 0; i < NUM; i+)fout << wi.I
22、D << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;fout << 't' << wi.address << 't' << wi.tel << 't' << wi.salary << 't' <&
23、lt; wi.tax << 't' << wi.pay << endl;foutp << wi.Pw << endl;this->Showsaved();fout.close();foutp.close();SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);int buffer0 = NUM;this->Num();if (NUM = 0)cout << "沒有職工信息存入,系統(tǒng)將返回主菜單&qu
24、ot; << endl;NUM = buffer0;return;cout << "請輸入需要刪除信息職工的工號:" << endl;string delid;cin >> delid;int k;int flag = 1;while (flag)for (int i=0; i<NUM;i+)if (delid = wi.ID)flag = 0;k = i;break;if (flag)cout << "不存在此員工,請重新輸入:" << endl;cin >> d
25、elid;cout << "你選擇的職工的信息為:" << endl;cout << "工號t姓名t性別t學(xué)歷t年齡t地址t電話tt實際收入" << endl;cout << wk.ID << 't' << << 't' << wk.sex << 't' << << 't' << wk.age;cout &l
26、t;< 't' << wk.address << 't' << wk.tel << 't' << wk.pay << endl;cout << "確認(rèn)請輸入Yt返回主菜單請輸入N " << endl;string p;cin >> p;while (1)if (p = "y" | p = "Y")cout << "員工信息已刪除!" <&
27、lt; endl;for (int i = 0; i < NUM; i+)int j=0;if (wi.ID = delid)j = i;for (; j < NUM; j+)wj = wj + 1;NUM-;ofstream fout,foutp;fout.open("E:worker.txt", ios_base:trunc);if (!fout)cout << "File open error!n"exit(1);SetFileAttributes(L"E:password.txt", FILE_ATTR
28、IBUTE_NORMAL);foutp.open("E:password.txt", ios_base:trunc);if (!foutp)cout << "File open error!n"SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);exit(1);cout << "文件正在保存.請稍候!" << endl;cout << "數(shù)據(jù)保存成功!" << endl
29、;for (int i = 0; i < NUM; i+)fout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;fout << 't' << wi.address << 't' << wi.tel << 't&
30、#39; << wi.salary << 't' << wi.tax << 't' << wi.pay << endl;foutp << wi.Pw << endl;this->Showsaved();cout << "系統(tǒng)返回主菜單:" << endl;fout.close();foutp.close();SetFileAttributes(L"E:password.txt", FILE_ATTR
31、IBUTE_HIDDEN);break;else if (p = "n" | p = "N")NUM = buffer0;return;elsecout << "輸入有誤,請重新輸入:"cin >> p;NUM = buffer0;/職工信息顯示函數(shù)(顯示文件中的內(nèi)容)void Workers:Showsaved()buffer = NUM;this->Num();if (NUM=0)cout << "職工文檔為空,系統(tǒng)將返回主菜單" << endl;NUM =
32、 buffer;return;elseNUM = buffer;ifstream in("E:worker.txt");if (!in)cout << "File open error!n"exit(1);cout << "已保存的職工信息如下:" << endl;cout << "工號t姓名t性別t學(xué)歷t年齡t地址t電話tt實際收入" << endl;if (NUM = count)for (int i = 0; i < count; i+)in
33、>> wi.ID >> >> wi.sex >> >> wi.age >> wi.address >> wi.tel >> wi.salary >> wi.tax >> wi.pay;cout << wi.ID << 't' << << 't' << wi.sex << 't' << &
34、lt;< 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't' << wi.pay << endl;elsefor (int i = 0; i < NUM; i+)in >> wi.ID >> >> wi.sex >> >> wi.age >> wi.
35、address >> wi.tel >> wi.salary >> wi.tax >> wi.pay;cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << &
36、#39;t' << wi.tel <<'t'<< wi.pay << endl;in.close();/獲得職工工號string Workers:GetID(int i)return wi.ID;/用戶登錄時顯示當(dāng)前用戶信息void Workers:Show(int i)wi.Show();/獲取某個職工舊密碼char * Workers:GetPw(int l)return wl.Pw;/統(tǒng)計信息并且顯示void Workers:Total()buffer = NUM;this->Num();for (int i
37、= 0; i < NUM; i+)tsalary += wi.salary;ttax += wi.tax;cout << "n職工總數(shù)t工資總數(shù)t稅金總數(shù)" << endl;cout << NUM << "tt"<< tsalary << "tt" << ttax << endl;NUM = buffer;/用戶修改密碼void Workers:ChangePw()buffer = NUM;this->Num();char pa
38、ssword;char pw20;int error = 0;bool back = 0;bool out = 0;dodocout << "n請輸入修改前的密碼:" << endl;for (int j = 0; j < 20; j+)password = getch();if (password = 13)pwj = '0'break;if (password = 8)cout << 'b' << ' ' << 'b'j -= 2;elsep
39、wj = password;cout << '*'if (strcmp(pw, wloc.Pw) = 0)char *p = new char50;char p120;while (1)cout << "n請輸入新密碼(注:密碼長度至少6位,但不得超過20位):" << endl;for (int i = 0; i < 50; i+)password = getch();if (password = 13)pi = '0'break;if (password = 8)cout <<
40、9;b' << ' ' << 'b'i -= 2;elsepi = password;cout << '*'if (strlen(p) > 20)cout << "n密碼過長,請重新輸入:" << endl;else if (strlen(p) < 6)cout << "n密碼過短,請重新輸入:" << endl;elsebreak;while (1)cout << "n請再次輸入新
41、密碼:" << endl;for (int i = 0; i < 20; i+)password = getch();if (password = 13)p1i = '0'break;if (password = 8)cout << 'b' << ' ' << 'b'i -= 2;elsep1i = password;cout << '*'if (strcmp(p1, p) = 0)strcpy(wloc.Pw, p1);ofstream
42、fout;SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_NORMAL);fout.open("E:password.txt", ios_base:trunc);if (!fout)cout << "File open error!n"SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);exit(1);for (int i = 0; i < NUM; i+)fout <
43、< wi.Pw <<'t'<< endl;fout.close();SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);back = 0; out = 1;cout << "n密碼修改成功!" << endl;Sleep(1000);break;elsecout << "n兩次密碼不相同 " << endl;cout << "是否需要返回?"
44、<< endl;cout << "是(Y) 否(N)" << endl;char choice4;cin >> choice4;while (1)if (choice4 = 'y' | choice4 = 'Y')back = 1; break;else if (choice4 = 'n' | choice4 = 'N') back = 0; out = 1; break;elsecout << "n輸入有誤,請輸入Y/N(y/n):&quo
45、t; << endl;cin >> choice4;if (!back)break;else continue;deletep;elseerror+;if (error = 3)for (int i = 10; i >= 0; i-)system("cls");cout << "n *" << endl;cout << " *密碼錯誤3次,系統(tǒng)" << setw(2) << i << "秒后自動退出,請稍后重新登錄*&quo
46、t; << endl;cout << " *" << endl;Sleep(1000);exit(1);cout << "n密碼錯誤!請重新輸入" << endl;Sleep(1000); while (error < 3&&!out); while (back);NUM = buffer;cout << endl;/main函數(shù)調(diào)用執(zhí)行函數(shù)Execute()int main()system("COLOR 30");Execute();Set
47、FileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);return 0;一、 測試數(shù)據(jù)及其結(jié)果分析顯示的登錄界面(圖5-1):圖5-1(1)管理員登錄(圖5-2)圖5-2管理員界面:(圖5-3)圖5-31) 職工信息添加:(圖5-4)圖5-42) 當(dāng)前信息查看:(圖5-5)圖5-53) 保存:(圖5-6)圖5-64) 查找:(圖5-8圖5-13)圖5-71. 按工號查找(圖5-8)圖5-82. 按姓名查找(圖5-9)圖5-93. 按工資查找(圖5-10)圖5-104. 按學(xué)歷查找(圖5-11)圖5-115. 按年齡
48、查找(圖5-12)圖5-126. 按地址查找(圖5-13)圖5-135) 修改:(圖5-14)圖5-146) 排序:(圖5-15)圖5-157) 刪除:(圖5-16)圖5-168) 已存信息顯示:(圖5-17)(圖5-17)9) 職工信息統(tǒng)計:(圖5-18)圖5-1810) 退出:(圖5-19)圖5-19(2)用戶登錄:(圖5-20)圖5-201) 信息查詢:(圖5-21)圖5-21 2) 修改密碼:(圖5-22)圖5-22結(jié)果分析如下:1. 在輸入登錄界面菜單選項時如果輸入的內(nèi)容不是1和2,而輸入的為其他字符(字母或符號),系統(tǒng)將自動認(rèn)為操作結(jié)束而推出系統(tǒng)。2. 登錄:選擇管理員登錄/用戶登
49、錄。管理員登錄密碼為B14040215。用戶登錄初始密碼為0215,登錄后可以修改密碼。添加職工:根據(jù)提示依次輸入職工的工號、姓名、性別、學(xué)歷、年齡、月薪、地址、電話。注意:輸入格式必須嚴(yán)格按照要求,如:電話號碼必須為11位手機(jī)號碼或者8位固話號碼;年齡必須在工齡范圍內(nèi)(16-60),月薪必須高于中國最低勞工合同工資。添加職工后,程序自動計算該職工的稅金以及實際收入。1) 管理員登錄:輸入密碼,如果密碼輸錯三次,系統(tǒng)進(jìn)入倒計時,10秒后退出程序。(1) 查看信息:查看當(dāng)前打開程序時輸入的職工信息。(2) 保存信息:保存當(dāng)前輸入的信息,追加存入文件系統(tǒng)內(nèi)。(3) 查找職工:如果文件中沒有職工信息
50、則返回主菜單。否則根據(jù)工號、姓名、工資、學(xué)歷、年齡、地址查找職工??梢苑祷刂鞑藛?。(4) 修改信息:如果文件中沒有職工信息則返回主菜單。否則先顯示給使用者已保存的職工信息。然后讓其根據(jù)工號選擇要修改的職工,可以修改選中職工的任意信息。最后自動保存。(5) 排序:如果文件中沒有職工信息則返回主菜單。否則根據(jù)工號(升序/降序),姓名(升序/降序),工資(升序/降序)排序,并保存入文件。(6) 刪除職工:如果文件中沒有職工信息則返回主菜單。否則根據(jù)工號選擇要刪除的職工,并保存入文件。(7) 庫顯示:如果文件中沒有職工信息則返回主菜單。否則查看顯示已經(jīng)保存入文件的職工信息。(8) 信息統(tǒng)計:如果文件中
51、沒有職工信息則返回主菜單。否則統(tǒng)計并查看已經(jīng)保存的職工數(shù)目,工資總數(shù)以及稅金總數(shù)。(9) 退出程序:程序詢問是否離開,如果選擇是,則完全退出,并將密碼文件隱藏;否,則返回主界面。2) 用戶登錄:如果文件中沒有任何職工信息,則退出程序。否則輸入ID號即工號,如果工號存在則輸入密碼,如果密碼輸錯三次,系統(tǒng)進(jìn)入倒計時,10秒后退出程序。(1) 信息查詢:僅可以查看當(dāng)前登錄的用戶信息。(2) 修改密碼:輸入舊密碼正確后可以輸入新的密碼,再次輸入新密碼確認(rèn)后才可以成功修改密碼。修改密碼后下次登錄可以使用該新密碼。(3) 退出程序:程序詢問是否離開,如果選擇是,則完全退出,并將密碼文件隱藏;否,則返回主界
52、面。6、 調(diào)試過程中的問題(1)問題排序函數(shù)中:由于工號是string類型,所以比較的時候如果僅僅用strcmp()函數(shù),無法將例如B102與B1009這樣的工號正確排序。解決方式增加比較工號長度,使用string類型自帶的size()函數(shù)獲取工號的長度。長度更長的,工號大,長度相等的則使用strcmp()比較大小。(2) 問題添加、保存函數(shù):每次打開程序添加職工,職工數(shù)目在變化,如果僅添加而未保存,此時已輸入的職工數(shù)目明顯比文件中的職工數(shù)目多,兩者不統(tǒng)一。如果使用單一的變量來記錄職工數(shù)目,在顯示當(dāng)前輸入的職工信息與顯示已經(jīng)保存的職工信息時是無法正確輸出的。解決方法使用NUM和count兩個變量。每次打開程序都將NUM值賦值為文件中已經(jīng)保存的職工數(shù)目。每次調(diào)用與文件數(shù)目相關(guān)的函數(shù)時都將NUM值賦值為文件中已經(jīng)保存的職工數(shù)目。而count變量記錄當(dāng)前打開程序時添加的職工數(shù)目。(3) 問題保存密碼:密碼如果存入worker.txt中,那就可以隨意被別人翻查到。解決方法新建一個password.txt文檔,并且每次讓它隱藏起來。(4) 問題修改密碼:隱藏密碼文檔后,發(fā)現(xiàn)打開失敗了,第二次運行程序的時候就不能將修改的密碼存入。解決方法在每次要打開密碼文檔前將其顯示為可見文檔,使用完關(guān)閉文件時立即將其隱藏起來。(5) 問題查找、庫顯示、刪除等函數(shù)里:例如在查找職工時,如果輸入的職工不存在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年太陽能電池及組件項目規(guī)劃申請報告模范
- 2025年旅游景區(qū)管理服務(wù)項目申請報告模范
- 2024-2025學(xué)年銅山縣數(shù)學(xué)三上期末質(zhì)量檢測試題含解析
- 2025年氯金酸項目申請報告模范
- 財務(wù)類實習(xí)報告模板合集5篇
- 2025年汽車隔音材料項目申請報告模板
- 畢業(yè)財務(wù)實習(xí)報告4篇
- 餐廳服務(wù)員的辭職報告15篇
- 我與青少年科技活動600字獲獎?wù)魑?0篇范文
- 個人寒假實習(xí)報告
- 洗煤廠代加工的合同范本
- 抖音小店客服管理制度及考核機(jī)制
- 航天企業(yè)員工入股協(xié)議書樣本
- 門面房買賣合同范本簡單版
- 2024年臨汾翼城縣就業(yè)困難高校畢業(yè)生公益性崗招考聘用70人重點基礎(chǔ)提升難、易點模擬試題(共500題)附帶答案詳解
- 農(nóng)產(chǎn)品電子商務(wù)智慧樹知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- 羽毛球教學(xué)與實戰(zhàn)智慧樹知到期末考試答案章節(jié)答案2024年阜陽師范大學(xué)
- 2024屆廣東省深圳市羅湖區(qū)中考適應(yīng)性考試化學(xué)試題含解析
- 醫(yī)保信息系統(tǒng)管理制度范文
- 停車場服務(wù)培訓(xùn)課件
- 《工業(yè)數(shù)據(jù)采集技術(shù)》課程標(biāo)準(zhǔn)
評論
0/150
提交評論