課程設(shè)計(jì)目的和要求
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了北安免費(fèi)建站歡迎大家使用!工資管理要和人事管理相聯(lián)系,生成企業(yè)每個(gè)職工的實(shí)際發(fā)放工資。
企業(yè)職工人事基本信息包括:職工編號、姓名、性別、出生日期、職稱(助工、工程師、高級工程師)和任職年限。
企業(yè)職工工資信息包括:職工編號、姓名、職務(wù)工資、職務(wù)補(bǔ)貼、住房補(bǔ)貼、應(yīng)發(fā)工資、個(gè)人所得稅、養(yǎng)老保險(xiǎn)、住房公積金和實(shí)發(fā)工資。
系統(tǒng)主要功能包括:
(1)創(chuàng)建職工人事基本信息文件,根據(jù)提示輸入職工的各項(xiàng)信息,按職工編號對職工信息進(jìn)行排序,并將排序后的職工信息存儲到一個(gè)文件中。
(2)創(chuàng)建職工的工資信息文件(每個(gè)月創(chuàng)建一個(gè)文件),其中職工編號和姓名從人事信息文件中復(fù)制,其他工資組成項(xiàng)目按下面方法計(jì)算。
職務(wù)工資:助工=1270*(1+任職年限*2%)
工程師=2360*(1+任職年限*3%)
高級工程師=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除的職工編號,如果在文件有該信息存在,則將其信息輸出到屏幕上,用戶確認(rèn)后將該信息刪除,并將刪除后的結(jié)果保存至原文件。最后提示用戶是否繼續(xù)進(jìn)行刪除操作。
(5)修改職工人事基本信息,提示用戶輸入要?jiǎng)h除的職工編號,如果在文件有該信息存在,則將其信息輸出到屏幕上,然后提示用戶要修改的選項(xiàng)(職稱、任職年限),并將修改后的結(jié)果保存至原文件。最后提示用戶是否繼續(xù)進(jìn)行修改操作。
(6)按不同條件進(jìn)行查詢操作,輸出滿足條件的職工工資信息。
① 按職工編號查詢,輸入一個(gè)編號,輸出對應(yīng)職工工資信息。
② 按姓名查詢,包括精確查詢,模糊查詢。
③ 按職稱查詢,輸入職稱名稱,輸出相應(yīng)職稱工資信息。
(7)按不同條件對職工工資信息進(jìn)行統(tǒng)計(jì)工作。
① 統(tǒng)計(jì)個(gè)職稱崗位的職工人數(shù)是多少,計(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);//編號查詢 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 請輸入要進(jì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.統(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ò)誤,請重新選擇\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ù)輸入請按'y',停止請按'n':"); c=getchar(); getchar(); } sort(n); allgerenxinxi(n); return(n); } //====================================================== void getonegerenxinxi(int i)//輸ru一個(gè)職工的個(gè)人信息 { 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)//修改個(gè)人信息 { 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請輸入要修改項(xiàng)前的序號:\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ò)誤,請重新輸入\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請輸入新增職工信息:\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信息為空\n"); return(bn); } while(c1=='y') { c2='y'; printf("\n輸入要?jiǎng)h除的職工編號\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確定要?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("職工編號:"); 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)//輸出一個(gè)人的工資信息 { printf("\n"); printf("職工編號:"); 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請輸入要進(jì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按鍵錯(cuò)誤,請重新選擇\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按任意鍵繼續(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請輸入職工職稱:"); 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請輸入職工姓名:"); 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("請輸入要進(jìn)行操作前的編號\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ò)誤,請重新選擇!\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 ,"高級工程師")==0) m++; } ave=(m*1.0/bn); printf("助工人數(shù)為%d人\n",j); printf("工程師人數(shù)為%d人\n",k); printf("高級工程師人數(shù)為%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("職工的平均實(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); }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前題目:C++實(shí)現(xiàn)企業(yè)職工工資管理系統(tǒng)-創(chuàng)新互聯(lián)
文章出自:http://jinyejixie.com/article30/diodso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)公司、微信小程序、網(wǎng)站排名、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容