欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)企業(yè)職工工資管理系統(tǒng)

 更新時(shí)間:2022年03月17日 13:43:05   作者:Mr-Lou  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)企業(yè)職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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ò)散

    如何使用C語言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • c++實(shí)現(xiàn)加載so動(dòng)態(tài)庫(kù)中的資源

    c++實(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-12
  • C++?構(gòu)造函數(shù)和析構(gòu)函數(shù)(Constructors?&?Destructors)詳解

    C++?構(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-05
  • C++多文件變量解析

    C++多文件變量解析

    大家注意不要在頭文件中定義變量,在頭文件中聲明變量。定義放在對(duì)應(yīng)的源文件中。其他地方只能用extern聲明
    2013-10-10
  • VS2019添加引用出錯(cuò):對(duì)COM組件的調(diào)用返回了錯(cuò)誤HRESULT E_FAIL(未能完成操作未指定的錯(cuò)誤)

    VS2019添加引用出錯(cuò):對(duì)COM組件的調(diào)用返回了錯(cuò)誤HRESULT E_FAIL(未能完成操作未指定的錯(cuò)誤)

    這篇文章主要介紹了VS2019添加引用出錯(cuò):對(duì)COM組件的調(diào)用返回了錯(cuò)誤HRESULT E_FAIL(未能完成操作。未指定的錯(cuò)誤),需要的朋友可以參考下
    2020-07-07
  • C++設(shè)計(jì)模式之命令模式

    C++設(shè)計(jì)模式之命令模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之命令模式,本文講解了什么是命令模式、命令模式的使用場(chǎng)合等內(nèi)容,并給出了一個(gè)代碼實(shí)例,需要的朋友可以參考下
    2014-10-10
  • 詳解C++ STL vector容器訪問元素的幾種方式

    詳解C++ STL vector容器訪問元素的幾種方式

    這篇文章主要介紹了詳解C++ STL vector容器訪問元素的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C++中fork函數(shù)的使用及原理

    C++中fork函數(shù)的使用及原理

    這篇文章主要介紹了C++中fork函數(shù)的使用及原理,在C++中,fork函數(shù)用于創(chuàng)建一個(gè)新的進(jìn)程稱為子進(jìn)程,該進(jìn)程與原始進(jìn)程幾乎完全相同,需要的朋友可以參考下
    2023-05-05
  • C++私有繼承(一)

    C++私有繼承(一)

    這篇文章主要介紹了C++私有繼承,在私有繼承當(dāng)中,基類的公有成員和保護(hù)成員都會(huì)成為派生類的私有成員。這意味著基類的方法都會(huì)被private關(guān)鍵字描述,我們可以在派生類中使用它,但類對(duì)象無法直接調(diào)用,下面來看看詳細(xì)內(nèi)容吧
    2022-01-01
  • C語言由淺入深講解線程的定義

    C語言由淺入深講解線程的定義

    這篇文章主要介紹了C語言中線程的基礎(chǔ)知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論