C語言課設(shè)之人事管理系統(tǒng)_第1頁
C語言課設(shè)之人事管理系統(tǒng)_第2頁
C語言課設(shè)之人事管理系統(tǒng)_第3頁
C語言課設(shè)之人事管理系統(tǒng)_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余32頁可下載查看

下載本文檔

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

文檔簡介

1、C 語言課程設(shè)計(jì)人事管理系統(tǒng)題目要求:人事管理管理系統(tǒng)要求 某高校主要人員有:在職人員(行政人員、教師、一般員工) 、退休人員和臨時(shí)工?,F(xiàn)在,需要存儲這些人員的人事檔案信息:編號、姓名、性別、年齡、職務(wù)、職稱、政治面貌、最高學(xué)歷、任職時(shí)間、來院時(shí)間、人員類別。其中,人員編號唯一,不能重復(fù)。( 1) 添加刪除功能:能根據(jù)學(xué)院人事的變動情況,添加刪除記錄;( 2) 查詢功能:能根據(jù)編號和姓名進(jìn)行查詢;( 3) 編輯功能(高級) :根據(jù)查詢對相應(yīng)的記錄進(jìn)行修改,并存儲;( 4) 統(tǒng)計(jì)功能:能根據(jù)多種參數(shù)進(jìn)行人員的統(tǒng)計(jì)(在職人數(shù)、黨員人數(shù)、女工人數(shù)、高學(xué)歷高職稱人數(shù)(碩士學(xué)位以上或者副教授以上),統(tǒng)計(jì)

2、要求同時(shí)顯示被統(tǒng)計(jì)者的信息;( 5) 排序功能:按照年齡、來院時(shí)間進(jìn)行排序;( 6) 保存功能:能對輸入的數(shù)據(jù)進(jìn)行相應(yīng)的存儲;一、需求分析:根據(jù)題目要求,職工信息是存放在文件中的,所以應(yīng)該提供相應(yīng)的文件的輸入輸出的功能,在程序中應(yīng)該有添加刪除,查詢,編輯,統(tǒng)計(jì),排序,保存等程序?qū)崿F(xiàn)相應(yīng)的操作,另外菜單式的選擇方式選擇程序的功能也是必須需的。另外程序中要求存儲的模塊,采用的方式均為將原文件中的所有數(shù)據(jù)讀入內(nèi)存,在內(nèi)存中處理之后以覆蓋的方式寫入文件存貯,這樣的方法在一定程度上提高了對數(shù)據(jù)處理的靈活性,較容易理解, 但存在處理中遇到以外情況而丟失數(shù)據(jù)的風(fēng)險(xiǎn), 另外當(dāng)文件中的數(shù)據(jù)量很大時(shí), 這種方法也

3、存在一定的難度, 在本程序中將 N 定為 100,基本上能滿足要求;二、總體設(shè)計(jì):根據(jù)以上需求分析,將程序分成以下幾個(gè)模塊:1、 新建數(shù)據(jù)文件(build newdata);2、 添加記錄( add data);3、 刪除記錄( delete data);4、 按工號搜索( search by number);5、 按姓名搜索( search by name);6、 瀏覽全部數(shù)據(jù)(browse all );7、 修改數(shù)據(jù)( modify the data );8、 排序功能( order the volume );9、 統(tǒng)計(jì)功能( data a volume);系統(tǒng)功能模塊圖如下:三、詳細(xì)設(shè)計(jì)

