国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++實現企業職工工資管理系統

2020-01-26 13:47:49
字體:
來源:轉載
供稿:網友

課程設計目的和要求

工資管理要和人事管理相聯系,生成企業每個職工的實際發放工資。

企業職工人事基本信息包括:職工編號、姓名、性別、出生日期、職稱(助工、工程師、高級工程師)和任職年限。

企業職工工資信息包括:職工編號、姓名、職務工資、職務補貼、住房補貼、應發工資、個人所得稅、養老保險、住房公積金和實發工資。

系統主要功能包括:

(1)創建職工人事基本信息文件,根據提示輸入職工的各項信息,按職工編號對職工信息進行排序,并將排序后的職工信息存儲到一個文件中。

(2)創建職工的工資信息文件(每個月創建一個文件),其中職工編號和姓名從人事信息文件中復制,其他工資組成項目按下面方法計算。

             職務工資:助工=1270*(1+任職年限*2%)

                       工程師=2360*(1+任職年限*3%)

                       高級工程師=3450*(1+任職年限*5%)

             職務補貼:=職務工資*25%

             住房補貼=(職務工資+職務補貼)*15%

             應發工資=職務工資+職務補貼+住房補貼

             個人所得稅=(應發工資-3000)*5%

             養老保險=(職務工資+職務補貼)*10%

             住房公積金=應發工資*5%

             實發工資=應發工資-個人所得稅-養老保險-住房公積金

(3)增加職工人事基本信息,在原有職工人事基本信息文件的基礎上增加新有的職工信息。

(4)刪除職工人事基本信息,提示用戶輸入要刪除的職工編號,如果在文件有該信息存在,則將其信息輸出到屏幕上,用戶確認后將該信息刪除,并將刪除后的結果保存至原文件。最后提示用戶是否繼續進行刪除操作。

(5)修改職工人事基本信息,提示用戶輸入要刪除的職工編號,如果在文件有該信息存在,則將其信息輸出到屏幕上,然后提示用戶要修改的選項(職稱、任職年限),并將修改后的結果保存至原文件。最后提示用戶是否繼續進行修改操作。

(6)按不同條件進行查詢操作,輸出滿足條件的職工工資信息。

① 按職工編號查詢,輸入一個編號,輸出對應職工工資信息。

② 按姓名查詢,包括精確查詢,模糊查詢。

③ 按職稱查詢,輸入職稱名稱,輸出相應職稱工資信息。

(7)按不同條件對職工工資信息進行統計工作。

① 統計個職稱崗位的職工人數是多少,計算高級工程師比例。

② 計算企業職工的平均實發工資,并輸出。

③ 統計職工工資低于平均工資人數,并輸出他們的姓名和實發工資。

代碼:

