c语言工资管理系统代码,C语言版本--工资管理系统

#include

#include

#include

#include

#include

#include

#define M1 "%-6d %-4s %3s %-2d.%.02d.%.02d "

#define M2 em[j].num,em[j].name,em[j].xb,em[j].y,em[j].m,em[j].d

#define M3 "%.2lf %.2lf %.2lf %.2lf\n"

#define M4 em[j].gwgz,em[j].btze,em[j].dkze,em[j].yfgz

#define M5 "\n\n员工号 姓名 性 别 出生年月 基本工资 补贴总额 代扣总额 实际工资\n\n"

void menu();

void menu1();

void srxxI();

void scxxO();

void gztjT();

void gzpxS();

void czxxF();

void czscD();

void tcxtQ();

int i=0;

struct Employee

{

int num;

char name[10];

char xb[3];

int y;

int m;

int d;

double gwgz;

double btze;

double dkze;

double yfgz;

}A;

struct Employee em[100];

int main()

{

char n;

int i=0;

while(1)

{

menu();

scanf("%c",&n);

switch(n)

{

case 'I':

srxxI();

break;

case 'O':

scxxO();

break;

case 'T':

gztjT();

break;

case 'S':

gzpxS();

break;

case 'F':

czxxF();

break;

case 'D':

czscD();

break;

case 'Q':

tcxtQ();

break;

default:break;

}

getch();

}

}

void menu()

{

system("cls");

printf("\t\t*********************************************\n");

printf("\t\t*\t I:输入员工工资信息 *\n");

printf("\t\t*\t O:输出员工工资信息 *\n");

printf("\t\t*\t T:输出员工工资统计信息 *\n");

printf("\t\t*\t S:按要求排序后输出员工工资信息 *\n");

printf("\t\t*\t F:按员工号查找并输出其工资信息 *\n");

printf("\t\t*\t D:按员工号查找并删除其工资信息 *\n");

printf("\t\t*\t Q:退出系统 *\n");

printf("\t\t*********************************************\n\n");

printf("\t\t\t请选择I.O.T.S.F.D.Q:");

}

void menu1()

{

system("cls");

printf("1、员工号是员工信息的唯一标识,不允许重复。长度<=4\n员工号格式:第1位为1--9之间的数字,后面的字符可以是任意数字\n");

printf("2、姓名必须是2个以上的汉字,最多4个汉字。\n");

printf("3、性别只能是男或女。\n");

printf("4、出生日期格式:4位年-月-日(长度<=10)。\n");

printf("5、0<=岗位工资、补贴总额、代扣总额<=99999。\n");

printf("6、输入空格+Ctrl+z结束!\n");

}

void srxxI()

{

system("cls");

menu1();

FILE *fp;

fp=fopen("e:\\bbb.txt","ab+");

if(fp==NULL)

{

char c;

printf("can't open this film!\n");

printf("是否退出?:");

scanf("%c",&c);

if(c=='Y')

exit(0);

else

main();

}

char q;

printf("\nA:录入文件 B:人工输入 请选择:");

scanf("\n%c",&q);

if(q=='A')

{

while(!feof(fp))

{

if(fread(&em[i],sizeof(A),1,fp)==1)

i++;

}

fclose(fp);

printf("录入完成,按任意键返回菜单。");

}

else

{

printf("\n\n员工号 姓名 性 别 出生年月 基本工资 补贴总额 代扣总额\n");

while(1)

{

char ch;

scanf("%d",&em[i].num);

scanf("%s",em[i].name);

scanf("%s",em[i].xb);

scanf("%d-%d-%d",&em[i].y,&em[i].m,&em[i].d);

scanf("%lf",&em[i].gwgz);

scanf("%lf",&em[i].btze);

scanf("%lf",&em[i].dkze);

em[i].yfgz=em[i].gwgz+em[i].btze-em[i].dkze;

i++;

while((ch=getchar())!='\n')

main();

}

}

}

void scxxO()