4、;1、 主函數(shù): 1需求分析:為使系統(tǒng)執(zhí)行完每部分功能后能夠方便的回到系統(tǒng)主界面,main()函數(shù)設(shè)計(jì)的較簡單,只包含一個(gè) menu()函數(shù),其余的全部功能都通過menu()函數(shù)調(diào)用來實(shí)現(xiàn),并通過menu()函數(shù)的遞歸調(diào)用實(shí)現(xiàn)返回主界面的功能。main()函數(shù)定義如下:main()menu();而 menu()定義如下:2流程圖:menu()int n,w1;doprintf(nttttMENUn);printf(tt0tbuild newdatann);printf(tt1tdelete datann);printf(tt2tadd datann);printf(tt3tsearch by

5、numbernn);printf(tt4tsearch by namenn);printf(tt5tbrowse allnn);printf(tt6tmodify the datann);printf(tt7torder the volumenn);printf(tt8tdata a volumenn);printf(tt9texitnn);printf(tplease choice and enter a number bb);scanf(%d,&n);if(n8)w1=1;getchar();else w1=0;while(w1=1);switch(n)case 0:build();bre

6、ak;/*調(diào)用新建數(shù)據(jù)文件函數(shù)*/case 1:del();break;/*調(diào)用刪除數(shù)據(jù)函數(shù) */case 2:add();break;/*調(diào)用添加數(shù)據(jù)函數(shù) */case 3:snum();break;/*調(diào)用按工號搜索函數(shù)*/case 4:sname();break;/*調(diào)用按姓名搜索函數(shù)*/case 5:browse();break;/*調(diào)用瀏覽數(shù)據(jù)函數(shù) */case 6:modify();break;/*調(diào)用修改數(shù)據(jù)函數(shù) */case 7:order();break;/*調(diào)用排序函數(shù)函數(shù) */case 8:data();break;/*調(diào)用統(tǒng)計(jì)函數(shù) */case 9:exit(0);/*

7、退出 */default:printf(input error! please input a number between 0 and 8);menu();2、各功能模塊設(shè)計(jì):(1)、新建數(shù)據(jù)文件模塊:、數(shù)據(jù)結(jié)構(gòu);看各個(gè)數(shù)據(jù)信息,編號、姓名、性別、年齡、職務(wù)、職稱、政治面貌、最高學(xué)歷、任職時(shí)間、來院時(shí)間、 人員類別,均為字符串類型, 在文件中以文本形式存放,每條記錄對應(yīng)一個(gè)人員的信息,可以方便信息的管理; 而數(shù)據(jù)讀進(jìn)內(nèi)存中時(shí),可以以結(jié)構(gòu)體的形式,每一個(gè)結(jié)構(gòu)體包含了一個(gè)人員的全部信息,多的人員的信息組成了一個(gè)結(jié)構(gòu)體數(shù)組。定義如下:struct workerchar num11;char nam

8、e10;char sex2;char age3;char zhiwu15;char zhicheng15;char zhengzhi15;char xueli15;char renzhisj8;char laiyansj8;char leibie15;wkN,s;其中 N 是宏定義形式定義的字符,臨時(shí)定義為100, wkN, 為存放人員信息的結(jié)構(gòu)體數(shù)組,而 S 為臨時(shí)的結(jié)構(gòu)體,用來保存信息處理過程中的臨時(shí)數(shù)據(jù)。2、流程圖如下:3、程序:build()int i,m,k,p;FILE *fp;if(fp=fopen(worker00.txt,w)=NULL)printf(can not buil

9、d filen);printf_back();printf(howmany workersdoyou want to input(0-%d)?:,N);scanf(%d,&m);k=m;for(i=0;ik;i+)printf(nInput%dthworkerrecord.n,i+1);input(i);for(p=0;p=i;p+)if(fprintf(fp,%st%st%1st%st%st%st%st%st%st%st%sn,wkp.num,,wkp.sex,wkp.age,wkp.zhiwu,wkp.zhicheng,wkp.zhengzhi,wkp.xueli,wkp.

10、renzhisj,wkp.laiyansj,wkp.leibie)!=1)printf(cannot write the datann);fclose(fp);printf_back();(2)、追加模塊:1 需求分析 該模塊的功能是擁護(hù)需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來的文件中去,其中輸入號碼是要防止號碼重復(fù),重復(fù)時(shí)報(bào)告錯誤,重新輸入。 為方便用戶管理和查看,該模塊采用的方式是用先把原來文件中的數(shù)據(jù)讀入內(nèi)存,保存在內(nèi)存中, 然后在內(nèi)存中的數(shù)據(jù)后面增加新的數(shù)據(jù),操作完成后用寫的方式打開文件,用覆蓋的方式寫入。2流程圖:3程序:add()int i,m,n,k,p;FILE *fp

