




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
-.z.目錄TOC\o"2-3"\h\z\t"標題1,1,次標題,1"目錄i1概述11.1程序的基本功能1HYPERLINK\l"_Toc282091170"1.2其它功能11.3擴展功能12課題的分析22.1會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊22.2查詢功能模塊即search函數(shù)模塊22.3職務信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊模塊422.4循環(huán)控制模塊即while(1)模塊23詳細設計33.1類聲明33.2系統(tǒng)簡略流程圖79\h43.3會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊53.4查詢功能模塊即search函數(shù)模塊63.5職務信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊73.6循環(huán)控制模塊即while(1)模塊74課程設計總結84.1完成情況84.2遇到的問題及解決8參考文獻11附錄12-.z.概述本課程設計是《面向對象程序設計》課程的后繼教學環(huán)節(jié),學好C++語言就必須堅持用面向對象的思維方式分析問題、解決問題,最好的方法是仿照教材編寫C++實際應用程序。此次課程設計的題目及要求:實現(xiàn)一個簡單的工資管理系統(tǒng)。程序的基本功能系統(tǒng)的主要功能是計算職工當月工資并存檔。公司內有5種不同類型的職工:技術人員、銷售人員、文秘、技術經(jīng)理和銷售經(jīng)理,他們的工資計算方式各不相同。其它功能將工資信息存入salary.t*t文件中,工資信息包含雇員編號、、職務、月份、月收入。Info.t*t文件中只存留一些信息及會員最后進入系統(tǒng)時輸入的數(shù)據(jù),最多含有編號、、職務、月份的信息。擴展功能采用了會員制度,并將登入信息及編號、密碼存入number.t*t文件中。課題的分析通過對課題的深入分析,我將這個課題分為以下幾個模塊,深入詳細得剖析它們。會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊程序運行后,先進行會員選擇判斷。為減少會員重新注冊,通過輸入兩次編號及密碼,增加繁瑣度。同時在一定的方面上,又方便忘記密碼的會員。通過密碼匹配,雇員的工資信息這一隱私得到了很好的保障。查詢功能模塊即search函數(shù)模塊首先,從info.t*t中提取編號,與salary.t*t中的編號進行匹配,匹配成功,輸出工資信息,直到文件!indata.eof()==0。.職務信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊模塊4從info.t*t中提取職務信息,用switch語句進行匹配,據(jù)匹配情況調用不同的函數(shù)進行輸入、處理、顯示并以增加方式記錄到salary.t*t中。循環(huán)控制模塊即while(1)模塊為了更加方便使用,盡量改善系統(tǒng),實現(xiàn)search函數(shù)及systembody函數(shù)功能,在search函數(shù)及systembody函數(shù)模塊的基礎上加了一些必要的語句,并增加了外層循環(huán)控制。詳細設計作為一個面向對象程序設計,我們不得不先從類的聲明開始設計,而后是一個整體的流程圖做框架。最后在從小的模塊結構著手。classTechManager:publicTechnician,publicManager{private:floatgradeBonus;classTechManager:publicTechnician,publicManager{private:floatgradeBonus;intgrade;public:TechManager(float*=1000);voidsetgrade(float*);voidcountSalary();};圖3.1類聲明圖3.2職工工資管理系統(tǒng)簡略流程圖系統(tǒng)簡略流程圖圖3.2職工工資管理系統(tǒng)簡略流程圖開始優(yōu)點:一個入口,一個出口!處理5輸入5輸入4輸入3輸入2輸入1處理4處理3處理2處理1工資記錄在salary.t*t職務代碼分析顯示真10查詢信息選擇?開始優(yōu)點:一個入口,一個出口!處理5輸入5輸入4輸入3輸入2輸入1處理4處理3處理2處理1工資記錄在salary.t*t職務代碼分析顯示真10查詢信息選擇?是否會員否是否會員否注冊注冊是是輸入編號及密碼輸入編號及密碼假檢驗?假檢驗?真真輸入姓名、職務、月份輸入姓名、職務、月份記錄編碼姓名職務月份至info.t*t記錄編碼姓名職務月份至info.t*t從info.t*t提取職務代碼從info.t*t提取職務代碼再次輸入再次輸入假結束假結束會員登入系統(tǒng)模塊即systemhead靜態(tài)全局函數(shù)模塊清空info.t*t并將編號存入到info.t*t中清空info.t*t并將編號存入到info.t*t中圖3.3登入系統(tǒng)模塊詳細流程圖否是否會員輸入編號及密碼打開name.t*t并輸出編號及密碼匹配?關閉name.t*t否是以增加方式打開name.t*t并輸入編號及密碼關閉name.t*t.輸入編號及密碼查詢功能模塊即search函數(shù)模塊110否是輸出info.t*t中的職務信息將info.t*t的編號與salary.t*t中的編號進行匹配是否打開info.t*t!indata.eof()?圖3.4查詢功能模塊以默認方式打開info.t*t以默認方式打開salary.t*t從文件info.t*t中提取編號并關閉文件輸出"以上是你的工資信息!”關閉salary.t*t職務信息匹配及處理模塊即systembody靜態(tài)全局函數(shù)模塊圖3.5systembody函數(shù)模塊圖3.5systembody函數(shù)模塊以默認方式打開info.t*t提取info.t*t中的職務信息switch語句進行職務匹配調用不同函數(shù)進行數(shù)據(jù)處理及顯示循環(huán)控制模塊即while(1)模塊圖3.6循環(huán)控制模塊即while(1)模塊圖3.6循環(huán)控制模塊即while(1)模塊102輸入選擇操作查詢功能模塊Info及recordinfo調用systembody調用選擇?結束課程設計總結完成情況本次面向對象課程設計的所有功能基本完成,并且擴展功能也成功的實現(xiàn)!可執(zhí)行文件能正常執(zhí)行指令并運行!遇到的問題及解決圖錯誤[Error]C:\Users\權\Desktop\main.o(.data$_vt$8Employee+0*c):main.cpp:undefinedreferenceto`Employee::countSalary(void)'錯誤:沒有定義Employee類中的countSalary函數(shù)!改正:將原先的"virtualvoidcountSalary();”改為”virtualvoidcountSalary(){}”圖錯誤錯誤分析:(會員板塊中)提示:"數(shù)字1表示是!其他鍵表示否!”,但定義的選擇變量為整型。加上我當時輸入字符p。改正:"其他鍵表示否!”改為”數(shù)字0表示否”。輸入時按提示進行輸入即可!圖錯誤調試分析:錯誤發(fā)生在systemhead靜態(tài)全局函數(shù)內的文件輸入循環(huán)模塊中!改正:將以nocreate方式即”ifstreamindata("d:\\number.t*t",ios::nocreate);"該為默認打開方式即"ifstreamindata("d:\\number.t*t");”。圖錯誤調試分析:錯誤發(fā)生在調用systembody靜態(tài)全局函數(shù)前后的while循環(huán)模塊中,很有可能是數(shù)據(jù)存取混亂造成的。改正:systemhead靜態(tài)全局函數(shù)內"ofstreamoutdata("d:\\info.t*t",ios::trunc);”改為先清后在以默認方式輸入!且將存取整型編號的變量類型從字符型改為整型。圖錯誤錯誤:后面莫名其妙的跟著一個提示語句指令。分析調試:當語句指令是基類info函數(shù)內的語句,很有可能是循環(huán)控制出現(xiàn)了一些問題。改正:見程序源代碼!參考文獻下面給出幾個參考文獻的格式參考匿名,不知道,非常多.計算機實用教程.:**大學出版社,2004,123~234[美]DonisSomething.Visual*#2008技術內幕.:YYY大學出版社,2007,56~78JohnsSmith,JamesNothing.ProgramminginC++orAnythingandSomething..worldplus/nothing/inde*.html2007Anonymous.SomethingtoSay..somewhere./something.html2007《面向對象程序設計》,鄭莉,清華大學出版社,《面向對象程序設計C++語言》,朱戰(zhàn)立等編西安電子科技大學出版社《面向對象程序設計VisualC++》,劉斌等編,清華大學出版社《面向對象程序設計C++語言描述》,RichardJohnsonbaugh(美)等著,蔡宇輝等譯,機械工業(yè)出版社,2003附錄本系統(tǒng)有三個源程序文件構成,分別為system.h,system.cpp及main.cpp。同時含有三個系統(tǒng)文件,分別為info.t*t,name.t*t及salary.t*t,且全部存放在D盤根目錄下,請勿隨意移動或修改系統(tǒng)文件。當會員正式進入系統(tǒng),info.t*t是先清空后用來存儲會員輸入的信息,最多含有編號、、職務及月份。當僅會員注冊時,會將編碼及密碼存儲到name.t*t中。當僅會員登入的編號及密碼進行匹配時,會打開輸入文件name.t*t,提取編號及密碼,進行匹配。當僅當輸入工資數(shù)據(jù)時,會將工資、編號、、職務、月份存儲到salary.t*t中。當僅當查詢工資信息時,會打開salary.t*t,提取編號、、職務、月份及工資。該系統(tǒng)是一個只適合5種及5種職務的工資管理系統(tǒng)。并將職務分為技術人員、銷售人員、文秘、技術經(jīng)理和銷售經(jīng)理,其代號分別為1,2,3,4,5。雇員編號以整型變量存儲,編號所取范圍在-65536至65535之內(包括邊界值),首位數(shù)字表示相應的職務代碼。該系統(tǒng)能力有限,請根據(jù)指示嚴格輸入相應字符!程序清單Main函數(shù)#include"system.cpp"#include"cstring"staticvoidsystemhead();staticvoidsystembody();staticvoidtechnician();staticvoidsalesman();staticvoidsecretary();staticvoidtechmanager();staticvoidsalesmanager();usingnamespacestd;voidmain(){ systemhead();//調用systemhead靜態(tài)全局函數(shù) cout<<"\n\n1:查詢工資"; cout<<"\n\n2:輸入工資數(shù)據(jù)"; cout<<"\n\n0:退出系統(tǒng)!\n\n"; cout<<"請選擇您需要的操作??!\n"; while(1) {int*uanze; cin>>*uanze; if(*uanze==1) { employeea; cout<<endl<<endl; a.search(); cout<<"\n\n輸入工資數(shù)據(jù)請按數(shù)字2,退出系統(tǒng)請按數(shù)字0!\n\n"; }//查詢工資信息 if(*uanze==2) { employeea; (); a.recordinfo();//輸入處理工資數(shù)據(jù)并暫時記錄 systembody();//調用systembody靜態(tài)全局函數(shù) cout<<"\n\n查詢工資請按數(shù)字1,退出系統(tǒng)請按數(shù)字0!\n\n"; } if(*uanze==0)e*it(0); }}staticvoidsalesmanager(){ SalesManagera5; floatsum; cout<<"請輸入整個月的總營業(yè)額:"; cin>>sum; a5.setsalesnum(sum); a5.countSalary(); a5.recordSalary();}staticvoidtechmanager(){ TechManagera4; intgra; cout<<"請輸入這個月的評級:";//1,2,3三個等級 cin>>gra; a4.setgrade(gra); a4.countSalary(); a4.recordSalary(); }staticvoidsecretary(){ Secretarya3; floatbon; cout<<"請輸入這個月的額外獎勵:"; cin>>bon; a3.setbonus(bon); a3.countSalary(); a3.recordSalary();}staticvoidsalesman(){ Salesmana2; floatsum; cout<<"請輸入整個月的營業(yè)額:"; cin>>sum; a2.setsalesnum(sum); a2.countSalary(); a2.recordSalary();}staticvoidtechnician(){ Techniciana1; floathour; cout<<"請輸入整個月的工作時間:"; cin>>hour; a1.setHour(hour); a1.countSalary(); a1.recordSalary();}staticvoidsystembody(){ ifstreamindata("info.t*t"); if(indata==NULL)e*it(0); intnum; charna[25]; intsta; indata>>num>>na>>sta;//職務代號分別為1,2,3,4,5 switch(sta) { case1:technician();break; case2:salesman();break; case3:secretary();break; case4:techmanager();break; case5:salesmanager();break; default:cout<<"職務代號錯誤!\n請重新輸入!"; }}staticvoidsystemhead(){ char*,y='y'; intnum; charsecret[6]; while(y) { cout<<"\n\n系統(tǒng)會員請輸入'y',非系統(tǒng)會員請輸入‘n’\n"; cin>>*; if(*){ cout<<"請輸入編號(首位為職務代號且為不超過5位數(shù)的整數(shù)):\n"; cin>>num; cout<<"請輸入密碼(6及6位字符以下):\n"; cin>>secret;//輸入編號及密碼 ifstreamindata("number.t*t"); if(indata==NULL) { cout<<"文件打開失敗!請聯(lián)系管理員!\n";e*it(0);//文件沒打開,退出程序 } intnum1;charsecret1[6]; indata>>num1; while(!indata.eof()) { indata>>secret1; if((num==num1)&&(strcmp(secret,secret1)==0)) { y=0;//改變判斷變量的值,停止外層循環(huán) break;//終止內層循環(huán) } indata>>num1; } indata.close();//檢驗登入信息 } else { cout<<"請輸入編號(首位為職務代號且為不超過5位數(shù)的整數(shù)):\n"; cin>>num; cout<<"請輸入密碼(6及6位字符以下):\n"; cin>>secret;//注冊輸入編號及密碼 ofstreamoutdata("number.t*t",ios::app); outdata<<num<<'\t'<<secret<<'\t'; outdata.close();//將編號及密碼保存到number.t*t中 cout<<endl<<endl; } }ofstreamoutdata("info.t*t",ios::trunc);outdata.close();//清空文件內容 ofstreamoutdata1("info.t*t"); outdata1<<num<<'\t'; outdata.close();//輸入編號至info.t*t}System.cpp#include<iostream>#include<fstream>#include"system.h"usingnamespacestd;voidEmployee::info(){ charna[25];intsta,mon; cout<<"請依次輸入姓名、職務代號及月份(以空格符分隔):"; cin>>na>>sta>>mon; name=na;status=sta;month=mon;//存儲姓名、職務、月份}voidEmployee::search(){ intnum; ifstreamindata0("info.t*t"); if(indata0==NULL)e*it(0); indata0>>num; indata0.close();//從文件info.t*t中提取編號 intnum1;charna1[25];intsta1;intmon1;floatsal; intmon0; ifstreamindata("salary.t*t"); if(indata==NULL)e*it(0); while(!indata.eof()) { indata>>num1>>na1>>sta1>>mon1>>sal; if(num==num1) cout<<num1<<'\t'<<na1<<'\t'<<sta1<<'\t'<<mon1<<'\t'<<sal<<'\n'; //依次輸出該雇員的工資信息 } if(indata.eof()) cout<<"\n\n以上是你的工資信息!\n\n"; indata.close();}voidEmployee::recordinfo(){ ofstreamoutdata("info.t*t",ios::app); outdata<<name<<'\t'<<status<<'\t'<<month; outdata.close();//添加姓名、職務、月份至存有編號的info.t*t中}voidEmployee::recordSalary(){ ifstreamindata("info.t*t"); indata>>number>>name>>status>>month; indata.close();//依次輸出該雇員的工資信息 intnum1;charna1[25];intsta1;intmon1;floatsal; ifstreamindata1("salary.t*t"); if(indata1==NULL)e*it(0); while(!indata1.eof()) { indata1>>num1>>na1>>sta1>>mon1>>sal; if(month!=mon1) cout<<num1<<'\t'<<na1<<'\t'<<sta1<<'\t'<<mon1<<'\t'<<sal<<'\n'; else e*it(0); //依次輸出該雇員的工資信息 } cout<<number<<'\t'<<name<<'\t'<<status<<'\t'<<month<<'\t'<<salary; //顯示工資信息 ofstreamoutdata("salary.t*t",ios::app); outdata<<'\n'<<number<<'\t'<<name<<'\t'<<status<<'\t'<<month<<'\t'<<salary; outdata.close(); }voidTechnician::setHour(float*){ workHour=*;}Technician::Technician(float*){ hourSalary=*;}voidTechnician::countSalary(){ salary=workHour*hourSalary;}voidSalesman::setsalesnum(float*){ salesnum=*;}Salesman::Salesman(float*){ getRate=*;}voidSalesman::countSalary(){ salary=salesnum*getRate;}voidSecretary::setbonus(float*){ bonus=*;}Secretary::Secretary(float*){ fi*edSalary=*;}voidSecretary::countSalary(){ salary=fi*edSalary+bonus;}Manager::Manager(float*){ fi*edSalary=*;}voidTechManager::setgrade(int*){ grade=*;}TechManager::TechManager(float*){ gradeBonus=*;}voidTechManager::countSalary(){ salary=fi*edSalary+grade*gradeBonus;}SalesManager::SalesManager(float*){ getRate=*;}voidSalesManager::countSalary(){ salary=fi*edSalary+salesnum*getRate;}voidTechnician::setHour(float*){ workHour=*;}Technician::Technician(float*){ hourSalary=*;}voidTechnician::countSalary(){ salary=workHour*hourSalary;}voidSalesman::setsalesnum(float*){ salesnum=*;}Salesman::Salesman(float*){ getRate=*;}voidSalesman::countSalary(){ salary=salesnum*getRate;}voidSecretary::setbonus(float*){ bonus=*;}Secretary::Secretary(float*){ fi*edSalary=*;}voidSecretary::countSalary(){ salary=fi*edSalary+bonus;}Manager::Manager(float*){ fi*edSalary=*;}voidTechManager::setgrade(int*){ grade=*;/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 椎管內占位中醫(yī)護理方案
- 人教版九年級數(shù)學下冊28.2.1解直角三角形【課件】
- 上學期班級活動總結
- 圖形圖像創(chuàng)意課件設計標準
- 妊娠期高血壓疾病病人的護理
- 食品生產(chǎn)企業(yè)衛(wèi)生管理制度
- 2025年綠色建筑認證體系在綠色建筑教育培訓中的應用與發(fā)展研究報告
- 鼠疫健康教育培訓
- 逆向物流處理行業(yè)深度調研及發(fā)展項目商業(yè)計劃書
- 包子鋪線上推廣企業(yè)制定與實施新質生產(chǎn)力項目商業(yè)計劃書
- 2025棗莊事業(yè)單位筆試真題
- 2025年電子循環(huán)水泵行業(yè)深度研究報告
- 2025年平面設計師專業(yè)能力測試卷:平面設計實踐與案例分析試題
- 2025-2030年中國藏藥行業(yè)市場深度調研及前景趨勢與投資研究報告
- 2021城市運行管理服務平臺數(shù)據(jù)標準
- 統(tǒng)計局招聘試題及答案
- 消防車駕駛員基本素質、車輛行車安全
- 行政輔助考試試題及答案
- 超星爾雅學習通《紅色經(jīng)典影片與近現(xiàn)代中國發(fā)展(首都師范大學)》2025章節(jié)測試附答案
- 2024年四川省成都市中考地理+生物試卷真題(含答案解析)
- 長輸管道施工
評論
0/150
提交評論