C++課程設計報告--職工信息管理系統(tǒng).doc
《C++課程設計報告--職工信息管理系統(tǒng).doc》由會員分享,可在線閱讀,更多相關《C++課程設計報告--職工信息管理系統(tǒng).doc(50頁珍藏版)》請在裝配圖網上搜索。
1、 課程設計報告 目錄一、 課程設計目的及要求.2二、 課程設計具體實現.2(一) 總體設計.21) 職工信息管理系統(tǒng).32) 學生通訊系統(tǒng).12(二) 詳細設計.31) 職工信息管理系統(tǒng).32) 學生通訊系統(tǒng)13三、 心得體會.23四、 源代碼.24(一) 職工信息管理系統(tǒng). 24(二) 學生通訊系統(tǒng).37課程設計報告一、 課程設計目的及要求1. 設計目的l 提高和加強學生的計算機應用與軟件開發(fā)能力,使學生由初學者向專業(yè)的程序員過渡。l 培養(yǎng)學生獨立分析問題、解決問題、查閱資料以及自學能力,以適應計算機產業(yè)日新月異發(fā)展的形勢。l 學習和掌握C+程序設計方法以及上機調試技巧,為今后學習其它專業(yè)課
2、程打好基礎2. 設計要求(一) 職工信息管理系統(tǒng) 職工信息包括職工號、姓名、性別、年齡、學歷、工資、住址、電話等(職工號不重復)。試設計一職工信息管理系統(tǒng),系統(tǒng)以菜單方式工作,使之能提供以下功能:l 職工信息錄入功能(職工信息用文件保存)l 職工信息瀏覽功能l 查詢和排序功能:按工資查詢和按學歷查詢或按年齡等查詢l 職工信息刪除、修改功能l 統(tǒng)計功能(二) 學生通訊系統(tǒng)學生通信錄信息包括:姓名、學號、年齡、性別、家庭住址、聯系電話、寢室號等信息?,F要求編寫程序來完成如下功能:l 學生通信錄信息的輸入l 學生的通信錄信息刪除和修改l 學生的通信錄信息查詢和統(tǒng)計功能l 學生的通信錄信息輸出顯示 二
3、、 課程設計具體實現(一) 職工信息管理系統(tǒng)(1)總體設計 根據任務要求,程序主要包含五大功能模塊:1.職工信息錄入功能 2.職工信息瀏覽功能 3.職工信息查詢和排序 4.職工信息刪除和修改功能 5.職工信息統(tǒng)計功能??傮w設計圖如下:職工信息管理系統(tǒng)信息錄入信息刪除和修改信息統(tǒng)計信息查詢和排序信息瀏覽信息刪除信息修改按工資高低降序排列查 詢按年齡大小降序排 列查 詢按學歷高低降序排列查 詢(2)詳細設計 該項目文件名為職工信息管理系統(tǒng),共有8個.cpp和2個.h文件u 主菜單(在main .cpp中) 主要完成功能為:當用戶開始使用本系統(tǒng),進入登陸模塊。屏幕顯示菜單提示,用戶可根據需要選擇15
4、進入相應功能。具體如下:1.職工信息錄入 2.職工信息瀏覽 登錄模塊的截圖如下所示:主要使用技術:switch語句以進入各個功能以及退出主要代碼:switch(scan3()case 1: /職工信息錄入input();getchar(); break;case 2: /職工信息瀏覽display();getchar(); break;case 3: /查詢和排序find();getchar(); break;case 4: /職工信息刪除、修改change();getchar(); break;case 5: /職工信息統(tǒng)計count();getchar(); break;default:c
5、out謝謝使用,再見!nSwitch(n)Case 1:Case5:default:input()count()退出功能完成u 職工信息錄入功能(在input .cpp中) 主要功能:完成職工信息的錄入,用if語句還有文本文檔對職工信息進行錄入;在此定義N最多為二十個;建立職工信息結構體,保存在.h文件中!將職工信息保存于文本文件: 職工基本信息.txt中。同時將輸入職工的人數保存到文本文件: 職工人數 .txt中。利用for循環(huán)進行輸入。主要還是文件的輸入問題!主要代碼:for(int i=0;it;i+) /輸入職工基本信息coutn請輸入第i+1個職工的信息endl;coutperi.n
6、umber; /判斷職工號是否存在 if (peri.number=peri-1.number) cout該職工號已存在,請重新輸入!endl; goto loop; outfperi.number ; coutperi.name; outfperi.name ; coutperi.sex; outfperi.sex ; coutperi.age; outfperi.age ; coutperi.rank; outfperi.rank ; coutperi.salary; outfperi.salary ; coutperi.add; outfperi.add ; coutperi.phone
7、; outfperi.phone ;截圖如下:u 職工信息瀏覽功能(在display .cpp中) 主要功能:從文件 職工基本信息.txt 中讀出所有職工的信息,顯示到屏幕上。關鍵代碼: open(); /從文件中讀取信息 for(int i=0;iN;i+) /輸出職工信息 if(peri.number=0) break; cout職工號:peri.numberendl; cout姓名:peri.nameendl; cout性別:; xsex(peri.sex); coutendl; cout年齡:peri.ageendl; cout學歷:;xrank(peri.rank);coutendl
8、; cout工資:peri.salaryendl; cout住址:peri.addendl; cout電話:peri.phoneendlendl; 截圖如下:u 職工信息查詢和排序(在find .cpp中) 主要功能:對信息的查詢按照三種查詢方法:1.按工資高低降序排列查詢 2. 按學歷高低降序排列查詢 3. 按年齡大小降序排列查詢主要使用技術:使用 冒泡法對數據進行排序主要代碼:case 1:cout按工資從高到低排:endl; open(); person t; int i,j; for(i=0;iN;i+) /按工資高低降序排列 for(j=i+1;jN;j+) if(peri.sala
9、ryperj.salary) t=peri; peri=perj; perj=t;case 2: cout按學歷從高到低排:endl;open(); person t; int i,j; for(i=0;iN;i+) /按學歷高低降序排列 for(j=i+1;jN;j+) if(peri.rankperj.rank) t=peri; peri=perj; perj=t;case 3: cout按年齡從大到小排:endl; open(); person t; int i,j; for(i=0;iN;i+) /按年齡大小降序排列 for(j=i+1;jN;j+) if(peri.ageperj.a
10、ge) t=peri; peri=perj; perj=t;截圖如下:u 職工信息修改和刪除功能(在change .cpp中) 主要功能:先從文件 職工基本信息.txt 中讀出所有職工的信息,再對職工信息進行修改和刪除,最后將修改后的信息重新讀入到 職工基本信息.txt 中,修改后的職工人數保存到 職工人數.txt 中。截圖如下:u 職工信息統(tǒng)計功能(在count .cpp中)主要功能:從文件 職工基本信息.txt 中讀出所有職工的信息,統(tǒng)計所有職工中專科、本科、碩士、博士學歷的人數分別是多少 和所有職工的工資情況:工資2000以下的總人數、2000-3000的總人數、工資3000-4000的
11、總人數、工資4000以上的總人數、及所有職工的平均工資。 主要代碼:for(int i=0;iN;i+)if(peri.rank=1)k1+;else if(peri.rank=2)k2+;else if(peri.rank=3)k3+;else if(peri.rank=4)k4+;cout??茖W歷的總人數:k1endl;cout本科學歷的總人數:k2endl;cout碩士學歷的總人數:k3endl;cout博士學歷的總人數:k4endlendl;for(int j=0;jN;j+) sum+=perj.salary;if(perj.salary=2000 & perj.salary=300
12、0 & perj.salary=4000)t4+;s=renshu(); /得到職工總人數 ave=(sum/s); /計算職工的平均工資 截圖如下:u 退出系統(tǒng)(二) 學生通訊系統(tǒng)(1)總體設計u 根據任務要求,該程序包含五大功能模塊:1. 學生通信錄信息的輸入功能 2. 學生的通信錄信息刪除功能 3. 學生的通信錄信息修改功能 4. 學生的通信錄信息查詢 5. 學生的通信錄信息輸出顯示功能 總體結構圖如下:學生通訊系統(tǒng)通信錄信息的輸入通信錄信息刪除通信錄信息修改通信錄信息查詢通信錄信息的顯示按姓名查找修改按學號查找修改按姓名刪除按學號刪除按姓名查詢按學號查詢(2)詳細設計u 主菜單(在ma
13、in .cpp中)主要功能:當用戶開始使用本系統(tǒng),進入登陸模塊。屏幕顯示菜單提示,用戶可根據需要選擇15進入相應功能。具體如下:1.信息錄入 2.信息瀏覽 登錄模塊的截圖如下:u 主要代碼 int scan() /生成主菜單int n;system(cls);cout 歡迎使用學生通訊系統(tǒng)!endl; coutendl;cout 1.信息錄入 endl;cout 2.信息瀏覽 endl;cout 3.信息刪除 endl;cout 4.信息修改 endl;cout 5.信息查詢 endl;cout 0.退出. endl;coutn;if(n5)cout輸入錯誤,請重新選擇!endl;elsebr
14、eak;return n;switch (scan() /功能選擇case 1: /信息錄入Handle h1;h1.write();getchar();break;case 2: /信息瀏覽int n;Handle h2;n=h2.renshu();CStudent *p;p=h2.read();for(int i=0;idisplay();coutendl;deletep;getchar();break;case 3: /信息刪除Handle h3; h3.deletes();getchar();break;case 4: /信息修改Handle h4; h4.change();getch
15、ar();break;case 5: /信息查詢Handle h5;h5.find();getchar();case 0:quit=1;cout謝謝使用,再見!endl;輸入15選擇相應的功能進行操作u 學生通訊錄信息的輸入主要功能:完成學生通信錄信息(姓名、學號、年齡、性別、家庭住址、聯系電話、寢室號)的錄入,將學生通信錄信息保存于文本文件: 學生通信錄信息.txt中。同時將輸入職工的人數保存到文本文件: 學生人數 .txt中 主要代碼: int n,sum;CStudent *p;cout請輸入您要輸入的學生的個數:n;p=new CStudentn;for(int i=0;iinput(
16、);void CStudent:input() /輸入學生通訊信息coutname; coutnumber; coutage; coutsex; coutadd;coutphone;coutid;截圖如下:u 學生通訊錄信息的刪除 主要功能:先從文件中讀出學生信息,對學生通訊錄訊息進行刪除,再將修改后的學生信息保存到文件中,并將修改后人數也保存。 主要代碼: if(d=1) cout請輸入你要刪除學生的姓名:name2;for(int i=0;iname,name2)!=0) outfname number age sex add phone id ; cout刪除完畢!endl;if(d=2
17、)cout請輸入你要刪除學生的學號:number2;for(int i=0;inumber,number2)!=0)outfname number age sex add phone id ; cout刪除完畢!截圖如下:u 學生通訊錄信息修改 主要功能:先從文件中讀出學生信息,對學生通訊錄訊息進行刪除,再將修改后的學生信息保存到文件中。主要代碼;cout請選擇信息修改方式:endl;cout1.按姓名查找修改 2.按學號查找修改d; if(d2) cout輸入錯誤,請重新選擇!endl; else break;if(d=1) coutn請輸入你要修改學生的姓名:name2; for(int
18、i=0;iname,name2)=0)(p+i)-change1();if(d=2) coutn請輸入你要修改學生的學號:number2; for(int i=0;inumber,number2)=0)(p+i)-change1();if(n=1)char name120;cout請輸入修改后的姓名:name1;strcpy(name,name1);cout修改完畢!endl;getchar();if(n=2)char num20;cout請輸入修改后的學號:num; strcpy(number,num);cout修改完畢!endl;getchar();if(n=3)int age1;cout
19、請輸入修改后的年齡:age1;age=age1;cout修改完畢!endl;getchar();if(n=4)char sex12;cout請輸入修改后的性別:sex1;strcpy(sex,sex1);cout修改完畢!endl;getchar();.截圖如下:u 學生通訊錄信息的查詢 主要功能:查詢所要了解學生的通訊基本信息主要代碼:cout請選擇信息查詢方式:endl; cout1.按姓名查詢 2.按學號查詢d; if(d2) cout輸入錯誤,請重新選擇!endl; else break;if(d=1)coutn請輸入你要查詢學生的姓名:name3; for(int i=0;iname
20、,name3)=0)(p+i)-display();if(d=2) cout請輸入你要查詢學生的學號:number3; for(int i=0;inumber,number3)=0)(p+i)-display();截圖如下:u 學生通訊錄信息的瀏覽 主要代碼:void CStudent:display() /顯示學生通訊信息cout學生的名字:nameendl; cout學生的學號:numberendl; cout學生的年齡:ageendl; cout學生的性別:sexendl; cout學生的家庭住址:addendl; cout學生的聯系電話:phoneendl; cout學生的寢室號:id
21、endl;截圖如下:u 退出系統(tǒng)三、 心得體會回顧起此次課程設計,至今我仍感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,在整整三個星期的日子里,可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,這畢竟獨立做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比
22、如說結構體通過這次課程設計之后,一定要把以前所學過的知識重新溫故??傊?,編程尤其是調試是一項細致深入的工作,需要下工夫、動腦子、善于積累經驗,這往往能反映出一個人的水平、經驗和態(tài)度這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在老師的指導和同學的幫助下,終于游逆而解我!同時,對他們表示忠心的感謝!四、 源代碼(一) 職工信息管理系統(tǒng)/Struct .h/ /職工基本信息struct personlong number; /職工號char name12; /姓名char sex; /性別int age; /年齡int rank; /學歷float salary; /工資char a
23、dd50; /住址long phone; /電話;const int N=20;/head.h/ /函數的聲明#include#include#include#include#includevoid find();void input();void display();void change();void count();void open();int renshu();void xsex(char);void xrank(int);/main .cpp/#includehead.hint scan3() int n;system(cls);cout 歡迎使用職工信息管理系統(tǒng)endl;cout
24、endlendl;cout請選擇所要進行的操作:n;cout1.職工信息錄入 2.職工信息瀏覽 3.查詢和排序n; cout4.職工信息刪除、修改 5.統(tǒng)計n;coutn;return(n);void main()int quit=0;while(!quit)switch(scan3()case 1: input(); /職工信息錄入getchar(); break;case 2: display(); /職工信息瀏覽getchar(); break;case 3: /查詢和排序find();getchar(); break;case 4: /職工信息刪除、修改change();getchar
25、(); break;case 5: /職工信息統(tǒng)計count();getchar(); break;default:cout謝謝使用,再見!endl;quit=1;break;/input.cpp/#includehead.h#includestruct.hvoid input() system(cls); person perN;int t;cout 歡迎使用職工信息錄入功能endl;coutendl;coutt;ofstream outf1(人數.txt,ios:out);if(!outf1)cout不能打開此文件!endl;outf1t;outf1.close(); coutn請輸入t個
26、職工的職工號、姓名、性別、年齡、學歷、工資、住址、電話:n;ofstream outf(職工基本信息.txt,ios:out);/建立打開文件if(!outf)cout不能打開此文件!endl;for(int i=0;it;i+) /輸入職工基本信息coutn請輸入第i+1個職工的信息endl;coutperi.number; if (peri.number=peri-1.number) cout該職工號已存在,請重新輸入!endl; goto loop; outfperi.number ; coutperi.name; outfperi.name ; coutperi.sex; outfpe
27、ri.sex ; coutperi.age; outfperi.age ; coutperi.rank; outfperi.rank ; coutperi.salary; outfperi.salary ; coutperi.add; outfperi.add ; coutperi.phone; outfperi.phone ;outf.close();/display.cpp/#includestruct.h#includehead.hextern person perN;void display()system(cls); cout 歡迎使用職工信息瀏覽功能endl;coutendl;op
28、en(); for(int i=0;iN;i+) /輸出職工信息 if(peri.number=0) break; cout職工號:peri.numberendl; cout姓名:peri.nameendl; cout性別:; xsex(peri.sex); coutendl; cout年齡:peri.ageendl; cout學歷:;xrank(peri.rank);coutendl; cout工資:peri.salaryendl; cout住址:peri.addendl; cout電話:peri.phoneendlendl; void xsex(char ch) /選擇性別if (ch=M
29、|ch=m) cout男;else if (ch=W|ch=w) cout女;void xrank(int d) /選擇學歷if(d=1) cout???else if(d=2) cout本科;else if(d=3) cout碩士;else if(d=4) cout博士;/change.cpp/#includestruct.h#includehead.hextern person perN;int scan2() int d;system(cls);cout 歡迎使用職工信息刪除、修改功能endl;coutendl;coutn請選擇所要進行的操作:n;cout1.修改 2. 刪除n; cou
30、td;return(d);void change() int quit=0;while(!quit)switch(scan2()case 1: /修改職工信息 long t; int i,n; cout請輸入所要修改職工的職工號:t; open(); for(i=0;iN;i+) if(peri.number=t) n=i;cout輸入職工的新信息:n; coutpern.name; coutpern.sex; coutpern.age; coutperi.rank; coutpern.salary; coutpern.add; coutpern.phone;coutn修改完畢!endl;of
31、stream outf(職工基本信息.txt,ios:out); if(!outf) cout不能打開此文件!endl; for(int m=0;mN;m+) /新信息保存到文件中 outfperi.numberperi.nameperi.sexperi.ageperi.rank peri.salaryperi.addperi.phone; outf.close(); getchar(); break;case 2: /刪除職工信息 open();long t; int i,n,s; cout請輸入所要刪除職工的職工號:t; for(i=0;iN;i+) if(peri.number=t) n
32、=i; pern.number=0;strcpy(pern.name, );pern.sex= ;pern.age=0;pern.rank= ;pern.salary=0 ;strcpy(pern.add, );pern.phone=0;coutn刪除完畢!endl;ofstream outf(職工基本信息.txt,ios:out);if(!outf) cout不能打開此文件!endl; for(int m=0;mN;m+) /新信息保存到文件中 outfperi.numberperi.nameperi.sexperi.ageperi.rank peri.salaryperi.addperi.
33、phone; outf.close(); ofstream outf1(人數.txt,ios:out); if(!outf1) cout不能打開此文件!endl; s=renshu(); s-; outf1s; outf1.close(); getchar(); break;default:quit=1;break;/find .cpp/#includestruct.h#includehead.hextern person perN;int scan1() int n;system(cls);cout 歡迎使用職工信息查詢和排序功能endl;coutendl;coutn請選擇查詢的方式:n;c
34、out1.按工資查詢 2. 按學歷查詢 3.按年齡查詢n; coutn;return(n);void find() system(cls);int quit=0;while(!quit)switch(scan1()case 1: cout按工資從高到低排:endl; open(); person t; int i,j; for(i=0;iN;i+) /按工資高低降序排列 for(j=i+1;jN;j+) if(peri.salaryperj.salary) t=peri; peri=perj; perj=t; for(int m=0;mN;m+) /排序后輸出職工信息 if(perm.number=0) break; cout職工號:perm.numberendl; cout姓名:perm.nameendl; cout性別:; xsex(perm.sex); coutendl; cout年齡:perm.ageendl; cout學歷:;xrank(perm.rank);coutendl; cout工資:perm.salaryendl; cout住址:perm.addendl;
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級數學下冊6整理和復習2圖形與幾何第7課時圖形的位置練習課件新人教版
- 2023年六年級數學下冊6整理和復習2圖形與幾何第1課時圖形的認識與測量1平面圖形的認識練習課件新人教版
- 2023年六年級數學下冊6整理和復習1數與代數第10課時比和比例2作業(yè)課件新人教版
- 2023年六年級數學下冊4比例1比例的意義和基本性質第3課時解比例練習課件新人教版
- 2023年六年級數學下冊3圓柱與圓錐1圓柱第7課時圓柱的體積3作業(yè)課件新人教版
- 2023年六年級數學下冊3圓柱與圓錐1圓柱第1節(jié)圓柱的認識作業(yè)課件新人教版
- 2023年六年級數學下冊2百分數(二)第1節(jié)折扣和成數作業(yè)課件新人教版
- 2023年六年級數學下冊1負數第1課時負數的初步認識作業(yè)課件新人教版
- 2023年六年級數學上冊期末復習考前模擬期末模擬訓練二作業(yè)課件蘇教版
- 2023年六年級數學上冊期末豐收園作業(yè)課件蘇教版
- 2023年六年級數學上冊易錯清單十二課件新人教版
- 標準工時講義
- 2021年一年級語文上冊第六單元知識要點習題課件新人教版
- 2022春一年級語文下冊課文5識字測評習題課件新人教版
- 2023年六年級數學下冊6整理和復習4數學思考第1課時數學思考1練習課件新人教版