{

int j;

printf("现有人工总数%d\n",i);

if(i!=0)

{

printf(M5);

for(j=0;j

{

printf(M1,M2);

printf(M3,M4);

}

}

else

printf("按任意键返回主界面。\n");

}

void gztjT()

{

double sum=0.0;

double nansum=0.0,nvsum=0.0;

int j;

int nannum=0;

int nvnum=0;

double max=0.0;

double min=100000.0;

for(j=0;j

{

if(max

max=em[j].yfgz;

if(min>em[j].yfgz)

min=em[j].yfgz;

if(strcmp(em[j].xb,"男")==0)

{

nansum+=em[j].yfgz;

nannum++;

}

if(strcmp(em[j].xb,"女")==0)

{

nvsum+=em[j].yfgz;

nvnum++;

}

sum+=em[j].yfgz;

}

printf("************************************\n");

printf("\f男性工人人数:%d\n",nannum);

printf("\f女性工人人数:%d\n",nvnum);

printf("\f所发工资总额:%.2lf\n",sum);

printf("\f所发工资平均值:%.2lf\n",sum/i);

printf("\f所发最高工资:%.2lf\n",max);

printf("\f所发最低工资:%.2lf\n",min);

if(nannum!=0)

printf("\f男性工资平均值:%.2lf\n",nansum/(nannum));

else

printf("\f无男性员工!\n");

if(nvnum!=0)

printf("\f女性工资平均值:%.2lf\n",nvsum/(nvnum));

else

printf("\f无女性员工!\n");

printf("************************************\n");

}

void gzpxS()

{

struct Employee temp;

printf("按员工号升序排序!\n");

for(int s=0;s

{

for(int j=s;j

{

if(em[j].num

{

temp.num=em[j].num;

strcpy(temp.name,em[j].name);

strcpy(temp.xb,em[j].xb);

temp.y=em[j].y;

temp.m=em[j].m;

temp.d=em[j].d;

temp.gwgz=em[j].gwgz;

temp.btze=em[j].btze;

temp.dkze=em[j].dkze;

temp.yfgz=em[j].yfgz;

em[j].num=em[s].num;

strcpy(em[j].name,em[s].name);

strcpy(em[j].xb,em[s].xb);

em[j].y=em[s].y;

em[j].m=em[s].m;

em[j].d=em[s].d;

em[j].gwgz=em[s].gwgz;

em[j].btze=em[s].btze;

em[j].dkze=em[s].dkze;

em[j].yfgz=em[s].yfgz;

em[s].num=temp.num;

strcpy(em[s].name,temp.name);

strcpy(em[s].xb,temp.xb);

em[s].y=temp.y;

em[s].m=temp.m;

em[s].d=temp.d;

em[s].gwgz=temp.gwgz;

em[s].btze=temp.btze;

em[s].dkze=temp.dkze;

em[s].yfgz=temp.yfgz;

}

}

}

printf(M5);

for(int j=0;j

{

printf(M1,M2);

printf(M3,M4);

}

}

void czxxF()

{

int s;

int flag=0;

int sign=0;

char ch;

while(1)

{

if(sign==1)

{

printf("请继续查找!(如果不继续查找请按'N'!)");

scanf("%c",&ch);

if(ch!='\n')

return;

}

if(sign==0)

printf("请输入要查找的员工的员工号!\n");

scanf("%d",&s);

for(int j=0;j

{

if(em[j].num==s)

{

flag=1;

break;

}

}

if(flag==0)

printf("不存在该员工\n\n");

else

{

printf(M5);

printf(M1,M2);

printf(M3,M4);

}

sign=1;

}

}

void czscD()

{

int s;

int flag=0;

int label;

if(i==0)

{

printf("无员工(按任意键返回)!\n");

return ;

}

tt:printf("请输入要删除的员工的员工号!\n");

scanf("%d",&s);

for(int j=0;j

{

if(em[j].num==s)

{

label=j;

flag=1;

break;

}

}

if(flag==0)

{

printf("不存在该员工\n");

goto tt;

}

if((flag==1)&&(i==0))

{

i=0;

printf("现有员工数为0\n");

return;

}

for(j=label+1;j<=i;j++)

{

em[j-1].num=em[j].num;

strcpy(em[j-1].name,em[j].name);

strcpy(em[j-1].xb,em[j].xb);

em[j-1].y=em[j].y;

em[j-1].m=em[j].m;

em[j-1].d=em[j].d;

em[j-1].gwgz=em[j].gwgz;

em[j-1].btze=em[j].btze;

em[j-1].dkze=em[j].dkze;

em[j-1].yfgz=em[j].yfgz;

}

i--;

printf("编号为%d的员工已经删除!\n",s);

printf("是否继续删除!(如果不继续删除请按'N'!)\n");

}

void tcxtQ()

{

printf("确定要退出?:");

char ch;

scanf("\n%c",&ch);

system("cls");

if(ch=='Y'||ch=='y')

{

printf("\n\n\n\n\n\n\t\t\t\t正在退出?.\n");

Sleep(1000);

system("cls");

printf("\n\n\n\n\n\n\t\t\t\t正在退出?..\n");

Sleep(1000);

system("cls");

printf("\n\n\n\n\n\n\t\t\t\t正在退出?...\n");

Sleep(500);

system("cls");

printf("\n\n\n\n\n\n\t\t\t\t正在退出?.\n");

Sleep(1000);

system("cls");

printf("\n\n\n\n\n\n\t\t\t\t正在退出?..\n");

Sleep(1000);

system("cls");

printf("\n\n\n\n\n\n\t\t\t\t正在退出?...\n");

Sleep(1000);

system("cls");

printf("\n\n\n\n\n\n\t\t\t\t The End!");

printf("\n\n\t\t\tWelcome to back again next time^_^\n");

system("pause");

exit(1);

}

else

main();

}

//以下为测试数据

/*

1007 潘介 男 1964-2-28 3520 1800 400

1008 曾院 男 1973-3-27 2300 1300 250

1009 陈心 男 1967-5-28 3340 1200 180

1001 杨流 女 1966-7-17 3755 2000 450

1002 沈慕 男 1981-4-30 3011 1500 300

1003 谢蜂 男 1984-6-30 3598 1800 400

1026 张东 男 1989-7-21 3421 1080 120

1004 傅消 男 1985-2-10 2506 1300 250

1005 倪轻 男 1970-8-22 3243 1200 180

1015 杨琼 女 1992-11-3 4708 2000 450

1016 吕袥 男 1955-9-14 3060 1500 300

1017 陈丽 女 1962-6-15 2588 1200 400

1018 何猜 男 1986-3-16 2595 1300 250

1027 王雪 女 1970-1-30 4560 1900 410

1019 何既 男 1977-4-15 3760 1200 180

1020 何庆 男 1962-11-5 4670 2000 450

1021 李龙 男 1984-6-25 3878 1500 300

1022 吴温 男 1985-11-4 3333 1800 400

1023 左瘟 女 1988-9-15 2566 1300 250

1024 黄城 男 1991-6-19 3222 1200 180

1025 李者 男 1990-5-15 4777 2000 450

*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值