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

下載本文檔

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

文檔簡(jiǎn)介

人事管理管理系統(tǒng)[要求]某高校關(guān)鍵人員有:在職人員(行政人員、老師、通常職員)、退休人員和臨時(shí)工。現(xiàn)在,需要存放這些人員人事檔案信息:編號(hào)、姓名、性別、年紀(jì)、職務(wù)、職稱、政治面貌、最高學(xué)歷、任職時(shí)間、來院時(shí)間、人員類別。其中,人員編號(hào)唯一,不能反復(fù)。添加刪除功效:能依據(jù)學(xué)院人事變動(dòng)情況,添加刪除統(tǒng)計(jì);查詢功效:能依據(jù)編號(hào)和姓名進(jìn)行查詢;編輯功效(高級(jí)):依據(jù)查詢對(duì)對(duì)應(yīng)統(tǒng)計(jì)進(jìn)行修改,并存放;統(tǒng)計(jì)功效:能依據(jù)多個(gè)參數(shù)進(jìn)行人員統(tǒng)計(jì)(在職人數(shù)、黨員人數(shù)、女工人數(shù)、高學(xué)歷高職稱人數(shù)(碩士學(xué)位以上或副教授以上)),統(tǒng)計(jì)要求同時(shí)顯示被統(tǒng)計(jì)者信息;排序功效:根據(jù)年紀(jì)、來院時(shí)間進(jìn)行排序;保留功效:能對(duì)輸入數(shù)據(jù)進(jìn)行對(duì)應(yīng)存放;需求分析:依據(jù)題目要求,職員信息是存放在文件中,所以應(yīng)該提供對(duì)應(yīng)文件輸入輸出功效,在程序中應(yīng)該有添加刪除,查詢,編輯,統(tǒng)計(jì),排序,保留等程序?qū)崿F(xiàn)對(duì)應(yīng)操作,另外菜單式選擇方法選擇程序功效也是必需需。另外程序中要求存放模塊,采取方法均為將原文件中全部數(shù)據(jù)讀入內(nèi)存,在內(nèi)存中處理以后以覆蓋方法寫入文件中重新儲(chǔ)存,這么方法輕易了解、輕易編寫,但當(dāng)文件中數(shù)據(jù)量很大時(shí),這種方法也存在一定難度,在本程序中將N定為100,也即最多可儲(chǔ)存職員人數(shù)為100;總體設(shè)計(jì):依據(jù)以上需求分析,將程序分成以下多個(gè)模塊:新建檔案信息;刪除信息;追加信息;搜索查找信息(按姓名或編號(hào)搜索);瀏覽全部信息;修改信息;信息排序;信息統(tǒng)計(jì);具體設(shè)計(jì);主函數(shù):〈1〉需求分析:為使系統(tǒng)實(shí)施完每部分功效后能夠方便回到系統(tǒng)主界面,main()函數(shù)設(shè)計(jì)很簡(jiǎn)單,只包含一個(gè)menu()函數(shù),其它全部功效全部經(jīng)過menu()函數(shù)調(diào)用來實(shí)現(xiàn),并經(jīng)過menu()函數(shù)遞歸調(diào)用實(shí)現(xiàn)返回主界面功效。main()函數(shù)定義以下:main(){menu();}而menu()定義以下:〈2〉步驟圖:voidmenu(){ 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請(qǐng)選擇您要進(jìn)行操作[]\b\b");/**顯示一系列功效并提醒選擇**/scanf("%d",&n);if(n<0||n>8) {w1=1;getchar(); }elsew1=0; }while(w1==1);/**輸入n并判定是否屬于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ò)誤!請(qǐng)重新輸入");menu();}/**依據(jù)n值調(diào)用各功效函數(shù)**/ }}2、各功效模塊設(shè)計(jì):(1)、新建檔案信息模塊:<1>、數(shù)據(jù)結(jié)構(gòu);看各個(gè)數(shù)據(jù)信息,編號(hào)、姓名、性別、年紀(jì)、職務(wù)、職稱、政治面貌、最高學(xué)歷、任職時(shí)間、來院時(shí)間、人員類別,均為字符串類型,在文件中以文本形式存放,每條統(tǒng)計(jì)對(duì)應(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ù)。〈2〉、步驟圖以下:〈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請(qǐng)輸入第%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ù)需要增加新職員統(tǒng)計(jì),從鍵盤輸入并逐條寫入到原來文件中去,其中輸入號(hào)碼是要預(yù)防號(hào)碼反復(fù),反復(fù)時(shí)匯報(bào)錯(cuò)誤,重新輸入。為方便用戶管理和查看,該模塊采取方法是用先把原來文件中數(shù)據(jù)讀入內(nèi)存,保留在內(nèi)存中,然后在內(nèi)存中數(shù)據(jù)后面增加新數(shù)據(jù),操作完成后用寫方法打開文件,用覆蓋方法寫入。〈2〉步驟圖:〈3〉程序:intadd(){ inti,m,n,p;FILE*fp;n=load();/*調(diào)用加載函數(shù)load將文件中數(shù)據(jù)讀入內(nèi)存*/if(n==-1){ printf("\n對(duì)不起,還沒有檔案,請(qǐng)新建一個(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);/*從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)修改模塊:[需求分析:]該模塊功效是顯示全部信息,考慮到統(tǒng)計(jì)較多,采取分屏顯示,顯示完全部統(tǒng)計(jì)后,由用戶輸入需要修改人員號(hào)碼,查找成功后,顯示查找結(jié)果,并問詢擁護(hù)修改人員哪部分統(tǒng)計(jì),依據(jù)用戶選擇修改對(duì)應(yīng)信息,然后保留修改后結(jié)果;步驟圖程序;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請(qǐng)輸入你要修改信息編號(hào)\n\t\t編號(hào):[]\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沒有找到您所需信息!請(qǐng)重新輸入!\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保留并返回\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請(qǐng)選擇需要修改項(xiàng)=>\n\n\t\t1\t編號(hào)\n\t\t2\t姓名\n\t\t3\t性別\n\t\t4\t年紀(jì)\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ò)誤,請(qǐng)重新選擇!");getchar(); }while(c>11||c<1);do { switch(c) { case1:printf("舊編號(hào)是%s,",wk[i].num);input_num(i,i-1);break;case2:printf("舊姓名是%s,請(qǐng)輸入新姓名:",wk[i].name);scanf("%s",wk[i].name);break;case3:printf("舊性別是%s,請(qǐng)輸入新性別:",wk[i].sex);scanf("%1s",wk[i].sex);break;case4:printf("舊年紀(jì)是%s,請(qǐng)輸入新年紀(jì):",wk[i].age);scanf("%s",wk[i].age);break;case5:printf("舊職務(wù)是%s,請(qǐng)輸入新職務(wù):",wk[i].zhiwu);scanf("%s",wk[i].zhiwu);break;case6:printf("舊職稱是%s,請(qǐng)輸入新職稱:",wk[i].zhicheng);scanf("%s",wk[i].zhicheng);break;case7:printf("舊政治面貌是%s,請(qǐng)輸入新政治面貌:",wk[i].zhengzhi);scanf("%s",wk[i].zhengzhi);break;case8:printf("舊學(xué)歷是%s,請(qǐng)輸入新學(xué)歷:",wk[i].xueli);scanf("%s",wk[i].xueli);break;case9:printf("舊任職時(shí)間是%s,請(qǐng)輸入新任職時(shí)間:",wk[i].renzhisj);scanf("%s",wk[i].renzhisj);break;case10:printf("舊來院時(shí)間是%s,請(qǐng)輸入新來院時(shí)間:",wk[i].laiyansj);scanf("%s",wk[i].laiyansj);break;case11:printf("舊在職類別是%s,請(qǐng)輸入新在職類別:",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)行方法和修改模塊類似,首先分屏顯示全部些人員統(tǒng)計(jì),顯示完全部統(tǒng)計(jì)后,由用戶輸入要?jiǎng)h除人員號(hào)碼,依據(jù)號(hào)碼查找對(duì)應(yīng)統(tǒng)計(jì)并將結(jié)果顯示出來,經(jīng)用戶確定后刪除,刪除方法是將文件中數(shù)據(jù)讀入內(nèi)存,賦給對(duì)應(yīng)結(jié)構(gòu)體,并將結(jié)構(gòu)體數(shù)組中將刪除后面數(shù)據(jù)賦給前一個(gè)結(jié)構(gòu)體,然后將對(duì)應(yīng)數(shù)據(jù)寫入文件并保留;〈2〉步驟圖:YY〈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請(qǐng)輸入您想要?jiǎng)h除人員編號(hào)!\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對(duì)不起,這個(gè)編號(hào)不存在!請(qǐng)重新輸入"); }while(k==-1);printf("確定要?jiǎng)h除嗎?\t請(qǐng)輸入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ò)誤,請(qǐng)輸入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)、按號(hào)碼搜索:〈1〉[需求分析]:該模塊功效是根據(jù)輸入人員號(hào)碼查找對(duì)應(yīng)統(tǒng)計(jì),并將其顯示,查找成功以后,增加刪除和修改等功效,其中刪除和修改功效能夠經(jīng)過調(diào)用對(duì)應(yīng)函數(shù)來實(shí)現(xiàn)?!?〉步驟圖;〈3〉、程序;snum(){ FILE*fp;inti,k,w1=1,w2,w3,n;n=load();do { do { k=-1;printf("\n\n請(qǐng)輸入您要查詢編號(hào)!\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您查詢編號(hào)不存在!請(qǐng)重新輸入");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對(duì)不起,請(qǐng)輸入1或2\n");printf("\n請(qǐng)重新輸入\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對(duì)不起,請(qǐng)輸入1或2\n"); search(); break; } } }while(k!=-1&&w3==1);}(6)按姓名搜索。該模塊結(jié)構(gòu)和按號(hào)碼查詢結(jié)構(gòu)基礎(chǔ)相同;瀏覽模塊;需求分析:該模塊功效是顯示全部保留在文件中統(tǒng)計(jì),考慮到統(tǒng)計(jì)較多,采取分屏顯示方法;〈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〉、[需求分析];該模塊功效是要求將統(tǒng)計(jì)根據(jù)年紀(jì)或來院時(shí)間進(jìn)行排序,總體結(jié)構(gòu)是先用n=load()函數(shù)將文件中數(shù)據(jù)調(diào)入內(nèi)存,然后根據(jù)選擇法排序,并將結(jié)果顯示出來,然后將排序后結(jié)果保留。步驟圖;程序;order(){ inti,j,k,n,p;FILE*fp;n=load();printf("請(qǐng)選擇您要排序項(xiàng)\n\t\t1\t年紀(jì)\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) {

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論