C語言職工管理系統(tǒng)_第1頁
C語言職工管理系統(tǒng)_第2頁
C語言職工管理系統(tǒng)_第3頁
C語言職工管理系統(tǒng)_第4頁
C語言職工管理系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、職工工資管理系統(tǒng)一C語言程序設(shè)計課程設(shè)計指導(dǎo)教師:某某設(shè)計者: xx (組長)xx xxx xx xxx專業(yè)班級:xx工程073班設(shè)計時間:2 0 0 8 年9月8、需求分析隨著計算機的飛速發(fā)展, 它的應(yīng)用已經(jīng)十分廣泛, 它在人們的生產(chǎn)、 生活、工作和學(xué)習(xí)中發(fā)揮著重要的作用。例如一個現(xiàn)代化的公司,擁有 數(shù)千名的員工,那么如何管理這么龐大的職工信息檔案呢?這時,開發(fā) 一個功能完善的職工信息管理系統(tǒng)就必不可少了。從職工的信息的查詢 到管理實現(xiàn)了自動化的模式,從而提高了工作效率和減少工作中的出錯 率,對公司內(nèi)部的員工管理更加方便。系統(tǒng)是為公司財會部門設(shè)計的。主要管理的數(shù)據(jù)包括:職工號姓名 崗位工資

2、獎金 扣除 實發(fā)。該系統(tǒng)具有的功能是:根據(jù)職工號對職 工的信息進行錄入、查詢、刪除、修改、追加、統(tǒng)計、顯示等。對各功能模塊的界面采用菜單顯示方式。本系統(tǒng)具有通用性,即可廣泛適用于 多單位,多人數(shù),多功能的使用,并且系統(tǒng)采用模塊化設(shè)計,主體為一 個主函數(shù),分別可以調(diào)用其他模塊,利用不同子模塊具有的不同功能, 綜合完成系統(tǒng)功能,不但主體與子模塊間有相互聯(lián)系,各個子模塊間也 有相互作用,從而實現(xiàn)了預(yù)期的功能。、人員分工姓名主要負責(zé)內(nèi)容xx (組長)總體設(shè)計;數(shù)據(jù)程序查詢主菜單程序xxx主菜單程序、錄入數(shù)據(jù)程序的編俏與調(diào)試、xx、輸出、統(tǒng)計、xx刪除、追加數(shù)據(jù)程序的編碼與調(diào)試xxx修改數(shù)據(jù)程序的編碼與

3、調(diào)試三、運行環(huán)境硬件環(huán)境: CPU (pentium4 2.4Hz )、內(nèi)存(256MB、硬盤(80G)軟件環(huán)境: Windows 98、Tubro.c 2.0四、系統(tǒng)模塊功能1、系統(tǒng)總體框圖工資管理輸入職工記錄查詢 職工 記錄職工記錄刪除職工記錄職工記錄)I於出二職工 記錄J>工資情況退出系統(tǒng)2、模塊設(shè)計在我們設(shè)計的程序中: 首先是定義了一個輸入輸出頭文件,接著是一個宏定義,下面是函數(shù)聲名部分,用 struct emploeeChar no5;char name8;int post-wage;int prize;int deduct int net pay ;結(jié)構(gòu)體存儲和錄入該程序的所

4、有數(shù)據(jù),并把信息寫到文件 emp.dat中,保存在磁盤中方便以后使用。主函數(shù)部分包括設(shè)計的全部信息,有指導(dǎo)教師、設(shè)計者以及設(shè)計時間,之后是輸出主菜單和調(diào)用函數(shù),退出程序。此程序中包含的功能有:輸入模塊、查詢模塊、修改模塊、刪除模塊、統(tǒng) 計模塊、輸出模塊、追加模塊,各個功能 設(shè)計如下:輸入模塊:該模塊是實現(xiàn)對職工號姓名崗位工資獎金扣除實發(fā)的錄入并保存到文件“emp ”中。模塊中運用 void input()調(diào)用函數(shù)展開對文 件的使用。模塊首先定義一個指針文件,又以寫的方式打開此文件,在打 開的文件中輸入要管理的職工人數(shù),用一個for循環(huán)按照職職工號姓名崗位工資獎金扣除實發(fā)的格式循環(huán)獲取職工的記錄

5、,接著又用了一個 for循環(huán)將職工記錄寫入文件"emp”中,關(guān)閉文件。查詢模塊:實現(xiàn)按職工號查詢每個職工的信息,查詢顯示:職工號 姓名 崗位工資 獎金 扣除 實發(fā)。模塊開始是一個二級子菜單,一個是實現(xiàn)按職工號查詢,另一個是選擇退出返回主菜單,此處是利用switch選擇語句。選擇按職工號查詢,首先是以只讀的方式打開文件“emp”,然后輸入要查詢的職工號,用一個 for循環(huán)來控制查詢的人數(shù),之后在顯示器上顯示職工 信息,程序如下: printf("職工號 姓名 崗位工資 獎金 扣除 實發(fā)n");printf("%6d%9s%6d%6d%6d%6dn”,emp

