C語(yǔ)言課程設(shè)計(jì)人事管理系統(tǒng)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)人事管理系統(tǒng)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)人事管理系統(tǒng)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)人事管理系統(tǒng)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)人事管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告班級(jí)姓名學(xué)號(hào)實(shí)驗(yàn)課程C實(shí)驗(yàn)名稱人事管理系統(tǒng)實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)日期任課教師一、目的(本次課程設(shè)計(jì)所涉及并要求掌握的知識(shí)點(diǎn)。)本次課程設(shè)計(jì)主要涉及c語(yǔ)言的基礎(chǔ)語(yǔ)法,以及指針、文件函數(shù)、結(jié)構(gòu)體、函數(shù)調(diào)用等知識(shí)點(diǎn)。二、使用環(huán)境(本次上機(jī)實(shí)踐所使用的平臺(tái)和相關(guān)軟件。)主要采用windowsxp系統(tǒng)環(huán)境+visualc++6.0編譯環(huán)境三、內(nèi)容與設(shè)計(jì)思想(1.設(shè)計(jì)思路2.主要數(shù)據(jù)結(jié)構(gòu)3.主要代碼結(jié)構(gòu)4.主要代碼段分析。)設(shè)計(jì)思路1、需求分析人事檔案信息采用文件存儲(chǔ),因而要提供文件的輸入輸出操作;根據(jù)學(xué)院人事的變動(dòng)情況,添加刪除記錄,因而要提供文件的添加刪除操作;根據(jù)編號(hào)和姓名進(jìn)項(xiàng)查詢,所以要提供文件的查找操作;高級(jí)編輯功能,就是提供文件的修改操作;統(tǒng)計(jì)功能要提供統(tǒng)計(jì)操作;排序功能要提供用排序算法對(duì)文件記錄的排序;另外還要提供鍵盤式選擇菜單以實(shí)現(xiàn)功能選擇。2、總體設(shè)計(jì)整體設(shè)計(jì)為數(shù)據(jù)輸入模塊、數(shù)據(jù)添加模塊、數(shù)據(jù)刪除模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)修改模塊、數(shù)據(jù)統(tǒng)計(jì)模塊、數(shù)據(jù)排序模塊。主要數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體:StructpersonnelArchiveInfo{CharNo[10];〃編號(hào)Charname[10];//姓名Intsex;//性別Intage;〃年齡Charjob[10];〃職務(wù)Charpost[10];〃職稱Charpolitic[10];//政治面貌Charedu_level[10];〃最高學(xué)歷Charperiod[10];//任職時(shí)間Charstart_time[10];//來(lái)院時(shí)間Chartype[10];//人員類別}PAInfo;主要代碼結(jié)構(gòu)主函數(shù)為使系統(tǒng)執(zhí)行完每部分功能后能夠方便的回到系統(tǒng)主界面,main()函數(shù)設(shè)計(jì)的較簡(jiǎn)單,只包含一個(gè)menu()函數(shù),其余的全部功能都通過(guò)menu()函數(shù)調(diào)用來(lái)實(shí)現(xiàn),并通過(guò)menu()函數(shù)的遞歸調(diào)用實(shí)現(xiàn)返回主界面的功能。voidmain(){intflag=0;intchoose=0;FILE*fp二NULL;charyesorno;system("colorB9");if((fp二fopen("employee1.txt","rb+"))二二NULL){printf("\n=========>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y)\n");scanf("%c",&yesorno);if(yesorno=='y'||yesorno=='Y'){//這里僅為了建立文件fp=fopen("employee1.txt","wb+");fclose(fp);//關(guān)閉fp所指的文件,釋放文件緩沖區(qū)}elseexit(0);}else{Number=read_file(PAInfo);//要是文件已經(jīng)有數(shù)據(jù)將數(shù)據(jù)初始化到數(shù)組中}system("cls");system("colorB9");while(1){menu();system("color20");printf("\t二二二二>請(qǐng)選擇:");scanf("%d",&choose);system("cls");switch(choose){case0:exit(0);//退出break;case1:input();fh();//增加職工信息break;case2:add();fh();//查看職工信息break;case3:zc_query();fh();//查找break;case4:num_del();fh();//刪除break;case5:tongji();fh();//統(tǒng)計(jì)break;case6:sort();fh();//排序break;case7:num_modify();fh();//修改后返回break;case8:save();fh();//保存break;case9:disp();fh();break;//顯示default:break;}fflush(stdin);getchar();system("cls");}各功益模塊設(shè)計(jì)數(shù)據(jù)輸入模塊看各個(gè)數(shù)據(jù)信息,編號(hào)、姓名、性別、年齡、職務(wù)、職稱、政治面貌、最高學(xué)歷、任職時(shí)間、來(lái)院時(shí)間、人員類別,在文件中以文本形式存放,每條記錄對(duì)應(yīng)一個(gè)人員的信息,可以方便信息的管理;而數(shù)據(jù)讀進(jìn)內(nèi)存中時(shí),可以以結(jié)構(gòu)體的形式,每一個(gè)結(jié)構(gòu)體包含了一個(gè)人員的全部信息,多的人員的信息組成了一個(gè)結(jié)構(gòu)體數(shù)組。定義如下:charNO[10];charname[15];charsex[5];intage;charjob[20];charpost[20];charedu_level[10];charpolitic[20];//政治面貌charperiod[10];//任職時(shí)間charstart_time[10];//來(lái)院時(shí)間chartype[10];//人員類別數(shù)據(jù)添加模塊該模塊的功能是擁護(hù)需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來(lái)的文件中去,其中輸入號(hào)碼是要防止號(hào)碼重復(fù),重復(fù)時(shí)報(bào)告錯(cuò)誤,重新輸入。為方便用戶管理和查看,該模塊采用的方式是用先把原來(lái)文件中的數(shù)據(jù)讀入內(nèi)存,保存在內(nèi)存中,然后在內(nèi)存中的數(shù)據(jù)后面增加新的數(shù)據(jù),操作完成后用寫的方式打開文件,用覆蓋的方式寫入。voidadd()//增加職工{intnumberTemp=0;inti=0;structpersonnelArchiveInfotemp;//臨時(shí)保存信息printf("請(qǐng)輸入要增加人事信息的個(gè)數(shù):");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++){printf("輸入第%d個(gè)人事信息\n",i+1);printf("編號(hào):");scanf("%s",temp.NO);printf("姓名:");scanf("%s",);printf("性別:");scanf("%s",temp.sex);printf("年齡:");scanf("%d",&temp.age);printf("部門:");scanf("%s",temp.job);printf("職稱:");scanf("%s",temp.post);printf("學(xué)歷:");scanf("%s",_level);printf("政治面貌:");scanf("%s",&temp.politic);printf("任職時(shí)間:");scanf("%s",&temp.period);printf("來(lái)院時(shí)間:");scanf("%s",&temp.start_time);printf("人員類別:");scanf("%s",&temp.type);PAInfo[Number++]=temp;//將剛添加的寫入到數(shù)組write_file(&temp);//將剛添加的寫入到文件}printf("添加成功\n");}數(shù)據(jù)刪除模塊該模塊的運(yùn)行方式與修改模塊類似,首先分屏顯示所有人員的記錄,顯示完所有的記錄后,由用戶輸入要?jiǎng)h除的人員的號(hào)碼,根據(jù)號(hào)碼查找相應(yīng)的記錄并將結(jié)果顯示出來(lái),經(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ù)寫入文件并保存;voidnum_del()//按編號(hào)刪除{FILE*fp二NULL;chargh[60];inti=0;intj=0;printf("請(qǐng)輸入要?jiǎng)h除的人事編號(hào):");scanf("%s",gh);for(i=0;i<Number;i++){if(strcmp(gh,PAInfo[i].NO)==0)//如果查找到就刪除{for(j=i;j<Number-1;j++){PAInfo[j]=PAInfo[j+1];}Number--;}}//將剩余數(shù)據(jù)寫入文件重新一寫的方式打開文件把以前的數(shù)據(jù)擦除了fp=fopen("employee1.dat","wb");for(i=0;i<Number;i++){fwrite(&PAInfo[i],sizeof(structpersonnelArchiveInfo),1,fp);}fclose(fp);printf("刪除成功;\n");}數(shù)據(jù)查詢模塊voidzc_query()//按職稱查找{charpost[20];inti=0;printf("請(qǐng)輸入要查找人事職稱:");scanf("%s",post);system("cls");printf("\t編號(hào)\七姓W\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\七任職時(shí)間\t來(lái)院時(shí)間\七人員類別\n");for(i=0;i<Number;i++){if(strcmp(post,PAInfo[i].post)==0){printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type);}}}數(shù)據(jù)修改模塊該模塊的功能是顯示所有信息,考慮到記錄較多,采用分屏顯示,顯示完所有的記錄后,由用戶輸入需要修改的人員的號(hào)碼,查找成功后,顯示查找結(jié)果,并詢問(wèn)擁護(hù)修改人員的哪部分記錄,根據(jù)用戶選擇修改相應(yīng)的信息,然后保存修改后的結(jié)果:voidnum_modify()//修改職工信息{FILE*fp二NULL;chargh[60];inti=0;intchangeIndex=0;//changeIndex改變標(biāo)記intindex=0;printf("請(qǐng)輸入要修改的人事編號(hào):");scanf("%s",gh);for(i=0;i<Number;i++){if(strcmp(gh,PAInfo[i].NO)==0)//比較輸入編號(hào)和數(shù)組中已有編號(hào){changeIndex=i;//保存要修改的人的下標(biāo)break;}}printf("\t編號(hào)\七姓名\七性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\七任職時(shí)間\t來(lái)院時(shí)間\七人員類別\n”);printf("\n\n");printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[changeIndex].NO,PAInfo[changeIndex].name,PAInfo[changeIndex].sex,PAInfo[changeIndex].age,PAInfo[changeIndex].job,PAInfo[changeIndex].post,PAInfo[changeIndex].edu_level,PAInfo[changeIndex].politic,PAInfo[changeIndex].period,PAInfo[changeIndex].start_time,PAInfo[changeIndex].type);printf("請(qǐng)重新輸入該人事信息");printf("編號(hào):");scanf("%s",PAInfo[changeIndex].NO);printf("姓名:");scanf("%s",PAInfo[changeIndex].name);printf("性別:");scanf("%s",PAInfo[changeIndex].sex);printf("年齡:");scanf("%d",&PAInfo[changeIndex].age);printf("部門:");scanf("%d",PAInfo[changeIndex].job);printf("職稱:");scanf("%s",PAInfo[changeIndex].post);printf("學(xué)歷:");scanf("%s",PAInfo[changeIndex].edu_level);printf("政治面貌:");scanf("%s",&PAInfo[changeIndex].politic);printf("任職時(shí)間:");scanf("%s",&PAInfo[changeIndex].period);printf("來(lái)院時(shí)間:");scanf("%s",&PAInfo[changeIndex].start_time);printf("人員類別:");scanf("%s",&PAInfo[changeIndex].type);//信息修改后重新更新文件里面的數(shù)據(jù)以保持?jǐn)?shù)據(jù)一致性fp=fopen("employee1.txt","wb+");for(i=0;i<Number;i++){fwrite(&PAInfo[i],sizeof(structpersonnelArchiveInfo),1,fp);//把ptr所指向n*size個(gè)字節(jié)輸入到fp所指向的文件中}fclose(fp);printf("\t=======>修改成功\n");}數(shù)據(jù)統(tǒng)計(jì)模塊該模塊的功能是按照用戶的要求統(tǒng)計(jì)出滿足符合條件的所有記錄的個(gè)數(shù),并將滿足條件的記錄顯示出來(lái)。該模塊沒有涉及到文件的保存,所以將文件用只讀的方式打開,可以防止操作過(guò)程中數(shù)據(jù)的丟失:voidtongji()//統(tǒng)計(jì){inti,m,k,max,min;doublesum=0.0;for(i=0;i<Number;i++){sum=sum+PAInfo[i].age;}printf("全體人事總年齡為:%f\n",sum);printf("平均年齡為:%f\n",sum/Number);i=0;m=0;max=0;max二PAInfo[m].age;for(i=1;i<Number;i++){if(PAInfo[i].age>max)m=i;max二PAInfo[m].age;}printf("最高年齡為:%d\n",max);printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[m].NO,PAInfo[m].name,PAInfo[m].sex,PAInfo[m].age,PAInfo[m].job,PAInfo[m].post,PAInfo[m].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[m].start_time,PAInfo[m].type);i=0;k=0;min=0;min=PAInfo[0].age;for(i=1;i<Number;i++){if(PAInfo[i].age<min)k=i;min=PAInfo[k].age;}printf("最低年齡:%d\n",min);printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[k].NO,PAInfo[k].name,PAInfo[k].sex,PAInfo[k].age,PAInfo[k].job,PAInfo[k].post,PAInfo[k].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[m].start_time,PAInfo[m].type);}數(shù)據(jù)排序模塊該模塊的功能是要求將記錄按照年齡或者來(lái)院時(shí)間進(jìn)行排序,總體結(jié)構(gòu)是先用sort()函數(shù)將文件中的數(shù)據(jù)調(diào)入內(nèi)存,然后按照選擇法排序,并將結(jié)果顯示出來(lái),然后將排序后的結(jié)果保存:voidsort()//排序{structpersonnelArchiveInfot;intwantNUmber=0;inti=0;intj=0;intk=0;for(i=0;i<Number-1;i++){k=i;for(j=i+1;j<Number;j++)

{if(PAInfo[j].age>PAInfo[k].age)k=j;}if(k!=i){t=PAInfo[i];PAInfo[i]=PAInfo[k];PAInfo[k]=t;}}printf("你想輸出前幾名人事信息:");scanf("%d",&wantNUmber);if(wantNUmber>Number){wantNUmber=Number;}printf("\t編號(hào)\t姓名\七性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來(lái)院時(shí)間\t人員類別\n”);for(i=0;i<wantNUmber;i++){printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type);}}四、調(diào)試過(guò)程(1.測(cè)試數(shù)據(jù)設(shè)計(jì)2.測(cè)試結(jié)果分析)主界面:?41MW.、嚴(yán)?41MW.、嚴(yán)■:§:且?心息-J-J-二■J'-i-q.選擇1:===>E:m*壯?』:::王少項(xiàng):■:選擇2:ZQLL"J懦掃底電ZQLL"J懦掃底電-一.:..洞1'/,*¥:-,JrSHS■■■:■:(.:■■■■:-盤舊樓廠管選擇3:rip-.'..rnt;.,x-.[.::■■■X二:

■r..-EE貌f'.r血].,:.技[閂IWI司:"■r..-EE貌f'.r血]'3m小.±:=TI-I,‘?:!.投E二市旦叫二十叫叫壬£01L干宥?一瞬心蜒回3菜單半:P選擇6:__彌嘛出前幾名人事信島2半:邙??病?E.W,??土2f「I目V,竺己._性利.-'.Rd「.<::■■:J:.2911干部2TF.;24招生也處長(zhǎng)三一,按En虹r健據(jù)回主菜單選擇4:■r■■.tI-研究生"一尸:黨員1:選擇9:五、總結(jié).設(shè)計(jì)中遇到的問(wèn)題及解決過(guò)程在向文件中添加數(shù)據(jù)的時(shí)候,要在打開文件的時(shí)候指定正確的文件操作方式,一開始指定文件的操作方式是w,w只寫方式,若文件存在,則原有內(nèi)容會(huì)被清除;若文件不存在,則會(huì)建立文件,所以每次添加完一條數(shù)據(jù)后再次插入一條數(shù)據(jù)前一條數(shù)據(jù)會(huì)自動(dòng)清空,這樣文件中保存的始終是最后輸入的一條數(shù)據(jù),這不是理想的結(jié)果,后來(lái)經(jīng)過(guò)查閱技術(shù)文檔,發(fā)現(xiàn)還有另外文件操作方式即追加a,a:追加方式打開只寫文件,只允許進(jìn)行寫操作,若文件存在,則添加的內(nèi)容放在文件末尾;若不存在,則建立文件。通過(guò)這種方式操作文件,每添加的一條數(shù)據(jù)都會(huì)自動(dòng)追加到前一條數(shù)據(jù)的后面,這種的處理方式是題目所要求的,實(shí)現(xiàn)了多條數(shù)據(jù)的存儲(chǔ)。.設(shè)計(jì)中產(chǎn)生的錯(cuò)誤及原因分析經(jīng)過(guò)這一次系統(tǒng)設(shè)計(jì)編碼的過(guò)程,我覺得我c語(yǔ)言的文件這一知識(shí)點(diǎn)掌握的極為薄弱,導(dǎo)致不能很好的利用一些函數(shù)處理問(wèn)題。而且,有些時(shí)候,腦袋中對(duì)問(wèn)題有求解的思路,但是無(wú)法一旦著手寫代碼的時(shí)候卻寫不出來(lái),我覺得這是我對(duì)C語(yǔ)言一些關(guān)鍵知識(shí)點(diǎn)的理解不夠透徹,還有就是,平時(shí)編寫C語(yǔ)言的代碼量很少,以至于編碼的時(shí)候不能順手拈來(lái)。.設(shè)計(jì)體會(huì)和收獲。三周的C語(yǔ)言課程設(shè)計(jì)結(jié)束了,在這八天的時(shí)間里,我自己獨(dú)立完成了一個(gè)程序從構(gòu)思結(jié)構(gòu),到編寫代碼,然后上機(jī)調(diào)試運(yùn)行的過(guò)程,感覺自己收獲很大。通過(guò)解決一個(gè)又一個(gè)的問(wèn)題,熟悉了c語(yǔ)言的應(yīng)用,對(duì)計(jì)算機(jī)語(yǔ)言應(yīng)用的理解又深了一層,在老師的指導(dǎo)下,學(xué)會(huì)了模塊設(shè)計(jì)的方法,用流程圖表示算法,掌握了用c語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力。在設(shè)計(jì)過(guò)程中,我理解了對(duì)于一個(gè)較大的程序,不可能一次編寫出一個(gè)較大的系統(tǒng),通常要采取自頂向下的設(shè)計(jì)思想,先設(shè)計(jì)主函數(shù),再通過(guò)完善一個(gè)個(gè)的功能模塊來(lái)完成程序的設(shè)計(jì)過(guò)程,在設(shè)計(jì)過(guò)程中要充分理解整個(gè)程序的設(shè)計(jì)思路,采用逐步細(xì)化的方式來(lái)完成整個(gè)程序。六、附錄1、原代碼#include<stdio.h>#include<stdlib.h>#include<string.h>structpersonnelArchiveInfo{charNO[10];charname[15];charsex[5];intage;charjob[20];charpost[20];charedu_level[10];charpolitic[20];//政治面貌charperiod[10];//任職時(shí)間charstart_time[10];//來(lái)院時(shí)間chartype[10];//人員類別};intread_file(structpersonnelArchiveInfoPAInfo[]);voidmenu();voidwrite_file(structpersonnelArchiveInfoPAInfo[]);voidadd();voidinput();voidzc_query();//按職稱查詢voidnum_del();//按編號(hào)刪除voidtongji();//統(tǒng)計(jì)voidsort();//排序voidnum_modify();//按編號(hào)修改職工信息voidsave();//保存信息voiddisp();//顯示職工信息voidfh();//返回主菜單structpersonnelArchiveInfoPAInfo[300];//這個(gè)數(shù)組用來(lái)保存所有的職工信息和文件里面的一致intNumber=0;//記錄總的職工人數(shù)也就是數(shù)組/文件里面的職工人數(shù)voidmenu(){system("cls");system("colorB9");printf("\t**\n")printf("\t*人事信息管理系統(tǒng)*\n")printf("\t**\n")printf("\t*[1]輸入人事信息[2]增加人事信息*\n")printf("\t*[3]查找人事信息[4]刪除人事信息*\n")printf("\t*[5]統(tǒng)計(jì)人事信息[6]人事年齡排列*\n")printf("\t*[7]修改人事信息[8]保存人事信息*\n")printf("\t*[9]顯示人事信息[0]退出管理系統(tǒng)*\n")printf("\t**\n")printf("\t****************************數(shù)信院******************************\n");}voidmain(){intflag=0;intchoose=0;FILE*fp二NULL;charyesorno;system("colorB9");if((fp二fopen("employee1.txt","rb+"))二二NULL){printf("\n=========>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y)\n");scanf("%c",&yesorno);if(yesorno=='y'||yesorno=='Y'){//這里僅為了建立文件fp=fopen("employee1.txt","wb+");fclose(fp);//關(guān)閉fp所指的文件,釋放文件緩沖區(qū)}elseexit(0);}else{Number=read_file(PAInfo);//要是文件已經(jīng)有數(shù)據(jù)將數(shù)據(jù)初始化到數(shù)組中}system("cls");system("colorB9");while(1){menu();system("color20");printf("\t二二二二>請(qǐng)選擇:");scanf("%d",&choose);system("cls");switch(choose){case0:exit(0);//退出break;case1:input();fh();//增加職工信息break;case2:add();fh();//查看職工信息break;case3:zc_query();fh();//查找break;case4:num_del();fh();//刪除break;case5:tongji();fh();//統(tǒng)計(jì)break;case6:sort();fh();//排序break;case7:num_modify();fh();//修改后返回break;case8:save();fh();//保存break;case9:disp();fh();break;//顯示default:break;}fflush(stdin);getchar();system("cls");}}voidsave(){printf("\t二二二>程序在運(yùn)行時(shí)已自動(dòng)保存\n");}voidfh(){printf("\t二二二>按Enter鍵返回主菜單\n");}voidnum_modify()//修改職工信息{FILE*fp二NULL;chargh[60];inti=0;intchangeIndex=0;//changeIndex改變標(biāo)記intindex=0;printf("請(qǐng)輸入要修改的人事編號(hào):");scanf("%s",gh);for(i=0;i<Number;i++){if(strcmp(gh,PAInfo[i].NO)==0)//比較輸入編號(hào)和數(shù)組中已有編號(hào){changeIndex=i;//保存要修改的人的下標(biāo)break;}}printf("\t編號(hào)\七姓名\七性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\七任職時(shí)間\t來(lái)院時(shí)間\七人員類別\n");printf("\n\n");printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[changeIndex].NO,PAInfo[changeIndex].name,PAInfo[changeIndex].sex,PAInfo[changeIndex].age,PAInfo[changeIndex].job,PAInfo[changeIndex].post,PAInfo[changeIndex].edu_level,PAInfo[changeIndex].politic,PAInfo[changeIndex].period,PAInfo[changeIndex].start_time,PAInfo[changeIndex].type);printf("請(qǐng)重新輸入該人事信息");printf("編號(hào):");scanf("%s",PAInfo[changeIndex].NO);printf("姓名:");scanf("%s",PAInfo[changeIndex].name);printf("性別:");scanf("%s",PAInfo[changeIndex].sex);printf("年齡:");scanf("%d",&PAInfo[changeIndex].age);printf("部門:");scanf("%d",PAInfo[changeIndex].job);printf("職稱:");scanf("%s",PAInfo[changeIndex].post);printf("學(xué)歷:");scanf("%s",PAInfo[changeIndex].edu_level);printf("政治面貌:");scanf("%s",&PAInfo[changeIndex].politic);printf("任職時(shí)間:");scanf("%s",&PAInfo[changeIndex].period);printf("來(lái)院時(shí)間:");scanf("%s",&PAInfo[changeIndex].start_time);printf("人員類別:");scanf("%s",&PAInfo[changeIndex].type);//信息修改后重新更新文件里面的數(shù)據(jù)以保持?jǐn)?shù)據(jù)一致性fp二fopen("employee1.txt","wb+");for(i=0;i<Number;i++){fwrite(&PAInfo[i],sizeof(structpersonnelArchiveInfo),1,fp);//把ptr所指向n*size個(gè)字節(jié)輸入到fp所指向的文件中}fclose(fp);printf("\t=======>修改成功\n");}voiddisp()//輸出所有職工信息{inti=0;system("color2");printf("\t編號(hào)\t\t姓W\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來(lái)院時(shí)間\t人員類別\n”);printf("\n\n");for(i=0;i<Number;i++){printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n\n",PAInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type);}}voidsort()//排序{structpersonnelArchiveInfot;intwantNUmber=0;inti=0;intj=0;intk=0;for(i=0;i<Number-1;i++){k=i;for(j=i+1;j<Number;j++){if(PAInfo[j].age>PAInfo[k].age)k=j;}if(k!=i){t=PAInfo[i];PAInfo[i]=PAInfo[k];PAInfo[k]=t;}}printf("你想輸出前幾名人事信息:");scanf("%d",&wantNUmber);if(wantNUmber>Number){wantNUmber二Number;}printf("\t編號(hào)\七姓W\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\七任職時(shí)間\t來(lái)院時(shí)間\七人員類別\n”);for(i=0;i<wantNUmber;i++){printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type);}}voidtongji()//統(tǒng)計(jì){inti,m,k,max,min;doublesum=0.0;for(i=0;i<Number;i++){sum=sum+PAInfo[i].age;}printf("全體人事總年齡為:%f\n",sum);printf("平均年齡為:%f\n",sum/Number);i=0;m=0;max=0;max二PAInfo[m].age;for(i=1;i<Number;i++){if(PAInfo[i].age>max)m=i;max二PAInfo[m].age;}printf("最高年齡為:%d\n",max);printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[m].NO,PAInfo[m].name,PAInfo[m].sex,PAInfo[m].age,PAInfo[m].job,PAInfo[m].post,PAInfo[m].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[m].start_time,PAInfo[m].type);i=0;k=0;min=0;min二PAInfo[0].age;for(i=1;i<Number;i++){if(PAInfo[i].age<min)k=i;min二PAInfo[k].age;}printf("最低年齡:%d\n",min);printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[k].NO,PAInfo[k].name,PAInfo[k].sex,PAInfo[k].age,PAInfo[k].job,PAInfo[k].post,PAInfo[k].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[m].start_time,PAInfo[m].type);}voidnum_del()//按編號(hào)刪除{FILE*fp二NULL;chargh[60];inti=0;intj=0;printf("請(qǐng)輸入要?jiǎng)h除的人事編號(hào):");scanf("%s",gh);for(i=0;i<Number;i++){if(strcmp(gh,PAInfo[i].NO)==0)//如果查找到就刪除{for(j=i;j<Number-1;j++){PAInfo[j]=PAInfo[j+1];}Number--;}}//將剩余數(shù)據(jù)寫入文件重新一寫的方式打開文件把以前的數(shù)據(jù)擦除了fp=fopen("employee1.dat","wb");for(i=0;i<Number;i++){fwrite(&PAInfo[i],sizeof(structpersonnelArchiveInfo),1,fp);}fclose(fp);printf("刪除成功;\n");}voidzc_query()//按職稱查找{charpost[20];inti=0;printf("請(qǐng)輸入要查找人事職稱:”);scanf("%s",post);system("cls");printf("\t編號(hào)\七姓W\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\七任職時(shí)間\t來(lái)院時(shí)間\七人員類別\n”);for(i=0;i<Number;i++){if(strcmp(post,PAInfo[i].post)==0){printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type);}}}voidadd()//增加職工{intnumberTemp=0;inti=0;structpersonnelArchiveInfotemp;//臨時(shí)保存信息printf("請(qǐng)輸入要增加人事信息的個(gè)數(shù):");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論