C語言課程設(shè)計(jì)報(bào)告:職工信息管理系統(tǒng)程序設(shè)計(jì)_第1頁
C語言課程設(shè)計(jì)報(bào)告:職工信息管理系統(tǒng)程序設(shè)計(jì)_第2頁
C語言課程設(shè)計(jì)報(bào)告:職工信息管理系統(tǒng)程序設(shè)計(jì)_第3頁
C語言課程設(shè)計(jì)報(bào)告:職工信息管理系統(tǒng)程序設(shè)計(jì)_第4頁
C語言課程設(shè)計(jì)報(bào)告:職工信息管理系統(tǒng)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、c語言課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目:職工信息管理系統(tǒng)程序設(shè)計(jì)班級(jí):031094-11姓名:舒平學(xué)號(hào):20091001905指導(dǎo)老師:邵玉祥課程設(shè)計(jì)評(píng)語2目 錄31課程論文題目42程序設(shè)計(jì)思路43功能模塊圖54數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)55算法設(shè)計(jì)66程序代碼137程序運(yùn)行結(jié)果228編程中遇到的困難及解決方法259總結(jié)心得及良好建議2610致謝26 1 課程論文題目職工信息管理系統(tǒng)程序設(shè)計(jì)一、 題目要求 職工信息包括職工號(hào)、姓名、性別、年齡、學(xué)歷、工資、住址、電話等(職工號(hào)不重復(fù))。試設(shè)計(jì)一職工信息管理系統(tǒng),使之能提供以下功能:(1) 系統(tǒng)以菜單的方式工作。(2) 職工信息錄入功能 (職工信息用文件保存)。(3)

2、職工瀏覽功能。(4) 職工信息查詢功能,查詢方式可按學(xué)歷查詢或者工號(hào)查詢。(5) 職工信息的刪除、修改功能(可選項(xiàng))。2程序設(shè)計(jì)思路1、設(shè)計(jì)思路(1)根據(jù)題目要求,應(yīng)該把職工工資信息用結(jié)構(gòu)體形式輸入,在定義一個(gè)全局變量和文件指針進(jìn)行整個(gè)程序的運(yùn)行,然后把職工工資信息送到文件中,所以應(yīng)該提供一個(gè)結(jié)構(gòu)體和文件的輸入輸出等操作;(2)在程序中需實(shí)現(xiàn)職工工資瀏覽、查詢、統(tǒng)計(jì)等功能的操作,所以需要建立相應(yīng)的功能模塊來實(shí)現(xiàn);(3)另外還需要提供鍵盤式選擇菜單實(shí)現(xiàn)功能,在運(yùn)行時(shí)達(dá)到所要的目的。 3功能模塊圖職工信息管理系統(tǒng)信息修改信息查詢信息瀏覽信息錄入按學(xué)歷查詢按工號(hào)查詢5算法設(shè)計(jì)1主函數(shù)提供輸入、處理和

3、輸出部分的函數(shù)調(diào)用,各功能模塊采用菜單方式選擇。開 始顯示一系列的功能選擇輸入n,判斷n是否是0到6ny根據(jù)n值調(diào)用各功能模塊2瀏覽模塊【分析】該模塊的功能是瀏覽職工的全部信息顯示職工記錄(10個(gè)一屏)按任意鍵顯示下一屏按任意鍵返回主菜單3排序模塊 開 始輸入n判斷n是否是0到2ny12瀏覽職工信息按實(shí)發(fā)工資排序按工資卡號(hào)排序返回?輸出12主菜單4查詢模塊【分析】 該模塊的功能是根據(jù)輸入的職工按照工號(hào)和學(xué)歷查找對(duì)應(yīng)的記錄,找到以后,可進(jìn)行繼續(xù)查找或修改信息的操作。流程圖如下:開 始選擇按工號(hào)還是學(xué)歷查詢輸入職工工號(hào)或者學(xué)歷是否找到職工記錄?顯示沒有找到顯示找到的記錄詢問用戶是否繼續(xù)查找?選擇:

4、1)查找另一個(gè) 2)修改 3)返回菜單結(jié)束5修改模塊 【分析】該模塊的功能是顯示所有職工的信息,考慮到記錄較多,建議采用分屏顯示。顯示完所有記錄后,輸入要修改的職工的工號(hào),根據(jù)工號(hào)查到職工的記錄,并提示用戶修改該記錄的哪部分信息,根據(jù)用戶做的選擇修改相應(yīng)信息。流程圖如下:開 始顯示所有記錄,讓用戶選擇需修改的職工輸入需修改的工號(hào)i!=0? y顯示找到的記錄,調(diào)用修改記錄詢問用戶是否繼續(xù)修改 返回主菜單結(jié)束6程序代碼#include#define n 50struct workerchar id50;char name20;char sex10;char age10;char edu20;cha

