版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、. . . . 簡單的職工管理系統(tǒng)主要實現(xiàn)以下功能:(1) 新增一名職工:將新增職工對象按以字典方式職工管理文件中。(2) 刪除一名職工:從職工管理文件中刪除一名職工對象。(3) 查詢:從職工管理文件中查詢符合某些條件的職工。(4) 修改:檢索某個職工對象,對其某些屬性進(jìn)行修改。(5) 排序:按某種需要對職工對象文件進(jìn)行排序。要求:職工信息包括、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、等信息。實現(xiàn)提示:(1) 由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入存。(2) 對職工對象中的按字典順序進(jìn)行排序。(3) 對排序后的職工對象進(jìn)行增、刪、查詢、修改、排序等操作。源代碼:#inc
2、lude#include#include#include #define I 100static char tempstr20; /*用于臨時存儲輸入信息的數(shù)組*/static struct staff int num; char name20; char sex; long byear;/birth year 出生年月 long iyear;/imploy year 工作年月 char education20; char duty20; char address20; char phone20; struct staff *next;*head=NULL,*thisn,*newn,staI=
3、0,temp; /*temp用于交換的中間量*/void cin(void); /*輸入信息*/int identify(int num); /*對職工號是否重復(fù)進(jìn)行驗證*/void cout(void); /*輸出信息*/void sort(void); /*查詢排序*/void del(void); /*刪除職工信息*/int record(void); /*將文件中的數(shù)據(jù)錄入結(jié)構(gòu)體數(shù)組中*/void iyear(int j); /*按工作年月排序*/void education(int j); /*按學(xué)歷排序*/void modify(void); /*修改職工信息*/ void des
4、cending(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); printf( 1 輸入職工信息 2 輸出職工信息n); printf( 3 信息查詢排序 4 刪除職工信息n); printf( 5 修改職工信息 6 查詢職工信息n); printf(請輸入以上數(shù)字,選
5、擇相應(yīng)的功能: ); switch (getchar() case 1:cin();break; /*調(diào)用輸入信息的函數(shù)*/ case 2:cout();break; /*調(diào)用輸出信息的函數(shù)*/ case 3:sort();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) /*輸入信
6、息的函數(shù)*/ FILE *fp; int receive; /*接收返回值*/ if(fp=fopen(information.txt,a+)=NULL) /*為讀寫打開一個文本文件*/ printf(文件打開錯誤n); exit(1); /*關(guān)閉所有文件,終止正在執(zhí)行的程序,待用戶檢查出錯誤,修改后再運(yùn)行*/ newn=(struct staff *)malloc(sizeof(struct staff); if(head=NULL) /*連接鏈表*/ head=newn; thisn=newn; thisn-next=NULL; else thisn=head; while(thisn-n
7、ext!=NULL) thisn=thisn-next; thisn-next=newn; thisn=newn; getchar(); /*接收緩沖區(qū)中選擇菜單時多余的回車*/ 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=atoi(tempstr); recei
8、ve=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); fputs( ,fp); printf(請輸入出生年月(如199001):); gets(tempstr);thisn-byear=atoi(tempstr); fputs(temp
9、str,fp); fputs( ,fp);printf(請輸入工作年月(如199001):); gets(tempstr);thisn-iyear=atoi(tempstr); fputs(tempstr,fp); fputs( ,fp); printf(請輸入學(xué)歷(博士、碩士、本科、大專、高中、中專、初中、小學(xué)、其他):); gets(thisn-education); fputs(thisn-education,fp); fputs( ,fp); printf(請輸入職務(wù):); gets(thisn-duty); fputs(thisn-duty,fp); fputs( ,fp); pri
10、ntf(請輸入地址:); gets(thisn-address); fputs(thisn-address,fp); fputs( ,fp); printf(請輸入:); gets(thisn-phone); fputs(thisn-phone,fp); thisn-next=NULL; fclose(fp); system(cls); /*清屏*/int identify(int num) /*對職工號是否重復(fù)進(jìn)行驗證*/ FILE *fp; int i; if(fp=fopen(information.txt,r)=NULL) printf(文件打開錯誤); exit(1); for(i=
11、0;iI;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); printf(賬號已存在 1重新輸入 2退出系統(tǒng)n); printf(請輸入以上數(shù)字,選擇相應(yīng)的功能: ); switch(getchar() case 1:getchar(
12、);return(1); /*輸入不成功,返回值作為循環(huán)條件*/ case 2:exit(1); /*退出系統(tǒng)*/ if(stai.num=0) /*動態(tài)限制循環(huán)輸出的次數(shù)*/ break; fclose(fp); return (0); /*輸入成功,返回值作為循環(huán)條件*/void cout(void) /*輸出信息*/ FILE *fp; int s,i,j; system(cls); if(fp=fopen(information.txt,r)=NULL) printf(文件打開錯誤); exit(1); for(i=0;iI;i+) /*將文件中的信息按行寫入結(jié)構(gòu)體數(shù)組中并輸出 */
13、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) /*動態(tài)限制循環(huán)輸出的次數(shù)*/ break; s=record(); setlocale (LC_COLLATE, ); for (j=0;js-1;j+) for(i=0;i0) temp=stai; stai=stai+1; stai+1=temp; printf
14、(工號 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 n);printf(-n); for(i=0;is;i+) printmsg(i); fclose(fp); getchar(); /*接收回車*/ printf(nnnnn回到主界面請按r 退出系統(tǒng)請按其他鍵n); switch (getchar() case r:getchar();system(cls);break; /*getchar()接收回車*/ default:exit(0); void sort(void) /*查詢排序*/ int j; getchar(); /*接收回車*/ j=record(); printf( 1 按工
15、作年月排序 2按學(xué)歷排序n); printf(請輸入以上數(shù)字,選擇相應(yīng)的功能: ); switch (getchar() case 1:iyear(j);break; case 2:education(j);break; getchar(); /*接收回車*/ getchar(); /*接收回車*/ system(cls); printf( 1 回到主界面 2退出系統(tǒng)n); printf(請輸入以上數(shù)字,選擇相應(yīng)的功能: ); switch(getchar() case 1:getchar();system(cls);break; default:exit(1); void iyear(int
16、 j) /*按工作年月排序*/ int i,k; /*i,k用于循環(huán)體中以與用于結(jié)構(gòu)體下標(biāo)*/ system(cls); for(k=0;kj-1;k+) for(i=0;i=j-k-1;i+) if(stai.iyearstai+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,
17、,stai.sex,stai.byear, stai.iyear,cation,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,r)=NULL) printf(文件打開錯誤
18、); exit(1); for(i=0;iI;i+) /*將文件中的信息按行寫入結(jié)構(gòu)體數(shù)組中 */ if(stai.num=0) /*動態(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.duty,&stai.address,&stai.phone); fclose(fp); getchar(); printf( 1學(xué)歷降序排列 2學(xué)歷升序排列n); printf(請輸入以
19、上數(shù)字,選擇相應(yīng)的功能: ); switch(getchar() case 1:descending();break; case 2:ascending();break; printf(nn按任意鍵返回上一級);void del(void) /*刪除職工信息*/ FILE *fp; int num,i,j,k; /*num用于輸入要刪除的職工號, i用于循環(huán)體以與數(shù)組下標(biāo),j記錄職工人數(shù)*/ printf(請輸入要刪除的職工號:); scanf(%d,&num); getchar(); /*接收回車*/ system(cls); if(fp=fopen(information.txt,r)=N
20、ULL) printf(文件打開錯誤); exit(1); for(i=0;iI;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=0) break; if(stai.num=num) j=i; fclose(fp); if(fp=fopen(informatio
21、n.txt,w)=NULL) /*重新向文件輸入所有信息*/ printf(文件打開錯誤); exit(1); for(k=j;krecord();k+) stak=stak+1; for(i=0;irecord();i+) sprintf(tempstr,%d,stai.num); /*將整型數(shù)轉(zhuǎn)化成字符串*/ fputs(tempstr,fp); fputs( ,fp); fputs(,fp); fputs( ,fp); fputc(stai.sex,fp); fputs( ,fp); sprintf(tempstr,%ld,stai.byear); fputs(temp
22、str,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); 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;
23、/*j用于記錄職工的人數(shù)*/ system(cls); if(fp=fopen(information.txt,r)=NULL) printf(文件打開錯誤); exit(1); for(i=0,j=0;iI;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)
24、 /*動態(tài)限制循環(huán)輸出的次數(shù)*/ break; fclose(fp); return j;void modify(void) /*修改職工信息*/ FILE *fp; int i,num,j; /*num是要修改的職工號,j用于計算職工人數(shù)*/ getchar(); /*接收回車*/ system(cls); printf(請輸入要修改的職工: ); scanf(%d,&num); getchar(); if(fp=fopen(information.txt,r)=NULL) printf(文件打開錯誤); exit(1); for(i=0,j=0;iI;i+,j+) /*將文件中的信息按行寫
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); for(i=0;iI;i+) if(stai.num=num) printf( 1 修改 2修改學(xué)歷n); printf( 3 修改職務(wù) 4修改住址n); printf( 5 修改 n); printf(請輸入以上數(shù)字,選擇相應(yīng)的功能: ); switch (getch
26、ar() case 1:getchar(); printf(請輸入新:); gets();printf(修改成功!按任意鍵返回主界面); getchar();break; case 2:getchar(); printf(請輸入新學(xué)歷(博士、碩士、本科、大專、高中、中專、初中、小學(xué)、其他):); gets(cation);printf(修改成功!按任意鍵返回主界面); getchar();break; case 3:getchar(); printf(請輸入新職務(wù):); gets(stai.duty);printf(修改成功!按任意鍵返回主界面); getch
27、ar();break; case 4: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(information.txt,w)=NULL) /*重新向文件輸入所有信息*/ printf(文件打開錯誤); exit(1
28、); for(i=0;ij;i+) sprintf(tempstr,%d,stai.num); /*將整型數(shù)轉(zhuǎn)化成字符串*/ fputs(tempstr,fp); fputs( ,fp); fputs(,fp); fputs( ,fp); fputc(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(st
29、cation,fp); fputs( ,fp); fputs(stai.duty,fp); fputs( ,fp); fputs(stai.address,fp); fputs( ,fp); fputs(stai.phone,fp); fputc(n,fp); fclose(fp);void descending(void) /*按降序排列每個職工的學(xué)歷*/ int i; system(cls);printf(工號 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 n);printf(-n); for(i=0;iI;i+) if(strcmp(cation,博士)=0)
30、printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,碩士)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,本科)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,大專)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(s
31、trcmp(cation,高中)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,中專)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,初中)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,小學(xué))=0) printmsg(i); for(i=0;iI;i+
32、) if(stai.num=0) break; if(strcmp(cation,其他)=0) printmsg(i); void ascending(void) /*按學(xué)歷升序排列*/ int i; system(cls);printf(工號 性別 出生年月 工作年月 學(xué)歷 職務(wù) 地址 n);printf(-n); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,小學(xué))=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(sta
33、cation,初中)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,中專)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,高中)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,大專)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,本科)=0) printmsg(i); for(i=0;iI;i+) if(stai.num=0) break; if(strcmp(cation,碩士)=0) printmsg(i); for(i=0;iI;i+) if(strcm
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024的廣東省室內(nèi)環(huán)境質(zhì)量保證合同C款(家具購買)
- 2024建筑合同法全文
- 鋼結(jié)構(gòu)施工承包合同范本
- 2024個人住房裝修合同書協(xié)議
- 收藏品贈送合同范本
- 面包店轉(zhuǎn)讓協(xié)議書模板
- 建筑工程監(jiān)理服務(wù)合同
- 建筑設(shè)備出租合同范本
- 普通合伙人合同協(xié)議書范文
- 證券交易云平臺運(yùn)營協(xié)議
- 江蘇省南通市2024-2025學(xué)年七年級上學(xué)期期中英語試卷(含答案解析)
- 2022年甘肅省公務(wù)員錄用考試《行測》真題及答案解析
- 排球正面上手發(fā)球課件
- 稅收的經(jīng)濟(jì)效應(yīng)課件
- GB/T 16915.1-2024家用和類似用途固定式電氣裝置的開關(guān)第1部分:通用要求
- 2025屆高考語文一輪復(fù)習(xí):小說物象含義及作用
- 湖北省襄陽市2023-2024學(xué)年六年級上學(xué)期英語期中試卷(含答案)
- 山東省濰坊市2023-2024學(xué)年度高二上學(xué)期期中考試化學(xué)試題(帶答案)
- 國開(湖北)2024年《金融基礎(chǔ)知識》形考作業(yè)1-4答案
- 小程序開發(fā)與運(yùn)營服務(wù)合作協(xié)議
評論
0/150
提交評論