版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 c語言程序設計 課程設計題目: 職工工資管理系統(tǒng) 院(系): 專業(yè)班級:學 號: 學生姓名: 指導教師: 教師職稱: 起止時間: 課程設計(報告)任務及評語 學 號學生姓名專業(yè)班級程序設計(報告)題目職工工資管理系統(tǒng)程序設計(報告)任務程序設計的任務與要求:(1)掌握c語言編程的基礎知識。(2)較熟練地編寫c語言應用程序。(3)了解c語言的常用標準函數、編程技巧、異常處理。(5)聯系已學過的內容,鞏固所學的理論,增強獨立工作能力。(6)通過設計主要使學生有一個獨立編寫程序的過程,對理論學習及動手能力都有一個很大的提高。(7)通過本次設計,進一步培養(yǎng)學生熱愛專業(yè)的思想,同時對本專業(yè)綜合素質的提
2、高起一個積極的推動作用。課程設計過程中,要嚴格遵守實踐環(huán)節(jié)的時間安排,聽從指導教師的指導。正確地完成上述內容,記錄實習日記,規(guī)范完整地撰寫出課程設計報告。指導教師評語及成績成績: 指導教師簽字: 年 月 日目 錄 第1章 課程設計的目的與要求11.1 課程設計目的11.2 課程設計的實驗環(huán)境11.3 課程設計的預備知識11.4 課程設計要求1第2章 課程設計內容22.1程序功能介紹22.2程序整體設計說明22.2.1設計思路22.2.2數據結構設計及用法說明32.2.3程序結構(流程圖)52.2.4各模塊的功能及程序說明62.2.5程序結果62.3程序源代碼及注釋7第3章 課程設計總結16參考
3、資料 17第1章 課程設計的目的與要求1.1 課程設計目的本課程設計是計算機科學與技術專業(yè)重要的實踐性環(huán)節(jié)之一,是在學生學習完程序設計語言(c)課程后進行的一次全面的綜合練習。本課程設計的目的和任務: 1. 鞏固和加深學生對c語言課程的基本知識的理解和掌握 2. 掌握c語言編程和程序調試的基本技能 3. 利用c語言進行基本的軟件設計4. 掌握書寫程序設計說明文檔的能力5. 提高運用c語言解決實際問題的能力1.2 課程設計的實驗環(huán)境硬件要求能運行windows 2000/xp操作系統(tǒng)的微機系統(tǒng)。c語言程序設計及相應的開發(fā)環(huán)境。1.3 課程設計的預備知識熟悉c語言及c語言開發(fā)工具。1.4 課程設計
4、要求1. 分析課程設計題目的要求2. 寫出詳細設計說明3. 編寫程序代碼,調試程序使其能正確運行4. 設計完成的軟件要便于操作和使用5. 設計完成后提交課程設計報告第2章 課程設計內容2.1程序功能介紹該系統(tǒng)能夠實現工資信息管理。系統(tǒng)包括錄入,瀏覽,查詢,統(tǒng)計等功能。其中錄入功能要求能夠添加新的工資信息到文件;瀏覽功能要求能按照工資卡號,姓名分類瀏覽,提供分屏顯示;有排序功能,排序后按照工資卡號升序或實發(fā)工資降序輸出;查詢功能要求能夠按照工資卡號,姓名查詢;統(tǒng)計功能要求能夠按照月份累計統(tǒng)計某職工在某時間段實發(fā)工資總金額。2.2程序整體設計說明根據題目要求,應該把職工工資信息用結構體形式輸入,再
5、定義一個變量和文件指針進行整個程序的運行,然后把職工工資信息送到文件中,所以應該提供一個結構體和文件的輸入輸出等操作。在程序中需實現職工工資瀏覽、查詢、統(tǒng)計等功能的操作,所以要建立相應的功能模塊來實現。在頭文件中將所需包含的函數進行輸入,再進行變量的定義,如:定義數據結構,有關職工工資管理需要輸入的基本信息再用指針的方法將這些有關變量進行地址存儲。再定義出工資管理整個程序中所需要的函數原型;然后進行主函數的書寫,并顯示所有數據。主函數無限循環(huán),操作之前先開辟內存,建立動態(tài)鏈表,文件中如果有數據則導入內存,每條記錄存入一個鏈表節(jié)點,數據的錄入、修改、插入、刪除、查詢等均是對內存中的鏈表進行操作,
6、每次操作后將數據保存到文件。2.2.1設計思路在輸入職工信息時,運用void input()調用函數展開對文件的使用,首先定義一個指針文件,又以寫的方式打開此文件,在打開的文件中輸入要管理的職工人數,用一個for循環(huán)按照職工工號 姓名 崗位工資 獎金 扣除 實發(fā)的格式循環(huán)獲取職工的記錄,接著又用了一個for循環(huán)將職工記錄寫入文件“emp ”中,關閉文件。在查詢職工信息時,開始是一個二級子菜單,一個是實現按職工號查詢,另一個是選擇退出返回主菜單,此處是利用switch選擇語句。選擇按職工號查詢,首先是以只讀的方式打開文件“emp”, 然后輸入要查詢的職工號,用一個for循環(huán)來控制查詢的人數,之后
7、在顯示器上顯示職工信息,然后關閉文件。在修改職工信息時,開始是一個二級子菜單,一個是按職工號修改,另一個是選擇退出返回主菜單,此處是利用switch選擇語句。選擇按職工號修改,首先是以讀寫的方式打開文件“emp”。輸入要修改的職工號,用一個for循環(huán)來控制輸入的數量。然后對職工的信息進行修改,就可獲得新的職工記錄。之后文件指針指向該修改的記錄開頭,此時用newemp覆蓋當前記錄,修改完成時系統(tǒng)會顯示修改后的文件數據:記錄號、 職工號、 姓名 、性別 、年齡 、工資,然后關閉文件。在刪除職工信息時,開始是一個二級子菜單,一個是按職工號刪除記錄,另一個是選擇退出返回主菜單,此處是利用switch選
8、擇語句。選擇按職工號刪除記錄,首先是只讀的方式打開一個二進制文件“emp”。循環(huán)依次改后職工信息寫入文件,顯示刪除后文件中的職工信息。最后可以關閉文件。在統(tǒng)計職工信息時,運用void stat ()調用函數展開對文件的使用。首先是以只讀的方式打開文件“emp”。輸入職工的工資數,運用for循環(huán)根據輸入的工資,顯示大于該工資的職工的所有信息。關閉文件,統(tǒng)計完成。在輸出職工信息時,運用void output()調用函數展開對文件的使用。首先以只讀的方式打開一個文本文件”emp”。操作無誤則用for循環(huán)輸出正在查詢職工的:記錄號 職工號 姓名 性別 年齡 工資。這些完成后用fclose(fp)函數關
9、閉文件。在追加職工信息時,首先以讀寫的方式為讀寫打開一個二進制的文件“emp”,輸出“要追加的職工人數”待輸入要追加的個數后,用for循環(huán)控制待輸入的職工信息。用fwrite(&newemp,sizeof(struct emploee),1,fp)將該職工記錄寫入文件。用fclose(fp)函數關閉文件。2.2.2數據結構設計及用法說明 數據結構:定義結構體emolyee,用于存放職工的基本信息和工資信息.使用struct結構體編輯主菜單,定義全局變量,用于存放結構體數組。使用一維數組。用for語句編輯輸入模塊,用switch、for語句編輯查找職工數據,用if,for語句編輯修改職工信息,和
10、刪除職工信息。用法說明:啟動后屏幕上會提示要求輸入職工號,如果輸入錯誤就會顯示查無此人;輸入錯誤字符顯示“wrong”。輸入后屏幕上提示登陸成功以及顯示下面菜單:1 輸入職工記錄2 查詢職工記錄3 修改職工記錄4 刪除職工記錄5 輸出職工記錄6 統(tǒng)計工資情況7 追加職工記錄8 結束使用0 退出系統(tǒng)執(zhí)行者若要執(zhí)行某一功能,就按下該功能所對應的數字即可。輸入職工信息:在主菜單中輸入1則系統(tǒng)會進入新界面并自動提示你輸入職工號,輸入完成后按回車鍵系統(tǒng)會逐一提示輸入 姓名 性別 年齡 工資,輸入完成后會繼續(xù)提示輸入下一個職工的職工號。查詢職工信息:主菜單中輸入2 則進入查詢子菜單界面,屏幕上會按先后順序
11、顯示輸入的記錄,并統(tǒng)計輸入的個數。此時在界面里出現數字1和0。系統(tǒng)會提示你選擇(0-1)。輸入1后則進入按職工號查詢職工信息,此時系統(tǒng)會自動提示你輸入要查詢的職工號。輸入職工號后會出現該職工的信息。輸入錯誤職工號,顯示查無此人;輸入錯誤字符顯示“wrong”。 輸入0則返回主菜單。修改職工信息:在主菜單中輸入3則系統(tǒng)進入修改子菜單界面。此時在界面里出現數字1和0。系統(tǒng)會提示你選擇(0-1)。輸入1是按職工號修改職工信息,系統(tǒng)會自動提示你輸入要修改的職工號,然后進行修改。修改成功顯示已修改后的文件數據;輸入錯職工號顯示查無此人;輸入錯誤字符顯示 “wrong”。 輸入0是返回主菜單。刪除職工信息
12、:在主菜單中輸入4系統(tǒng)界面是刪除子菜單。系統(tǒng)會提示你選擇(0-1)。輸入1則按職工號刪除記錄,系統(tǒng)會自動提示你輸入要刪除的職工信息,進入新界面后系統(tǒng)會提示你刪除前該職工的信息包括記錄號 、職工號、姓名、 性別 、年齡 、工資等。輸入錯誤職工號,顯示沒有該職工號的職工。輸入錯誤字符顯示 “wrong”。一個記錄已經刪除了時,系統(tǒng)會提示刪除后的職工信息。輸入0則返回主菜單。輸入格式:職工號、 姓名 、性別 、年齡、 工資輸入職工的信息,這樣就獲取一個職工的記錄,并將該職工記錄自動寫入文件,如果想退出此系統(tǒng)可以按“0” ,就可以退出此系統(tǒng)了輸出職工信息:在主菜單中輸入5系統(tǒng)界面是輸出菜單界面,按照輸
13、入格式:職工號、 姓名 、性別 、年齡、 工資,逐個的輸出職工的信息,輸出所有職工信息后系統(tǒng)自動退出。統(tǒng)計職工信息:在主菜單中輸入6系統(tǒng)界面是統(tǒng)計菜單界面,輸入工資數,顯示大于該工資的職工的所有信息。關閉文件。退出系統(tǒng):在使用各個功能后輸入0則返回主菜單。在主菜單中輸入0則退出系統(tǒng)。并顯示 “ 謝 謝 使 用 ! ”。2.2.3程序結構(流程圖)選擇8?結束使用選擇0?退出系統(tǒng)結束打印職工記錄刪除職工記錄調查工資情況選擇6?選擇5?選擇4?按姓名按工號追加職工記錄選擇7?按姓名按工號選擇3?選擇2?選擇1?修改職工記錄輸入職工記錄查詢職工記錄按姓名按工號主菜單開始選擇操作 圖1程序流程圖2.2
14、.4各模塊的功能及程序說明首先是定義了一個輸入輸出頭文件,接著是一個宏定義,下面是函數聲明部分,用結構體存儲和錄入該程序的所有數據,并把信息寫到文件emp.dat中,保存在磁盤中方便以后使用,主函數部分包括設計的全部信息,之后是輸出主菜單和調用函數,退出程序。此程序中包括:輸入模塊、查詢模塊、修改模塊、刪除模塊、統(tǒng)計模塊、輸出模塊、追加模塊。輸入模塊:該模塊先是對職工號 姓名 崗位工資 獎金 扣除 實發(fā)的錄入并保存到文件“emp ”中。查詢模塊:實現按職工號查詢每個職工的信息,查詢顯示 職工號 姓名 崗位工資 獎金 扣除 實發(fā)。 修改模塊:該模塊實現按職工號對職工所有信息的修改。刪除模塊:該模
15、塊實現按職工號對職工所有信息的刪除。統(tǒng)計模塊:根據輸入的工資,顯示大于該工資的職工的所有信息。輸出模塊: 該模塊實現按職工號輸出職工的所有信息。追加模塊:該模塊實現添加新的職工的信息。2.2.5程序結果輸入一條記錄信息:如圖;查找職工記錄:如圖刪除職工信息如圖:修改職工記錄如圖:2.3程序源代碼及注釋/*源程序:職工工資管理系統(tǒng)*/#include /*頭文件*/#define num 100void input();void search();void search_num();void dele();void dele_name();void dele_num();void modi();
16、void modi_num();void output();void stat();void fun();void run();char no5; /*定義職工工號數組*/char name8; /*定義職工姓名數組*/char sex3; /*定義職工性別數組*/int age; /*定義職工年齡數組*/int salar; /*定義職工工資數組*/empnum,newemp;main() /*主函數*/int x;printf( 1. 輸入職工記錄n);printf( 2. 查看職工記錄n);printf( 3. 查找職工記錄n);printf( 4. 刪除職工記錄n);printf( 5
17、. 統(tǒng)計職工記錄n);printf( 6. 修改工資情況n);printf( 7. 保存職工記錄n);printf( 8. 顯示作者信息n);printf( 0. 退出系統(tǒng)n);printf(n);printf(*職工工資管理系統(tǒng) *n);printf(請選擇(0-8):n);scanf(%d,&x);switch(x)case 1: input();break; /*輸入職工信息*/case 2: search();break; /*查詢職工信息*/case 3: modi();break; /*修改職工信息*/case 4: dele();break; /*刪除職工信息*/case 5:
18、output();break; /*打印職工信息*/case 6: stat();break; /*調查職工工資情況*/case 7: run();break; /*添加新的職工信息*/case 8: fun();break; /*結束使用*/default:printf(n wrong!);if(x=0)break;void input() /*輸入職工信息*/file *fp; /*定義文件指針變量*/int n,i;if (fp=fopen(emp,wb)=null)printf(不能建立emp文件n);exit(1);printf(輸入職工人數:);scanf(%d,&n);print
19、f(輸入格式:職工號 姓名 性別 年齡 工資n);for(i=0;in;i+) /* 循環(huán)獲取n個職工記錄 */printf(第%d個職工:,i+1);scanf(%s%s%s%d%d,empi.no,,empi.sex,&empi.age,&empi.salar); /*輸入職工基本信息*/for(i=0;i=num)printf(%6d%6s%9s%4s%5d%6dn,n+1,empn.no,,empn.sex, empn.age,empn.salar); /*輸入工資后顯示職工基本信息*/fclose(fp);/*刪除模塊*/void dele() /
20、*對職工記錄進行刪除*/int x;while(1)printf(nntt刪除子菜單n);printf(tt*n);printf(tt 1.按職工號刪除記錄n);printf(tt 0.返回主菜單n);printf(tt*n);printf(t 請選擇(0-1):);scanf(%d,&x);switch(x)case 1:dele_num();break; /*選擇刪除信息*/default:printf(nwrong!);if(x=0)break; /*條件判斷*/void dele_num()file *fp; /*定義文件指針變量*/int i,j,n;char num5;if(fp=
21、fopen(emp,rb)=null)printf(不能打開emp文件n);exit(1);printf(刪除前:n);printf(記錄號 職工號 姓名 性別 年齡 工資n);for(n=0;fread(&empn,sizeof(struct emploee),1,fp);n)/*將內存中的職工信息循環(huán)輸出到磁盤文件中*/printf(%6s%6s%9s%4s%5d%6dn,n+1,empn.no,,empn.sex,empn.age,empn.salar); /*n為emp文件中記錄數*/printf(要刪除的職工號:);scanf(%s,num);for(i=0;(st
22、rcmp(empi.no,num)!=0&i=n)printf(t沒有%s職工號的職工n,num);exit(2);fclose(fp);fp=fopen(emp,w+);if(n=1) /*一個記錄已經刪除了*/fclose(fp);exit(3);for(j=0;ji;j+)fwrite(&empj,sizeof(struct emploee),1,fp);for(j=i+1;jn;j+)fwrite(&empj,sizeof(struct emploee),1,fp);printf(刪除后:n);fseek(fp,0,seek_set);printf(記錄號 職工號 姓名 性別 年齡 工
23、資n);for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+)printf(%6s%6s%9s%4s%5d%6dn,i+1,empi.no,,empi.sex,empi.age,empi.salar);fclose(fp);/*修改模塊*/void modi()int x;while(1) printf(nntt修改子菜單n);printf(tt*n);printf(tt1. 按職工號修改n);printf(tt0. 返回主菜單n);printf(tt*n);printf(t請選擇(0-1):);scanf(%d,&x);sw
24、itch(x) case 1:modi_num();break;default:printf(n輸錯誤!);if(x=0)break; /*條件判斷*/void modi_num()file *fp; /*定義文件指針變量*/ int i,j;char num5;if(fp=fopen(emp,rb+)=null)printf(不能 打開emp文件n);exit(1);printf(要修改的職工號:);scanf(%s,num);for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+)if(!strcmp(empi.no,num)break;if
25、(feof(fp)printf(t沒有%s職工號的職工n,num);exit(2); printf(記錄號 職工號 姓名 性別 年齡 工資n);printf(%6d%6s%9s%4s%5d%6dn,i+1,empi.no,,empi.sex, empi.age,empi.salar);printf(輸入格式:職工號 姓名 性別 年齡 工資n);printf(第%d個記錄:,i+1);scanf(%s%s%s%d%d,newemp.no,,newemp.sex,&newemp.age,&newemp.salar); /*獲取新的職工記錄*/fseek(fp
26、,-(long)sizeof(struct emploee),seek_cur);/*文件指針指向該修改的記錄開頭*/fwrite(&newemp,sizeof(struct emploee),1,fp); /*用newemp覆蓋當前記錄*/printf( 修改后:n);fseek(fp,0,seek_set); /*顯示修改后的文件數據*/printf(記錄號 職工號 姓名 性別 年齡 工資n);for(i=0;fread(&empi,sizeof(struct emploee),1,fp)!=0;i+)printf(%6d%6s%9s%4s%5d%6dn,i+1,empi.no,empi.
27、name,empi.sex, empi.age,empi.salar);fclose(fp);/*查詢模塊*/void search( )int x;while(1)printf(nntt查子菜單n);printf(tt*n);printf(tt 1.按職工號查詢n);printf(tt 0.返回主菜單n);printf(tt*n);printf(t請選擇(0-1):);scanf(%d,&x);switch(x)case 1:search_num();break; /*進入查詢狀態(tài)*/default :printf(n wrong!);if(x=0) break; /*若退出程序則退出當前循
28、環(huán)*/void search_num()file *fp; /*定義文件指針變量*/int i;char num;if(fp=fopen(emp,rb)=null)printf(不能打開emp文件n);exit(1);printf(要查詢的職工號:);scanf(%s,num);for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+)if(!strcmp(empi.no,num) break;if(feof(fp)printf(t查無此人n);exit(2);printf(記錄號 職工號 姓名 性別 年齡 工資n);printf(%6d%6s%9
29、s%4s%5d%6dn,i+1,empi.no,,empi.sex empi.age,empi.salar); /*查找職工信息*/fclose(fp);/*輸出模塊*/void output()int i;file *fp; /*定義文件指針變量*/if(fp=fopen(emp,r)=null)printf(不能打開emp文件n);exit(0);printf(記錄號 職工號 姓名 性別 年齡 工資n);for(i=0;fread(&empi,sizeof(struct emploee),1,fp)!=0;i+)printf(%6d%6s%9s%4s%5d%6dn,i+1
30、,empi.no,,empi.sex,empi.age,empi.salar); /*輸出職工信息*/fclose(fp);/*追加模塊*/void run()file *fp; /*定義文件指針變量*/int n,i,j;if(fp=fopen(emp,ab+)=null)printf(不能打開emp文件n);exit(0);printf(要追加的職工人數:);scanf(%d,&n);for(i=0;in;i+) /*輸入新增職工信息*/ printf(輸入格式:職工號 姓名 性別 年齡 工資n);printf(職工記錄:);scanf(%s%s%s%d%d,newemp
31、.no,,newemp.sex,&newemp.age, &newemp.salar); /*獲取一個職工記錄*/fwrite(&newemp,sizeof(struct emploee),1,fp); /*將該職工記錄寫入文件*/fclose(fp);/*顯示模塊*/void fun()printf(tt*n);printf(tt* *n);printf(tt* *n);printf(tt* 謝 謝 使 用 ! *n);printf(tt* *n);printf(tt* *n);(tt*n);第3章 課程設計總結經過一學期的c語言學習,我們掌握了c語言的基礎知識,我對課程設計有了一定的了解,并且通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,何況我所掌握的c語言知識還只是毛皮,對c語言的深層知識還沒有掌握,所以我發(fā)現只有把所學的理論知識與實踐結合起來,從理論中得出結論,才能真正為今后的學習、工作服務,從而提高自己的實際動手能力和獨立思考的能力。當我坐到電腦前準備開始編寫代碼的時候才發(fā)現無從下手。通過去圖書館查找程序設計相關書籍,和上網參考前人編寫的類似程序,我腦中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024飼料原料出口銷售合同
- 職業(yè)學院學生資助工作實施辦法
- 2024年建筑工程施工及安全責任保險合同范本3篇
- 2024年裝修項目監(jiān)理合同3篇
- 2025年度豪華大理石臺面定制與安裝服務合同范本3篇
- 2024年租房責任保險合同2篇
- 2024年股權轉讓合同(雙邊)
- 2024年簡明鋼結構購買合同
- 構造地質學看圖題及答案
- 2025年度網絡安全責任書協議書保障數據安全3篇
- FZ/T 81024-2022機織披風
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實驗室檢測
- 國鐵橋梁人行道支架制作及安裝施工要點課件
- 領導科學全套精講課件
- 粵教版地理七年級下冊全冊課件
- 小學科學蘇教版六年級上冊全冊精華知識點(2022新版)
- 萎縮性胃炎共識解讀
- 《中外資產評估準則》課件第8章 澳大利亞與新西蘭資產評估準則
- 2022版義務教育語文課程標準(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
評論
0/150
提交評論