版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、沈陽航空工業(yè)學(xué)院課程設(shè)計學(xué)號班級姓名指導(dǎo)教師20092009年6 6月5 5日課程設(shè)計任務(wù)書一、課程設(shè)計題目:某企業(yè)職工工資管理系統(tǒng)二、課程設(shè)計工作自 2009 年 6 月 1 日起至 2007 年 6 月 5 日 止三、課程設(shè)計內(nèi)容 :用 C 語言編寫軟件完成以下任務(wù):1錄入職工信息;2對職工按工資排序并顯示;3能夠增加新職工數(shù)據(jù)并按工資高低排序。四、課程設(shè)計要求:程序質(zhì)量:貫徹結(jié)構(gòu)化程序設(shè)計思想。用戶界面友好,功能明確,操作方便;可以加以其 它功能或修飾。用戶界面中的菜單至少應(yīng)包括“職工信息錄入”、 “按工資排序”、“插入新職工并按工資高低排序”、“退出” 4項。代碼應(yīng)適當(dāng)縮進(jìn),并給出必要
2、的注釋,以增強(qiáng)程序 的可讀性。課程設(shè)計說明書:課程結(jié)束后,上交課程設(shè)計說明書(打印稿和電子稿),其內(nèi)容如下:封面課程設(shè)計任務(wù)書目錄需求分析(分析題目的要求) 程序流程圖(總體流程圖和主要功能模塊流程圖) 核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段 個人總結(jié)參考資料 源程序及適當(dāng)?shù)淖⑨?指導(dǎo)教師: 學(xué)生簽名:五、成績:六、教師評語 :目錄一、程序設(shè)計題目 1二、需求分析 1三、程序流程圖 3四、核心技術(shù)的實現(xiàn)方法、程序段及注釋 6五、個人總結(jié) 9六、參考文獻(xiàn) 10七、源程序 11、程序設(shè)計題目某企業(yè)職工工資管理,具體要求如下:1 1、錄入職工信息2 2、對職工按工資排序并顯示3 3、能夠增加新職工數(shù)據(jù)并按工
3、資高低排序4 4、退出注:每個員工數(shù)據(jù)至少應(yīng)該包括工號、姓名、工 資,員工數(shù)據(jù)要保存在 worker.datworker.dat 文件中。二、需求分析經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計 實現(xiàn)大致分為四個模塊,其中每一個模塊對應(yīng)一個函 數(shù),他們的功能分別是:錄入職工信息函數(shù) (shuru)(shuru),工 資排序并顯示函數(shù)(sore)(sore),增加新職工數(shù)據(jù)函數(shù)(add)(add), 主函數(shù) (main)(main)。1 1、錄入職工信息函數(shù)主要實現(xiàn)程序最初運行時員工數(shù)據(jù)的錄入;2 2、工資排序并顯示函數(shù)實現(xiàn)的功能是按照工資由多到少對員工的數(shù)據(jù)進(jìn)行排序,把排序后的文件保存到 so
4、re.datsore.dat 文件中,并打印目前所有的有效員工記錄信 息;3 3、增加新職工數(shù)據(jù)函數(shù) 按插入新職工并按工資高低 排序;4 4、主函數(shù)實現(xiàn)的是程序界面的設(shè)計和各功能函數(shù)的調(diào) 用;除上面介紹的功能之外,程序還具有退出功能,可 以在程序的一次運行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù) 需要終止程序的執(zhí)行。每一個員工記錄都包含工號、姓名、工資,在程序 當(dāng)中,將員工記錄類型定義為結(jié)構(gòu)體類型,添加以及追 加的員工信息直接寫入 worker.datworker.dat 文件中,其他函數(shù)每 次對員工記錄的訪問,其數(shù)據(jù)來源都是 worker.datworker.dat 文 件,這樣做不但可以保證員工數(shù)據(jù)
5、的一致性,而且可以 對員工數(shù)據(jù)進(jìn)行永久保存,保證每次運行程序都可以采 用原來的數(shù)據(jù)。三、程序流程圖1 1、程序總體結(jié)構(gòu)圖打印程序界面和功能選項打印程序界面和功能選項當(dāng)當(dāng)1 1switch(getdh()case 1 r :rtShuruO ;break;case 1 s :sore(n);break;case Ta :n=add(n);break;case: :打印版權(quán)信息打印版權(quán)信息; ;退出退出圖1 1程序總體結(jié)構(gòu)圖2 2、具體功能框圖(1(1)錄入職工信息函數(shù)shurushuruSXp=fopen (worker* dat: wb7) =HULX 真真一一一一假假輸入需要錄入信息的數(shù)量輸
6、入需要錄入信息的數(shù)量當(dāng)當(dāng) i = l?ijn打印打印 請輸入第請輸入第i個員工的信息界個員工的信息界從鍵盤錄入信息并保存到結(jié)構(gòu)體從鍵盤錄入信息并保存到結(jié)構(gòu)體把結(jié)構(gòu)體中信息保存到文件把結(jié)構(gòu)體中信息保存到文件關(guān)閉文件關(guān)閉文件printf (7/ 文件打開文件打開 失敗失敗); exit (0);返回返回(n)圖2 2錄入職工信息函數(shù)(2(2)工資排序并顯示函數(shù) soresore當(dāng)當(dāng)i = 0至血二至血二2當(dāng)當(dāng)=OJJn-2-i|. gongzKworj+1 * go歿器喬歿器喬交換交換worjl與砲與砲rj+lHpl=fopen (sore, dat, wb)二二 一一- -一一 一一當(dāng)當(dāng)i =0
7、到到n-l把結(jié)構(gòu)體的信息寫入文件把結(jié)構(gòu)體的信息寫入文件把結(jié)構(gòu)體的信息打卬到屏幕把結(jié)構(gòu)體的信息打卬到屏幕printf(” 打開文件打開文件 失敗失敗); exit(0);關(guān)閉文件關(guān)閉文件圖3 3工資排序并顯示函數(shù)(3(3)增加新職工數(shù)據(jù)函數(shù)(add)(add)open worker, dat,! !二二NLL=/輸入耍追加的員工數(shù)量輸入耍追加的員工數(shù)量j當(dāng)當(dāng)i = l到到j(luò)輸入第輸入第i個員工的信息個員工的信息寫入第寫入第i個員工的信息到文件個員工的信息到文件sore (n+j)返回返回(n+j)圖4 4增加新職工數(shù)據(jù)函數(shù)四、核心技術(shù)的實現(xiàn)方法、程序段及注釋本程序主要由三個自定義函數(shù)和一個主函數(shù)
8、組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來實現(xiàn)要求的所 有功能。在這些函數(shù)當(dāng)中,工資排序并顯示函數(shù)和增加新職工數(shù)據(jù)函數(shù)是程序中較為核心的部分,下面分別進(jìn) 行說明。1 1、工資排序并顯示函數(shù) 工資排序使用冒泡法,將結(jié)構(gòu)體中的數(shù)據(jù)按照工資 由多到少的順序排序,把排序后的結(jié)果保存打印到屏幕 上,并將結(jié)果保存到 sore.datsore.dat 文件中。具體的程序段如 下: :voidvoid sore(intsore(int n)n) intint i,j=1i,j=1 。structstruct workerworker temptemp。FILEFILE *fp1*fp1 。for(i=0for
9、(i=0。ivn-1ivn-1。i+)i+)for(j=0for(j=0 。 jn-1-ijn-1-i 。 j+)j+) if(worj.gongzivworj+1.gongzi)if(worj.gongzivworj+1.gongzi) strcpy(temp.num,worj.num)strcpy(temp.num,worj.num)。strcpy(,)strcpy(,)。temp.gongzi=worj.gongztemp.gongzi=worj.gongz。strcpy(worj.num,worj+1.num)st
10、rcpy(worj.num,worj+1.num)。strcpy(,worj+1.name)strcpy(,worj+1.name)。 worj.gongzi=worj+1.gongziworj.gongzi=worj+1.gongzi。strcpy(worj+1.num,temp.num)strcpy(worj+1.num,temp.num)。strcpy(worj+1.name,)strcpy(worj+1.name,)。 worj+1.gongzi=temp.gongzworj+1.gongzi=temp.gongz
11、。 if(fp1=fopen(sore.dat,wb)=NULL)if(fp1=fopen(sore.dat,wb)=NULL) printf(printf( 打開文件失??! ) 。exit(0)exit(0)。 printf(printf(序號工號姓名 工資n)n)。for(i=0for(i=0。ivnivn。i+)i+) fwrite(&wori,sizeof(structfwrite(&wori,sizeof(struct worker),1,fp1)worker),1,fp1) 。if(wori.gongzi=wori+1.gongzi)if(wori.gongzi=wori+1.go
12、ngzi)printf(%3d%5s%5s%8.2fn,j,wori.num,,woriprintf(%3d%5s%5s%8.2fn,j,wori.num,,wori.g.g ongzi)ongzi)。elseelseprintf(%3d%5s%5s%8.2fn,j+,wori.num,,worprintf(%3d%5s%5s%8.2fn,j+,wori.num,,wori i .gongzi).gongzi)。 fclose(fp1)fclose(fp1)。 2 2、增加新職工數(shù)據(jù)函數(shù)該函數(shù)的核心內(nèi)容是增加新的員工信息,
13、保存到結(jié)構(gòu)體中,并調(diào)用soresore ()函數(shù)將增加后的員工信息重新進(jìn)行排序。最后把增加后的總?cè)藬?shù)返回給主函數(shù)。具體程序段如下:intint add(intadd(int n)n) intint i,ji,j 。FILEFILE *fp*fp 。 if(fp=fopen(worker.dat,rb+)!=NULL)if(fp=fopen(worker.dat,rb+)!=NULL) printf(printf( 請輸入要追加的員工數(shù)量,按回車鍵確認(rèn): ) 。 scanf(%d,&j)scanf(%d,&j) 。for(i=1for(i=1。iv=jiv=j。i+)i+) printf(npr
14、intf(n 請輸入第 %d%d 個員工的工號、姓名、工資,并 按回車鍵確認(rèn): n,i)n,i) 。scanf(%s%s%f,&worn+i-1.num,&worn+i-scanf(%s%s%f,&worn+i-1.num,&worn+i- 1.name,&worn+i-1.gongzi)1.name,&worn+i-1.gongzi)。fwrite(&worn+i-1,sizeof(structfwrite(&worn+i-1,sizeof(struct worker),1,fp)worker),1,fp) 。 sore(n+j)sore(n+j)。returnreturn (n+j)(n+
15、j) 。 五、個人總結(jié)通過這幾天的課程設(shè)計 , ,我對 vcvc 6.06.0 軟件有了新 的認(rèn)識 , ,對 c c 語言的應(yīng)用也有了一定能力 , ,培養(yǎng)了我對 c c 語言學(xué)習(xí)的興趣,通過這次課程設(shè)計我學(xué)到了以前沒有掌握的很多知識,同時,我對學(xué)過的知識又進(jìn)一步熟練掌握了。在課設(shè)的過程中我和同學(xué)探討了一些相關(guān)的問題,有些問題也得到了老師的耐心講解。我真心的感謝 老師的辛勤教育,也促進(jìn)了我和同學(xué)之間的友誼。我想 這次課程設(shè)計對我未來的學(xué)習(xí)一定會有很大的幫助 。六、參考文獻(xiàn)1 1 譚浩強(qiáng) C C 程序設(shè)計北京:清華大學(xué)出版社,200520052 2 邱虹坤、王亞杰等 C C 語言程序設(shè)計實驗指導(dǎo)與
16、習(xí) 題集北京:中國鐵道出版社, 20062006七、源程序#include #include #define N 5struct workerchar num20 。char name10 。float gongzi 。worN 。int shuru()int i,n 。FILE *fp 。 if(fp=fopen(worker.dat,wb)=NULL) printf( 文件打開失敗 ) 。 exit(0) 。printf( 請輸入要錄入的員工數(shù)量,按回車鍵確認(rèn):) 。scanf(%d,&n) 。for(i=1 。 i=n 。 i+)printf(n 請輸入第 %d 個員工的工號、姓名、工資
17、,并按 回車鍵確認(rèn): n,i) 。scanf(%s%s%f,&wori-1.num,&,&wori-1.gongzi) 。 if(fwrite(&wori-1,sizeof(struct worker),1,fp)!=1)printf( 文件保存失??! n) 。fclose(fp) 。return (n) 。void sore(int n)int i,j=1 。struct worker temp 。FILE *fp1 。for(i=0。in-1。i+)for(j=0 。 jn-1-i 。 j+)if(worj.gongziworj+1.gongzi) strcpy(te
18、mp.num,worj.num) 。 strcpy(,) 。 temp.gongzi=worj.gongzi 。 strcpy(worj.num,worj+1.num) 。 strcpy(,worj+1.name) 。worj.gongzi=worj+1.gongzi 。 strcpy(worj+1.num,temp.num) 。 strcpy(worj+1.name,) 。worj+1.gongzi=temp.gongzi 。if(fp1=fopen(sore.dat,wb)=NULL)printf( 打開文件失??! ) 。exit(0) 。printf( 序號 工號 姓名 工資 n)。for(i=0 。 in。 i+)fwrite(&wori,sizeof(struct worker),1,fp1) 。if(wori.gongzi=wori+1.gongzi)printf(%3d%5s%5s%8.2fn,j,wori.num,,wori.gongzi)
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年白糖道路運輸服務(wù)協(xié)議范例版B版
- 2024年社區(qū)便利店商品庫存管理與銷售預(yù)測合同3篇
- 2024版服務(wù)器租賃合同下載
- 2024年高速公路拓寬工程征收補(bǔ)償合同
- 2024年生物醫(yī)藥研發(fā)與許可協(xié)議
- 西藏集中式光伏電站(10MW以上)建設(shè)流程
- oqc組長崗位職責(zé)(共5篇)
- 2023年第一季度思想?yún)R報
- 老年護(hù)理-復(fù)習(xí)題
- 2025年度建筑工程施工安全管理及文明施工責(zé)任書3篇
- 部編版三年級上冊語文期末復(fù)習(xí)資料
- 建筑施工承插型盤扣式鋼管腳手架技術(shù)標(biāo)準(zhǔn)
- 相反國課件-大班
- 2023-2024學(xué)年新疆烏魯木齊130中學(xué)九年級(上)期末物理試卷
- 2023-2024學(xué)年江蘇省徐州市九年級(上)期末物理試卷
- 小學(xué)英語名詞單數(shù)變復(fù)數(shù)的語法規(guī)則及練習(xí)題含答案
- 四川省綿陽市高中2025屆高三二診模擬考試物理試卷含解析
- 合法退婚協(xié)議書模板電子版
- 三化一穩(wěn)定嚴(yán)進(jìn)嚴(yán)出專案報告
- 七年級上冊歷史小論文
- 2024至2030年中國工業(yè)地產(chǎn)市場全景調(diào)查及投資咨詢報告
評論
0/150
提交評論