人事管理系統(tǒng)-C語言_第1頁
人事管理系統(tǒng)-C語言_第2頁
人事管理系統(tǒng)-C語言_第3頁
人事管理系統(tǒng)-C語言_第4頁
人事管理系統(tǒng)-C語言_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐ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ì)要求同時(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)存中處理之后以覆蓋的方式寫入文件中重新儲存,這樣的方法容易理解、容易編寫,但當(dāng)文件中的數(shù)據(jù)量很大時(shí),這種方法也存在一定的難度,在本程序中將N定為100,也即最多可儲存的職工人數(shù)為100;二、總體設(shè)計(jì):根據(jù)以上需求分析,將程序分成以下幾個(gè)模塊:1、新建檔案信息;2、刪除信息;3、追加信息;4、搜索查找信息(按姓名或者編號搜索);5、瀏覽全部信息;6、修改信息;7、信息排序;8、信息統(tǒng)計(jì);三、詳細(xì)設(shè)計(jì);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〉流程圖:通過meauQ通過meauQ函數(shù)的p詭歸調(diào)用實(shí)現(xiàn)重新』選擇」/**顯示一系列功能并/**輸入n/**顯示一系列功能并/**輸入n并判斷是否屬intn,w1;do{printf("\n\t\t\t\t菜\t單\n");printf("\n\t\t0\t新建檔案信息\n\n");printf("\t\t1\t刪除信息\n\n");printf("\t\t2\t追加信息\n\n");printf("\t\t3\t搜索查找信息\n\n");printf("\t\t4\t瀏覽所有信息\n\n");printf("\t\t5\t修改信息\n\n");printf("\t\t6\t信息排序\n\n");printf("\t\t7\t信息統(tǒng)計(jì)\n\n");printf("\t\t8\t離開\n\n");printf("\t\t請選擇您要進(jìn)行的操作[]\b\b");提示選擇**/scanf("%d",&n);if(n<0||n>8){w1=1;getchar();}elsew1=0;}while(w1==1);于0到8**/switch(n){case0:build();break;case1:del();break;case2:add();break;case3:search();break;case4:browse();break;case5:modify();break;case6:order();break;case7:data();break;case8:exit(0);default:{printf("輸入錯(cuò)誤!請重新輸入");menu();}/**根據(jù)n的值調(diào)用各功能函數(shù)**/}}2、各功能模塊設(shè)計(jì):(1)、新建檔案信息模塊:<1>、數(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ù)組。定義如下:structworker{charnum[11];charname[10];charsex[2];charage[3];charzhiwu[15];charzhicheng[15];charzhengzhi[15];charxueli[15];charrenzhisj[8];charlaiyansj[8];charleibie[15];}wk[N],s;其中N是宏定義形式定義的字符,臨時(shí)定義為100,wk[N],為存放人員信息的結(jié)構(gòu)體數(shù)組,而S為臨時(shí)的結(jié)構(gòu)體,用來保存信息處理過程中的臨時(shí)數(shù)據(jù)?!?〉、流程圖如下:〈3〉、程序:intbuild(){inti,m,n,p;FILE*fp;if((fp=fopen("worker00.txt”,"w"))==NULL){printf("cannotbuildfile\n");printf_back();/*輸入用戶要輸入的學(xué)生的個(gè)數(shù)N*/}printf("您要輸入的人數(shù)是(0-%d)?:",N);scanf("%d",&m);n=m;for(i=0;i<n;i++){printf("\n請輸入第%d個(gè)工作人員的信息\n",i+1);input(i);/*從0到N調(diào)用輸入函數(shù)input*/}for(p=0;p<=i;p++)if((fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n”,wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie))!=1)printf("cannotwritethedata\n\n");/*將結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)寫入文件?/fclose(fp);/*關(guān)閉文件*/printf_back();}(2)、追加模塊:〈1〉[需求分析]該模塊的功能是擁護(hù)需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來的文件中去,其中輸入號碼是要防止號碼重復(fù),重復(fù)時(shí)報(bào)告錯(cuò)誤,重新輸入。為方便用戶管理和查看,該模塊采用的方式是用先把原來文件中的數(shù)據(jù)讀入內(nèi)存,保存在內(nèi)存中,然后在內(nèi)存中的數(shù)據(jù)后面增加新的數(shù)據(jù),操作完成后用寫的方式打開文件,用覆蓋的方式寫入?!?〉流程圖:〈3〉程序:intadd(){inti,m,n,p;FILE*fp;n=load();/*調(diào)用加載函數(shù)load將文件中的數(shù)據(jù)讀入內(nèi)存*/if(n==-1){printf("\n對不起,還沒有檔案,請新建一個(gè)檔案\n");menu();}printf("您要追加的人數(shù)是(0-%d)?:[]\b\b\b",N-n);scanf("%d”,&m);/*輸入要追加的人員個(gè)數(shù)m*/for(i=n+1;i<=m+n;i++)printf("\n追加第%d個(gè)工作人員的信息\n",i-n);

input(i);/*input(i);/*從n到k調(diào)用輸入函數(shù)input(i)*/}if((fp=fopen("worker00.txt”,"a+"))==NULL){printf("cannotopenfile\n");printf_back();/*調(diào)用*/}for(p=n+1;p<=m+n;p++)fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n”,wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie);/*從0到k以覆蓋的方式寫入文件并保存*/fclose(fp);printf_back();/*關(guān)閉文件*/}(3)修改模塊:〈1〉[需求分析:]該模塊的功能是顯示所有信息,考慮到記錄較多,采用分屏顯示,顯示完所有的記錄后,由用戶輸入需要修改的人員的號碼,查找成功后,顯示查找結(jié)果,并詢問擁護(hù)修改人員的哪部分記錄,根據(jù)用戶選擇修改相應(yīng)的信息,然后保存修改后的結(jié)果;〈2〉流程圖

修改模塊流程圖H〈3〉程序;modify(){inti,n,k,p,w0=1,w1,w2=0;FILE*fp;n=load();do{k=-1;printf_face();for(i=0;i<=n;i++)printf_one(i);do{printf("\n\n請輸入你要修改的信息的編號\n\t\t編號:[scanf("%s”,s.num);for(i=0;i<=n;i++){if(strcmp(s.num,wk[i].num)==0){k=i;s=wk[i];}}if(k==-1)printf("\n\n沒有找到您所需的信息!請重新輸入!\n");}while(k==-1);printf_face();printf_one(k);w1=modify_data(k);if(w1==1){printf("\n修改成功!\n\n要繼續(xù)修改嗎?\n\n\t\t1\t是\n\n\t\t2\t保存并返0\n\t[]\b\b");scanf("%d",&w0);w2=1;}else{w0=0;if(w2==1)wk[k]=s;}if(w0!=1&&w2==1){fp=fopen("worker00.txt”,"w”);{for(p=0;p<=n;p++)fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n”,wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie);}fclose(fp);}}while(w0==1);menu();}修改數(shù)據(jù)函數(shù)如下:modify_data(inti){intc,w1;do{printf("\n請選擇需要修改的項(xiàng)=>\n\n\t\t1\t編號\n\t\t2\t姓名\n\t\t3\t性別\n\t\t4\t年齡\n\t\t5\t職務(wù)\n\t\t6\t職稱\n\t\t7\t政治面貌\n\t\t8\t學(xué)歷\n\t\t9\t任職時(shí)間\n\t\t10\t來院時(shí)間\n\t\t11\t在職類別\n\n\t\t\t[]\b\b");scanf("%d",&c);if(c>11||c<1)printf("錯(cuò)誤,請重新選擇!");getchar();}while(c>11llc<1);do{switch(c){case1:printf("舊的編號是%s,”,wk[i].num);input_num(i,i-1);break;case2:printf("舊的姓名是%s,請輸入新的姓名:",wk[i].name);scanf("%s",wk[i].name);break;case3:printf("舊的性別是%s,請輸入新的性另U:",wk[i].sex);scanf("%1s”,wk[i].sex);break;case4:printf("舊的年齡是%s,請輸入新的年齡:",wk[i].age);scanf("%s”,wk[i].age);break;case5:printf("舊的職務(wù)是%s,請輸入新的職務(wù):",wk[i].zhiwu);scanf("%s”,wk[i].zhiwu);break;case6:printf("舊的職稱是%s,請輸入新的職稱:",wk[i].zhicheng);scanf("%s”,wk[i].zhicheng);break;case7:printf("I日的政治面貌是%s,請輸入新的政治面貌:",wk[i].zhengzhi);scanf("%s”,wk[i].zhengzhi);break;case8:printf("舊的學(xué)歷是%s,請輸入新的學(xué)歷:”,wk[i].xueli);scanf("%s”,wk[i].xueli);break;case9:printf("I日的任職時(shí)間是%s,請輸入新的任職時(shí)間:",wk[i].renzhisj);scanf("%s”,wk[i].renzhisj);break;case10:printf("舊的來院時(shí)間是%s,請輸入新的來院時(shí)間:",wk[i].laiyansj);scanf("%s”,wk[i].laiyansj);break;case11:printf("舊的在職類別是%s,請輸入新的在職類別:",wk[i].leibie);scanf("%s",wk[i].leibie);break;}printf("now:\n\n");printf_face();printf_one(i);printf("\n確定修改嗎?\n\n\t\t1\t是\n\t\t2\t重新修改\n\t\t3\t返回并不保存\n\t\t\t[]\b\b\b");scanf("%d",&w1);}while(w1==2);return(w1);}(4)刪除模塊:〈1〉[需求分析]:該模塊的運(yùn)行方式與修改模塊類似,首先分屏顯示所有人員的記錄,顯示完所有的記錄后,由用戶輸入要刪除的人員的號碼,根據(jù)號碼查找相應(yīng)的記錄并將結(jié)果顯示出來,經(jīng)用戶確認(rèn)后刪除,刪除的方法是將文件中的數(shù)據(jù)讀入內(nèi)存,賦給相應(yīng)的結(jié)構(gòu)體,并將結(jié)構(gòu)體數(shù)組中將刪除的后面的數(shù)據(jù)賦給前一個(gè)結(jié)構(gòu)體,然后將相應(yīng)數(shù)據(jù)寫入文件并保存;〈2〉流程圖:刪除記錄模塊流程圖卜〈3〉程序;intdel(){charc;inti,j,n,k,m,w0,w1=0,w2=0;FILE*fpt;/*fpt?*/n=load();do{k=-1;printf_face();/*調(diào)用*/for(i=0;i<=n;i++)printf_one(i);do{printf("\n\n請輸入您想要刪除的人員的編號!\n\t\tNO.[]\b\b");scanf("%s”,s.num);for(i=0;i<=n;i++)if(strcmp(s.num,wk[i].num)==0);{k=i;s=wk[i];}if(k==-1)printf("\n\n對不起,這個(gè)編號不存在!請重新輸入");}while(k==-1);printf("確定要刪除嗎?\t請輸入y或者n\n\t\t[]\b\b");scanf("%1s”,&c);if(c=='y'){for(j=i;j<=n;j++)wk[j]=wk[j+1];w1=1;}if(c=='n')menu();else{printf("\n錯(cuò)誤,請輸入y或者n\n");menu();}if(w1==1){printf("\n刪除成功!\n\n您要繼續(xù)刪除嗎?\n\n\t\t1\t是\n\n\t\t2\t保存并返回\n\t[]\b\b");scanf("%d",&w0);w2=1;}if(w0==2&&w2==1){fpt=fopen("worker00.txt","w");for(m=0;m<=n;m++)fprintf(fpt,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[m].num,wk[m].name,wk[m].sex,wk[m].age,wk[m].zhiwu,wk[m].zhicheng,wk[m].zhengzhi,wk[m].xueli,wk[m].renzhisj,wk[m].laiyansj,wk[m].leibie);fclose(fpt);}}while(w0==1);menu();}(5)、按號碼搜索:〈1〉[需求分析]:

該模塊的功能是按照輸入的人員的號碼查找對應(yīng)的記錄,并將其顯示,查找成功以后,增加刪除和修改等功能,其中刪除和修改功能可以通過調(diào)用相應(yīng)的函數(shù)來實(shí)現(xiàn)?!?〉流程圖;按號碼查詢流程圖U〈3〉、程序;snum(){FILE*fp;inti,k,w1=1,w2,w3,n;n=load();do{do{k=-1;printf("\n\n請輸入您要查詢的編號!\n\t\tnumber:[]\b\b\b\b\b");scanf("%s”,s.num);for(i=0;i<=n;i++)if(strcmp(s.num,wk[i].num)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\n您查詢的編號不存在!請重新輸入");printf("\n\n您要繼續(xù)查詢嗎?\n\t\t1\t繼續(xù)\n\t\t2\t返回\n\t\t[]\b\b");scanf("%d",&w1);if(w1==2){menu();break;}if(w1!=1&&w1!=2){printf("\n對不起,請輸入1或2\n");printf("\n請重新輸入\n");}}}while(k==-1&&w1!=2);if(k!=-1){w3=0;printf("\n要繼續(xù)查詢嗎?\n\t\t1\t繼續(xù)\n\t\t2\t返回菜單\n\t\t[]\b\b");scanf("%d”,&w3);if(w3==2){menu();break;}if(w3!=1&&w3!=2){printf("\n對不起,請輸入1或2\n");search();break;}}}while(k!=-1&&w3==1);}(6)按姓名搜索。該模塊的結(jié)構(gòu)與按號碼查詢的結(jié)構(gòu)基本相同;(7)瀏覽模塊;〈1〉需求分析:該模塊的功能是顯示所有保存在文件中的記錄,考慮到記錄較多,采用分屏顯示的方式;〈2〉、流程圖;瀏覽模塊流程圖」〈3〉程序:browse(){inti,j,n;n=load();/*調(diào)load函數(shù)將所有的數(shù)據(jù)調(diào)入內(nèi)存*/printf_face();/*調(diào)用表頭函數(shù)*/for(i=0;i<=n;i++)printf_one(i);printf("\t總計(jì)有%d個(gè)工作人員\n",n+1);printf("按任意鍵繼續(xù)...");getch();menu();}(9)、排序模塊;〈1〉、[需求分析];該模塊的功能是要求將記錄按照年齡或者來院時(shí)間進(jìn)行排序,總體結(jié)構(gòu)是先用n=load()函數(shù)將文件中的數(shù)據(jù)調(diào)入內(nèi)存,然后按照選擇法排序,并將結(jié)果顯示出來,然后將排序后的結(jié)果保存?!?〉流程圖;排序模塊流程圖w〈3〉程序;order(){inti,j,k,n,p;FILE*fp;n=load();printf("請選擇您要排序的項(xiàng)\n\t\t1\t年齡\n\t\t2\t來院時(shí)間\n\n");scanf("%d",&p);if(p==1){for(i=0;i<=n-1;i++){for(j=i+1;j<=n;j++){if(strcmp(wk[i].age,wk[j].age)<0){s=wk[i];wk[i]=wk[j];wk[j]=s;}}}}for(k=0;k<=n;k++)printf_one(k);if(p==2){for(i=0;i<=n-1;i++){for(j=i+1;j<=n;j++){if(strcmp(wk[i].laiyan

溫馨提示

  • 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

提交評論