5、r salary10;char address20;char tel20;workern;void save(int n) /保存函數(shù),保存n個(gè)記錄 file *fp; int i; if(fp=fopen(worker.txt,wb)=null) /以只寫方式為輸出打開一個(gè)二進(jìn)制文件 printf(ncannot open filen); for(i=0;in;i+) if(fwrite(&workeri,sizeof(struct worker),1,fp)!=1) printf(file write errorn); fclose(fp);int load() /加載函數(shù) file *f

6、p; int i; if(fp=fopen(worker.txt,rb)=null) printf(ncannot open filen); return null; for(i=0;!feof(fp);i+) fread(&workeri,sizeof(struct worker),1,fp); fclose(fp); return(i-1);void no_input(int i,int n) /工號(hào)輸入函數(shù),i表示第i個(gè)職工的信息,n表示比較到第n個(gè)職工 int j,k,w1; do w1=0; printf(工號(hào):); scanf(%s,workeri.id); for(j=0;wor

7、keri.idj!=0;j+) if(workeri.idj9) /判斷工號(hào)是否為數(shù)字 puts(請(qǐng)重新輸入!n); w1=1;break; if(w1!=1) for(k=0;knn 1).工號(hào) 2).姓名 3).性別 4).年齡 5).工資 6).學(xué)歷 7).地址 8).電話 9).取消); printf(請(qǐng)選擇?: bb); scanf(%d,&c); if(c9|c9|c1); do switch(c) case 1:no_input(i,n);break; case 2:printf(name:);scanf(%s,);break;case 3:printf(

8、sex:);scanf(%s,workeri.sex);break;case 4:printf(age:);scanf(%s,workeri.age);break;case 5:printf(salary:);scanf(%s,workeri.salary);break;case 6:printf(edu:);scanf(%s,);break;case 7:printf(address:);scanf(%s,workeri.address);break;case 8:printf(tel:);scanf(%s,workeri.tel);break; case 9:menu

9、();break; puts(nnow:n); printf_face(); printf_one(i); printf(n確定?nnt1).是 2).否,重新修改 3).不保存退出 bb); scanf(%d,&w1); if(w1=1)save(n); while(w1=2); return(w1);printf_face() /顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目 printf(nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n); void enter() /輸入模塊 int i,n; printf(輸入多少個(gè)職工信息(0-%d):,n-1); scanf(%d,&n); printf(n 請(qǐng)輸入職

10、工信息nn); for(i=0;in;i+) input(i); if(i!=0) save(n); printf_back();browse() /瀏覽模塊 int i,j,n; n=load(); printf_face(); for(i=0;in;i+) if(i!=0)&(i%10=0) printf(nn按任意鍵顯示下一頁.); getch(); puts(nn); printf_one(i); printf(t這里有 %d 條記錄.n,n); printf(n按任意鍵返回.); getch(); menu();modify() /修改模塊struct worker s;file *

11、fp;int i,n,k,w0=1,w1,w2=0;n=load();dok=-1;printf_face();for(i=0;in;i+)if(i!=0)&(i%10=0) /目的是分屏顯示printf(nn記住要修改的工號(hào).按任意鍵顯示下一頁);getch();puts(nn);printf_one(i); /調(diào)用顯示一個(gè)記錄的函數(shù)doprintf(nn輸入要修改的職工工號(hào)! 工號(hào):);scanf(%s,s.id); /輸入要修改的idfor(i=0;inn1).工號(hào) 2.學(xué)歷 3).取消并返回); printf(which you needed?: bb); scanf(%d,&c);

12、if(c3|c3|c1); switch(c) case 1:search1();break;待添加的隱藏文字內(nèi)容3 case 2:search2();break; case 3:menu();break; search1() /按工號(hào)查詢模塊int i,n,k,w1=1,w2,w3,w4; struct worker s; n=load(); do do k=-1; printf(nn輸入要查詢的工號(hào)! id:); scanf(%s,s.id); printf_face(); for(i=0;in;i+) if(strcmp(s.id,workeri.id)=0)k=i; printf_on

