<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C++實現教職工管理系統的具體程式碼,供大家參考,具體內容如下
要求:設計一個程式來管理職工較全面資料資訊,具備資料的輸入、查詢、刪除等功能。具體功能細節可以根據自己理解情況進行增加。
以下是我的設計:
#include <stdio.h> #include <windows.h> #include <string.h> struct worker { int num; char name[20]; char zhicheng[10]; int wages; int reward; long birth; int salary; }work[500],work1; /*定義結構體*/ void menu(); //宣告選單函數 void type_in(); //宣告錄入函數 void baocun(int); //宣告儲存函數 void scan(); //宣告瀏覽函數 void del(); //宣告刪除函數 void search(); //宣告查詢函數 void search_zhicheng(); //宣告按職稱查詢函數 void search_name(); //宣告按姓名查詢函數 void change(); //宣告修改函數 void order(); //宣告排序函數 void add(); //宣告新增函數 void order_wages(); void order_name(); void menu() /*選單函數*/ { printf("n"); printf(" 歡迎進入 n"); printf(" 職工資訊管理系統 "); printf("******************************************************************************n"); printf(" 1.錄入職工資訊n"); printf(" 2.瀏覽職工資訊n"); printf(" 3.查詢職工資訊n"); printf(" 4.刪除職工資訊n"); printf(" 5.修改職工資訊n"); printf(" 6.職工資訊排序n"); printf(" 7.新增職工資訊n"); printf(" 8.退出n"); printf("*******************************************************************************n"); printf("n"); } /********************************************************************************************/ void main() { int n,f; while(1) { do { menu(); printf("請輸入你需要操作的序號(1-8):n"); scanf("%d",&n); if(n>=1&&n<=8) { f=1; break; } else { f=0; printf("您輸入有誤,請重新選擇!"); } }while(f==0); switch(n) { case 1:printf(" 錄入職工資訊n");printf("n");type_in();break; case 2:printf(" 瀏覽職工資訊n");printf("n");system("cls");scan();break; case 3:printf(" 查詢職工資訊n");printf("n");system("cls");search();break; case 4:printf(" 刪除職工資訊n");printf("n");system("cls");del();break; case 5:printf(" 修改職工資訊n");printf("n");system("cls");change();break; case 6:printf(" 職工資訊排序n");printf("n");system("cls");order();break; case 7:printf(" 新增職工資訊n");printf("n");system("cls");add();break; case 8:system("cls");printf("nnnnnn ------謝謝使用!---------nnnnnnn by --鳳灼n");return ; default :break; } } } /***********************************************************************************/ void type_in() /*錄入函數*/ { int i,m; printf("請輸入需要建立資訊的職工人數(1--500):n"); scanf("%d",&m); for (i=0;i<m;i++) { printf("請輸入職工號: "); scanf("%d",&work[i].num); printf("n"); printf("請輸入姓名: "); scanf("%s",work[i].name); getchar(); printf("請輸入職稱: "); scanf("%s",&work[i].zhicheng); printf("請輸入基本工資: "); scanf("%d",&work[i].wages); printf("請輸入獎金: "); scanf("%d",&work[i].reward); printf("請輸入生日(格式如19900101): "); scanf("%d",&work[i].birth); getchar();system("cls"); printf("n一個職工的資訊檔案建立完畢!請輸入下一個職工的資訊n"); work[i].salary=work[i].wages + work[i].reward; printf("n"); } baocun(m); } /***************************************************************************/ void baocun(int m) /*儲存檔案函數*/ { int i; FILE *fp; if ((fp=fopen("worker_list.txt","wb"))==NULL) /*建立檔案並判斷是否能開啟*/ { printf ("此檔案不能開啟n"); exit(0); } for (i=0;i<m;i++) if (fwrite(&work[i],sizeof(struct worker),1,fp)!=1) printf("file write errorn"); fclose(fp); } /***************************************************************************/ int load() /*匯入函數*/ { FILE*fp; int i=0; if((fp=fopen("worker_list.txt","rb"))==NULL) { printf ("cannot open filen"); exit(0); } else { do { fread(&work[i],sizeof(struct worker),1,fp); i++; } while(feof(fp)==0); } fclose(fp); return(i-1); } /*******************************************************************************/ void scan() /*瀏覽函數*/ { int i; int m=load(); printf("n職工號t姓名t職稱t基本工資t獎金t實際工資t生日 n"); for(i=0;i<m;i++) printf("n %dt%st %st %d t%dt %dt %ldn",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); printf("按任意鍵繼續n"); getchar(); getchar();system("cls"); } /********************************************************************************/ void del() /*刪除函數*/ { int m=load(); int i,j,n,t,f; char name1[10]; printf("n 原來的職工資訊:n"); scan(); printf("n"); printf("請輸入要刪除的職工的姓名:n"); scanf("%s",name1); for(f=1,i=0;f&&i<m;i++) { if(strcmp(work[i].name,name1)==0) { printf("n已找到此人,原始記錄為:n"); printf("n職工號t姓名t職稱t基本工資t獎金t實際工資t生日 n"); printf("n %dt%st %st %d t%dt %dt %ldn",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); printf("n確實要刪除此人資訊請按1,不刪除請按0n"); scanf("%d",&n); if(n==1) { for(j=i;j<m-1;j++) { work[j]=work[j+1]; } f=0; } } } if(!f) m=m-1; else printf("n對不起,查無此人!n"); printf("n 瀏覽刪除後的所有職工資訊:n"); baocun(m); scan(); printf("n繼續刪除請按1,不再刪除請按0n"); scanf("%d",&t); switch(t) { case 1:del();break; case 0:break; default :break; }system("cls"); } /**********************************************************************************/ void search()/*查詢函數*/ { int t,f; do { printf("n按姓名查詢請按1 ; 按職稱查詢請按2 ; 返回主頁按3n"); scanf("%d",&t); if(t>=1&&t<=3) { f=1; break; } else { f=0; printf("您輸入有誤,請重新選擇!"); } }while(f==0);system("cls"); while(f==1) { switch(t) { case 1:printf("按姓名查詢n");search_name();break; case 2:printf("按職稱查詢n");search_zhicheng();break; case 3:main();break; default:break; } system("cls"); } } /***********************************************************************************/ void search_name()/*按姓名查詢函數*/ { char name1[10]; int i,t; int m=load(); printf("請輸入要查詢的姓名:n"); scanf("%s",name1); for(i=0;i<m;i++) if(strcmp(name1,work[i].name)==0) { printf("n已找到此人,其記錄為:n"); printf("n職工號t姓名t職稱t基本工資t獎金t實際工資t生日 n"); printf("n %dt%st %st %d t%dt %dt %ldn",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); break; } if(i==m) printf("n對不起,查無此人n"); printf("n"); printf("返回查詢函數請按1,繼續查詢職工號請按2n"); scanf("%d",&t); switch(t) { case 1:search();break; case 2: break; default:break; } } /*************************************************************************************/ void search_zhicheng()/*按職稱查詢函數*/ { char zhicheng1[10]; int i,t; int m=load(); printf("請輸入要查詢的職稱:n"); scanf("%s",zhicheng1); for(i=0;i<m;i++) if(strcmp(zhicheng1,work[i].zhicheng)==0) { printf("n已找到此人,其記錄為:n"); printf("n職工號t姓名t職稱t基本工資t獎金t實際工資t生日 n"); printf("n %dt%st %st %d t%dt %dt %ldn",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); break; } if(i==m) printf("n對不起,資訊有誤n"); printf("n"); printf("返回查詢函數請按1,繼續查詢職工號請按2n"); scanf("%d",&t); switch(t) { case 1:search();break; case 2: break; default:break; } } /***************************************************************************************/ void change() /*修改函數*/ { int num; char name[20]; char zhicheng[10]; int wages; int reward; int birth; int salary; int b,c,i,n,t,f; int m=load(); /*匯入檔案內的資訊*/ printf("n 原來的職工資訊:n"); scan(); printf("n"); printf("請輸入要修改的職工的姓名:n"); scanf("%s",name); for(f=1,i=0;f&&i<m;i++) { if(strcmp(work[i].name,name)==0) { printf("n已找到此人,原始記錄為:n"); printf("n職工號t姓名t職稱t基本工資t獎金t實際工資t生日 n"); printf("n %dt%st %st %d t%dt %dt %ldn",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); printf("n確實要修改此人資訊請按1 ; 不修改請按0n"); scanf("%d",&n); if(n==1) { printf("n需要進行修改的選項n 1.職工號 2.姓名 3.職稱 4.基本工資 5.獎金 6.生日 7.實際工資n"); printf("請輸入你想修改的那一項序號:n"); scanf("%d",&c); if(c>7||c<1) printf("n選擇錯誤,請重新選擇!n"); } f=0; } } if(f==1) printf("n對不起,資訊有誤!n"); do { switch(c) { case 1:printf("職工號改為: "); scanf("%d",&num); work[i-1].num=num; break; case 2:printf("姓名改為: "); scanf("%s",name); strcpy(work[i-1].name,name); break; case 3:printf("職稱改為"); scanf("%s",zhicheng); strcpy(work[i-1].zhicheng,zhicheng); break; case 4:printf("基本工資改為: "); scanf("%d",&wages); work[i-1].wages=wages; break; case 5:printf("獎金改為: "); scanf("%d",&reward); work[i-1].reward=reward; break; case 6:printf("生日改為: "); scanf("%ld",&birth); work[i-1].birth=birth; break; case 7:printf("實際工資改為: "); scanf("%d",&salary); work[i-1].salary=salary; break; } printf("n"); printf("n是否確定所修改的資訊?n 是 請按1 ; n不,重新修改 請按2: n"); scanf("%d",&b); } while(b==2); printf("n瀏覽修改後的所有職工資訊:n"); printf("n"); baocun(m); scan(); printf("n繼續修改請按1,不再修改請按0n"); scanf("%d",&t); switch(t) { case 1:change();break; case 0:break; default :break; }system("cls"); } /*************************************************************************************/ void order()/*排序函數*/ { int k,f; do { printf("n按姓名排序請按1 ; 按基本工資排序請按2 ; 返回主頁按3n"); scanf("%d",&k); if(k>=1&&k<=3) { f=1; break; } else { f=0; printf("您輸入有誤,請重新選擇!"); } }while(f==0);system("cls"); while(f==1) { switch(k) { case 1:printf("n按姓名排序為(字母由小到大排列):n");order_name();break; case 2:printf("n按基本工資排序為(由高到低排列):n");order_wages();break; case 3:system("cls");main();break; default:break; } system("cls"); } } /*************************************************************************************/ void order_name()/*按姓名排序函數*/ { int i,j,k; int m=load(); for(i=0;i<m-1;i++) for(j=0;j<m-1-i;j++)/*冒泡法排序*/ if(strcmp(work[j].name,work[j+1].name)>0) { work1=work[j];work[j]=work[j+1];work[j+1]=work1;} baocun(m); printf("n職工號t姓名t職稱t基本工資t獎金t實際工資t生日 n"); for(j=0;j<m;j++) printf("n %dt%st %st %d t%dt %dt %ldn",work[j].num,work[j].name, work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth); printf("返回排序函數請按1,返回主頁請按2n"); scanf("%d",&k); switch(k) { case 1:order();return; case 2:system("cls");return; default:break; }system("cls"); } /************************************************************************************/ void order_wages()/*按基本工資排序函數*/ { int i,k,j; int m=load(); for(i=0;i<m-1;i++) for(j=0;j<m-1-i;j++) if(work[j].wages<work[j+1].wages)/*用冒泡法排序*/ { work1=work[j];work[j]=work[j+1];work[j+1]=work1;} baocun(m); printf("n職工號t姓名t職稱t基本工資t獎金t實際工資t生日 n"); for(j=0;j<m;j++) printf("n %dt%st %st %d t%dt %dt %ldn",work[j].num,work[j].name, work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth); printf("返回排序函數請按1,返回主頁請按2n"); scanf("%d",&k); switch(k) { case 1:order();return; case 2:system("cls"); return; default:break; } system("cls"); } /***********************************************************************************/ void add() /*新增函數*/ { int n=load(); int i,m; printf("請輸入需要新增資訊的職工人數n"); scanf("%d",&m); for (i=n;i<m+n;i++) { printf("請輸入職工號: "); scanf("%d",&work[i].num); printf("n"); printf("請輸入姓名: "); scanf("%s",work[i].name); printf("請輸入職稱: "); scanf("%s",&work[i].zhicheng); printf("請輸入基本工資: "); scanf("%d",&work[i].wages); printf("請輸入獎金: "); scanf("%d",&work[i].reward); printf("請輸入生日(格式如19900101): "); scanf("%d",&work[i].birth); getchar();system("cls"); printf("n一個職工的資訊檔案新增完畢!請輸入下一個職工的資訊n"); work[i].salary=work[i].wages + work[i].reward; printf("n"); } baocun(m+n);system("cls"); printf("新增職工檔案完成。n這時庫存資訊為:n"); scan(); }
下面是偵錯結果:
按序號順序要試一下各個功能:
最後的退出是直接退了出去就沒有放圖,基本各個功能都沒什麼問題。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45