#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);//個人信息初始化 void getonegerenxinxi(int i);//輸ru一個職工的個人信息 void allgerenxinxi(int bn);//保存所有信息 void xggerenxinxi(int bn);//修改個人信息 void saveonegerenxinxi(int i);//保存個人信息 int addgerenxinxi(int bn);//增加個人信息 int delgerenxinxi(int bn); //刪除個人信息 void putonegerenxinxi(int i);//輸出一個個人信息 void sort(int bn);//排序 void shengchenggongzi(int bn);//生成工資 void putonegerengongzi(int i);//輸出一個人的工資信息 void cxgerenxinxi(int bn);//查詢 void cxzhicheng(int bn);//職稱查詢 void cxname(int bn);//姓名查詢 void cxnum(int bn);//編號查詢 void tongjigongzixinxi(int bn);//統計工資信息 float avegongzi(int bn);//平均工資 void lowgongzi(int bn);//低于平均工資 void gangweirenshu(int bn);//職工人數  void main() { int select,bn;   bn=loadgerenxinxi();   if(bn==0)   printf("職工信息為零:");    while(1)   {    printf("/n 企業職工工資管理系統  /n");    printf("/n-----------------------------/n");    printf("/n 請輸入要進行操作前的序號 /n");    printf("/n  1.輸入職工信息   /n");    printf("/n  2.修改職工信息   /n");    printf("/n  3.增加職工信息   /n");    printf("/n  4.刪除職工信息   /n");    printf("/n  5.職工工資    /n");    printf("/n  6.統計工資信息   /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按鍵錯誤,請重新選擇/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)//個人信息初始化 {   int n;   char c='y';   for(n=0;c=='y';n++)   { printf("/n輸入職工%d的信息:/n",n+1);   getonegerenxinxi(n);   printf("/n繼續輸入請按'y',停止請按'n':");   c=getchar(); getchar();   }   sort(n);   allgerenxinxi(n);   return(n); } //====================================================== void getonegerenxinxi(int i)//輸ru一個職工的個人信息 {  printf("職工編號:");  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("職稱(助工,工程師 ,高級工程師):");  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)//修改個人信息 {  int select,k=-1;  char number[20],c1='y',c2;  if(bn==0)  { printf("/n職工信息為空/n:");  return;  }  while(c1=='y')  {c2='y';  printf("/n請輸入要修改的職工編號/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編號有誤,請重新輸入/n");  else  { printf("/n職工信息:/n");   putonegerenxinxi(k);   while(c2=='y')    {     printf("/n請輸入要修改項前的序號:/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按鍵錯誤,請重新輸入/n");     }     printf("/n還要修改該職工其它信息嗎(y/n)?/n");     c2=getchar();     getchar();     }   }    saveonegerenxinxi(k);    printf("/n還要修改其他職工信息嗎?(y/n)/n");    c1=getchar();    getchar();   }  printf("/n按任意鍵繼續/n");  getchar(); } //======================================================  void saveonegerenxinxi(int i)//保存個人信息 {  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)//增加個人信息 { char c='y';  FILE *fb;  if((fb=fopen("gerenxinxi.txt","a"))==NULL)  {printf("不能打開/n");  exit(1);  }  while(c=='y')  {printf("/n請輸入新增職工信息:/n");   getonegerenxinxi(bn);   fwrite(&gerenxinxi[bn],st_len,1,fb);   bn++;   printf("/n繼續輸入其他職工信息嗎?(y/n):");   c=getchar();   getchar();  }   printf("/n按任意鍵繼續/n:");  getch();  fclose(fb);  return(bn); } //======================================================  int delgerenxinxi(int bn) //刪除個人信息 {   int k=-1;   char number[20],c1='y',c2;   if(bn==0)   { printf("/n信息為空/n");   return(bn);   }   while(c1=='y')   { c2='y';    printf("/n輸入要刪除的職工編號/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編號有誤,重新輸入/n");   else   {    printf("/n職工信息:/n");    putonegerenxinxi(k);    printf("/n確定要刪除該職工的全部信息嗎?(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繼續刪除其它職工信息嗎?(y/n):");    c1=getchar(); getchar();   }     }   allgerenxinxi(bn);   printf("/n按任意鍵繼續!/n");   getch();   return(bn); } //==================================================== void putonegerenxinxi(int i)//輸出一個個人信息 {  printf("/n");  printf("職工編號:");  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,"高級工程師") == 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)//輸出一個人的工資信息 {   printf("/n");   printf("職工編號:");   puts(gerengongzi[i].num);   printf("職工姓名:");   puts(gerengongzi[i].name);   printf("勞務工資:");   printf("%f/n",gerengongzi[i].zhiwugongzi);   printf("勞務補助:");   printf("%f/n",gerengongzi[i].zhiwubutie);   printf("住房補貼:");   printf("%f/n",gerengongzi[i].zhufangbutie);   printf("應發工資:");   printf("%f/n",gerengongzi[i].yingfagongzi);   printf("個人所得稅:");   printf("%f/n",gerengongzi[i].gerensuodeshui);   printf("養老保險:");   printf("%f/n",gerengongzi[i].yanglaobaoxian);   printf("住房公積金:");   printf("%f/n",gerengongzi[i].zhufanggongjijin);   printf("實發工資:");   printf("%f/n",gerengongzi[i].shifagongzi); } //=============================================== void cxgerenxinxi(int bn)//查詢 {   int select;   while(1)   { printf("/n請輸入要進行操作前的編號/n");   printf("1.編號查詢/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按鍵錯誤,請重新選擇/n");    }   } }   //============================================== void cxnum(int bn) {   int i;   char number[20],c='y';   while(c=='y')   {   printf("/n請輸入職工編號:");   gets(number);   for(i=0;i<bn;i++)    if(strcmp(gerenxinxi[i].num,number)==0)    {     printf("/n職工%d的信息:/n");     putonegerenxinxi(i);     printf("/n按任意鍵繼續!/n");     getch();    }    if(i==bn)    printf("/n沒有找到職工信息/n");    return;      }     printf("/n按任意鍵繼續查詢!/n");   getchar(); } //================================================ void cxzhicheng(int bn) {   int i;   char zhicheng[20],c='y';   while(c=='y')   {   printf("/n請輸入職工職稱:");   gets(zhicheng);   for(i=0;i<bn;i++)    if(strcmp(gerenxinxi[i].zhicheng,zhicheng)==0)    {     printf("/n職工的信息:/n");     putonegerenxinxi(i);     printf("/n按任意鍵繼續!/n");     getch();    }    if(i==bn)    { printf("/n沒有找到職工信息/n");     return ;    }   }     printf("/n按任意鍵繼續查詢!/n");   getchar();  } //==============================================  void cxname(int bn)//姓名查詢 {   int i,j,k;   char name[12],c='y';   while(c=='y')   {    k=-1;   printf("/n請輸入職工姓名:");   gets(name);   for(i=0,j=1;i<bn;i++)    if(strcmp(gerenxinxi[i].name,name)==0)    { printf("/n當前為準確查詢/n");     k=i;     printf("/n職工%d的信息:/n",j++);     putonegerenxinxi(k);     printf("/n按任意鍵繼續!/n");     getch();    }   if(k==-1)   {    printf("/n當前為模糊查詢/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按任意鍵繼續!/n");      getch();     }    if(j==1)     printf("/n沒有找到職工信息!/n");    return;   }      }   printf("/n按任意鍵繼續!/n");   getchar(); }  //================================================= void tongjigongzixinxi(int bn)//統計工資信息 {  int select;  while(1)  {   printf("請輸入要進行操作前的編號/n");   printf(" 1.各職稱崗位的職工人數/n");   printf(" 2.職工的平均實發工資/n");   printf(" 3.低于平均工資的人數/n");   printf(" 0.退出統計功能/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按鍵錯誤,請重新選擇!/n");   }   return;    } }  //================================================= void gangweirenshu(int bn)//職工人數 { 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 ,"高級工程師")==0)   m++;  }   ave=(m*1.0/bn);   printf("助工人數為%d人/n",j);   printf("工程師人數為%d人/n",k);   printf("高級工程師人數為%d人/n",m);   printf("高級工程師比例為%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("職工的平均實發工資為:%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("低于平均工資的人數為:%d/n",k); } 

努力了一個多星期,自己頭一次做這么大的程序,鼓勵一下

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岗巴县| 尼木县| 尼勒克县| 灵武市| 蒙自县| 湘潭县| 泰州市| 类乌齐县| 敖汉旗| 黑河市| 若尔盖县| 贵定县| 扎鲁特旗| 辽宁省| 通江县| 三明市| 会同县| 洞口县| 墨玉县| 黔西县| 东丰县| 九龙城区| 宁河县| 信阳市| 新闻| 中阳县| 乳源| 社会| 禄丰县| 上杭县| 军事| 荃湾区| 综艺| 澜沧| 高青县| 建宁县| 浙江省| 浦江县| 阿尔山市| 宝兴县| 景洪市|