版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、簡單的職工管理系統(tǒng)主要實(shí)現(xiàn)以下功能:(1) 新增一名職工:將新增職工對象按姓名以字典方式職工管理文件中。(2) 刪除一名職工:從職工管理文件中刪除一名職工對象。(3) 查詢:從職工管理文件中查詢符合某些條件的職工。(4) 修改:檢索某個(gè)職工對象,對其某些屬性進(jìn)行修改。(5) 排序:按某種需要對職工對象文件進(jìn)行排序。要求:職工信息包括姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。實(shí)現(xiàn)提示:(1) 由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時(shí)先將文件讀入內(nèi)存。(2) 對職工對象中的"姓名"按字典順序進(jìn)行排序。(3) 對排序后的職工對象進(jìn)行增、刪、查詢、修改、排
2、序等操作。源代碼:#include<stdio.h>#include<stdlib.h>#include<string.h>#include <locale.h>#define I 100static char tempstr20; /*用于臨時(shí)存儲輸入信息的數(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); /*對職工號是否重復(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("請輸入以上數(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) /*為讀寫打開一個(gè)文本文件*/ printf("文件打開錯(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("請輸入職工號:"); gets(tempstr);thisn->num=atoi(tempstr); /*atoi()將字符串轉(zhuǎn)換成整型數(shù)*/ receive=identify(thisn->num); while(receive) printf("請輸入職工號:"); gets(tempstr);thisn->num=at
9、oi(tempstr); receive=identify(thisn->num); fputs(tempstr,fp); fputs(" ",fp); /*信息排版的需要*/ printf("請輸入姓名:"); gets(thisn->name); fputs(thisn->name,fp); fputs(" ",fp); printf("請輸入性別(填F或M):"); thisn->sex=getchar();getchar(); fputc(thisn->sex,fp); fpu
10、ts(" ",fp); printf("請輸入出生年月(如199001):"); gets(tempstr);thisn->byear=atoi(tempstr); fputs(tempstr,fp); fputs(" ",fp); printf("請輸入工作年月(如199001):"); gets(tempstr);thisn->iyear=atoi(tempstr); fputs(tempstr,fp); fputs(" ",fp); printf("請輸入學(xué)歷(博士、
11、碩士、本科、大專、高中、中專、初中、小學(xué)、其他):"); gets(thisn->education); fputs(thisn->education,fp); fputs(" ",fp); printf("請輸入職務(wù):"); gets(thisn->duty); fputs(thisn->duty,fp); fputs(" ",fp); printf("請輸入地址:"); gets(thisn->address); fputs(thisn->address,fp);
12、fputs(" ",fp); printf("請輸入電話號碼:"); gets(thisn->phone); fputs(thisn->phone,fp); thisn->next=NULL; fclose(fp); system("cls"); /*清屏*/int identify(int num) /*對職工號是否重復(fù)進(jìn)行驗(yàn)證*/ FILE *fp; int i; if(fp=fopen("information.txt","r")=NULL) printf("文
13、件打開錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫入結(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("賬號已存在 【1】重新輸入 【2】退出系統(tǒng)n"); printf("請輸入以上數(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("文件打開錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫入結(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("工號 姓名 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 電話n");printf("-n"); for(i=0;i<s;i+) printmsg(i); fclose(fp); getchar(); /*接收回車*/ printf("nnnnn回到主界面請按r 退出系統(tǒ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("請輸入以上數(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("請輸入以上數(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("工號 姓名 性別 出生年月 工作年月 學(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】返回上一級 【2】退出系統(tǒng)n"); printf("請輸入以上數(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("文件打開錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫入結(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("請輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch(getchar() case '1':descending();break; case '2':ascending();break; printf("nn按任意鍵返回上一級");void del(void) /*刪除職工信息*/ FILE *
24、fp; int num,i,j,k; /*num用于輸入要?jiǎng)h除的職工號, i用于循環(huán)體以及數(shù)組下標(biāo),j記錄職工人數(shù)*/ printf("請輸入要?jiǎng)h除的職工號:"); scanf("%d",&num); getchar(); /*接收回車*/ system("cls"); if(fp=fopen("information.txt","r")=NULL) printf("文件打開錯(cuò)誤"); exit(1); for(i=0;i<I;i+) /*將文件中的信息按行寫入
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("文件打開錯(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("文件打開錯(cuò)誤&quo
29、t;); exit(1); for(i=0,j=0;i<I;i+,j+) /*將文件中的信息按行寫入結(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是要修改的職工號,j用于計(jì)算職工人數(shù)*/ getchar(); /*接收回車*/ system("cls"); printf("請輸入要修改的職工號碼: "); scanf("%d",&num); getchar(); if(fp=fopen("information.txt","r")=NULL) printf("文件打開
31、錯(cuò)誤"); exit(1); for(i=0,j=0;i<I;i+,j+) /*將文件中的信息按行寫入結(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("請輸入以上數(shù)字,選擇相應(yīng)的功能: "); switch (getchar() case '1':getchar(); printf("請輸入新姓名:"); gets();printf("修改成功!按任意鍵返回主界面"); getchar();brea
33、k; case '2':getchar(); printf("請輸入新學(xué)歷(博士、碩士、本科、大專、高中、中專、初中、小學(xué)、其他):"); gets(cation);printf("修改成功!按任意鍵返回主界面"); getchar();break; case '3':getchar(); printf("請輸入新職務(wù):"); gets(stai.duty);printf("修改成功!按任意鍵返回主界面"); getchar();break; case '4&
34、#39;:getchar(); printf("請輸入新地址:"); gets(stai.address);printf("修改成功!按任意鍵返回主界面"); getchar();break; case '5':getchar(); printf("請輸入新電話號碼:"); gets(stai.phone);printf("修改成功!按任意鍵返回主界面"); getchar();break; default:break; fclose(fp); if(fp=fopen("informati
35、on.txt","w")=NULL) /*重新向文件輸入所有信息*/ printf("文件打開錯(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("工號 姓名 性別 出生年月 工作年月 學(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("工號 姓名 性別 出生年月 工作年月 學(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022-2027年中國草莓種植市場運(yùn)行動(dòng)態(tài)及行業(yè)投資潛力預(yù)測報(bào)告
- 2025年服裝機(jī)械配件等行業(yè)深度研究分析報(bào)告
- 遍歷課程設(shè)計(jì)
- 馬青湖灌區(qū)課程設(shè)計(jì)
- 2022-2027年中國鷹爪蝦養(yǎng)殖行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略研究報(bào)告
- 藥學(xué)專業(yè)的課程設(shè)計(jì)
- 2025年機(jī)械設(shè)備項(xiàng)目可行性研究報(bào)告-20250102-235140
- 2025年中國香薰機(jī)行業(yè)發(fā)展前景預(yù)測及投資戰(zhàn)略咨詢報(bào)告
- 2020-2025年中國乳酸菌素行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國江蘇省港口行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 冬春季呼吸道傳染病防控
- 中介費(fèi)合同范本(2025年)
- 《kdigo專家共識:補(bǔ)體系統(tǒng)在腎臟疾病的作用》解讀
- 生產(chǎn)調(diào)度員崗位面試題及答案(經(jīng)典版)
- 交通運(yùn)輸安全生產(chǎn)管理規(guī)范
- 2025春夏運(yùn)動(dòng)戶外行業(yè)趨勢白皮書
- 電力行業(yè) 電力施工組織設(shè)計(jì)(施工方案)
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 查對制度 課件
- 2024-2030年中國豬肉市場銷售規(guī)模及競爭前景預(yù)測報(bào)告~
評論
0/150
提交評論