11、;n=load();if(n=-1)menu();printf(how many workers do you want to add(0-%d)?:bbb,N-n);scanf(%d,&m);k=m+n;for(i=n+1;i=k;i+)printf(nInput %dth worker record.n,i-n+1);input(i);if(fp=fopen(worker00.txt,w)=NULL)/*將數(shù)據(jù)保存到文件*/printf(can not open filen);printf_back();for(p=0;pk;p+)fprintf(fp,%st%st%1st%st%st%s

12、t%st%st%st%st%sn,wkp.num,,wkp.sex, wkp.age,wkp.zhiwu,wkp.zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie);fclose(fp);printf_back();( 3)修改模塊: 1 需求分析: 該模塊的功能是顯示所有信息, 考慮到記錄較多, 采用分屏顯示, 顯示完所有的記錄后,由用戶輸入需要修改的人員的號碼, 查找成功后, 顯示查找結(jié)果, 并詢問擁護(hù)修改人員的哪部分記錄,根據(jù)用戶選擇修改相應(yīng)的信息,然后保存修改后的結(jié)果; 2流程圖 3

13、程序;modify()int i,n,k,p,w0=1,w1,w2=0;FILE *fp;n=load();dok=-1;printf_face();for(i=0;i=n;i+)if(i!=0)&(i%10=0)printf(nnRemember the No.which need modify.npress any key to continue.); getch();puts(nn);printf_one(i);doprintf(nnEnter NO. that you want to modify!nttNO.bb);scanf(%s,s.num);for(i=0;in;i+)if(s

14、trcmp(s.num,wki.num)=0);k=i;s=wki;if(k=-1)printf(nnNO exit ! please again);while(k=-1);printf_face();printf_one(k);w1=modify_data(k);if(w1=1)printf(nsuccessful!nnDo yuo want to modifyanother?nntt1tYesnntt2tBack with savent bb);scanf(%d,&w0);w2=1;elsew0=0;if(w2=1)wkk=s;wkk=s;if(w0!=1&w2=1) fp=fopen(w

15、orker00.txt,w); for(p=0;pnntt1tNO.ntt2tnamentt3tsexntt4tagentt5tzhiwuntt6tzhichengntt7nnttt bb);scanf(%d,&c);if(c11|c11|c1);doswitch(c)case 1:printf(the old number is %s,wki.num);input_num(i,i-1);break; case 2:printf(the old name is %s,enter the new name:,);scanf(%s,);break;case 3:pr

16、intf(the old sex is %s,enter the new sex:,wki.sex);scanf(%1s,wki.sex);break; case 4:printf(the old age is %s,enter the new age:,wki.age);scanf(%s,wki.age);break; case 5:printf(the old zhiwu is %s,enter the new zhiwu:,wki.zhiwu);scanf(%s,wki.zhiwu);break;case 6:printf(the old zhicheng is %s,enter the

17、 newzhicheng:,wki.zhicheng);scanf(%s,wki.zhicheng);break;case 7:printf(the old zhengzhimianmao is %s,enter the newzhengzhimiainmao:,wki.zhengzhi);scanf(%s,wki.zhengzhi);break;case 8:printf(the old zuigaoxueli is %s,enter the new zuigaoxueli:,wki.xueli);scanf(%s,wki.xueli);break; case 9:printf(the ol

18、d renzhishijian is %s,enter the new renzhishijian:,wki.renzhisj);scanf(%s,wki.renzhisj);break; case 10:printf(the old laiyuanshijian is %s,enter the new laiyuanshijian:,wki.laiyansj);scanf(%s,wki.laiyansj);break; case 11:printf(the old renyuanleibie is %s,enter the new renyuanleibie:,wki.leibie);sca