6、i.no,,empi.post-wage,e mpi. prize ,empi.deduct, pay)然后關(guān)閉文件。查詢職工信息已完 成。修改模塊:該模塊實現(xiàn)按職工號對職工所有信息的修改。模塊開始是一個 二級子菜單,一個是按職工號修改,另一個是選擇退出返回主菜單,此處 是利用switch選擇語句。選擇按職工號修改,首先是以讀寫的方式打開文 件"emp'。輸入要修改的職工號,用一個 for循環(huán)來控制輸入的數(shù)量,循 環(huán)如下:for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+) if(!

7、strcmp(empi.no,num)break;則會出現(xiàn)該職工的信息如下:printf(" 記錄號職工號 姓名性別年齡工資n");printf("%6d%6s%9s%4s%5d%6dn”,i+1,empi.no,,empi.s ex,empi.age,empi.salar);然后對職工的信息進行修改,就可獲得新的職工記錄。之后文件指針指向 該修改的記錄開頭,此時用newemp覆蓋當(dāng)前記錄,修改完成時系統(tǒng)會顯示 修改后的文件數(shù)據(jù):記錄號、職工號、 姓名、性別、年齡、工資,然后關(guān)閉文件。修改職工信息已完成。刪除模塊:該模塊實現(xiàn)按職工號對職工所有信息

8、的刪除。模塊開始是一個 二級子菜單,一個是按職工號刪除記錄,另一個是選擇退出返回主菜單,此處是利用switch選擇語句。選擇按職工號刪除記錄,首先是只讀的方式 打開一個二進制文件“ emp。就會顯示刪除前的職工信息程序如下:printf("刪除前:n");printf(" 記錄號職工號 姓名性別年齡工資n");for(n=0;fread(&empn,sizeof(struct emploee),1,fp);n+)printf("%6s%6s%9s%4s%5d%6dn”,n+1,empn.no,,empn .sex,em

9、pn.age,empn.salar);輸入要刪除的職工號,如果存在由 fp=fopen("emp","w+");if(n=1)fclose(fp);exit(3);執(zhí)行刪除命令:使用 for(j=i+1;j<n;j+)fwrite(&empj,sizeof(struct emploee),1,fp);循環(huán)依次改后職工信息寫入文件,顯示刪除后文件中的職工信息。最后可以關(guān)閉文件,刪除職 工信息已完成。統(tǒng)計模塊:根據(jù)輸入的工資,顯示大于該工資的職工的所有信息。模塊中 運用void stat ()調(diào)用函數(shù)展開對文件的使用。首先是以只讀的方式打開 文

10、件“emp。輸入職工的工資數(shù),運用 for循環(huán)根據(jù)輸入的工資,顯示大 于該工資的職工的所有信息。關(guān)閉文件,統(tǒng)計完成。輸出模塊:該模塊實現(xiàn)按職工號輸出職工的所有信息。在該模塊中運用 void output()調(diào)用函數(shù)展開對文件的使用。首先以只讀的方式打開一個文 本文件” em。操作無誤則用for循環(huán)輸出正在查詢職工的:記錄號 職 工號姓名性別年齡工資。這些完成后用fclose(fp) 函數(shù)關(guān)閉文件。模 塊運行結(jié)束。追加模塊:該模塊實現(xiàn)添加職工的信息。在該模塊中運用 void run() 調(diào) 用函數(shù)展開對文件的使用。首先以讀寫的方式為讀寫打開一個二進制的文件“emp。輸出“要追加的職工人數(shù)”待輸入

11、要追加的個數(shù)后,用 for循 環(huán)控制待輸入的職工信息。用 fwrite(&newemp,sizeof(struct emploee),1,fp) 將該 職工記錄寫入文件。用 fclose(fp) 函數(shù)關(guān)閉文件,模塊運行結(jié)束。五、使用說明啟動后屏幕上會提示要求輸入職工號如果輸入錯誤就會顯示查無此人;輸入錯誤字符顯示“ WRONG輸入后屏幕上提示登陸成功以及顯示下面菜單1輸入職工記錄2查詢職工記錄3修改職工記錄4刪除職工記錄5輸出職工記錄6統(tǒng)計工資情況7追加職工記錄8結(jié)束使用0退出系統(tǒng)如果你要執(zhí)行某一功能,就按下該功能所對應(yīng)的數(shù)字即可。職工信息輸入:在主菜單中輸入1則系統(tǒng)會進入新界面并自動

12、提示你 輸入職工號,輸入完成后按回車鍵系統(tǒng)會逐一提示輸入姓名 性別 年齡 工資,輸入完成后會繼續(xù)提示輸入下一個職工的職工號。職工信息查詢:在主菜單中輸入2則進入查詢子菜單界面,屏幕上會按先后順序顯示輸入的記錄,并統(tǒng)計輸入的個數(shù)。此時在界面里出現(xiàn)數(shù)字 1和0。系統(tǒng)會提示你選擇(0-1)。輸入1后則進入按職工號查詢職工信息, 此時系統(tǒng)會自動提示你輸入要查詢的職工號。輸入職工號后會出現(xiàn)該職工 的信息。輸入錯誤職工號,顯示查無此人;輸入錯誤字符顯示“WRONG輸 入0則返回主菜單。職工信息修改:在主菜單中輸入3則系統(tǒng)進入修改子菜單界面。此時在界面里出現(xiàn)數(shù)字1和0。系統(tǒng)會提示你選擇(0-1)。輸入1是按

13、職工號修改職工信息,系統(tǒng)會自動提示你輸入要修改的職工號,然后進行修改。修改成功顯示已修改后的文件數(shù)據(jù);輸入錯職工號顯示查無此人;輸入錯 誤字符顯示 “WRONG輸入0是返回主菜單。職工信息刪除:在主菜單中輸入 4系統(tǒng)界面是刪除子菜單。系統(tǒng)會提 示你選擇(0-1)。輸入1則按職工號刪除記錄, 系統(tǒng)會自動提示你輸入要刪 除的職工信息,進入新界面后系統(tǒng)會提示你刪除前該職工的信息包括記錄 號、職工號、姓名、 性別、年齡、工資等。輸入錯誤職工號,顯示沒 有該職工號的職工。輸入錯誤字符顯示“WRONG 一個記錄已經(jīng)刪除了時系統(tǒng)會提示刪除后的職工信息。輸入0則返回主菜單。職工信息追加:進入后系統(tǒng)會自動提示你

14、要輸入職工的個數(shù),按照 輸入格式:職工號、 姓名、性別、年齡、工資輸入職工的信息,這樣就獲取一個職工的記錄,并將該職工記錄自動寫入文件,如果想退出此系統(tǒng) 可以按“ 0” ,就可以退出此系統(tǒng)了。職工信息輸出: 在主菜單中輸入5系統(tǒng)界面是輸出菜單界面,按照輸 入格式:職工號、 姓名、性別、年齡、 工資,逐個的輸出職工的信息, 輸出所有職工信息后系統(tǒng)自動退出。職工信息統(tǒng)計:在主菜單中輸入6系統(tǒng)界面是統(tǒng)計菜單界面,輸入工資數(shù),顯示大于該工資的職工的所有信息。關(guān)閉文件。退出系統(tǒng):在使用各個功能后輸入0則返回主菜單。在主菜單中輸入0則退出系統(tǒng)。并顯示 “謝謝使用! ”。注意事項:運行本程序之前,應(yīng)當(dāng)先運行

15、附帶的子程序,為文件 *fp 賦初值。六、結(jié)束語接到C語言課程設(shè)計的作業(yè)我十分高興,終于學(xué)到的東西可以運用了。在老師的指導(dǎo)和大家的共同努力下,我們終于完成了程序的大體編制。程 序中包括主函數(shù)、輸入模塊、查詢模塊、修改模塊、刪除模塊、統(tǒng)計模塊、 輸出模塊、追加模塊。其中在輸入模塊中指針文件運用的比較好,因為指 針是C的一個特色,它能有效的表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),動態(tài)的分配內(nèi)存, 方便的使用字符串、數(shù)組,可謂是 C的精華。在程序設(shè)計中我們最大的收 獲就是:我們真正從實踐的角度體會到了C語言在實際生活中的作用,也深刻體會到了它帶來的方便快捷。不但使我們對C語言有更進一步的鞏固和認(rèn)識還使我們懂得了團隊協(xié)作