13、e(k);break; if(k=-1) printf(nnno exit!please); printf(nn繼續(xù)查找?nt1).是 2).否,返回 bb); scanf(%d,&w1); if(w1=2) menu(); while(k=-1&w1=1); w4=0;w3=0; if(k!=-1)printf(nn接下來干什么?nt1).查找另一個(gè) 2).修改 3).返回菜單 bb); scanf(%d,&w2); switch(w2) case 1:search1();break; case 2:w3=modify_data(k,n);break; case 3:menu();break

14、; while(w2=1); menu();search2() /按學(xué)歷查詢模塊int i,n,k,w1=1,w2,w3,w4; struct worker s; n=load(); do do k=-1; printf(nn請(qǐng)輸入你要查詢的學(xué)歷:n); scanf(%s,); printf_face(); for(i=0;in;i+) if(strcmp(,)=0)k=i; printf_one(k); if(k=-1) printf(nnno exit!please); printf(nn繼續(xù)查找?nt1).是 2).否,返回 bb); scanf

15、(%d,&w1); if(w1=2) menu(); while(k=-1&w1=1); w4=0;w3=0; if(k!=-1)printf(nn接下來干什么?nt1).查找另一個(gè) 2).修改 3).返回菜單 bb); scanf(%d,&w2); switch(w2) case 1:search2();break; case 2:w3=modify_data(k,n);break; case 3:menu(); break; while(w2=1); menu(); menu() int n,w1; do puts(tt*菜單*nn);puts(tttt1.錄入職工信息);puts(ttt

16、t2.瀏覽職工信息);puts(tttt3.查詢職工信息); puts(tttt4.修改職工信息);puts(tttt5.退出);puts(tt*nn);printf(請(qǐng)選擇(15): bb);scanf(%d,&n); if(n5) /對(duì)選擇的數(shù)字作判斷 w1=1;getchar(); else w1=0; while(w1=1); switch(n)case 1:enter();break; /錄入 case 2:browse();break; /瀏覽 case 3:search();break; /查詢 case 4:modify();break; /修改 case 5:exit(0);

17、 /退出main() menu();7程序運(yùn)行結(jié)果 下面是各個(gè)模塊的的界面截圖(1)、主菜單(2)、輸入模塊(3)、瀏覽模塊(3)、查找模塊(4)、修改模塊8.編程中遇到的困難及解決方法 溫故而知新,可以為師矣。通過這次實(shí)習(xí)我深刻的認(rèn)識(shí)了這點(diǎn)。這學(xué)期學(xué)習(xí)了c語言,了解了一些計(jì)算機(jī)語言方面的知識(shí)。借這次上機(jī)實(shí)習(xí)之際我又把課程重新復(fù)習(xí)了一遍,收獲頗豐,以前沒能弄懂的一些問題現(xiàn)在已有了一些認(rèn)識(shí),以前不太明白的問題現(xiàn)在也基本清楚了,雖然實(shí)習(xí)的題目對(duì)我來說還有些難,最終能在自己的努力下完成這次實(shí)習(xí)實(shí)感欣慰。以前遇到大的程序,心中總是有種恐懼感,不相信是自己的能力所能完成的,也沒有膽量去嘗試,這次正好也幫

18、我克服了這種恐懼感,使我相信無論什么事只要自己真的下決心去做,都是可以做到的,即使不能一次成功,也不能放棄,失敗的盡頭一定有成功在等著我們的,失敗乃成功之母。 實(shí)踐總是檢驗(yàn)真理的唯一方法,學(xué)了再多的知識(shí)不會(huì)運(yùn)用,就如同鳥兒長了翅膀卻不會(huì)飛翔。學(xué)習(xí)c語言就是為了運(yùn)用它幫助我們解決一些日常生活中遇到的問題,而此次的課程設(shè)計(jì)就為我們提供了檢驗(yàn)自己能力的一次機(jī)會(huì),也給了我們一次彌補(bǔ)以前缺陷的機(jī)會(huì)。總而言之,這次課程設(shè)計(jì)使我獲益匪淺啊。 我對(duì)vc使用操作的心得可以歸結(jié)為以下幾點(diǎn):(1)在設(shè)計(jì)一些較復(fù)雜的程序時(shí),要盡量采用程序模塊,采用函數(shù)的相互調(diào)用,將一些調(diào)用次數(shù)較多的函數(shù)作為公共函數(shù),放在整個(gè)程序的開

