C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告.doc_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告.doc_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告.doc_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告.doc_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告.doc_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

高級(jí)語(yǔ)言程序設(shè)計(jì)訓(xùn)題 目: 員工信息管理程序 院系專(zhuān)業(yè): 計(jì)算機(jī)工程系 姓 名: 朱建國(guó) 學(xué) 號(hào): 201100403025 2011年01月05 日1、 需求分析員工檔案是企業(yè)勞動(dòng),人事部門(mén)在招用、調(diào)配、培訓(xùn)、考核、獎(jiǎng)懲和任用等工作中形成的有關(guān)職工個(gè)人經(jīng)歷、政治思想、業(yè)務(wù)技術(shù)水平、工作表現(xiàn)以及工作變動(dòng)等情況的文件材料。1、 基本要求:(1) 程序菜單功能或詳細(xì)的提示功能;(2) 員工信息的輸入(包括員工號(hào)、姓名、年齡、職位、工資)功能;(3) 員工信息的瀏覽功能;(4) 員工信息的添加功能;(5) 員工信息的刪除功能;(6) 員工信息的排序功能;(7) 員工信息的查詢功能;2、 其他要求:(1) 結(jié)構(gòu)體數(shù)組實(shí)現(xiàn),用指針訪問(wèn)結(jié)構(gòu)體成員;(2) 自行設(shè)計(jì)的程序不少于100行,總體程序不少于200行;(3) 輸出數(shù)據(jù)要求格式美觀;(4) 程序要有詳細(xì)的注釋?zhuān)?huà)出程序流程圖及必要的文字說(shuō)明書(shū)文檔,程序內(nèi)容和文檔 內(nèi)容要體現(xiàn)個(gè)性化設(shè)計(jì)思想;(5) 嚴(yán)禁雷同,任務(wù)書(shū)除外全部手寫(xiě);二、程序總體設(shè)計(jì):1、程序主要包括三大模塊:輸入輸出模塊、管理模塊和文件操作模塊。如下圖:輸入輸出終端 輸入輸出模塊 管理模塊 文件操作模塊 存儲(chǔ)文件 2、界面設(shè)計(jì):程序中visual C+的編譯環(huán)境中進(jìn)行,界面將通過(guò)屏幕的輸出顯示功能選項(xiàng)。通過(guò)鍵盤(pán)輸入完成相應(yīng)操作。程序主界面是一個(gè)文本方式的菜單,通過(guò)鍵盤(pán)相應(yīng)選擇操作指令。 3、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):?jiǎn)T工檔案中的記錄項(xiàng)由多個(gè)不同的數(shù)據(jù)項(xiàng)構(gòu)成,是一個(gè)結(jié)構(gòu)體數(shù)據(jù),因此需要定義結(jié)構(gòu)體數(shù)據(jù)類(lèi)型。根據(jù)要求,數(shù)據(jù)項(xiàng)為:?jiǎn)T工號(hào)、姓名、性別、年齡、職位、工資。據(jù)此定義如下結(jié)構(gòu)體數(shù)據(jù)類(lèi)型:struct workerint num;/* 員工號(hào)*/char name10;/* 姓名*/char sex10;/* 性別*/int age;/* 年齡*/char position10;/*職位*/int pay;/*工資*/workN; 4、程序函數(shù)設(shè)計(jì)main ();/*主函數(shù)*/void menu_handle();/*函數(shù)處理菜單*/int menu_choose();/*函數(shù)選擇菜單*/void input_worker();/*創(chuàng)建文件并對(duì)工人信息輸入函數(shù)*/void save_file(int n);/*文件保存*/int load();/*提取員工數(shù)*/void message_output();/*員工信息瀏覽函數(shù)*/void add_worker();/*員工添加函數(shù)*/void dele_worker();/*員工信息刪除函數(shù)*/void fine();/*員工信息查詢函數(shù)*/void fine_num();/*員工號(hào)查詢函數(shù)*/void fine_name();/*按姓名查詢函數(shù)*/void sort_age();/*按年齡排序函數(shù)*/void sort_pay();/*按工資排序函數(shù)*/void sort();/*排序函數(shù)處理*/void change(struct worker *p,int n);/*交換元素*/3、 程序流程圖1、員工信息輸入功能 3、添加員工信息開(kāi)始 開(kāi)始新建文件 清屏打開(kāi)文件 以追加方式打開(kāi)數(shù)據(jù)文件提示輸入提示輸入輸入 輸入寫(xiě)入文件寫(xiě)入文件關(guān)閉文件關(guān)閉并返回結(jié)束并返回2、員工信息瀏覽功能開(kāi)始打開(kāi)數(shù)據(jù)文件讀文件關(guān)閉文件結(jié)束并返回 結(jié)束4、 員工信息刪除開(kāi)始顯示該記錄清屏刪除與否 否提示輸入姓名 是輸入將數(shù)組后移 調(diào)用瀏覽函數(shù) 調(diào)用文件保存函數(shù)數(shù)據(jù)讀到數(shù)組中 對(duì)比查找 返回5、員工信息查詢6、 員工信息排序結(jié)束并返回開(kāi)始 開(kāi)始清屏清屏 提示提示輸入 按什么排序輸入 選擇數(shù)據(jù)與數(shù)組比較 調(diào)用瀏覽函數(shù)讀該數(shù)組 冒泡排序結(jié)束并返回輸出 四、實(shí)訓(xùn)計(jì)劃第一天:設(shè)計(jì)程序設(shè)計(jì)書(shū);第二天:實(shí)現(xiàn)函數(shù)菜單功能;第三天:實(shí)現(xiàn)員工信息輸入(保存在文件中)與瀏覽功能;第四天:實(shí)現(xiàn)員工信息的添加及刪除功能;第五天:實(shí)現(xiàn)員工信息的查詢功能;第六天:實(shí)現(xiàn)員工信息的排序功能;第七天:對(duì)源程序進(jìn)行改進(jìn)與美化;五、詳細(xì)設(shè)計(jì)設(shè)計(jì)總圖如下:1、:建立頭文件:頭文件包含各種調(diào)用函數(shù),如圖2、建立主函數(shù)文件:里面的是主函數(shù)并調(diào)用菜單函數(shù)3、建立菜單函數(shù)文件:調(diào)用各種功能函數(shù):?jiǎn)T工信息的輸入輸出、添加刪除、查詢排序4、建立子函數(shù)文件:包括各種功能函數(shù):?jiǎn)T工信息的輸入輸出、添加刪除、查詢排序六、實(shí)訓(xùn)過(guò)程在菜單功能的源程序編寫(xiě)過(guò)程沒(méi)有遇到什么困難,但在界面的設(shè)計(jì)上,花費(fèi)了許多時(shí)間尋找適合的符號(hào)和設(shè)計(jì),以下是程序菜單選擇界面: 菜單功能完成之后,就開(kāi)始各種功能函數(shù)的編寫(xiě),輸入函數(shù)一開(kāi)始沒(méi)有想到調(diào)用一個(gè)保存文件的函數(shù),后來(lái)在資料上看到這樣這個(gè)方法,但當(dāng)時(shí)已經(jīng)編好了,就沒(méi)有修改。但這次功能我也學(xué)會(huì)了這樣一個(gè)方法。下次可以應(yīng)用到程序中。這個(gè)功能的實(shí)現(xiàn)也沒(méi)有遇到困難之后我便一口氣把員工信息的瀏覽功能做好了。 然而在做員工信息添加功能時(shí),開(kāi)始遇到困難了,當(dāng)時(shí)我的fwrite()語(yǔ)句為fwrite(work,sizeof(struct worker),1,fp);使得加進(jìn)去的信息讀出來(lái)的是一堆亂碼,結(jié)果我不知道錯(cuò)誤在哪里,一直以為是輸入函數(shù)那邊出錯(cuò)或者瀏覽函數(shù)那邊錯(cuò)誤,這么改都改不得,花了很多時(shí)間,最后才發(fā)現(xiàn)是這里錯(cuò)誤,才改成fwrite(p,sizeof(struct worker),1,fp); 實(shí)現(xiàn)了添加功能之后,就開(kāi)始做員工信息的刪除功能,這個(gè)功能的實(shí)現(xiàn)花了我更多的時(shí)間。首先,我當(dāng)時(shí)把結(jié)構(gòu)體數(shù)組放在頭文件的文件中并初始化一個(gè)數(shù)組,使得調(diào)用這個(gè)文件時(shí)出現(xiàn)一個(gè)重復(fù)定義的錯(cuò)誤,解決完這個(gè)錯(cuò)誤之后,開(kāi)始調(diào)試,沒(méi)發(fā)現(xiàn)別的錯(cuò)誤,但在運(yùn)行的時(shí)候,前面的幾個(gè)人的信息都無(wú)法刪除,只能刪除最后一個(gè)人的信息,這個(gè)錯(cuò)誤讓我苦惱了很久設(shè)置斷點(diǎn)調(diào)試的時(shí)候,輸入功能的work0、work1都沒(méi)問(wèn)題,然而添加功能的work0、work1卻發(fā)生了變化!刪除功能那邊的work0是居然是儲(chǔ)存最后一名員工的信息,而在瀏覽員工信息之后的work0、work1卻是我想得到的,于是我便在刪除函數(shù)功能那里調(diào)用了瀏覽函數(shù),終于解決了這個(gè)困難。這個(gè)困難花了我好幾天 解決完那個(gè)問(wèn)題之后,我的編程開(kāi)始一馬平川,之后的功能實(shí)現(xiàn)也沒(méi)有遇到很大的困難提前了兩天完成這個(gè)任務(wù)。七、程序的調(diào)試與測(cè)試程序調(diào)試時(shí)在錄入員工信息設(shè)斷點(diǎn)如下:用于調(diào)試數(shù)組當(dāng)前儲(chǔ)存的數(shù)據(jù) 在瀏覽信息函數(shù)里設(shè)的斷點(diǎn)如下:用于調(diào)試數(shù)組當(dāng)前儲(chǔ)存的數(shù)據(jù) 在刪除信息函數(shù)里設(shè)如下斷點(diǎn):用于調(diào)試數(shù)組當(dāng)前儲(chǔ)存的數(shù)據(jù)用于調(diào)試數(shù)組當(dāng)前儲(chǔ)存的數(shù)據(jù)存的數(shù)據(jù)用于調(diào)試數(shù)組當(dāng)前儲(chǔ)存的數(shù)據(jù)用于調(diào)試數(shù)組當(dāng)前儲(chǔ)存的數(shù)據(jù)調(diào)試結(jié)果:發(fā)現(xiàn)這幾個(gè)數(shù)組儲(chǔ)存的數(shù)據(jù)不一樣,原本以為只要把數(shù)組定義在頭文件數(shù)組內(nèi)容就不會(huì)改變,結(jié)果發(fā)現(xiàn)這個(gè)想法是錯(cuò)誤的。這給我的C語(yǔ)言上了一課!七、程序的運(yùn)行1、程序的歡迎界面2、 按1進(jìn)入員工信息輸入,并輸入員工數(shù)為2,姓名為張三、李四,如下圖:3,、錄入員工信息后,按回車(chē),退出員工信息的錄入功能,按2瀏覽員工信息,操作如下圖:3、 瀏覽無(wú)誤之后,按3進(jìn)行下一個(gè)功能,員工信息的添加,并添加3名員工,如圖:4、 添加完成后,按2進(jìn)行瀏覽員工信息,如圖:5、 瀏覽無(wú)誤之后,按4進(jìn)行員工信息的刪除,以下以刪除朱總為例:按1刪除后,程序?yàn)g覽刪除后的信息并提示是否繼續(xù)刪除或者返回6、 按2退出刪除功能,并按5進(jìn)行員工信息的查詢功能,如圖:(1) 程序?qū)⑻崾景词裁捶绞讲樵?,以下以按姓名查詢?yōu)槔海?)輸入要查詢的姓名為朱總,顯示如下圖:(2) 按1選擇重新輸入,以張三為例:7、 按3退出,并選擇6進(jìn)行排序:(1)提示按什么方式排序:(2)按2,以按工資排序?yàn)槔?,提示按從小到大或者從大到小排序:?)按1,以從大到小排序:8、 按3退出,功能演示完畢,按2瀏覽員工信息是否改變,如下圖:9、 演示完畢按7退出程序:八、結(jié)論分析問(wèn)題問(wèn)題的解決不能想著一步登天,當(dāng)時(shí)一拿到這個(gè)任務(wù)的時(shí)候,就開(kāi)始醞釀著用什么是用數(shù)組還是用鏈表去做這個(gè)任務(wù),由于對(duì)鏈表的認(rèn)識(shí)不夠深刻,就選擇了數(shù)組。因?yàn)閱T工信息包含多種不同的信息,就著手于結(jié)構(gòu)體,之后開(kāi)始以菜單為一條線索,隨著這條線索,一步一步的把各種功能調(diào)用到菜單中,這樣才能有清晰的思路去編程。算法分析算法是各個(gè)功能函數(shù)實(shí)現(xiàn)的核心與前提,首先算法是結(jié)合數(shù)組來(lái)思考的,比如在做刪除函數(shù)的時(shí)候,首先要想到如何把你輸入的要?jiǎng)h除的信息與數(shù)組中儲(chǔ)存的信息做一個(gè)比較,只有這樣才能找得到你想要?jiǎng)h除的內(nèi)容。因此就不由自主的想到用strcmp()這個(gè)函數(shù),這樣不僅節(jié)約了許多不必要的程序代碼,還能使自己的思維方式更寬。找到更合適自己的算法去解決問(wèn)題九、心得與體會(huì)經(jīng)過(guò)了兩個(gè)星期的實(shí)訓(xùn)培訓(xùn),雖然這期間很苦很累,在這段時(shí)間里,可以說(shuō)我花了幾天幾夜去編了吧,從早上9點(diǎn)到凌晨12點(diǎn)半,每次厚著臉皮去找學(xué)長(zhǎng)借電腦使用,我都會(huì)有些不好意思然而,這說(shuō)明了我已經(jīng)陷入了編寫(xiě)程序的樂(lè)趣當(dāng)中,雖然每次遇到困難,我都會(huì)去研究許久。甚至想到放棄(我第一次的程序啊,有時(shí)候看到別人都已經(jīng)做出來(lái)了我自己卻沒(méi)能完成,是不是太執(zhí)著了呢?其實(shí)我也好想借鑒一下別人的方法啊,可是這樣能提高嗎?哎好累,花了那么多精力去編了,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論