C语言课程设计报告-工资管理系统

C语言课程设计报告-工资管理系统
一. 系统功能

设计一个职工工资管理系统,其功能包括:

(1) 职工基本工资信息录入

包括工号,姓名,应发工资,奖金,扣款,应发工资,扣税,实发工资。

(2) 职工基本工资信息保存

(3) 职工基本工资信息查询

按照工号查询

按照姓名查询

(4) 职工基本工资信息显示

在屏幕上显示所有的职工基本工资信息。

(5) 职工基本工资信息更新

能够实现修改,删除,插入,排序功能。

(6) 职工基本工资信息统计

统计公司员工工资在各等级的人数

主界面系统主界面应有如下功能选项

录入职工基本工资信息

查询职工基本工资信息

保存职工基本工资信息

删除职工基本工资信息

插入职工基本工资信息

修改职工基本工资信息

统计职工基本工资信息

排序职工基本工资信息

显示职工基本工资信息

退出



代码如下:

#include

typedef struct employee

{

char num[10]; //保存职工编号

char name[15]; //保存职工姓名

float jbgz; //保存职工基本工资

float jj; //保存职工奖金

float kk; //保存职工扣款

float yfgz; //保存职工应发工资

float sk; //保存职工税款

float sfgz; //保存职工实发工资





}ZGGZ;

void menu()

{

printf(" Empoyee System\n");

printf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@\n");

printf(" *1 input record *2 delete record\n");

printf(" *3 search record *4 modify record\n");

printf(" *5 insert record *6 count record\n");

printf(" *7 sort record *8 save record\n");

printf(" *9 display record *0 quit record\n");

printf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@\n");

printf("Please enter you choice(0-9)\n");

}

int input(ZGGZ a[],int k)