16、的重要!讓我們將一年所學(xué)的C語言知識學(xué)為所用,讓我們感覺到了它的神奇魅力。美中不足的就是:由于我們知識的不足以及條件的限制,本系統(tǒng)還有 許多漏洞與不足,希望老師給以批評與幫助,我們會積極改正。而且本程 序還處于初級階段的職工工資管理功能中,只實現(xiàn)了對職工工資的錄入、 刪除、修改、查詢、統(tǒng)計、顯示等簡單功能,功能較簡單,不一定在實際 中有大的用途,程序編排中可能有煩瑣之處有待進一步簡化。七、源程序代碼/*源程序:職工工資管理系統(tǒng)*/#include<stdio.h>#define NUM 100void input();void search();void search_num();

17、void dele();void dele_name();void dele_num();void modi();void modi_num();void output();void stat();void fun();void run();struct emploee/*職工數(shù)據(jù)結(jié)構(gòu)*/(char no5;char name8;char sex3;int age;int salar;empNUM,newemp;main()(int x;printf("1.輸入職工記錄n");printf("2.查詢職工記錄n");printf("3.修改職工

18、記錄n");printf("4.刪除職工記錄n");printf("5.打印職工記錄n");printf("6.調(diào)查工資情況n");printf("7.追加職工記錄n");printf("8.結(jié)束使用 n");printf("0.退出系統(tǒng) n");printf("n");printf("*歡迎使用職工工資管理系統(tǒng)*n");printf("請選擇(0-8):n");scanf("%d”,&x

19、);switch(x)(case 1: input();break;case 2: search();break;case 3: modi();break;case 4: dele();break;case 5: 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"

20、;)=NULL)(printf("不能建立emp文件n");exit(1);printf("輸入職工人數(shù):");scanf("%d",&n);printf("輸入格式:職工號姓名性別年齡工資<Enter>n");for(i=0;i<n;i+)/*循環(huán)獲取n個職工記錄*/(printf("第%d 個職工:",i+1);scanf("%s%s%s%d%d",empi.no,,empi.sex,&empi.age,&emp

21、i.salar);)for(i=0;i<n;i+)/*將n個職工記錄寫入文件 */fwrite(&empi,sizeof(struct emploee),1,fp);fclose(fp);)/*統(tǒng)計模塊 */void stat( )(FILE *fp;int n,num;if(fp=fopen("emp","rb")=NULL)(printf("不能打開emp文件n");exit(1);)printf("工資數(shù):");scanf("%d",&num);printf(”記錄號

22、職工號姓名性別年齡工資n");for(n=0;fread(&emp,sizeof(struct emploee),1,fp);n+)if(empn.salar>=num)printf("%6d%6s%9s%4s%5d%6dn",n+1,empn.no,,empn.sex,empn.age,empn.salar);fclose(fp);)/* 刪除模塊 */ void dele()(int x;while(1)(printf("nntt 刪除子菜單 n");printf("tt*n");prin

23、tf("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=fopen("em

24、p","rb")=NULL)(printf("不能打開emp文件n");exit(1);)printf("刪除前:n");printf(”記錄號職工號 姓名性別年齡工資n");for(n=0;fread(&empn,sizeof(struct emploee),1,fp);n+)printf("%6s%6s%9s%4s%5d%6dn",n+1,empn.no,,empn.sex, empn.age,empn.salar); /*n 為 emp 文件中記錄數(shù) */prin

25、tf(-要刪除的職工號:”);scanf("%s",num);for(i=0;(strcmp(empi.no,num)!=0&&i<n);i+)if(i>=n)(printf("t沒有%s職工號的職工n",num);exit(2);)fclose(fp);fp=fopen("emp","w+");if(n=1)/* 一個記錄已經(jīng)刪除了 */(fclose(fp);exit(3);)for(j=0;j<i;j+)fwrite(&empj,sizeof(struct emplo

26、ee),1,fp);for(j=i+1;j<n;j+)fwrite(&empj,sizeof(struct emploee),1,fp);printf("刪除后:n");fseek(fp,0,SEEK_SET);printf("記錄號職工號 姓名性別年齡 工資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,emp

27、i.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);switch(x)(case 1:modi_num();break

28、;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(emp

29、i.no,num)break;if(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("輸入格式:職工號姓名性別年齡工資<Enter>n");printf("第%d 個記錄:",i+1);scanf("%s%s%s%d%

30、d",newemp.no,,newemp.sex,&newemp.age,&newemp.salar);/*獲取新的職工記錄*/fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR);/*文件指針指向該修改的記錄開頭*/fwrite(&newemp,sizeof(struct emploee),1,fp);/* 用 newemp 覆蓋當(dāng)前記錄 */ printf("修改后:n");fseek(fp,0,SEEK_SET);/* 顯示修改后的文件數(shù)據(jù) */printf(”記錄號職

31、工號 姓名性別年齡工資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.sex,empi.age,empi.salar);fclose(fp);)/*查詢模塊 */void search( )int x;while(1)printf("nntt 查子菜單 n");printf("tt*n");printf("tt 1.按職工號查詢

32、 n");printf("tt 0.返回主菜單 n");printf("tt*n");printf("t 請選擇(0-1):");scanf("%d”,&x);switch(x)case 1:search_num();break;default :printf("n Wrong!");if(x=0) break;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&quo

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論