您好,登錄后才能下訂單哦!
這篇文章主要介紹“C++如何實(shí)現(xiàn)教職工管理系統(tǒng)”,在日常操作中,相信很多人在C++如何實(shí)現(xiàn)教職工管理系統(tǒng)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C++如何實(shí)現(xiàn)教職工管理系統(tǒng)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
要求:設(shè)計(jì)一個(gè)程序來(lái)管理職工較全面數(shù)據(jù)信息,具備數(shù)據(jù)的輸入、查找、刪除等功能。具體功能細(xì)節(jié)可以根據(jù)自己理解情況進(jìn)行增加。
以下是我的設(shè)計(jì):
#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; /*定義結(jié)構(gòu)體*/ void menu(); //聲明菜單函數(shù) void type_in(); //聲明錄入函數(shù) void baocun(int); //聲明保存函數(shù) void scan(); //聲明瀏覽函數(shù) void del(); //聲明刪除函數(shù) void search(); //聲明查詢(xún)函數(shù) void search_zhicheng(); //聲明按職稱(chēng)查詢(xún)函數(shù) void search_name(); //聲明按姓名查找函數(shù) void change(); //聲明修改函數(shù) void order(); //聲明排序函數(shù) void add(); //聲明添加函數(shù) void order_wages(); void order_name(); void menu() /*菜單函數(shù)*/ { printf("\n"); printf(" 歡迎進(jìn)入 \n"); printf(" 職工信息管理系統(tǒng) "); printf("******************************************************************************\n"); printf(" 1.錄入職工信息\n"); printf(" 2.瀏覽職工信息\n"); printf(" 3.查詢(xún)職工信息\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("請(qǐng)輸入你需要操作的序號(hào)(1-8):\n"); scanf("%d",&n); if(n>=1&&n<=8) { f=1; break; } else { f=0; printf("您輸入有誤,請(qǐng)重新選擇!"); } }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(" 查詢(xún)職工信息\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("\n\n\n\n\n\n ------謝謝使用!---------\n\n\n\n\n\n\n by --鳳灼\n");return ; default :break; } } } /***********************************************************************************/ void type_in() /*錄入函數(shù)*/ { int i,m; printf("請(qǐng)輸入需要?jiǎng)?chuàng)建信息的職工人數(shù)(1--500):\n"); scanf("%d",&m); for (i=0;i<m;i++) { printf("請(qǐng)輸入職工號(hào): "); scanf("%d",&work[i].num); printf("\n"); printf("請(qǐng)輸入姓名: "); scanf("%s",work[i].name); getchar(); printf("請(qǐng)輸入職稱(chēng): "); scanf("%s",&work[i].zhicheng); printf("請(qǐng)輸入基本工資: "); scanf("%d",&work[i].wages); printf("請(qǐng)輸入獎(jiǎng)金: "); scanf("%d",&work[i].reward); printf("請(qǐng)輸入生日(格式如19900101): "); scanf("%d",&work[i].birth); getchar();system("cls"); printf("\n一個(gè)職工的信息檔案創(chuàng)建完畢!請(qǐng)輸入下一個(gè)職工的信息\n"); work[i].salary=work[i].wages + work[i].reward; printf("\n"); } baocun(m); } /***************************************************************************/ void baocun(int m) /*保存文件函數(shù)*/ { int i; FILE *fp; if ((fp=fopen("worker_list.txt","wb"))==NULL) /*創(chuàng)建文件并判斷是否能打開(kāi)*/ { printf ("此文件不能打開(kāi)\n"); exit(0); } for (i=0;i<m;i++) if (fwrite(&work[i],sizeof(struct worker),1,fp)!=1) printf("file write error\n"); fclose(fp); } /***************************************************************************/ int load() /*導(dǎo)入函數(shù)*/ { FILE*fp; int i=0; if((fp=fopen("worker_list.txt","rb"))==NULL) { printf ("cannot open file\n"); exit(0); } else { do { fread(&work[i],sizeof(struct worker),1,fp); i++; } while(feof(fp)==0); } fclose(fp); return(i-1); } /*******************************************************************************/ void scan() /*瀏覽函數(shù)*/ { int i; int m=load(); printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日 \n"); for(i=0;i<m;i++) printf("\n %d\t%s\t %s\t %d \t%d\t %d\t %ld\n",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); printf("按任意鍵繼續(xù)\n"); getchar(); getchar();system("cls"); } /********************************************************************************/ void del() /*刪除函數(shù)*/ { int m=load(); int i,j,n,t,f; char name1[10]; printf("\n 原來(lái)的職工信息:\n"); scan(); printf("\n"); printf("請(qǐng)輸入要?jiǎng)h除的職工的姓名:\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職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日 \n"); printf("\n %d\t%s\t %s\t %d \t%d\t %d\t %ld\n",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); printf("\n確實(shí)要?jiǎng)h除此人信息請(qǐng)按1,不刪除請(qǐng)按0\n"); 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對(duì)不起,查無(wú)此人!\n"); printf("\n 瀏覽刪除后的所有職工信息:\n"); baocun(m); scan(); printf("\n繼續(xù)刪除請(qǐng)按1,不再刪除請(qǐng)按0\n"); scanf("%d",&t); switch(t) { case 1:del();break; case 0:break; default :break; }system("cls"); } /**********************************************************************************/ void search()/*查詢(xún)函數(shù)*/ { int t,f; do { printf("\n按姓名查詢(xún)請(qǐng)按1 ; 按職稱(chēng)查詢(xún)請(qǐng)按2 ; 返回主頁(yè)按3\n"); scanf("%d",&t); if(t>=1&&t<=3) { f=1; break; } else { f=0; printf("您輸入有誤,請(qǐng)重新選擇!"); } }while(f==0);system("cls"); while(f==1) { switch(t) { case 1:printf("按姓名查詢(xún)\n");search_name();break; case 2:printf("按職稱(chēng)查詢(xún)\n");search_zhicheng();break; case 3:main();break; default:break; } system("cls"); } } /***********************************************************************************/ void search_name()/*按姓名查找函數(shù)*/ { char name1[10]; int i,t; int m=load(); printf("請(qǐng)輸入要查找的姓名:\n"); scanf("%s",name1); for(i=0;i<m;i++) if(strcmp(name1,work[i].name)==0) { printf("\n已找到此人,其記錄為:\n"); printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日 \n"); printf("\n %d\t%s\t %s\t %d \t%d\t %d\t %ld\n",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對(duì)不起,查無(wú)此人\n"); printf("\n"); printf("返回查詢(xún)函數(shù)請(qǐng)按1,繼續(xù)查詢(xún)職工號(hào)請(qǐng)按2\n"); scanf("%d",&t); switch(t) { case 1:search();break; case 2: break; default:break; } } /*************************************************************************************/ void search_zhicheng()/*按職稱(chēng)查找函數(shù)*/ { char zhicheng1[10]; int i,t; int m=load(); printf("請(qǐng)輸入要查找的職稱(chēng):\n"); scanf("%s",zhicheng1); for(i=0;i<m;i++) if(strcmp(zhicheng1,work[i].zhicheng)==0) { printf("\n已找到此人,其記錄為:\n"); printf("\n職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日 \n"); printf("\n %d\t%s\t %s\t %d \t%d\t %d\t %ld\n",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對(duì)不起,信息有誤\n"); printf("\n"); printf("返回查詢(xún)函數(shù)請(qǐng)按1,繼續(xù)查詢(xún)職工號(hào)請(qǐng)按2\n"); scanf("%d",&t); switch(t) { case 1:search();break; case 2: break; default:break; } } /***************************************************************************************/ void change() /*修改函數(shù)*/ { 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(); /*導(dǎo)入文件內(nèi)的信息*/ printf("\n 原來(lái)的職工信息:\n"); scan(); printf("\n"); printf("請(qǐng)輸入要修改的職工的姓名:\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職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日 \n"); printf("\n %d\t%s\t %s\t %d \t%d\t %d\t %ld\n",work[i].num,work[i].name, work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth); printf("\n確實(shí)要修改此人信息請(qǐng)按1 ; 不修改請(qǐng)按0\n"); scanf("%d",&n); if(n==1) { printf("\n需要進(jìn)行修改的選項(xiàng)\n 1.職工號(hào) 2.姓名 3.職稱(chēng) 4.基本工資 5.獎(jiǎng)金 6.生日 7.實(shí)際工資\n"); printf("請(qǐng)輸入你想修改的那一項(xiàng)序號(hào):\n"); scanf("%d",&c); if(c>7||c<1) printf("\n選擇錯(cuò)誤,請(qǐng)重新選擇!\n"); } f=0; } } if(f==1) printf("\n對(duì)不起,信息有誤!\n"); do { switch(c) { case 1:printf("職工號(hào)改為: "); 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("職稱(chēng)改為"); 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("獎(jiǎng)金改為: "); scanf("%d",&reward); work[i-1].reward=reward; break; case 6:printf("生日改為: "); scanf("%ld",&birth); work[i-1].birth=birth; break; case 7:printf("實(shí)際工資改為: "); scanf("%d",&salary); work[i-1].salary=salary; break; } printf("\n"); printf("\n是否確定所修改的信息?\n 是 請(qǐng)按1 ; \n不,重新修改 請(qǐng)按2: \n"); scanf("%d",&b); } while(b==2); printf("\n瀏覽修改后的所有職工信息:\n"); printf("\n"); baocun(m); scan(); printf("\n繼續(xù)修改請(qǐng)按1,不再修改請(qǐng)按0\n"); scanf("%d",&t); switch(t) { case 1:change();break; case 0:break; default :break; }system("cls"); } /*************************************************************************************/ void order()/*排序函數(shù)*/ { int k,f; do { printf("\n按姓名排序請(qǐng)按1 ; 按基本工資排序請(qǐng)按2 ; 返回主頁(yè)按3\n"); scanf("%d",&k); if(k>=1&&k<=3) { f=1; break; } else { f=0; printf("您輸入有誤,請(qǐng)重新選擇!"); } }while(f==0);system("cls"); while(f==1) { switch(k) { case 1:printf("\n按姓名排序?yàn)?字母由小到大排列):\n");order_name();break; case 2:printf("\n按基本工資排序?yàn)?由高到低排列):\n");order_wages();break; case 3:system("cls");main();break; default:break; } system("cls"); } } /*************************************************************************************/ void order_name()/*按姓名排序函數(shù)*/ { 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職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日 \n"); for(j=0;j<m;j++) printf("\n %d\t%s\t %s\t %d \t%d\t %d\t %ld\n",work[j].num,work[j].name, work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth); printf("返回排序函數(shù)請(qǐng)按1,返回主頁(yè)請(qǐng)按2\n"); scanf("%d",&k); switch(k) { case 1:order();return; case 2:system("cls");return; default:break; }system("cls"); } /************************************************************************************/ void order_wages()/*按基本工資排序函數(shù)*/ { 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職工號(hào)\t姓名\t職稱(chēng)\t基本工資\t獎(jiǎng)金\t實(shí)際工資\t生日 \n"); for(j=0;j<m;j++) printf("\n %d\t%s\t %s\t %d \t%d\t %d\t %ld\n",work[j].num,work[j].name, work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth); printf("返回排序函數(shù)請(qǐng)按1,返回主頁(yè)請(qǐng)按2\n"); scanf("%d",&k); switch(k) { case 1:order();return; case 2:system("cls"); return; default:break; } system("cls"); } /***********************************************************************************/ void add() /*添加函數(shù)*/ { int n=load(); int i,m; printf("請(qǐng)輸入需要添加信息的職工人數(shù)\n"); scanf("%d",&m); for (i=n;i<m+n;i++) { printf("請(qǐng)輸入職工號(hào): "); scanf("%d",&work[i].num); printf("\n"); printf("請(qǐng)輸入姓名: "); scanf("%s",work[i].name); printf("請(qǐng)輸入職稱(chēng): "); scanf("%s",&work[i].zhicheng); printf("請(qǐng)輸入基本工資: "); scanf("%d",&work[i].wages); printf("請(qǐng)輸入獎(jiǎng)金: "); scanf("%d",&work[i].reward); printf("請(qǐng)輸入生日(格式如19900101): "); scanf("%d",&work[i].birth); getchar();system("cls"); printf("\n一個(gè)職工的信息檔案添加完畢!請(qǐng)輸入下一個(gè)職工的信息\n"); work[i].salary=work[i].wages + work[i].reward; printf("\n"); } baocun(m+n);system("cls"); printf("添加職工檔案完成。\n這時(shí)庫(kù)存信息為:\n"); scan(); }
下面是調(diào)試結(jié)果:
按序號(hào)順序要試一下各個(gè)功能:
最后的退出是直接退了出去就沒(méi)有放圖,基本各個(gè)功能都沒(méi)什么問(wèn)題。
到此,關(guān)于“C++如何實(shí)現(xiàn)教職工管理系統(tǒng)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。