版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、簡(jiǎn)單的職工管理系統(tǒng)主要實(shí)現(xiàn)以下功能:(1) 新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。(2) 刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。(3) 查詢:從職工管理文件中查詢符合某些條件的職工。(4) 修改:檢索某個(gè)職工對(duì)象,對(duì)其某些屬性進(jìn)行修改。(5) 排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。要求:職工信息包括姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。實(shí)現(xiàn)提示:(1) 由鍵盤(pán)輸入職工對(duì)象,以文件方式保存。程序執(zhí)行時(shí)先將文件讀入內(nèi)存。(2) 對(duì)職工對(duì)象中的"姓名"按字典順序進(jìn)行排序。(3) 對(duì)排序后的職工對(duì)象進(jìn)行增、刪、查詢、修改、排
2、序等操作。源代碼:#include<stdio.h>#include<stdlib.h>#include<string.h>#include <locale.h>#define I 100static char tempstr20; /*用于臨時(shí)存儲(chǔ)輸入信息的數(shù)組*/static struct staff int num; char name20; char sex; long byear;/birth year 出生年月 long iyear;/imploy year 工作年月 char education20; char duty20; ch
3、ar address20; char phone20; struct staff *next;*head=NULL,*thisn,*newn,staI=0,temp; /*temp用于交換的中間量*/void cin(void); /*輸入信息*/int identify(int num); /*對(duì)職工號(hào)是否重復(fù)進(jìn)行驗(yàn)證*/void cout(void); /*輸出信息*/void sort(void); /*查詢排序*/void del(void); /*刪除職工信息*/int record(void); /*將文件中的數(shù)據(jù)錄入結(jié)構(gòu)體數(shù)組中*/void iyear(int j); /*按工作
4、年月排序*/void education(int j); /*按學(xué)歷排序*/void modify(void); /*修改職工信息*/ void descending(void); /*學(xué)歷降序輸出*/ void ascending(void); /*學(xué)歷升序輸出*/void printmsg(int i); /*輸出信息*/void seek(void); /查詢員工信息 int main(void) int flag=1; while(flag) system("cls"); /*清屏*/ printf(" 歡迎登陸職工信息管理系統(tǒng)!n"); pri
5、ntf(" 【1】 輸入職工信息 【2】 輸出職工信息n"); printf(" 【3】 信息查詢排序 【4】 刪除職工信息n"); printf(" 【5】 修改職工信息 【6】 查詢職工信息n"); printf("請(qǐng)輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch (getchar() case '1':cin();break; /*調(diào)用輸入信息的函數(shù)*/ case '2':cout();break; /*調(diào)用輸出信息的函數(shù)*/ case '3':sort(
6、);break; /*調(diào)用排序的函數(shù)*/ case '4':del();break; /*調(diào)用刪除職工信息函數(shù)*/ case '5':modify();break; /*調(diào)用修改職工信息的函數(shù)*/ case '6':seek();break; /查詢員工信息 default:flag=0;break; /*跳出循環(huán)體,結(jié)束程序*/ return 0;void cin(void) /*輸入信息的函數(shù)*/ FILE *fp; int receive; /*接收返回值*/ if(fp=fopen("information.txt",
7、"a+")=NULL) /*為讀寫(xiě)打開(kāi)一個(gè)文本文件*/ printf("文件打開(kāi)錯(cuò)誤n"); exit(1); /*關(guān)閉所有文件,終止正在執(zhí)行的程序,待用戶檢查出錯(cuò)誤,修改后再運(yùn)行*/ newn=(struct staff *)malloc(sizeof(struct staff); if(head=NULL) /*連接鏈表*/ head=newn; thisn=newn; thisn->next=NULL; else thisn=head; while(thisn->next!=NULL) thisn=thisn->next; thi
8、sn->next=newn; thisn=newn; getchar(); /*接收緩沖區(qū)中選擇菜單時(shí)多余的回車*/ fputc('n',fp); /*每次記錄信息前先換行*/ printf("請(qǐng)輸入職工號(hào):"); gets(tempstr);thisn->num=atoi(tempstr); /*atoi()將字符串轉(zhuǎn)換成整型數(shù)*/ receive=identify(thisn->num); while(receive) printf("請(qǐng)輸入職工號(hào):"); gets(tempstr);thisn->num=at
9、oi(tempstr); receive=identify(thisn->num); fputs(tempstr,fp); fputs(" ",fp); /*信息排版的需要*/ printf("請(qǐng)輸入姓名:"); gets(thisn->name); fputs(thisn->name,fp); fputs(" ",fp); printf("請(qǐng)輸入性別(填F或M):"); thisn->sex=getchar();getchar(); fputc(thisn->sex,fp); fpu
10、ts(" ",fp); printf("請(qǐng)輸入出生年月(如199001):"); gets(tempstr);thisn->byear=atoi(tempstr); fputs(tempstr,fp); fputs(" ",fp); printf("請(qǐng)輸入工作年月(如199001):"); gets(tempstr);thisn->iyear=atoi(tempstr); fputs(tempstr,fp); fputs(" ",fp); printf("請(qǐng)輸入學(xué)歷(博士、
11、碩士、本科、大專、高中、中專、初中、小學(xué)、其他):"); gets(thisn->education); fputs(thisn->education,fp); fputs(" ",fp); printf("請(qǐng)輸入職務(wù):"); gets(thisn->duty); fputs(thisn->duty,fp); fputs(" ",fp); printf("請(qǐng)輸入地址:"); gets(thisn->address); fputs(thisn->address,fp);
12、fputs(" ",fp); printf("請(qǐng)輸入電話號(hào)碼:"); gets(thisn->phone); fputs(thisn->phone,fp); thisn->next=NULL; fclose(fp); system("cls"); /*清屏*/int identify(int num) /*對(duì)職工號(hào)是否重復(fù)進(jìn)行驗(yàn)證*/ FILE *fp; int i; if(fp=fopen("information.txt","r")=NULL) printf("文
13、件打開(kāi)錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫(xiě)入結(jié)構(gòu)體數(shù)組中 */ fscanf(fp,"%d %s %c %ld %ld %s %s %s %sn",&stai.num,&,&stai.sex,&stai.byear, &stai.iyear,&cation,&stai.duty,&stai.address,&stai.phone); if(stai.num=num) system("cls&qu
14、ot;); printf("賬號(hào)已存在 【1】重新輸入 【2】退出系統(tǒng)n"); printf("請(qǐng)輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch(getchar() case '1':getchar();return(1); /*輸入不成功,返回值作為循環(huán)條件*/ case '2':exit(1); /*退出系統(tǒng)*/ if(stai.num=0) /*動(dòng)態(tài)限制循環(huán)輸出的次數(shù)*/ break; fclose(fp); return (0); /*輸入成功,返回值作為循環(huán)條件*/void cout(void) /*輸出信
15、息*/ FILE *fp; int s,i,j; system("cls"); if(fp=fopen("information.txt","r")=NULL) printf("文件打開(kāi)錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫(xiě)入結(jié)構(gòu)體數(shù)組中并輸出 */ fscanf(fp,"%d %s %c %ld %ld %s %s %s %sn",&stai.num,&,&stai.sex,&stai.by
16、ear, &stai.iyear,&cation,&stai.duty,&stai.address,&stai.phone); if(stai.num=0) /*動(dòng)態(tài)限制循環(huán)輸出的次數(shù)*/ break; s=record(); setlocale (LC_COLLATE, ""); for (j=0;j<s-1;j+) for(i=0;i<s-j-1;i+) if(strcoll(,stai+1.name)>0) temp=stai; stai=stai+1; stai+1=temp
17、; printf("工號(hào) 姓名 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 電話n");printf("-n"); for(i=0;i<s;i+) printmsg(i); fclose(fp); getchar(); /*接收回車*/ printf("nnnnn回到主界面請(qǐng)按r 退出系統(tǒng)請(qǐng)按其他鍵n"); switch (getchar() case 'r':getchar();system("cls");break; /*getchar()接收回車*/ default:exit(0); v
18、oid sort(void) /*查詢排序*/ int j; getchar(); /*接收回車*/ j=record(); printf(" 【1】 按工作年月排序 【2】按學(xué)歷排序n"); printf("請(qǐng)輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch (getchar() case '1':iyear(j);break; case '2':education(j);break; getchar(); /*接收回車*/ getchar(); /*接收回車*/ system("cls"); p
19、rintf(" 【1】 回到主界面 【2】退出系統(tǒng)n"); printf("請(qǐng)輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch(getchar() case '1':getchar();system("cls");break; default:exit(1); void iyear(int j) /*按工作年月排序*/ int i,k; /*i,k用于循環(huán)體中以及用于結(jié)構(gòu)體下標(biāo)*/ system("cls"); for(k=0;k<j-1;k+) for(i=0;i<=j-k-1;i
20、+) if(stai.iyear<stai+1.iyear) temp=stai; stai=stai+1; stai+1=temp; printf("工號(hào) 姓名 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 電話n");printf("-n"); for(i=0;i<=j-1;i+)printf("%-5d %-10s %-4c %-4ld %-4ld %-6s %-6s %-20s %-sn",stai.num,,stai.sex,stai.byear, stai.iyear,catio
21、n,stai.duty,stai.address,stai.phone); printf(" 【1】返回上一級(jí) 【2】退出系統(tǒng)n"); printf("請(qǐng)輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch (getchar() case '1':system("cls");break; case '2':exit(1);break; void education(int j) /*按學(xué)歷排序*/ FILE *fp; int i; if(fp=fopen("information.txt&qu
22、ot;,"r")=NULL) printf("文件打開(kāi)錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫(xiě)入結(jié)構(gòu)體數(shù)組中 */ if(stai.num=0) /*動(dòng)態(tài)限制循環(huán)輸出的次數(shù)*/ break; fscanf(fp,"%d %s %c %ld %ld %s %s %s %sn",&stai.num,&,&stai.sex,&stai.byear, &stai.iyear,&cation,&stai.
23、duty,&stai.address,&stai.phone); fclose(fp); getchar(); printf(" 【1】學(xué)歷降序排列 【2】學(xué)歷升序排列n"); printf("請(qǐng)輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch(getchar() case '1':descending();break; case '2':ascending();break; printf("nn按任意鍵返回上一級(jí)");void del(void) /*刪除職工信息*/ FILE *
24、fp; int num,i,j,k; /*num用于輸入要?jiǎng)h除的職工號(hào), i用于循環(huán)體以及數(shù)組下標(biāo),j記錄職工人數(shù)*/ printf("請(qǐng)輸入要?jiǎng)h除的職工號(hào):"); scanf("%d",&num); getchar(); /*接收回車*/ system("cls"); if(fp=fopen("information.txt","r")=NULL) printf("文件打開(kāi)錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫(xiě)入
25、結(jié)構(gòu)體數(shù)組中并輸出 */ fscanf(fp,"%d %s %c %ld %ld %s %s %s %sn",&stai.num,&,&stai.sex,&stai.byear, &stai.iyear,&cation,&stai.duty,&stai.address,&stai.phone); if(stai.num=0) break; if(stai.num=num) j=i; fclose(fp); if(fp=fopen("information.tx
26、t","w")=NULL) /*重新向文件輸入所有信息*/ printf("文件打開(kāi)錯(cuò)誤"); exit(1); for(k=j;k<record();k+) stak=stak+1; for(i=0;i<record();i+) sprintf(tempstr,"%d",stai.num); /*將整型數(shù)轉(zhuǎn)化成字符串*/ fputs(tempstr,fp); fputs(" ",fp); fputs(,fp); fputs(" ",fp); fputc(
27、stai.sex,fp); fputs(" ",fp); sprintf(tempstr,"%ld",stai.byear); fputs(tempstr,fp); fputs(" ",fp); sprintf(tempstr,"%ld",stai.iyear); fputs(tempstr,fp); fputs(" ",fp); fputs(cation,fp); fputs(" ",fp); fputs(stai.duty,fp); fputs("
28、; ",fp); fputs(stai.address,fp); fputs(" ",fp); fputs(stai.phone,fp); fputc('n',fp); fclose(fp); int record(void) /*將文件中的數(shù)據(jù)錄入結(jié)構(gòu)體數(shù)組中*/ FILE *fp; int i,j; /*j用于記錄職工的人數(shù)*/ system("cls"); if(fp=fopen("information.txt","r")=NULL) printf("文件打開(kāi)錯(cuò)誤&quo
29、t;); exit(1); for(i=0,j=0;i<I;i+,j+) /*將文件中的信息按行寫(xiě)入結(jié)構(gòu)體數(shù)組中 */ fscanf(fp,"%d %s %c %ld %ld %s %s %s %sn",&stai.num,&,&stai.sex,&stai.byear, &stai.iyear,&cation,&stai.duty,&stai.address,&stai.phone); if(stai.num=0) /*動(dòng)態(tài)限制循環(huán)輸出的次數(shù)*/ break;
30、fclose(fp); return j;void modify(void) /*修改職工信息*/ FILE *fp; int i,num,j; /*num是要修改的職工號(hào),j用于計(jì)算職工人數(shù)*/ getchar(); /*接收回車*/ system("cls"); printf("請(qǐng)輸入要修改的職工號(hào)碼: "); scanf("%d",&num); getchar(); if(fp=fopen("information.txt","r")=NULL) printf("文件打開(kāi)
31、錯(cuò)誤"); exit(1); for(i=0,j=0;i<I;i+,j+) /*將文件中的信息按行寫(xiě)入結(jié)構(gòu)體數(shù)組中并輸出 */ fscanf(fp,"%d %s %c %ld %ld %s %s %s %sn",&stai.num,&,&stai.sex,&stai.byear, &stai.iyear,&cation,&stai.duty,&stai.address,&stai.phone); for(i=0;i<I;i+) if(stai.nu
32、m=num) printf(" 【1】 修改姓名 【2】修改學(xué)歷n"); printf(" 【3】 修改職務(wù) 【4】修改住址n"); printf(" 【5】 修改電話 n"); printf("請(qǐng)輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch (getchar() case '1':getchar(); printf("請(qǐng)輸入新姓名:"); gets();printf("修改成功!按任意鍵返回主界面"); getchar();brea
33、k; case '2':getchar(); printf("請(qǐng)輸入新學(xué)歷(博士、碩士、本科、大專、高中、中專、初中、小學(xué)、其他):"); gets(cation);printf("修改成功!按任意鍵返回主界面"); getchar();break; case '3':getchar(); printf("請(qǐng)輸入新職務(wù):"); gets(stai.duty);printf("修改成功!按任意鍵返回主界面"); getchar();break; case '4&
34、#39;:getchar(); printf("請(qǐng)輸入新地址:"); gets(stai.address);printf("修改成功!按任意鍵返回主界面"); getchar();break; case '5':getchar(); printf("請(qǐng)輸入新電話號(hào)碼:"); gets(stai.phone);printf("修改成功!按任意鍵返回主界面"); getchar();break; default:break; fclose(fp); if(fp=fopen("informati
35、on.txt","w")=NULL) /*重新向文件輸入所有信息*/ printf("文件打開(kāi)錯(cuò)誤"); exit(1); for(i=0;i<j;i+) sprintf(tempstr,"%d",stai.num); /*將整型數(shù)轉(zhuǎn)化成字符串*/ fputs(tempstr,fp); fputs(" ",fp); fputs(,fp); fputs(" ",fp); fputc(stai.sex,fp); fputs(" ",fp); sp
36、rintf(tempstr,"%ld",stai.byear); fputs(tempstr,fp); fputs(" ",fp); sprintf(tempstr,"%ld",stai.iyear); fputs(tempstr,fp); fputs(" ",fp); fputs(cation,fp); fputs(" ",fp); fputs(stai.duty,fp); fputs(" ",fp); fputs(stai.address,fp); fpu
37、ts(" ",fp); fputs(stai.phone,fp); fputc('n',fp); fclose(fp);void descending(void) /*按降序排列每個(gè)職工的學(xué)歷*/ int i; system("cls");printf("工號(hào) 姓名 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 電話n");printf("-n"); for(i=0;i<I;i+) if(strcmp(cation,"博士")=0) printmsg(i);
38、for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"碩士")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"本科")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"大專")=0) printmsg(i); for(i=
39、0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"高中")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"中專")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"初中")=0) printmsg(i); for(i=0;i<
40、;I;i+) if(stai.num=0) break; if(strcmp(cation,"小學(xué)")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"其他")=0) printmsg(i); void ascending(void) /*按學(xué)歷升序排列*/ int i; system("cls");printf("工號(hào) 姓名 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 電話n");
41、printf("-n"); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"小學(xué)")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"初中")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"中專"
42、)=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"高中")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"大專")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"本科")=0) printmsg(i); for(i=0;i<I;i+) if(stai.num=0) break; if(strcmp(cation,"碩士")=0) printmsg(i); for(i=0;i<I;i+) if(strcmp(cation,&q
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.2運(yùn)動(dòng)的描述課件+-2024-2025學(xué)年人教版(2024)物理八年級(jí)上冊(cè)
- 上海行健職業(yè)學(xué)院《腐蝕與防護(hù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海海關(guān)學(xué)院《綜合化學(xué)實(shí)驗(yàn)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年中國(guó)振鏡頭式激光焊接系統(tǒng)市場(chǎng)調(diào)查研究報(bào)告
- 企業(yè)員工管理制度佳作大全
- 2024年中國(guó)工程機(jī)械零件市場(chǎng)調(diào)查研究報(bào)告
- 上海工商外國(guó)語(yǔ)職業(yè)學(xué)院《地理課程標(biāo)準(zhǔn)與教材分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 市場(chǎng)營(yíng)銷試題(含參考答案)
- 成人言語(yǔ)治療技術(shù)講解
- 家庭教育在線服務(wù)平臺(tái)的架構(gòu)設(shè)計(jì)
- 2025年1月浙江省高中學(xué)業(yè)水平考試政治試卷試題(含答案解析)
- 學(xué)校網(wǎng)絡(luò)合同范例
- 2022-2023學(xué)年上海市浦東區(qū)高二(上)期末語(yǔ)文試卷
- 工程建設(shè)安全專項(xiàng)整治三年行動(dòng)實(shí)施方案
- 【MOOC】英文技術(shù)寫(xiě)作-東南大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 輻射與防護(hù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 大學(xué)生助農(nóng)直播創(chuàng)業(yè)計(jì)劃書(shū)
- 2-05SFG04 防空地下室室外出入口部鋼結(jié)構(gòu)裝配式防倒塌棚架結(jié)構(gòu)設(shè)計(jì)
- 串宮壓運(yùn)推算表
- 《電力拖動(dòng)與運(yùn)動(dòng)控制系統(tǒng)》課程設(shè)計(jì)雙閉環(huán)直流調(diào)速系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)RLC測(cè)量?jī)x設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論