C++實(shí)現(xiàn)企業(yè)職工工資管理系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)企業(yè)職工工資管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
課程設(shè)計(jì)目的和要求
工資管理要和人事管理相聯(lián)系,生成企業(yè)每個(gè)職工的實(shí)際發(fā)放工資。
企業(yè)職工人事基本信息包括:職工編號(hào)、姓名、性別、出生日期、職稱(助工、工程師、高級(jí)工程師)和任職年限。
企業(yè)職工工資信息包括:職工編號(hào)、姓名、職務(wù)工資、職務(wù)補(bǔ)貼、住房補(bǔ)貼、應(yīng)發(fā)工資、個(gè)人所得稅、養(yǎng)老保險(xiǎn)、住房公積金和實(shí)發(fā)工資。
系統(tǒng)主要功能包括:
(1)創(chuàng)建職工人事基本信息文件,根據(jù)提示輸入職工的各項(xiàng)信息,按職工編號(hào)對(duì)職工信息進(jìn)行排序,并將排序后的職工信息存儲(chǔ)到一個(gè)文件中。
(2)創(chuàng)建職工的工資信息文件(每個(gè)月創(chuàng)建一個(gè)文件),其中職工編號(hào)和姓名從人事信息文件中復(fù)制,其他工資組成項(xiàng)目按下面方法計(jì)算。
職務(wù)工資:助工=1270*(1+任職年限*2%)
工程師=2360*(1+任職年限*3%)
高級(jí)工程師=3450*(1+任職年限*5%)
職務(wù)補(bǔ)貼:=職務(wù)工資*25%
住房補(bǔ)貼=(職務(wù)工資+職務(wù)補(bǔ)貼)*15%
應(yīng)發(fā)工資=職務(wù)工資+職務(wù)補(bǔ)貼+住房補(bǔ)貼
個(gè)人所得稅=(應(yīng)發(fā)工資-3000)*5%
養(yǎng)老保險(xiǎn)=(職務(wù)工資+職務(wù)補(bǔ)貼)*10%
住房公積金=應(yīng)發(fā)工資*5%
實(shí)發(fā)工資=應(yīng)發(fā)工資-個(gè)人所得稅-養(yǎng)老保險(xiǎn)-住房公積金
(3)增加職工人事基本信息,在原有職工人事基本信息文件的基礎(chǔ)上增加新有的職工信息。
(4)刪除職工人事基本信息,提示用戶輸入要?jiǎng)h除的職工編號(hào),如果在文件有該信息存在,則將其信息輸出到屏幕上,用戶確認(rèn)后將該信息刪除,并將刪除后的結(jié)果保存至原文件。最后提示用戶是否繼續(xù)進(jìn)行刪除操作。
(5)修改職工人事基本信息,提示用戶輸入要?jiǎng)h除的職工編號(hào),如果在文件有該信息存在,則將其信息輸出到屏幕上,然后提示用戶要修改的選項(xiàng)(職稱、任職年限),并將修改后的結(jié)果保存至原文件。最后提示用戶是否繼續(xù)進(jìn)行修改操作。
(6)按不同條件進(jìn)行查詢操作,輸出滿足條件的職工工資信息。
①.按職工編號(hào)查詢,輸入一個(gè)編號(hào),輸出對(duì)應(yīng)職工工資信息。
②.按姓名查詢,包括精確查詢,模糊查詢。
③.按職稱查詢,輸入職稱名稱,輸出相應(yīng)職稱工資信息。
(7)按不同條件對(duì)職工工資信息進(jìn)行統(tǒng)計(jì)工作。
①.統(tǒng)計(jì)個(gè)職稱崗位的職工人數(shù)是多少,計(jì)算高級(jí)工程師比例。
②.計(jì)算企業(yè)職工的平均實(shí)發(fā)工資,并輸出。
③.統(tǒng)計(jì)職工工資低于平均工資人數(shù),并輸出他們的姓名和實(shí)發(fā)工資。
代碼:
#include<stdafx.h> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<time.h> ? typedef struct date { ?? ?short year; ? ? short month; ?? ?short day; }st3; typedef struct gerenxinxi { ?? ?char num[30]; ?char name[30]; ?char sex[30]; ?st3 chushengriqi; ?char zhicheng[20]; ?int nianxian; }st; typedef struct gerengongzi { ? ? ?char num[20]; ? ? ?char name[12]; ? ? ?double zhiwugongzi; ? ? ?double zhiwubutie; ? ? ?double zhufangbutie; ? ? ?double yingfagongzi; ? ? ?double gerensuodeshui; ? ? ?double yanglaobaoxian; ? ? ?double zhufanggongjijin; ? ? ?double shifagongzi; }st1; #define st3_len sizeof(st3) #define st_len sizeof(st) #define st1_len sizeof(st1) #define gerenxinxinum 1000 #define gerengongzinum 1000 st gerenxinxi[gerenxinxinum]={0}; st1 gerengongzi[gerengongzinum]={0}; ? int loadgerenxinxi(void);//將文件中的信息讀取 int originalgerenxinxi(void);//個(gè)人信息初始化 void getonegerenxinxi(int i);//輸ru一個(gè)職工的個(gè)人信息 void allgerenxinxi(int bn);//保存所有信息 void xggerenxinxi(int bn);//修改個(gè)人信息 void saveonegerenxinxi(int i);//保存?zhèn)€人信息 int addgerenxinxi(int bn);//增加個(gè)人信息 int delgerenxinxi(int bn); ?//刪除個(gè)人信息 void putonegerenxinxi(int i);//輸出一個(gè)個(gè)人信息 void sort(int bn);//排序 void shengchenggongzi(int bn);//生成工資 void putonegerengongzi(int i);//輸出一個(gè)人的工資信息 void cxgerenxinxi(int bn);//查詢 void cxzhicheng(int bn);//職稱查詢 void cxname(int bn);//姓名查詢 void cxnum(int bn);//編號(hào)查詢 void tongjigongzixinxi(int bn);//統(tǒng)計(jì)工資信息 float avegongzi(int bn);//平均工資 void lowgongzi(int bn);//低于平均工資 void ?gangweirenshu(int bn);//職工人數(shù) ? ? void main() { ? ?int select,bn; ? ? ?bn=loadgerenxinxi(); ?? ? if(bn==0) ? ? ? printf("職工信息為零:"); ? ?? ? ? while(1) ? ? ? ?{ ?? ? ? ? ? ?printf("\n ? ?企業(yè)職工工資管理系統(tǒng) ? ? \n"); ? ? ? ? ? ? printf("\n-----------------------------\n"); ?? ??? ??? ?printf("\n ? 請(qǐng)輸入要進(jìn)行操作前的序號(hào) ?\n"); ?? ? ? ? ? ?printf("\n ? ? ?1.輸入職工信息 ? ? ? ? \n"); ?? ? ? ? ? ?printf("\n ? ? ?2.修改職工信息 ? ? ? ? \n"); ?? ? ? ? ? ?printf("\n ? ? ?3.增加職工信息 ? ? ? ? \n"); ?? ? ? ? ? ?printf("\n ? ? ?4.刪除職工信息 ? ? ? ? \n"); ? ? ? ? ? ? printf("\n ? ? ?5.職工工資 ? ? ? ? ? ? \n"); ?? ? ? ? ? ?printf("\n ? ? ?6.統(tǒng)計(jì)工資信息 ? ? ? ? \n"); ? ? ? ? ? ? printf("\n ? ? ?7.查詢工資信息 ? ? ? ? \n");? ?? ? ? ? ? ?printf("\n ? ? ?0.退出 ? ? ? ? ? ? ? ? \n"); ? ? ? ? ? ? printf("\n----------------------------\n"); ? ? ? ? ? ? ? ? ? ? ? ? scanf("%d",&select); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? switch(select) ?? ??? ??? ?{ case 1: originalgerenxinxi(); break; ?? ? ? ? ? ? ?case 2: xggerenxinxi(bn); break; ?? ? ? ? ? ? ?case 3: addgerenxinxi(bn); break; ?? ? ? ? ? ? ?case 4: delgerenxinxi(bn); break; ?? ? ? ? ? ? ?case 5: shengchenggongzi(bn); break; ?? ? ? ? ? ? ?case 6: tongjigongzixinxi(bn); break; ? ? ? ? ? ? ? case 7: cxgerenxinxi(bn); break; ? ? ? ? ? ? ? case 0: return; ?? ??? ? ? ? ?default:printf("\n按鍵錯(cuò)誤,請(qǐng)重新選擇\n"); ?? ??? ??? ?} ?? ? ? } ?? ? } //=============================================================================== ? int loadgerenxinxi(void)//將文件中的信息讀取 { ?? ?FILE *fb; ?? ?int bn=0; ?? ?if((fb=fopen("gerenxinxi.txt","r+"))==NULL) ? ? {printf("不能打開\n"); ?? ?return(bn); ? ? } while(!feof(fb)) ? ?if(fread(&gerenxinxi[bn],st_len,1,fb)) ? ? bn++; ?? ?fclose(fb); ?? ?return(bn); } //============================================================================== ? ? int originalgerenxinxi(void)//個(gè)人信息初始化 { ? ? ?int n; ?? ? char c='y'; ?? ? for(n=0;c=='y';n++) ?? ? { ?printf("\n輸入職工%d的信息:\n",n+1); ?? ? ? ?getonegerenxinxi(n); ?? ??? ?printf("\n繼續(xù)輸入請(qǐng)按'y',停止請(qǐng)按'n':"); ?? ??? ?c=getchar(); getchar(); ?? ? } ? ? ?sort(n); ? ? ?allgerenxinxi(n); ?? ? return(n); } //============================================================================================ void getonegerenxinxi(int i)//輸ru一個(gè)職工的個(gè)人信息 { ?? ?printf("職工編號(hào):"); ? ? gets(gerenxinxi[i].num); ?? ?printf("姓名:"); ?? ?gets(gerenxinxi[i].name); ? ??? ?printf("性別:"); ? ? gets(gerenxinxi[i].sex); ?? ?printf("出生日期:"); ? ? scanf("%d.%d.%d",&gerenxinxi[i].chushengriqi.year,&gerenxinxi[i].chushengriqi.month,&gerenxinxi[i].chushengriqi.day); ?? ?getchar(); ?? ?printf("職稱(助工,工程師 ,高級(jí)工程師):"); ? ? gets(gerenxinxi[i].zhicheng); ?? ?printf("任職年限:"); ?? ?scanf("%d",&gerenxinxi[i].nianxian); ?? ?getchar(); } //============================================================================================================================ ? void allgerenxinxi(int bn)//保存所有信息 { ? ?FILE *fb; ? ? ?if((fb=fopen("gerenxinxi.txt","w"))==NULL) ? ? ?{ ?printf("不能打開\n"); ? ? ? ? exit(1); ? ? ?} ?? ? ? fwrite(gerenxinxi,st_len,bn,fb); ? ? ? fclose(fb); } //============================================================================================================================= ? void xggerenxinxi(int bn)//修改個(gè)人信息 { ?? ?int select,k=-1; ?? ?char number[20],c1='y',c2; ?? ?if(bn==0) ?? ?{ printf("\n職工信息為空\(chéng)n:"); ?? ?return; ?? ?} ?? ?while(c1=='y') ?? ?{c2='y'; ?? ?printf("\n請(qǐng)輸入要修改的職工編號(hào)\n"); ?? ?gets(number); ?? ?for(int i=0;i<bn;i++) ? ? ? ? if(strcmp(gerenxinxi[i].num,number)==0) ?? ?{ k=i; ?? ?break;} ?? ?if(k<0) ?? ??? ?printf("\n編號(hào)有誤,請(qǐng)重新輸入\n"); ?? ?else ?? ?{ ? printf("\n職工信息:\n"); ?? ? ? ?putonegerenxinxi(k); ?? ? ? ?while(c2=='y') ? ? ? ? ? ? {? ? ? ? ? ? ? ? printf("\n請(qǐng)輸入要修改項(xiàng)前的序號(hào):\n"); ? ? ? ? ? ? ? ?printf("1.職稱\n"); ? ? ? ? ? ? ? ?printf("2.任職年限\n"); ? ? ? ? ? ? ? ?printf("0.退出程序\n"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?scanf("%d",&select); ? ? ? ? ? ? ? ?getchar(); ? ? ? ? ? ? ? ?switch(select) ? ? ? ? ? ? ? ?{? ? ? ? ? ? ? ? ? ?case 1:printf("職稱:"); ? ? ? ? ? ? ? ? ? ? ? ?gets(gerenxinxi[k].zhicheng); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? ?case 2:printf("入職年限:"); ? ? ? ? ? ? ? ? ? ? ? ?scanf("%d",&gerenxinxi[k].nianxian); ? ? ? ? ? ? ? ? ? ? ? ?getchar(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? ?case 0: ?? ??? ??? ??? ??? ? exit(1); ?? ??? ??? ??? ? default: ?? ??? ??? ??? ??? ? printf("\n按鍵錯(cuò)誤,請(qǐng)重新輸入\n"); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ?printf("\n還要修改該職工其它信息嗎(y/n)?\n"); ? ? ? ? ? ? ?c2=getchar(); ? ? ? ? ? ? ?getchar(); ? ? ? ? ? ? ?} ? ? ? ? } ? ? ? ? ?saveonegerenxinxi(k); ? ? ? ? ?printf("\n還要修改其他職工信息嗎?(y/n)\n"); ? ? ? ? ?c1=getchar(); ? ? ? ? ?getchar(); ? ? ?} ? ?printf("\n按任意鍵繼續(xù)\n"); ? ?getchar(); } //======================================================================================================= ? void saveonegerenxinxi(int i)//保存?zhèn)€人信息 { ?? ?FILE *fb; ?? ?if((fb=fopen("gerenxinxi.txt","r+"))==NULL) ?? ?{printf("不能打開 \n"); ?? ?exit(1); ?? ?} ?? ?fseek(fb,st_len*i,0); ? ? ?fwrite(&gerenxinxi[i],st_len,1,fb); ?? ?fclose(fb); } ? //================================================================================================ int addgerenxinxi(int bn)//增加個(gè)人信息 { ??? ?char c='y'; ?? ?FILE *fb; ?? ?if((fb=fopen("gerenxinxi.txt","a"))==NULL) ?? ?{printf("不能打開\n"); ?? ?exit(1); ?? ?} ?? ?while(c=='y') ?? ?{printf("\n請(qǐng)輸入新增職工信息:\n"); ?? ? ? ?getonegerenxinxi(bn); ?? ??? ?fwrite(&gerenxinxi[bn],st_len,1,fb); ?? ??? ?bn++; ?? ??? ?printf("\n繼續(xù)輸入其他職工信息嗎?(y/n):"); ?? ??? ?c=getchar(); ?? ??? ?getchar(); ?? ?} ? ?? ?printf("\n按任意鍵繼續(xù)\n:"); ?? ?getch(); ?? ?fclose(fb); ?? ?return(bn); } //========================================================================================== ? int delgerenxinxi(int bn) ?//刪除個(gè)人信息 { ? ? ?int k=-1; ?? ? char number[20],c1='y',c2; ?? ? if(bn==0) ?? ? { ?printf("\n信息為空\(chéng)n"); ?? ? ? ?return(bn); ?? ? } ?? ? while(c1=='y') ?? ? { ? ?c2='y'; ?? ? ? ? ?printf("\n輸入要?jiǎng)h除的職工編號(hào)\n"); ?? ? ? ? ?gets(number); ?? ? ? ? ?for(int i=0;i<bn;i++) ?? ??? ? ? ? ?if(strcmp(gerenxinxi[i].num,number)==0) ?? ??? ??? ??? ?{ k=i; ?? ? ? ? ? ? ? ? ?break;} ?? ??? ? ?if(k<0) ?? ??? ? ? ? printf("\n編號(hào)有誤,重新輸入\n"); ?? ??? ?else ?? ??? ?{ ? ?? ??? ??? ?printf("\n職工信息:\n"); ?? ??? ? ? putonegerenxinxi(k); ?? ??? ? ? printf("\n確定要?jiǎng)h除該職工的全部信息嗎?(y/n):"); ?? ??? ? ? c2=getchar(); ? ? ? ? ? ?getchar(); ?? ??? ? ? if(c2=='y') ?? ??? ? ? { ?for(i=k;i<bn;i++) ?? ??? ? ? ? ? ? ?gerenxinxi[i]=gerenxinxi[i+1]; ?? ??? ??? ? ?bn--; ?? ??? ??? ? ?printf("\n成功刪除!\n"); ?? ??? ? ? } ?? ??? ? ? else ?? ??? ? ? ? ? printf("\n取消刪除!\n"); ?? ??? ? ? printf("\n繼續(xù)刪除其它職工信息嗎?(y/n):"); ?? ??? ? ? c1=getchar(); getchar(); ?? ??? ?}?? ? ? ? ? ?? ? } ? ? ?allgerenxinxi(bn); ? ? ?printf("\n按任意鍵繼續(xù)!\n"); ? ? ?getch(); ? ? ?return(bn); } //=========================================================================================== void putonegerenxinxi(int i)//輸出一個(gè)個(gè)人信息 { ?? ?printf("\n"); ? ? printf("職工編號(hào):"); ?? ?puts(gerenxinxi[i].num); ?? ?printf("姓名:"); ? ? puts(gerenxinxi[i].name); ?? ?printf("性別:"); ? ? puts(gerenxinxi[i].sex); ?? ?printf("出生日期:"); ? ? printf("%d.%d.%d\n",gerenxinxi[i].chushengriqi.year,gerenxinxi[i].chushengriqi.month,gerenxinxi[i].chushengriqi.day); ?? ?printf("職稱:"); ? ? puts(gerenxinxi[i].zhicheng); ?? ?printf("任職年限:"); ? ? printf("%d",gerenxinxi[i].nianxian);?? ??? ? } ? //====================================================================================== void sort(int bn)//排序 { ? ? st temp; ?? ?int i,j; ?? ?for(i=0;i<bn-1;i++); ?? ?{ ?? ? ? ? for(j=i+1;j<bn;j++) ?? ? ? ? if(gerenxinxi[i].num >gerenxinxi[i+1].num ) ?? ??? ? { ? ?temp=gerenxinxi[i]; ?? ??? ? ? ? ?gerenxinxi[i]=gerenxinxi[i+1]; ?? ??? ??? ? ?gerenxinxi[i+1]=temp; ?? ??? ? } ? ?? ?} } //========================================================================================== void shengchenggongzi(int bn)//生成工資 { ?? ? ? ?FILE ?*fp,*fp2; ? ? ?int ?i,j; ? ? ?if ((fp = fopen("gerenxinxi.txt", "r")) == NULL) ?? ? { ? ? ? ? ? ?printf("不能打開\n"); ? ? ? ? ? ?exit(0); ?? ? } ? ? ?fread(gerenxinxi,st_len,bn, fp); ? ? ?if ((fp2 = fopen("gerengongzi.txt", "w")) == NULL) ?? ? { ? ? ?printf("不能打開\n"); ? ? ?exit(0); ?? ? } ? ? ?for(i=0;i<bn;i++) ?? ? { ? strcpy(gerengongzi[i].name, gerenxinxi[i].name); ? ? ? ? ?strcpy(gerengongzi[i].num, gerenxinxi[i].num); ? ? ? ? ?if (strcmp(gerenxinxi[i].zhicheng,"助工") == 0) ?? ??? ? {gerengongzi[i].zhiwugongzi=1270*(1+gerenxinxi[i].nianxian*0.02);} ? ? ? ? ?if (strcmp(gerenxinxi[i].zhicheng,"工程師") == 0) ?? ??? ? {gerengongzi[i].zhiwugongzi=2360*(1+gerenxinxi[i].nianxian*0.03);} ? ? ? ? ?if (strcmp(gerenxinxi[i].zhicheng,"高級(jí)工程師") == 0) ?? ??? ? {gerengongzi[i].zhiwugongzi=3450*(1+gerenxinxi[i].nianxian*0.05);} ? ? ? ? ? ?gerengongzi[i].zhiwubutie=gerengongzi[i].zhiwugongzi*0.25; ? ? ? ? ? ?gerengongzi[i].zhufangbutie=(gerengongzi[i].zhiwubutie+gerengongzi[i].zhiwugongzi)*0.15; ? ? ? ? ? ?gerengongzi[i].yingfagongzi=gerengongzi[i].zhiwugongzi+gerengongzi[i].zhiwubutie+gerengongzi[i].zhufangbutie; ?? ??? ?? ?? ??? ? if(gerengongzi[i].yingfagongzi>3000) ? ? ? ? ? ?? ??? ??? ? gerengongzi[i].gerensuodeshui=(gerengongzi[i].yingfagongzi-3000)*0.05; ? ? ? ? ? ?? ??? ? else ?? ??? ??? ?? ?? ??? ??? ? gerengongzi[i].gerensuodeshui=0; ? ? ? ? ? ?gerengongzi[i].yanglaobaoxian=(gerengongzi[i].zhiwubutie+gerengongzi[i].zhiwugongzi)*0.1; ? ? ? ? ? ?gerengongzi[i].zhufanggongjijin=gerengongzi[i].yingfagongzi*0.05; ? ? ? ? ? ?gerengongzi[i].shifagongzi=gerengongzi[i].yingfagongzi-gerengongzi[i].gerensuodeshui-gerengongzi[i].yanglaobaoxian-gerengongzi[i].zhufanggongjijin; ? ? ? ? ? ?} ? ? ? ? printf("\n"); ? ? ? ? fwrite(gerengongzi,st1_len,bn,fp2); ? ? ? ? fclose(fp); ? ? ? ? fclose(fp2); ? ? ? ? if ((fp = fopen("gerengongzi.txt", "r+")) == NULL) ?? ??? ?{ ? ? ? ? ? ? printf("不能打開\n"); ? ? ? ? ? ? exit(1); ?? ??? ?} ?? ??? ?fread(gerengongzi,st1_len,bn,fp2); ? ? ? ? for(j=0;j<bn;j++) ?? ??? ?putonegerengongzi(j); ? ? ? ? ? ? fclose(fp); } //=============================================================================================== ? void putonegerengongzi(int ?i)//輸出一個(gè)人的工資信息 { ? ? ? ? printf("\n"); ? ? ? printf("職工編號(hào):"); ? ? ? puts(gerengongzi[i].num); ? ? ? printf("職工姓名:"); ? ? ? puts(gerengongzi[i].name); ? ? ? printf("勞務(wù)工資:"); ? ? ? printf("%f\n",gerengongzi[i].zhiwugongzi); ? ? ? printf("勞務(wù)補(bǔ)助:"); ? ? ? printf("%f\n",gerengongzi[i].zhiwubutie); ? ? ? printf("住房補(bǔ)貼:"); ? ? ? printf("%f\n",gerengongzi[i].zhufangbutie); ? ? ? printf("應(yīng)發(fā)工資:"); ? ? ? printf("%f\n",gerengongzi[i].yingfagongzi); ? ? ? printf("個(gè)人所得稅:"); ? ? ? printf("%f\n",gerengongzi[i].gerensuodeshui); ? ? ? printf("養(yǎng)老保險(xiǎn):"); ? ? ? printf("%f\n",gerengongzi[i].yanglaobaoxian); ? ? ? printf("住房公積金:"); ? ? ? printf("%f\n",gerengongzi[i].zhufanggongjijin); ? ? ? printf("實(shí)發(fā)工資:"); ? ? ? printf("%f\n",gerengongzi[i].shifagongzi); } //====================================================================== void cxgerenxinxi(int bn)//查詢 { ? ? ?int select; ? ? ?while(1)? ? ? ?{ ?printf("\n請(qǐng)輸入要進(jìn)行操作前的編號(hào)\n"); ? ? ? ? printf("1.編號(hào)查詢\n"); ? ? ? ? printf("2.按姓名查詢\n"); ? ? ? ? printf("3.按職稱查詢\n"); ? ? ? ? printf("0.退出查詢\n"); ? ? ? ? scanf("%d",&select); ? ? ? ? getchar(); ? ? ? ? switch(select) ? ? ? ? {? ?? ??? ? ?case 1: ?? ??? ??? ? ?cxnum(bn); ?? ??? ??? ? ?break; ? ? ? ? ? case 2: ?? ??? ??? ? ?cxname(bn); ?? ??? ??? ? ?break; ? ? ? ? ? case 3: ?? ??? ??? ? ?cxzhicheng(bn); ?? ??? ??? ? ?break; ? ? ? ? ? case 0: ?? ??? ? ?return; ? ? ? ? ? default:printf("\n按鍵錯(cuò)誤,請(qǐng)重新選擇\n"); ? ? ? ? ?} ? ? ? } } ? ? //============================================================================================= void cxnum(int bn) { ? ? ?int i; ? ? ?char number[20],c='y'; ? ? ?while(c=='y') ? ? ?{ ? ? ? ? ? printf("\n請(qǐng)輸入職工編號(hào):"); ? ? ? ? gets(number); ? ? ? ? for(i=0;i<bn;i++) ? ? ? ? ? if(strcmp(gerenxinxi[i].num,number)==0) ? ? ? ? ? {? ? ? ? ? ? ? ?printf("\n職工%d的信息:\n"); ? ? ? ? ? ? ?putonegerenxinxi(i); ? ? ? ? ? ? ?printf("\n按任意鍵繼續(xù)!\n");? ?? ??? ??? ? getch(); ?? ??? ? ?} ? ? ? ? ? if(i==bn) ?? ??? ? ?printf("\n沒有找到職工信息\n"); ?? ??? ? ? return; ?? ??? ? ? ? ? ?} ? ? ? ? ?printf("\n按任意鍵繼續(xù)查詢!\n"); ? ? ?getchar(); } //============================================================================== void cxzhicheng(int bn) { ? ? ?int i; ? ? ?char zhicheng[20],c='y'; ? ? ?while(c=='y') ? ? ?{ ? ? ? ? ? printf("\n請(qǐng)輸入職工職稱:"); ? ? ? ? gets(zhicheng); ? ? ? ? for(i=0;i<bn;i++) ? ? ? ? ? if(strcmp(gerenxinxi[i].zhicheng,zhicheng)==0) ? ? ? ? ? {? ? ? ? ? ? ? ?printf("\n職工的信息:\n"); ? ? ? ? ? ? ?putonegerenxinxi(i); ? ? ? ? ? ? ?printf("\n按任意鍵繼續(xù)!\n");? ?? ??? ??? ? getch(); ?? ??? ? ?} ? ? ? ? ? if(i==bn) ?? ??? ? ?{ printf("\n沒有找到職工信息\n"); ?? ??? ? ? ? return ; ?? ??? ? ?} ? ? ?} ? ?? ? ? ?printf("\n按任意鍵繼續(xù)查詢!\n"); ? ? ?getchar(); ? } //=================================================================================== ? void cxname(int bn)//姓名查詢 { ? ? ?int i,j,k; ? ? ?char name[12],c='y'; ? ? ?while(c=='y') ? ? ?{? ?? ??? ? k=-1; ? ? ? ? printf("\n請(qǐng)輸入職工姓名:"); ? ? ? ? gets(name); ? ? ? ? for(i=0,j=1;i<bn;i++) ? ? ? ? ? if(strcmp(gerenxinxi[i].name,name)==0) ? ? ? ? ? { printf("\n當(dāng)前為準(zhǔn)確查詢\n"); ?? ??? ??? ? ?k=i; ? ? ? ? ? ? ?printf("\n職工%d的信息:\n",j++); ? ? ? ? ? ? ?putonegerenxinxi(k); ? ? ? ? ? ? ?printf("\n按任意鍵繼續(xù)!\n");? ?? ??? ??? ? getch(); ? ? ? ? ? } ? ? ? ? if(k==-1) ? ? ? ? { ? ?? ??? ??? ?printf("\n當(dāng)前為模糊查詢\n"); ? ? ? ? ? ?for(i=0,j=1;i<bn;i++) ? ? ? ? ? ? ? ?if(strstr(gerenxinxi[i].name,name)!=NULL) ? ? ? ? ? ? ? ?{ ? ?? ??? ??? ??? ? ? k=i; ? ? ? ? ? ? ? ? ? printf("\n職工%d的信息:\n",j++); ? ? ? ? ? ? ? ? ? putonegerenxinxi(k); ? ? ? ? ? ? ? ? ? printf("\n按任意鍵繼續(xù)!\n"); ? ? ? ? ? ? ? ? ? getch(); ? ? ? ? ? ? ? ?} ? ? ? ? ? ? if(j==1)? ?? ??? ??? ??? ?printf("\n沒有找到職工信息!\n"); ?? ??? ??? ?return; ? ? ? ? } ? ? ? ? ? ? ?}? ? ? ?printf("\n按任意鍵繼續(xù)!\n"); ? ? ?getchar(); } ? //================================================================================= void tongjigongzixinxi(int bn)//統(tǒng)計(jì)工資信息 { ?? ?int select; ?? ?while(1) ?? ?{ ? ?? ? ? ?printf("請(qǐng)輸入要進(jìn)行操作前的編號(hào)\n"); ?? ? ? printf(" 1.各職稱崗位的職工人數(shù)\n"); ?? ? ? printf(" 2.職工的平均實(shí)發(fā)工資\n"); ?? ? ? printf(" 3.低于平均工資的人數(shù)\n"); ?? ? ? printf(" 0.退出統(tǒng)計(jì)功能\n"); ?? ? ? ?? ? ? scanf("%d",&select); getchar(); ?? ? ? switch(select) ?? ? ? { ?case 1:gangweirenshu(bn); break; ?? ? ? ? ?case 2:avegongzi(bn); break; ?? ??? ? ?case 3:lowgongzi(bn); break; ?? ??? ? ?case 0:return; ?? ? ? ? ?default: printf("\n按鍵錯(cuò)誤,請(qǐng)重新選擇!\n"); ?? ? ? } ?? ? ? return; ? ? ?? ?} } ? ? ? //==================================================================== void ?gangweirenshu(int ?bn)//職工人數(shù) { ?int i,j=0, k=0, m=0; ? ?float ave; ? ?for(i=0;i<bn;i++) ? ?{ ?if(strcmp(gerenxinxi[i].zhicheng ,"助工")==0) ? ? ? ? j++;? ? ? ? if(strcmp(gerenxinxi[i].zhicheng ,"工程師")==0) ? ? ? ? k++;? ? ? ? if(strcmp(gerenxinxi[i].zhicheng ,"高級(jí)工程師")==0) ? ? ? ?m++;? ? ? } ? ? ? ave=(m*1.0/bn); ? ? ? printf("助工人數(shù)為%d人\n",j); ? ? ? printf("工程師人數(shù)為%d人\n",k); ? ? ? printf("高級(jí)工程師人數(shù)為%d人\n",m); ? ? ? printf("高級(jí)工程師比例為%f\n",ave); } //============================================================================== ? float avegongzi(int bn)//平均工資 { ? ?int i; ? ?float sum=0; ? ?float ave; ? ?for(i=0;i<bn;i++) ? ?sum=sum+gerengongzi[i].shifagongzi; ? ?ave=(sum/bn); ? ?printf("職工的平均實(shí)發(fā)工資為:%f\n",ave); ? ?return(ave); ? ?return(0); } //================================ void lowgongzi(int bn)//低于平均工資 { ?int i,k=0; ? ?float b; ? ?b=avegongzi(bn); ? ?for(i=0;i<bn;i++) ? ?{ ? ?? ? ? if(gerengongzi[i].shifagongzi<b) ?? ? ? { ?? ??? ? ? k++; ? ? ? ? ? ?printf("姓名:%s\n",gerengongzi[i].name); ?? ??? ? ? printf("工資:%f\n",gerengongzi[i].shifagongzi); ?? ? ? } ? ? ? ?} ? ?printf("低于平均工資的人數(shù)為:%d\n",k); }
努力了一個(gè)多星期,自己頭一次做這么大的程序,鼓勵(lì)一下
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用C語言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11c++實(shí)現(xiàn)加載so動(dòng)態(tài)庫(kù)中的資源
下面小編就為大家?guī)硪黄猚++實(shí)現(xiàn)加載so動(dòng)態(tài)庫(kù)中的資源。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12C++?構(gòu)造函數(shù)和析構(gòu)函數(shù)(Constructors?&?Destructors)詳解
由于global?object的誕生比程序進(jìn)入更早點(diǎn),所以global?object的constructor執(zhí)行的時(shí)間更早于程序的進(jìn)入點(diǎn),所謂的default?constructor就是沒有指定任何的參數(shù)的constructor,這篇文章主要介紹了C++?構(gòu)造函數(shù)和析構(gòu)函數(shù)的相關(guān)知識(shí),需要的朋友可以參考下2024-05-05VS2019添加引用出錯(cuò):對(duì)COM組件的調(diào)用返回了錯(cuò)誤HRESULT E_FAIL(未能完成操作未指定的錯(cuò)誤)
這篇文章主要介紹了VS2019添加引用出錯(cuò):對(duì)COM組件的調(diào)用返回了錯(cuò)誤HRESULT E_FAIL(未能完成操作。未指定的錯(cuò)誤),需要的朋友可以參考下2020-07-07