19、頭處,這樣就免去了在調(diào)用時(shí)的聲明,可以減少錯(cuò)誤的出現(xiàn)。(2)盡可能將主函數(shù)設(shè)計(jì)得簡(jiǎn)潔一些,以便在調(diào)試程序時(shí)較容易找出錯(cuò)誤。(3)采用菜單方式能夠以最簡(jiǎn)潔的方式將程序內(nèi)容呈現(xiàn)在用戶眼前,并且,要盡可能地給出較詳細(xì)較全面的使用提示,在每一次執(zhí)行下一步驟是都要給出使用者具體的提示,以增加程序的實(shí)用性,而不只是讓編程者看得懂。(4)一個(gè)程序的算法和數(shù)據(jù)結(jié)構(gòu)雖然是最重要的,但是,作為一個(gè)實(shí)用性的軟件或程序,要考慮到使用者的方便性,所以,要注意程序運(yùn)行界面的美化工作,即:注意換行的位置,注意行距,數(shù)據(jù)在屏幕中的位置,菜單的顯示方式,選項(xiàng)的排列方式等,還有,要在每次執(zhí)行完一項(xiàng)指令后,要使函數(shù)運(yùn)行界面返回到菜

20、單,等等,這些問題也是編寫一個(gè)好的程序必不可少的工作。 9總結(jié)心得及良好建議 經(jīng)過一學(xué)期的c語言學(xué)習(xí),我們掌握了c語言的基礎(chǔ)知識(shí),能夠讀懂別人用c語言設(shè)計(jì)的程序。平時(shí)的程序設(shè)計(jì)大多是以填空的形式出現(xiàn),雖然有所接觸,但都不完全。而這一周的課程設(shè)計(jì),卻讓我們完完全全用自己學(xué)到的知識(shí)編寫一個(gè)完整的體統(tǒng)程序。這是一個(gè)新的挑戰(zhàn),也是一種新的學(xué)習(xí)。 我們組選擇的題目是第一個(gè)職工工資信息管理系統(tǒng)。初看到這個(gè)題目覺得很簡(jiǎn)單,但當(dāng)我做到電腦前準(zhǔn)備開始編寫代碼的時(shí)候才發(fā)現(xiàn)無從下手。通過去圖書館查找程序設(shè)計(jì)相關(guān)的書籍,和上網(wǎng)參考前人編寫的類似程序,我腦中才有了一個(gè)大概方向。 終于開始著手寫了。第一天下來,我只寫好了

21、兩個(gè)函數(shù),但還是很開心,因?yàn)檫@是我編的第一個(gè)小系統(tǒng)的成功的開始! 接下來幾天都在宿舍整個(gè)下午的對(duì)著電腦不斷的編譯、調(diào)試、修改,每次編好一個(gè)能夠成功運(yùn)行的程序,都會(huì)感到很欣慰,但自己編的程序自己很難發(fā)現(xiàn)當(dāng)中的錯(cuò)誤,而電腦又沒有提示的時(shí)候就很受打擊,也會(huì)著急。但可以先放一放,讓腦子休息一下,忘掉錯(cuò)誤的記憶?;蛟S等過段時(shí)間再回過頭來,就會(huì)很容易的發(fā)現(xiàn)之前的錯(cuò)誤了。隨著編好的程序越多,累積的經(jīng)驗(yàn)也越多,查找錯(cuò)誤就越快了。還有會(huì)發(fā)現(xiàn)很多程序有很多相似之處,可以通過復(fù)制修改的發(fā)式來編寫。雖然題目要求只需要一種查詢方式,但當(dāng)我編出規(guī)律之后自然就想多寫兩個(gè),寫完就會(huì)有很大的成就感了。 有一次發(fā)現(xiàn)之前辛辛苦苦編的兩段代碼沒有保存。沒辦法,只能重新寫。 總之,經(jīng)過這一次的課程設(shè)計(jì),我體會(huì)到成功的來之不易。當(dāng)最后一次成功串聯(lián)運(yùn)行所有函數(shù)時(shí),真的很開心。通過這次實(shí)踐,我們能夠更熟練掌握c語言,特別是循環(huán)和文件,當(dāng)時(shí)在課堂上沒有學(xué)太清楚的,這個(gè)程序設(shè)計(jì)之后都很明白了。同時(shí)增加了我們對(duì)程序設(shè)計(jì)的興趣,暑假回家我還會(huì)嘗試著做一些其他的小系統(tǒng)。c語言是一個(gè)有序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論