{

int j,x;

char str[10];

j=x=0;

while(1)

{

printf("----------------------------\n");

printf("请输入职工的编号:(按0返回主菜单)");

scanf("%s",str);

strcpy(a[k].num,str);

for(j=0;j
{

if(strcmp(a[j].num,str)==0)

{

printf("已经有工号为%s的员工信息!请重新输入员工号。\n",str);

printf("请输入职工的编号:");

scanf("%s",str);

strcpy(a[k].num,str);

}

}



if(strcmp(a[k].num,"0")==0)

break;

printf("请输入职工的姓名:");

scanf("%s",a[k].name);

printf("请输入职工的基本工资:");

scanf("%f",&a[k].jbgz);

printf("请输入职工的奖金:");

scanf("%f",&a[k].jj);

printf("请输入职工的扣款:");

scanf("%f",&a[k].kk);

a[k].yfgz=a[k].jbgz+a[k].jj-a[k].kk;

a[k].sk=a[k].yfgz*(0.05);

a[k].sfgz=a[k].yfgz*(0.95);

k++;

}

return k;

}



int del(ZGGZ a[],int y)

{

int i=0;

int x=0;

char str[15];

printf("请输入你要删除的编号或姓名:");

scanf("%s",str);

printf("--------删除成功--------\n");

for(i=0;i
if(!strcmp(str,a[i].num)||!strcmp(str,a[i].name))

{

while(i
{

strcpy(a[i].num,a[i+1].num);

strcpy(a[i].name,a[i+1].name);

a[i].jbgz=a[i+1].jbgz;

a[i].jj=a[i+1].jj;

a[i].kk=a[i+1].kk;

a[i].sfgz=a[i+1].sfgz;

a[i].sk=a[i+1].sk;

a[i].yfgz=a[i+1].yfgz;

i++;

}

x++;

}

if(x==0)

{

printf("输入的编号或姓名不存在,请重新输入:\n");

}

return y-x;

}

int sear(ZGGZ a[],int y)

{

int i;

int x=0;

char str[15];

printf("请输入你要查找的编号或姓名:");

scanf("%s",str);

for(i=0;i
if(!strcmp(str,a[i].num)||!strcmp(str,a[i].name))

{

printf("员工编号为%s\n",a[i].num);

printf("员工姓名为%s\n",a[i].name);

printf("基本工资:%f\n",a[i].jbgz);

printf("奖金:%f\n",a[i].jj);

printf("扣款:%f\n",a[i].kk);

printf("应发工资:%f\n",a[i].yfgz);

printf("税款:%f\n",a[i].sk);

printf("实发工资:%f\n",a[i].sfgz);

x++;

}

if(x==0)

{



printf("未找到该记录\n");

return -1;

}

}

void mod(ZGGZ a[],int y)

{

int i;

int x=0;

char str[15];

printf("请输入你要修改的编号:");

scanf("%s",str);

for(i=0;i
if(!strcmp(str,a[i].num)||!strcmp(str,a[i].name))

{


printf("请输入修改后职工的姓名:");

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

printf("请输入修改后职工的基本工资:");

scanf("%f",&a[i].jbgz);

printf("请输入修改后职工的奖金:");

scanf("%f",&a[i].jj);

printf("请输入修改后职工的扣款:");

scanf("%f",&a[i].kk);

printf("-------------修改成功------------\n");

a[i].yfgz=a[i].jbgz+a[i].jj-a[i].kk;

a[i].sk=a[i].yfgz*(0.05);

a[i].sfgz=a[i].yfgz*(0.95);

x++;

}

if(x==0)

{



printf("未找到要修改的编号\n");

}

}

int insert(ZGGZ a[],int y)

{

int i;

int x=0;

char str[15];

printf("请输入你要插入的编号:");

scanf("%s",str);

printf("请输入一条新的记录信息:\n");

for(i=0;i
if(strcmp(str,a[i].num)==0)

{

x=i;

for(i=y;i>x+1;i--)

{

a[i].jbgz=a[i-1].jbgz;

a[i].jj=a[i-1].jj;

a[i].kk=a[i-1].kk;

a[i].sfgz=a[i-1].sfgz;

a[i].sk=a[i-1].sk;

a[i].yfgz=a[i-1].yfgz;

strcpy(a[i].name,a[i-1].name);

strcpy(a[i].num,a[i-1].num);

}

}

x++;

printf("请输入职工的编号:");

scanf("%s",a[x].num);

printf("请输入职工的姓名:");

scanf("%s",a[x].name);

printf("请输入职工的基本工资:");

scanf("%f",&a[x].jbgz);

printf("请输入职工的奖金:");

scanf("%f",&a[x].jj);

printf("请输入职工的扣款:");

scanf("%f",&a[x].kk);

a[x].yfgz=a[x].jbgz+a[x].jj-a[x].kk;

a[x].sk=a[x].yfgz*(0.05);

a[x].sfgz=a[x].yfgz*(0.95);

return y+1;

}

void count(ZGGZ a[],int y)

{

int q[11]={0,0,0,0,0,0,0,0,0,0,0};

int i;

int x;

for(i=0;i
{

x=(int)a[i].yfgz/1000;

switch(x)

{

case 9:q[1]++;break;

case 8:q[2]++;break;

case 7:q[3]++;break;

case 6:q[4]++;break;

case 5:q[5]++;break;

case 4:q[6]++;break;

case 3:q[7]++;break;

cas

e 2:q[8]++;break;

case 1:q[9]++;break;

case 0:q[10]++;break;

default:q[0]++;break;

}

}

printf("应发工资在 10000以上 的人数为%d\n",q[0]);

printf("应发工资在 9000到10000 的人数为%d\n",q[1]);

printf("应发工资在 8000到9000 的人数为%d\n",q[2]);

printf("应发工资在 7000到8000 的人数为%d\n",q[3]);

printf("应发工资在 6000到7000 的人数为%d\n",q[4]);

printf("应发工资在 5000到6000 的人数为%d\n",q[5]);

printf("应发工资在 4000到5000 的人数为%d\n",q[6]);

printf("应发工资在 3000到4000 的人数为%d\n",q[7]);

printf("应发工资在 2000到3000 的人数为%d\n",q[8]);

printf("应发工资在 1000到2000 的人数为%d\n",q[9]);

printf("应发工资在 1000以上 的人数为%d\n",q[10]);

}

void sort(ZGGZ a[],int y)

{

int i,j;

float t;

char str[15];

for(j=0;j
for(i=0;i
if(a[i].sfgz>a[i+1].sfgz)

{

t=a[i].sfgz;

a[i].sfgz=a[i+1].sfgz;

a[i+1].sfgz=t;

t=a[i].jbgz;

a[i].jbgz=a[i+1].jbgz;

a[i+1].jbgz=t;

t=a[i].jj;

a[i].jj=a[i+1].jj;

a[i+1].jj=t;

t=a[i].kk;

a[i].kk=a[i+1].kk;

a[i+1].kk=t;

t=a[i].yfgz;

a[i].yfgz=a[i+1].yfgz;

a[i+1].yfgz=t;

t=a[i].sk;

a[i].sk=a[i+1].sk;

a[i+1].sk=t;

strcpy(str,a[i].num);

strcpy(a[i].num,a[i+1].num);

strcpy(a[i+1].num,str);

strcpy(str,a[i].name);

strcpy(a[i].name,a[i+1].name);

strcpy(a[i+1].name,str);

}

}

void save(ZGGZ a[],int n)

{

FILE *fp;

int i;

if((fp=fopen("sj.txt","wb"))==NULL)

{

printf("cannot open file\n");

return;

}

for(i=0;i
if(fwrite(&a[i],sizeof(struct employee),1,fp)!=1)

printf("file write error\n");

fclose(fp);

}

void display(ZGGZ a[],int n)

{

int i=0;

if(n==0)

{

printf("Files are empty\n");

return;

}

do

{


printf("----------------------------\n");

printf("员工编号为%s\n",a[i].num);

printf("员工姓名为%s\n",a[i].name);

printf("基本工资:%f\n",a[i].jbgz);

printf("奖金:%f\n",a[i].jj);

printf("扣款:%f\n",a[i].kk);

printf("应发工资:%f\n",a[i].yfgz);

printf("税款:%f\n",a[i].sk);

printf("实发工资:%f\n",a[i].sfgz);

i++;

}while(i
}

void main()

{

int selete,c=0;

int i=0;

int z=0;

char q,p,x,s;

ZGGZ b[100];

FILE *fp;

if((fp=fopen("sj.txt","rb"))==NULL)

printf("Not Found!\n");

else

{

do

{

fread(&b[i],sizeof(struct employee),1,fp);

i++;

}while(!feof(fp));

fclose(fp);

c=i-1;

}

while(1)

{

menu();

scanf("%d",&selete);

if(selete==0)

{

printf("Thank you for your use ( ^_^ ) Bye\n");

break;

}

switch(selete)

{

case 1:c=input(b,c);break;

case 2:

{

display(b,c);

do

{

c=del(b,c);

printf("是否继续删除,是按y,否则请按任意值\n");

getchar();

scanf("%c",&p);

}while(p=='Y'||p=='y');

break;

}

case 3:

{

do

{



sear(b,c);

printf("是否继续查找,是按y,否则请按任意值\n");

getchar();

scanf("%c",&x);

}while(x=='Y'||x=='y');

break;

}

case 4:

{

display(b,c);

do

{

mod(b,c);

printf("是否继续修改,是按y,否则请按任意值\n");

getchar();

scanf("%c",&q);

}while(q=='Y'||q=='y');

break;

}

case 5:

{

do

{

c=insert(b,c);

printf("是否继续插入,是

按y,否则请按任意值\n");

getchar();

scanf("%c",&s);

}while(s=='Y'||s=='y');

break;

}

case 6:count(b,c);break;

case 7:display(b,c);sort(b,c);break;

case 8:save(b,c);break;

case 9:display(b,c);break;

default:printf("Please try again\n");

}

}
}

相关文档
最新文档