版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> C++課程設(shè)計報告</b></p><p> 設(shè)計題目: 參會人員信息管理程序 </p><p> 學(xué) 院: 資源與安全工程學(xué)院 </p><p><b> 專業(yè)班級: </b></p><p><b> 二零一一年六月<
2、;/b></p><p><b> 目 錄</b></p><p><b> 第1章 緒論</b></p><p> 第2章 設(shè)計目的和主要功能</p><p> 概要設(shè)計 </p><p><b> 3.
3、1 概要設(shè)計</b></p><p><b> 3.2 設(shè)計環(huán)境</b></p><p><b> 3.3 數(shù)據(jù)結(jié)構(gòu)</b></p><p><b> 3.4 模塊設(shè)計</b></p><p><b> 第4章 詳細(xì)設(shè)計</b>
4、;</p><p> 4.1主函數(shù)設(shè)計及問題</p><p> 4.2人員登錄設(shè)計及問題</p><p> 4.3信息修改和刪除設(shè)計及問題</p><p> 4.4統(tǒng)計同部門信息設(shè)計及問題</p><p><b> 第五章 運(yùn)行程序</b></p><p&g
5、t;<b> 5.1完整源程序</b></p><p><b> 5.2調(diào)試截圖</b></p><p> 5.3不足和體會 </p><p> 參考文獻(xiàn)
6、 </p><p><b> 第1章 緒 論</b></p><p><b> 一、課程設(shè)計的背景</b></p><p> 目前,隨著計算機(jī)技術(shù)的飛速發(fā)展,為了適應(yīng)現(xiàn)
7、代化的環(huán)境,許多管理事務(wù)都由電腦來管理,從而提高了管理的速率,效率。查閱有關(guān)資料,進(jìn)一步理解程序設(shè)計模塊化的思想,并利用此思想編 寫一個簡單的管理系統(tǒng)。通過課程設(shè)計,使學(xué)生進(jìn)一步掌握C++語言基本知識和基本程序設(shè)計技巧,提高學(xué)生綜合編程能力與程序調(diào)試能力,以及運(yùn)用計算機(jī)解決實(shí)際問題的能力。</p><p> 二、課程設(shè)計主要內(nèi)容及要求</p><p> (1)登錄參會人員的下列信息:&
8、lt;/p><p> ·姓名(name);</p><p><b> ·性別(sex);</b></p><p><b> ·年齡(age);</b></p><p> ·單位(department)</p><p> ·
9、;房間號(room-num)(設(shè)每個房間只住一人,房間號為101#—120#,…..,501#—520#)。</p><p> (2)主菜單應(yīng)至少包括以下幾個菜單項(xiàng):</p><p> 人員登錄、顯示報到人員信息、查詢、統(tǒng)計、修改、刪除</p><p> ?。?)程序應(yīng)分別用幾個個函數(shù)實(shí)現(xiàn)以上功能:</p><p> ·隨時對
10、報到人員進(jìn)行登錄(login),來客登記的房間是根據(jù)客人要求分配的;如果客人申請的房間已有人登記了,可以讓客人重新申請;如果所有的房間都已經(jīng)住滿,則拒絕再進(jìn)行人員登錄;</p><p> ·隨時按所住房間號(由小到大)輸出(print)已報到人員信息;</p><p> ·能夠根據(jù)姓名實(shí)現(xiàn)對人員信息的查詢;</p><p> ·能
11、夠根據(jù)單位對與會人員進(jìn)行分類統(tǒng)計,并輸出統(tǒng)計結(jié)果;</p><p> ·能夠修改與會人員的信息;</p><p> ·能夠刪除某個參會人員,并清空其所住房間;</p><p> ·程序中的變量要使用題中給定的英文名詞。</p><p><b> 三.任務(wù)分工</b></p>
12、;<p> 本小組由李姣陽和蔡鑫兩位同學(xué)組成,由于本組成員每個人學(xué)習(xí)知識的側(cè)重點(diǎn)不盡相同,每人解決問題的思路也不一樣,我組成員經(jīng)過查閱大量相關(guān)資料和書籍,并吸取大量前人的經(jīng)驗(yàn),再經(jīng)過熱烈得討論,經(jīng)全組成員一致同意,分工明細(xì)如下:</p><p><b> 小組分工見表1.1</b></p><p><b> 表1.1</b>&
13、lt;/p><p> 第 2章 設(shè)計目的和主要功能 </p><p> 為了適應(yīng)現(xiàn)代化的環(huán)境,許多工科課程的研究和施工規(guī)劃都需要編出合適的程序去處理數(shù)據(jù)和優(yōu)化方案,因此學(xué)好一門計算機(jī)語言也就顯得尤為重要。C++是一種比較流行的編程語言,學(xué)好c++也就顯得很有必要了。通過課程設(shè)計,進(jìn)一步理解程序設(shè)計模塊化的思想,并利用此思想編寫一個簡單的參會人員信息管理系統(tǒng)。這是一個為了解決相關(guān)統(tǒng)計人員
14、工作量的統(tǒng)計的問題而編寫的系統(tǒng),是專門用來解決生產(chǎn)工程中工作量和工作質(zhì)量的系統(tǒng),實(shí)用于管理者對會議過程的精確地統(tǒng)計管理。通過本設(shè)計可以加深理解利用程序設(shè)計思想開發(fā)一個系統(tǒng)的整個流程,提高分析問題、解決問題和實(shí)際動手的能力。</p><p> 參會人員信息管理系統(tǒng)的功能:</p><p> 錄入登錄信息:輸入?yún)藛T的基本信息,通過一個基本連接點(diǎn),能夠記錄并保存參會人員的基本信息.<
15、;/p><p> 顯示功能:通過操作界面,可以輕松實(shí)現(xiàn)將保存的參會人員信息顯示出來。便于整體把握參會人員的信息。.能夠根據(jù)單位對與會人員進(jìn)行分類統(tǒng)計,并輸出統(tǒng)計結(jié)果</p><p> 排序功能:通過一組相同的信息(房號),能夠通過該唯一信息為參會人員進(jìn)行簡單的排序,使使用者能夠快速的查閱信息。也便于了解房間占用信息。</p><p> 查詢功能:登錄人員都需要錄入
16、相關(guān)方面的信息(如姓名)。可以輸入要查詢的人的姓名,然后就可以很快獲取要查詢的人的相關(guān)信息。方便使用者對個人信息的搜尋。</p><p> 統(tǒng)計同部門人員信息:通過搜索篩選,可以將不同部門的人員信息按不同部門分類顯示出來。同時又可以通過輸入某個部門實(shí)現(xiàn)對單個部門信息的抽調(diào)。便于工作的開展和任務(wù)分工,提高時間效率。</p><p> 修改功能:通過該功能,對一些過時的參會人員信息進(jìn)行修改
17、,是使用者能夠及時的了解參會人員的最新信息.</p><p> 刪除功能:隨時對一些未到會的參會人員信息,通過該功能進(jìn)行刪除,并清空其所住房間。實(shí)現(xiàn)資源的高效利用。</p><p> 退出程序:當(dāng)用戶使用完以后,通過簡單的操作(輸入0),能夠快速的推出該系統(tǒng)。</p><p> 菜單功能:操作功能設(shè)計成分類的項(xiàng)目界面,該操作界面設(shè)置有包括人員登錄,顯示信息,按
18、房號排序,按姓名查詢,統(tǒng)計同部門人員信息,登錄信息修改,登錄信息刪除和退出。只要在提示的區(qū)域內(nèi)輸入相應(yīng)的操作的序號,就可以實(shí)現(xiàn)各個功能的錄入。操作簡潔方便。</p><p><b> 第三章 概要設(shè)計</b></p><p><b> 3.1 概要設(shè)計</b></p><p> 該系統(tǒng)可以根據(jù)不同的功能進(jìn)行函數(shù)劃分,
19、劃分的函數(shù)模塊如圖3-1所示.</p><p><b> 3-1 </b></p><p><b> 3.2 設(shè)計環(huán)境</b></p><p> 本程序的函數(shù)編譯是在Visual C++6.0的編輯軟件下進(jìn)行變異的.</p><p><b> 3.3 數(shù)據(jù)結(jié)構(gòu)</b>&
20、lt;/p><p> 本系統(tǒng)是對參會人員信息進(jìn)行管理,由于對鏈表連接的只是薄弱,姑而采用結(jié)構(gòu)體數(shù)組儲存方式。定義如下:</p><p> struct STAFF /*參會人員的數(shù)據(jù)結(jié)構(gòu)*/</p><p><b> {</b></p><p> char name[20]; /*姓名*/</p>
21、;<p> char sex[7]; /*性別*/</p><p> int age; /*年齡*/</p><p> char department[30];/*單位*/</p><p> char room_num[10]; /*房間號*/</p><p><b> }
22、</b></p><p><b> 3.4 模塊設(shè)計</b></p><p> 根據(jù)不同的功能操作,設(shè)計了幾個模塊,如圖</p><p><b> 表3-1功能模塊表</b></p><p><b> 第四章 詳細(xì)設(shè)計</b></p><
23、p> 本次課設(shè)中,作為小組組長,在設(shè)計過程中我負(fù)責(zé)的是主函數(shù)、人員登錄、登錄信息修改和刪除、統(tǒng)計同部門人員信息。</p><p> 4.1主函數(shù)設(shè)計及問題</p><p><b> /*主函數(shù)*/</b></p><p> int main()</p><p><b> {</b>&
24、lt;/p><p> system("color 1c"); //背景和字體顏色設(shè)計</p><p> int length=0;/*記錄登陸的人數(shù)*/</p><p> STAFF staff[MAX]; /*定義結(jié)構(gòu)體數(shù)組*/</p><p><b> int i=0;</b></p
25、><p> ifstream infile("logInfo.txt",ios::in);</p><p> if (!infile)</p><p><b> {</b></p><p> cerr<<"還沒錄入文件!!!!"<<endl;</p
26、><p><b> exit(1);</b></p><p><b> }</b></p><p> while (infile>>staff[i].name>>staff[i].sex>>staff[i].age>>staff[i].department >>
27、staff[i].room_num )//將文件信息逐一錄入內(nèi)存</p><p><b> {</b></p><p><b> i++;</b></p><p><b> length++;</b></p><p><b> }</b></
28、p><p> infile.close();//關(guān)閉文件流</p><p> int choice=-1;</p><p> menu();//執(zhí)行菜單函數(shù)</p><p> loop:cout<<"輸入你的選擇(0-7):";</p><p> cin>>choic
29、e; /*由用戶選擇操作*/</p><p> while(choice>=0&&choice<=7)</p><p><b> {</b></p><p> switch(choice)</p><p><b> {</b></p><p&
30、gt; case 1:length=login(staff,length);break;</p><p> case 2:show_all(staff,length);break;</p><p> case 3:sort(staff,length);break;</p><p> case 4:searchByName(staff,length);brea
31、k;</p><p> case 5:statistics(staff,length);break;</p><p> case 6:edit(staff,length);break;</p><p> case 7:length=Delete(staff,length);break;</p><p> case 0:cout<
32、<"退出成功?。。?!";</p><p> exit(-1); /*退出*/</p><p><b> }</b></p><p><b> menu();</b></p><p> cout<<"輸入你的選擇(0-7):";cin&
33、gt;>choice;</p><p><b> }</b></p><p> cout<<"不好意思,暫沒有此功能選擇?。。?!"<<endl;</p><p> goto loop;//跳到前面loop繼續(xù)循環(huán)</p><p><b> return
34、0;</b></p><p><b> }</b></p><p><b> 4.1流程圖 </b></p><p><b> 、</b></p><p><b> 是</b></p><p> 主函數(shù)設(shè)計中遇
35、到的問題及解決方案:</p><p> 為了使程序具有保存功能,就必須設(shè)計文件流的操作。因?yàn)槊總€模塊都有文件的讀入,所以我便設(shè)想在主函數(shù)中先調(diào)入原來文件中的信息,這樣在以后的每個模塊中就不用每次都讀入信息了。在設(shè)置讀入文件流ifstream infile("logInfo.txt",ios::in);時,我遇到了問題。剛開始根本沒建立文件loginfo.txt。最后經(jīng)過反復(fù)看書以及和搭檔交流
36、發(fā)現(xiàn)文件默認(rèn)路徑錯誤,所以根本無法建立文件。經(jīng)過路徑修改解決了這個問題。然后便是文件接收。開始我用字符串變量record去記錄發(fā)現(xiàn)下面函數(shù)無法和著聯(lián)系起來。經(jīng)過小組討論和翻看書最后嘗試用結(jié)構(gòu)體詞組staff[i]通過循環(huán)接收,經(jīng)過調(diào)試發(fā)現(xiàn)成功了。</p><p> 在優(yōu)化main函數(shù)是我添加了goto語句來增加程序的連貫性。</p><p> 4.2人員登錄設(shè)計及問題</p>
37、;<p> /*登錄信息記錄保存函數(shù)*/</p><p> int login(STAFF staff[],int length)</p><p><b> {</b></p><p><b> int i;</b></p><p> if(length==50) /*房間已
38、滿,拒絕登陸*/</p><p><b> {</b></p><p> cout<<"沒有房間了,請自行聯(lián)系管理人員!";</p><p> exit(-1); </p><p> } /*end if*/</p><p><b> else
39、</b></p><p><b> {</b></p><p> char room_num[10];</p><p> cout<<"請輸入房間號(101~120、、、501~520):";</p><p> cin>>room_num;</p>
40、;<p> for(i=0;i<length;i++)</p><p><b> { </b></p><p> if(strcmp(room_num,staff[i].room_num)==0) /*申請的房間已經(jīng)有人*/</p><p><b> { </b></p><
41、;p> cout<<"這個房間已經(jīng)有人了,請選擇其他房間?。。。。。?!"<<endl;</p><p> cout<<"請輸入選擇的其他房間號:";/*讓參會人選擇別的空房間*/</p><p> cin>>room_num;</p><p> i=0;
42、/*為檢查新的房間作準(zhǔn)備*/</p><p><b> }</b></p><p> } /*end for*/</p><p> /* 錄入登陸信息*/ </p><p> strcpy(staff[length].room_num,room_num);</p><p> cout&
43、lt;<"輸入你的姓名:";</p><p> cin>>staff[length].name;</p><p> cout<<"你的性別(男士m,女士f):";</p><p> cin>>staff[length].sex;</p><p> cou
44、t<<"你的年齡:";</p><p> cin>>staff[length].age;</p><p> cout<<"你的工作部門(市場部,財務(wù)部,技術(shù)部,宣傳部):";</p><p> cin>>staff[length].department;</p>
45、<p> length++; /*參會人數(shù)加一*/</p><p> /*保存信息到文件logInfo.txt中*/</p><p> ofstream outfile("logInfo.txt",ios::app);</p><p> if (!outfile)</p><p><b>
46、 {</b></p><p> cerr<<"open error1"<<endl;</p><p><b> exit(1);</b></p><p><b> }</b></p><p> outfile<<setios
47、flags(ios::left)</p><p> <<setw(17)</p><p> <<staff[length-1].name //因?yàn)榍懊嬗衛(wèi)ength++,所以這里要用length-1</p><p> <<setw(17)</p><p> <<staff[length-
48、1].sex</p><p> <<setw(17)</p><p> <<staff[length-1].age</p><p> <<setw(17)</p><p> <<staff[length-1].department</p><p> <&l
49、t;setw(17)</p><p> <<staff[length-1].room_num</p><p><b> <<endl;</b></p><p> outfile.close();</p><p> } /*end else*/</p><p> r
50、eturn length;</p><p> }/*end login()*/</p><p> 人員登錄部分遇到的問題和解決方案:</p><p> 人員登錄是通過一個登錄及記錄函數(shù)實(shí)現(xiàn)的。當(dāng)然錄入每個參會人員信息這個比較簡單基本沒遇到大的問題。但當(dāng)做到保存錄入信息時,文件操作再次遇到問題。開始的問題是我錄入信息后再用顯示信息函數(shù)顯示信息時發(fā)現(xiàn)屏幕顯示的信息
51、是內(nèi)存中的隨機(jī)漢字“燙”。這樣程序進(jìn)入一個死循環(huán),只能強(qiáng)制關(guān)掉。這個問題我們一直分析問什么,也不知一遍的翻看文件操作那部分的書籍內(nèi)容。最后在同學(xué)幫助以及自己分析下發(fā)現(xiàn)了問題。原來在信息錄入時記錄數(shù)length最后進(jìn)行了length++。結(jié)果信息在staff[length]中而保存信息時錄入的是staff[length+1]中隨機(jī)信息。所以才產(chǎn)生了上述問題。最后把錄入位置改為staff[length-1]結(jié)果就可以顯示信息了。</p
52、><p> 4.3信息修改和刪除設(shè)計及問題</p><p> /*編輯修改函數(shù)*/</p><p> void edit(STAFF staff[],int length)</p><p><b> {</b></p><p> char room_num[10];</p>&
53、lt;p><b> int i,k;</b></p><p> string str;</p><p> ofstream outfile("logInfo.txt",ios::out);//用一個空字符變量去清空原來文件里的數(shù)據(jù)</p><p> if (!outfile)</p><p&
54、gt;<b> {</b></p><p> cerr<<"open error1"<<endl;</p><p><b> exit(1);</b></p><p><b> }</b></p><p> outfile&
55、lt;<str;</p><p> outfile.close();</p><p> if(length!=0)</p><p><b> {</b></p><p> cout<<"輸入要修改員工的房間號:";</p><p> cin>&
56、gt;room_num;</p><p> for(i=0;i<length;i++)</p><p><b> {</b></p><p> if(strcmp(staff[i].room_num,room_num)==0)</p><p><b> {</b></p>
57、<p> cout<<"請選擇你要更換的房間號:";</p><p> cin>>room_num;</p><p> for(k=0;k<length;k++)</p><p><b> { </b></p><p> if(k==i) con
58、tinue; /*可以選擇原來的房間*/</p><p> if(strcmp(room_num,staff[k].room_num)==0) /*申請的房間已經(jīng)有人*/</p><p><b> { </b></p><p> cout<<"你選擇的房間已有人,請選擇其他房間"<<endl;
59、</p><p> cout<<"請重新選擇你的房間號:";</p><p> cin>>room_num;</p><p> k=0; /*為檢驗(yàn)新的房間是否為空作準(zhǔn)備*/</p><p><b> }</b></p><p><b>
60、; } </b></p><p> /*修改人員信息*/</p><p> strcpy(staff[i].room_num,room_num);</p><p> cout<<"你的姓名:";</p><p> cin>>staff[i].name;</p>&
61、lt;p> cout<<"你的性別(男士m,女士f):";</p><p> cin>>staff[i].sex;</p><p> cout<<"你的年齡:";</p><p> cin>>staff[i].age;</p><p> c
62、out<<"你的工作部門(市場部,財務(wù)部,技術(shù)部,宣傳部):";</p><p> cin>>staff[i].department;</p><p> cout<<"修改成功"<<endl;</p><p><b> }</b></p>
63、<p><b> }</b></p><p> ofstream outfile("logInfo.txt",ios::app);//保存內(nèi)存信息到已清空文件logInfo.txt中</p><p> if (!outfile)</p><p><b> {</b></p>
64、;<p> cerr<<"open error1"<<endl;</p><p><b> exit(1);</b></p><p><b> }</b></p><p> for (i=0;i<length;i++)</p><p
65、> outfile<<setiosflags(ios::left)</p><p> <<setw(17)</p><p> <<staff[i].name</p><p> <<setw(17)</p><p> <<staff[i].sex</p>
66、<p> <<setw(17)</p><p> <<staff[i].age</p><p> <<setw(17)</p><p> <<staff[i].department</p><p> <<setw(17)</p><p>
67、 <<staff[i].room_num</p><p><b> <<endl;</b></p><p> outfile.close();</p><p><b> }</b></p><p><b> else</b></p>
68、<p> cout<<"還沒人登錄呢!@_@ ..."<<endl;</p><p> } /*end edit*/</p><p> /*信息刪除函數(shù)*/</p><p> int Delete(STAFF staff[],int length)</p><p><b&g
69、t; {</b></p><p><b> int i,k;</b></p><p> int counter=length;</p><p> char room_num[10];</p><p> string str;</p><p> ofstream outfil
70、e("logInfo.txt",ios::out);//文件清空</p><p> if (!outfile)</p><p><b> {</b></p><p> cerr<<"open error1"<<endl;</p><p><b&g
71、t; exit(1);</b></p><p><b> }</b></p><p> outfile<<str;</p><p> outfile.close();</p><p> if(length!=0)</p><p><b> {</
72、b></p><p> cout<<"請選擇要刪除員工房間的號碼:";</p><p> cin>>room_num;</p><p> for(i=0;i<length;i++)</p><p><b> {</b></p><p>
73、; if(strcmp(staff[i].room_num,room_num)==0)</p><p> { /*刪除人員*/</p><p> for(k=i;k<length-1;k++)</p><p> staff[k]=staff[k+1];/*從被刪人位置往后后一人員的信息覆蓋前一人員信息*/</p><p>
74、 cout<<"刪除成功?。?!";</p><p> length--; /*參會人數(shù)減一*/</p><p><b> }</b></p><p><b> }</b></p><p> ofstream outfile("logInfo.txt
75、",ios::app);//保存刪除后剩余信息到已清空文件logInfo.txt中</p><p> if (!outfile)</p><p><b> {</b></p><p> cerr<<"open error1"<<endl;</p><p><
76、;b> exit(1);</b></p><p><b> }</b></p><p> for (i=0;i<length;i++)</p><p><b> {</b></p><p> outfile<<setiosflags(ios::left)
77、</p><p> <<setw(17)</p><p> <<staff[i].name</p><p> <<setw(17)</p><p> <<staff[i].sex</p><p> <<setw(17)</p><
78、p> <<staff[i].age</p><p> <<setw(17)</p><p> <<staff[i].department</p><p> <<setw(17)</p><p> <<staff[i].room_num</p><p
79、><b> <<endl;</b></p><p><b> }</b></p><p> outfile.close();</p><p> if(counter==length) /*未進(jìn)行信息覆蓋,要刪除的人員還沒登陸*/</p><p> cout<<
80、"輸入的房間沒人喲?。。。?quot;<<endl;</p><p><b> }</b></p><p><b> else</b></p><p> cout<<"沒有員工登陸哦?。。。?!"<<endl;</p><p>
81、 return length;</p><p> } /*end Delete()*/</p><p> 修改和刪除部分遇到的問題:</p><p> 因?yàn)槲募浫胧侵骱瘮?shù)已經(jīng)完成,所以這兩部分的兩個函數(shù)的關(guān)鍵是在進(jìn)行完修改和刪除以后如何把原來文件里的信息修改和刪除后的保存。開始時我沒在這兩部分做保存。所以開始時顯示后,再輸入數(shù)據(jù),修改和刪除只在此次操作中起作
82、用一旦關(guān)閉后再打開修改和刪除根本就沒改變。分析原因發(fā)現(xiàn),修改和刪除只在內(nèi)存中進(jìn)行,而關(guān)閉后便消失,所以文件里的東西還是錄入后的信息,并沒有保存修改和刪除。然后我便在這兩部分函數(shù)后加上了文件寫入流ofstream outfile("logInfo.txt",ios::app);調(diào)試后發(fā)現(xiàn)可以保存修改和刪除內(nèi)容了,但以前的內(nèi)容還是沒變,只不過是在后面加上了修改刪除后剩余內(nèi)容。經(jīng)過一天的看書討論和搭檔的交流。在書上看到ap
83、p是將信息添加在原文件末尾,并沒刪除原文件以前的東西。然后我又吧app改為out目的是錄入的同時便刪除原文件內(nèi)容。但很快發(fā)現(xiàn)向文件寫內(nèi)容的流要一組一組輸出,這樣可以剛好用結(jié)構(gòu)體數(shù)組用循環(huán)將內(nèi)存信息一組一組的輸入文件。因此這樣的話最后就只能保存最后一組信息。經(jīng)過認(rèn)真思考,最后我嘗試先用一個空的字符串變量str通過out方式寫入文件。等于先將文件清空,然后再用app方式一</p><p> 4.4統(tǒng)計同部門信息設(shè)計
84、及問題</p><p> /*統(tǒng)計各部門人員函數(shù)*/</p><p> void statistics (STAFF staff[],int length)</p><p><b> {</b></p><p><b> int i;</b></p><p> ch
85、ar partname[10];</p><p> int coutner=0,flag=0;</p><p> if (length!=0)</p><p> { /*調(diào)用同部門信息顯示函數(shù)*/</p><p> display_part (staff,"市場部",length);</p>&
86、lt;p> display_part (staff,"財務(wù)部",length);</p><p> display_part (staff,"技術(shù)部",length);</p><p> display_part (staff,"宣傳部",length);</p><p> cout<&
87、lt;"請輸入部門名(市場部,財務(wù)部,技術(shù)部,宣傳部):";//下面是調(diào)出某一部門的人員信息</p><p> cin>>partname;</p><p> cout<<partname<<endl;</p><p> cout<<'\t'<<"姓名
88、 性別 年齡 房間號"<<endl;</p><p> for (i=0;i<length;i++)</p><p> if (strcmp(staff[i].department,partname)==0)</p><p><b> {</b></p>&l
89、t;p> cout<<setiosflags(ios::left)<<setw(11)<<staff[i].name<<setw(12)<<staff[i].sex<<setw(12)<<staff[i].age<<setw(13)<<staff[i].room_num<<endl;</p>&l
90、t;p> coutner++;</p><p><b> }</b></p><p> if (coutner==0)</p><p> cout<<"這個部門沒人登錄呀!!!!"<<endl;</p><p> else cout<<"總
91、計:"<<coutner<<endl; </p><p><b> }</b></p><p> else cout<<"還沒人登錄呢!!!"<<endl;</p><p><b> }</b></p><p&
92、gt; /*同一部門信息顯示函數(shù)*/</p><p> void display_part (STAFF staff[],char ch[10],int length)</p><p><b> {</b></p><p> int i,flag=0;</p><p> cout<<"
93、 "<<ch<<" "<<endl<<endl;</p><p> cout<<'\t'<<"姓名 性別 年齡 房間號"<<endl;<
94、/p><p> for (i=0;i<length;i++)</p><p> if (strcmp(staff[i].department,ch)==0)</p><p><b> {</b></p><p> cout<<setiosflags(ios::left)<<setw(11
95、)<<staff[i].name<<setw(12)<<staff[i].sex<<setw(12)<<staff[i].age<<setw(13)<<staff[i].room_num<<endl;</p><p><b> flag++;</b></p><p>&l
96、t;b> }</b></p><p> if (flag==0)</p><p> cout<<ch<<"還沒人員登錄"<<endl;</p><p> else cout<<ch<<"登錄人數(shù):"<<flag<<en
97、dl;</p><p><b> } </b></p><p> 統(tǒng)計部分遇到的問題和解決方案:</p><p> 這部分我是用一個同部門顯示函數(shù)來實(shí)現(xiàn)分類將各部門信息全部顯示出來。然后我又通過編寫程序?qū)崿F(xiàn)了輸入某個部門然后顯示出來的這個部門信息。這一部分沒有文件的處理和保存,所以相對簡單。但其中卻要用的函數(shù)中調(diào)用函數(shù),所以開
98、始構(gòu)建void display_part (STAFF staff[],char ch[10],int length)這個函數(shù)時,關(guān)于函數(shù)參數(shù)的選擇遇到了難題。我不清楚是用int類型還是void類型。經(jīng)過反復(fù)看書和比較,最終確定這個函數(shù)用一個三參數(shù)實(shí)現(xiàn),在void statistics (STAFF staff[],int length)這個函數(shù)中整體顯示是調(diào)用四次。經(jīng)過調(diào)試運(yùn)行,最后取得了成功。</p><p>
99、; 第五章 程序的調(diào)試和運(yùn)行</p><p> 根據(jù)上述的思路與設(shè)計,對整個程序進(jìn)行完整的編譯,并運(yùn)行檢驗(yàn)程序.</p><p><b> 5.1 源程序代碼</b></p><p> 構(gòu)建完整的程序函數(shù),試運(yùn)行檢驗(yàn)程序的正確性,是否符合自己的思路.</p><p> #include <iostrea
100、m></p><p> #include<string></p><p> #include <iomanip></p><p> #include<fstream></p><p> int const MAX = 50 ; /*定義最大參會人數(shù)*/</p><p>
101、; using namespace std;</p><p> struct STAFF /*參會人員的數(shù)據(jù)結(jié)構(gòu)*/</p><p><b> {</b></p><p> char name[20]; /*姓名*/</p><p> char sex[7]; /*性別*/</p&g
102、t;<p> int age; /*年齡*/</p><p> char department[30];/*單位*/</p><p> char room_num[10]; /*房間號*/</p><p><b> }staff;</b></p><p> void men
103、u()</p><p><b> {</b></p><p> cout<<"\n";</p><p> cout<<"|--------------------參會人員信息管理系統(tǒng) -----------------|"<<endl;</p>&l
104、t;p> cout<<"| 1.人員登陸 |"<<endl; </p><p> cout<<"| 2.顯示信息 |"<<endl;&
105、lt;/p><p> cout<<"歡 3.按房號排序 樂"<<endl;</p><p> cout<<"迎 4.按姓名查詢 意"<<
106、endl;</p><p> cout<<"使 5.統(tǒng)計同部門人員 指"<<endl;</p><p> cout<<"用 6.登錄信息修改 正"<&
107、lt;endl;</p><p> cout<<"| 7.登錄信息刪除 |"<<endl;</p><p> cout<<"| 0.退出
108、|"<<endl;</p><p> cout<<"|----------------★★--wel-\(˙<>˙)/-come--★★------------|"<<endl;</p><p><b> }</b></p><p><b> /*函數(shù)
109、原型*/</b></p><p> int login(STAFF staff[],int length);</p><p> void show_all(STAFF staff[],int length);</p><p> void sort(STAFF staff[],int length);</p><p> vo
110、id searchByName(STAFF staff[],int length);</p><p> void statistics(STAFF staff[],int length);</p><p> void edit(STAFF staff[],int length);</p><p> int Delete(STAFF staff[],int le
111、ngth);</p><p> void display_part (STAFF staff[],char ch[10],int length);</p><p> /*函數(shù)的定義*/ </p><p> /*登錄信息記錄保存函數(shù)*/</p><p> int login(STAFF staff[],int length)</p
112、><p><b> {</b></p><p><b> int i;</b></p><p> if(length==50) /*房間已滿,拒絕登陸*/</p><p><b> {</b></p><p> cout<<"
113、沒有房間了,請自行聯(lián)系管理人員!";</p><p> exit(-1); </p><p> } /*end if*/</p><p><b> else</b></p><p><b> {</b></p><p> char room_num[10
114、];</p><p> cout<<"請輸入房間號(101~120、、、501~520):";</p><p> cin>>room_num;</p><p> for(i=0;i<length;i++)</p><p><b> { </b></p>
115、<p> if(strcmp(room_num,staff[i].room_num)==0) /*申請的房間已經(jīng)有人*/</p><p><b> { </b></p><p> cout<<"這個房間已經(jīng)有人了,請選擇其他房間?。。。。。。?quot;<<endl;</p><p>
116、cout<<"請輸入選擇的其他房間號:";/*讓參會人選擇別的空房間*/</p><p> cin>>room_num;</p><p> i=0; /*為檢查新的房間作準(zhǔn)備*/</p><p><b> }</b></p><p> } /*end for
117、*/</p><p> /* 錄入登陸信息*/ </p><p> strcpy(staff[length].room_num,room_num);</p><p> cout<<"輸入你的姓名:";</p><p> cin>>staff[length].name;</p>
118、<p> cout<<"你的性別(男士m,女士f):";</p><p> cin>>staff[length].sex;</p><p> cout<<"你的年齡:";</p><p> cin>>staff[length].age;</p>&
119、lt;p> cout<<"你的工作部門(市場部,財務(wù)部,技術(shù)部,宣傳部):";</p><p> cin>>staff[length].department;</p><p> length++; /*參會人數(shù)加一*/</p><p> /*保存信息到文件logInfo.txt中*/</p>&
120、lt;p> ofstream outfile("logInfo.txt",ios::app);</p><p> if (!outfile)</p><p><b> {</b></p><p> cerr<<"open error1"<<endl;</p>
121、;<p><b> exit(1);</b></p><p><b> }</b></p><p> outfile<<setiosflags(ios::left)</p><p> <<setw(17)</p><p> <<staff[
122、length-1].name //因?yàn)榍懊嬗衛(wèi)ength++,所以這里要用length-1</p><p> <<setw(17)</p><p> <<staff[length-1].sex</p><p> <<setw(17)</p><p> <<staff[length-1].
123、age</p><p> <<setw(17)</p><p> <<staff[length-1].department</p><p> <<setw(17)</p><p> <<staff[length-1].room_num</p><p><b&
124、gt; <<endl;</b></p><p> outfile.close();</p><p> } /*end else*/</p><p> return length;</p><p> }/*end login()*/</p><p><b> /*顯示函數(shù)*/
125、</b></p><p> void show_all(STAFF staff[],int length)</p><p> { int i;</p><p> if (length!=0)//判斷是否有記錄</p><p><b> {</b></p><p> cou
126、t<<"********************員工注冊信息********************"<<endl;</p><p> cout<<'\t'<<"姓名 性別 年齡 工作部門 房間號 "<<endl;</p><p> for(i=
127、0;i<length;i++) /*輸出報到人員的信息*/</p><p><b> { </b></p><p> cout<<'\t'<<staff[i].name;</p><p> cout<<'\t'<<staff[i].sex;</
128、p><p> cout<<'\t'<<staff[i].age;</p><p> cout<<'\t'<<staff[i].department;</p><p> cout<<setiosflags(ios::right)<<setw(9)<<s
129、taff[i].room_num;</p><p> cout<<endl;</p><p><b> }</b></p><p><b> }</b></p><p><b> else </b></p><p> cout<
130、;<"還沒有人登陸?。。。。。。。。?!"<<endl;</p><p><b> }</b></p><p><b> /*排序函數(shù)*/</b></p><p> void sort(STAFF staff[],int length)</p><p>&l
131、t;b> {</b></p><p> STAFF temp;</p><p><b> int i,j;</b></p><p> if(length!=0)</p><p><b> {</b></p><p> for(i=0;i<l
132、ength;i++) /*冒泡排序*/</p><p> for(j=0;j<length-i-1;j++)</p><p> if(strcmp(staff[j].room_num,staff[j+1].room_num)>0)</p><p><b> { </b></p><p> temp
133、=staff[j]; </p><p> staff[j]=staff[j+1];</p><p> staff[j+1]=temp;</p><p><b> }</b></p><p> cout<<"********************員工注冊信息****************
134、****"<<endl;</p><p> cout<<'\t'<<"姓名 性別 年齡 工作部門 房間號 "<<endl;</p><p> for(i=0;i<length;i++)</p><p> { /*輸出報到人員的信息*
135、/</p><p> cout<<'\t'<<staff[i].name;</p><p> cout<<'\t'<<staff[i].sex;</p><p> cout<<'\t'<<staff[i].age;</p>&l
136、t;p> cout<<'\t'<<staff[i].department;</p><p> cout<<setw(9)<<staff[i].room_num;</p><p> cout<<endl;</p><p><b> }</b></p&g
137、t;<p><b> }</b></p><p><b> else</b></p><p> cout<<"還沒有人登陸?。。。。。。。。?!"<<endl;</p><p> } /*end print()*/</p><p>
138、/*按姓名查找函數(shù)*/</p><p> void searchByName(STAFF staff[],int length)</p><p><b> {</b></p><p> char name[20];</p><p><b> int i;</b></p><
139、;p> int counter=0;</p><p> if(length!=0)</p><p><b> {</b></p><p> cout<<"請輸入要查找的人的姓名:";</p><p> cin>>name;</p><p>
140、; cout<<'\t'<<"姓名 性別 年齡 工作部門 房間號 "<<endl;</p><p> for(i=0;i<length;i++)</p><p><b> {</b></p><p> if(strcmp(staf
141、f[i].name,name)==0)</p><p><b> { </b></p><p> /*判斷名字是否相同,相同則輸出人員信息*/</p><p> cout<<'\t'<<staff[i].name;</p><p> cout<<'\
142、t'<<staff[i].sex;</p><p> cout<<'\t'<<staff[i].age;</p><p> cout<<'\t'<<staff[i].department;</p><p> cout<<setw(13)<<
143、;staff[i].room_num;</p><p> cout<<endl;</p><p> counter++;</p><p><b> }</b></p><p><b> }</b></p><p> if(counter==0) /*co
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c課程設(shè)計--參會人員管理程序
- c++課程設(shè)計--學(xué)生社團(tuán)管理程序
- c++課程設(shè)計---公司人員信息管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---學(xué)生信息管理系統(tǒng)
- c++課程設(shè)計--通信錄管理程序
- c++課程設(shè)計--職工信息管理
- c++課程設(shè)計---學(xué)生信息管理系統(tǒng)
- c++課程設(shè)計--藥品信息管理系統(tǒng)
- c++客戶信息管理系統(tǒng)課程設(shè)計
- c++課程設(shè)計--某高校信息管理
- c++課程設(shè)計--超市信息管理系統(tǒng)
- c++課程設(shè)計--職工信息管理系統(tǒng)
- 《c++面向?qū)ο蟪绦蛟O(shè)計》課程設(shè)計——職工信息管理系統(tǒng)
- c++課程設(shè)計——學(xué)生信息管理系統(tǒng)課程設(shè)計報告
- c++課程設(shè)計報告--學(xué)生信息管理系統(tǒng)
- c++課程設(shè)計——圖書信息管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---公司人員管理系統(tǒng)
- c++課程設(shè)計報告---圖書信息管理系統(tǒng)
- 課程設(shè)計--c++編寫的學(xué)生信息管理系統(tǒng)
- c++課程設(shè)計報告---圖書信息管理系統(tǒng)
評論
0/150
提交評論