19、nf(%s,wki.leibie);break; printf(now:nn);printf_face();printf_one(i);printf(nareyou sure?nntt1tsurentt2tNoand remodifyntt3tbackwithoutsave in thistimentttbbb);scanf(%d,&w1);while(w1=2);return(w1);( 4)刪除模塊:1 需求分析 :該模塊的運(yùn)行方式與修改模塊類似,首先分屏顯示所有人員的記錄,顯示完所有的記錄后,由用戶輸入要刪除的人員的號碼,根據(jù)號碼查找相應(yīng)的記錄并將結(jié)果顯示出來,經(jīng)用戶確認(rèn)后刪除, 刪除的

20、方法是將文件中的數(shù)據(jù)讀入內(nèi)存, 賦給相應(yīng)的結(jié)構(gòu)體, 并將結(jié)構(gòu)體數(shù)組中將刪除的后面的數(shù)據(jù)賦給前一個(gè)結(jié)構(gòu)體,然后將相應(yīng)數(shù)據(jù)寫入文件并保存;2流程圖:Y 3程序;del()char c;int i,j,n,k,m,w0=1,w1=0,w2=0;FILE *fpt;n=load();dok=-1;printf_face();for(i=0;i=n;i+)if(i!=0)&(i%10=0)printf(nnRemember the No.which need delete.npress any key to continue.);getch();printf(nn);printf_one(i);dopr

21、intf(nnEnter NO. that you want to delete!nttNO.bb);scanf(%s,s.num);for(i=0;i=n;i+)if(strcmp(s.num,wki.num)=0);k=i;s=wki;if(k=-1)printf(nnNO exit ! please again);while(k=-1);printf_face();printf_one(k);printf(are you sure to delete the data? ty/nntt bb);scanf(%1s,&c);if(c=y)for(j=i;j=n;j+)wkj=wkj+1;w

22、1=1;else menu();if(w1=1)printf(nsuccessful!nnDo yuo want to delete another?nntt1tYesnntt2tBack with saventbb);scanf(%d,&w0);w2=1;if(w0!=1&w2=1)fpt=fopen(worker00.txt,w);for(m=0;mn;m+)fprintf(fpt,%st%st%1st%st%st%st%st%st%st%st%sn,wkm.num,,wkm.sex,wkm.age,wkm.zhiwu,wkm.zhicheng,wkm.zhengzhi,w

23、km.xueli,wkm.renzhisj,wkm.laiyansj,wkm.leibie);fclose(fpt); while(w0=1);menu();( 5)、按號碼搜索: 1需求分析 :該模塊的功能是按照輸入的人員的號碼查找對應(yīng)的記錄,并將其顯示,查找成功以后,增加刪除和修改等功能,其中刪除和修改功能可以通過調(diào)用相應(yīng)的函數(shù)來實(shí)現(xiàn)。 2流程圖;3、程序;snum()FILE *fp;int i,n,k,p,w1=1,w2,w3,w4;n=load();dodok=-1;printf(nnEnter the number that you want to search!nttnumber

24、:scanf(%s,s.num);for(i=0;i=n;i+)if(strcmp(s.num,wki.num)=0)k=i;printf_one(k);break;bbbbb);if(k=-1)printf(nnNO exist!please);printf(nnAre you again?ntt1tagainntt2tNO and backnttbb);scanf(%d,&w1);if(w1=1)snum();break;if(w1=2) menu();break; while(k=-1&w1=1);w4=0;w3=0;if(k!=-1);printf(nnWhat do you want

25、 to do ?ntt1tsearchanotherntt2tmodifyntt3tDeletentt4tback menunttbb);scanf(%d,&w2);switch(w2)case 1:snum();break;case 2:w3=modify_data(k);break;/*調(diào)用修改數(shù)據(jù)函數(shù)*/case 3:printf(nAre you sure?ntt1tsurentt2tno and backnttbb);scanf(%d,&w4);if(w4=1)for(p=i;p=n;p+)wkp=wkp+1;break;case 4:menu();break;if(w3=1|w4=

26、1)fp=fopen(worker00.txt,w);for(p=0;p=n;p+)fprintf(fp,%st%st%1st%st%st%st%st%st%st%st%sn,wkp.num,,wkp.sex,wkp.age,wkp.zhiwu,wkp.zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie);fclose(fp);printf(nnttsuccessful!n);printf(nnWhat do you want to do?ntt1tSearch anotherntt2tBac

27、kntt bb); scanf(%d,&w2);while(w2=1);menu();( 7) 按姓名搜索。該模塊的結(jié)構(gòu)與按號碼查詢的結(jié)構(gòu)基本相同;( 8) 瀏覽模塊; 1 需求分析:該模塊的功能是顯示所有保存在文件中的記錄, 2、流程圖;考慮到記錄較多, 采用分屏顯示的方式; 3程序:browse()int i,j,n;n=load();printf_face();for(i=0;i=n;i+) if(i!=0)&(i%10=0)printf(nnRemember the No.which need delete.npress any key to continue.);getch();pr

28、intf(nn);printf_one(i);printf(tThere are %d record.n,n+1);printf(press any key to continue.);getch();menu();(9)、排序模塊;1、 需求分析 ;該模塊的功能是要求將記錄按照年齡或者來院時(shí)間進(jìn)行排序,總體結(jié)構(gòu)是先用n=load()函數(shù)將文件中的數(shù)據(jù)調(diào)入內(nèi)存,然后按照選擇法排序,并將結(jié)果顯示出來,然后將排序后的結(jié)果保存。 2流程圖; 3程序;order()int i,j,k,n,p,m;FILE *fp;n=load();printf(which do you like to follow?

29、ntt1tagentt2tlaiyuanshijiannn); scanf(%d,&p);if(p=1)for(i=0;i=n-1;i+)for(j=i+1;j=n;j+)if(strcmp(wki.age,wkj.age)0)s=wki;wki=wkj;wkj=s; if(p=2)for(i=0;i=n-1;i+)for(j=i+1;j=n;j+)if(strcmp(wki.laiyansj,wkj.laiyansj)0)s=wki;wki=wkj;wkj=s;fp=fopen(worker00.txt,w+);for(m=0;m=n;m+)if(fprintf(fp,%st%st%1st%

30、st%st%st%st%st%st%st%sn,wkm.num,,wkm .sex,wkm.age,wkm.zhiwu,wkm.zhicheng,wkm.zhengzhi,wkm.xueli,wkm.renzhisj,wkm.laiyansj,wkm.leibie)=NULL)printf(cannot open the file,press any key to continue.);getchar();menu();fclose(fp);printf(nn);printf_back();(10)、統(tǒng)計(jì)模塊1、 需求分析 ;該模塊的功能是按照用戶的要求統(tǒng)計(jì)出滿足符合條件的所有

31、記錄的個(gè)數(shù), 并將滿足條件的記錄顯示出來。 該模塊沒有涉及到文件的保存, 所以將文件用只讀的方式打開, 可以防止操作過程中數(shù)據(jù)的丟失。2流程圖;3、程序data()int p;printf(whatkind do you want to data?ntt1tthe number on dutyntt2tthenumber of Partymemberntt3tthenumberofwomenntt4tthenumberofhigheducationntt5texitnntt bb);scanf(%d,&p);switch(p)case 1:numduty();break;case 2:nump

32、m();break;case 3:numwm();break;case 4:hiedcation();break;case 5:menu();break;dafault:printf(the number must be between 1 and 4,please choose again!); data();該過程中調(diào)用了四個(gè)函數(shù),numduty()(統(tǒng)計(jì)在職人員人數(shù)) ,numpm()(統(tǒng)計(jì)黨員人數(shù)) ,numwm () ( 統(tǒng)計(jì)女工人數(shù) ), hieduction ()(統(tǒng)計(jì)高學(xué)歷高職稱人數(shù)) ,函數(shù)的具體定義見后面附錄源程序。并通過在四個(gè)函數(shù)中調(diào)用menu()函數(shù)返回到主菜單。上機(jī)操

33、作:1:數(shù)據(jù)源2:編譯,連接和運(yùn)行下面是各個(gè)模塊的運(yùn)行結(jié)果的界面圖:1、 主菜單函數(shù)界面:2、輸入模塊:新建文件和添加模塊的輸入界面基本相同:3、刪除模塊:4、瀏覽模塊;5、編輯模塊:6、統(tǒng)計(jì)模塊:7、排序模塊:附所有源程序:#define N 100#includestruct workerchar num11;char name10;char sex2;char age3;char zhiwu15;char zhicheng15;char zhengzhi15;char xueli15;char renzhisj8;char laiyansj8;char leibie15;wkN,s,h;

34、menu()/*菜單函數(shù) */int n,w1;doprintf(nttttMENUn);printf(tt0tbuild newdatann);printf(tt1tdelete datann);printf(tt2tadd datann);printf(tt3tsearch by numbernn);printf(tt4tsearch by namenn);printf(tt5tbrowse allnn);printf(tt6tmodify the datann);printf(tt7torder the volumenn);printf(tt8tdata a volumenn);prin

35、tf(tt9texitnn);printf(tplease choice and enter a number bb);scanf(%d,&n);if(n8)w1=1;getchar();else w1=0;while(w1=1);switch(n)case 0:build();break;case 1:del();break;case 2:add();break;case 3:snum();break;case 4:sname();break;case 5:browse();break;case 6:modify();break;case 7:order();break;case 8:dat

36、a();break;case 9:exit(0);default:printf(input error! please input a number between 0 and 8);menu();build()/*新建文件*/int i,m,k,p;FILE *fp;if(fp=fopen(worker00.txt,w)=NULL)printf(can not build filen);printf_back();printf(how many workers do you want to input(0-%d)?:,N);scanf(%d,&m);k=m;for(i=0;ik;i+)pri

37、ntf(nInput %dth worker record.n,i+1);input(i);for(p=0;p=i;p+)if(fprintf(fp,%st%st%1st%st%st%st%st%st%st%st%sn,wkp.num,,wkp.sex,wkp.age,wkp.zhiwu,wkp.zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie)!=1)printf(cannot write the datann);fclose(fp);printf_back();add()/*add*/i

38、nt i,m,n,k,p;FILE *fp;n=load();if(n=-1)menu();printf(how many workers do you want to add(0-%d)?:bbb,N-n);scanf(%d,&m);k=m+n;for(i=n+1;i=k;i+)printf(nInput %dth worker record.n,i-n+1);input(i);if(fp=fopen(worker00.txt,a+)=NULL)printf(can not open filen);printf_back();for(p=0;pk;p+)fprintf(fp,%st%st%1

39、st%st%st%st%st%st%st%st%sn,wkp.num,,wkp.sex,wkp.age,wkp.zhiwu,wkp.zhicheng,wkp.zhengzhi,wkp.xueli,wkp.renzhisj,wkp.laiyansj,wkp.leibie);fclose(fp);printf_back();input(int i)/*輸入一個(gè)記錄 */input_num(i,i-1);printf(nenter the name:tbbbbbbbbbbb);scanf(%s,);printf(nenter the age:tbbbb);scanf(%s,wki.age);printf(nenter the sexM for man an

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論