C工资管理系统源代码.docx

上传人:b****7 文档编号:8752977 上传时间:2023-02-01 格式:DOCX 页数:16 大小:16.99KB
下载 相关 举报
C工资管理系统源代码.docx_第1页
第1页 / 共16页
C工资管理系统源代码.docx_第2页
第2页 / 共16页
C工资管理系统源代码.docx_第3页
第3页 / 共16页
C工资管理系统源代码.docx_第4页
第4页 / 共16页
C工资管理系统源代码.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C工资管理系统源代码.docx

《C工资管理系统源代码.docx》由会员分享,可在线阅读,更多相关《C工资管理系统源代码.docx(16页珍藏版)》请在冰豆网上搜索。

C工资管理系统源代码.docx

C工资管理系统源代码

文档编制序号:

[KKIDT-LLE0828-LLETD298-POI08]

 

C工资管理系统源代码

#include<>

#include<>

#include<>

#include<>

#include<>

#defineTITLE"\n月份工号姓名应发工资各种折扣实发工资\n"

#defineDATA"%2d%4ld%-10s%%%\n",p1->month,p1->num,p1->name,p1->should_pay,p1->rebate,p1->actual_pay

typedefstructpay

{

longnum;

shortmonth;

charname[20];

floatgw,jn,zw,zl,jt,yj;

floatshould_pay;

floatfz,gj,sd,others;

floatrebate;

floatactual_pay;

structpay*next;

}PAY;

FILE*fp;

PAY*p1=NULL,*p2=NULL,*head=NULL;

voidmenu();

PAY*input();

voidoutput();

voidsave(PAY*head);

PAY*open();

PAY*insert();

voidsearch();

PAY*del();

PAY*revise();

/*主程序模块*/

voidmain(void)

{

shortsel;

do

{

menu();

scanf("%d",&sel);

switch(sel)

{

case1:

head=input();建工资档案\n");

printf("\t\t\t\t2.新增工资信息\n");

printf("\t\t\t\t3.修改工资信息\n");

printf("\t\t\t\t4.删除工资信息\n");

printf("\t\t\t\t5.查找工资信息\n");

printf("\t\t\t\t6.分类信息列表\n");

printf("\t\t\t\t7.保存信息\n");

printf("\t\t\t\t0.退出\n");

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

}

/*输入模块*/

PAY*input()

{

shortn=1;

p1=(PAY*)malloc(sizeof(PAY));

if(p1==NULL)

{

printf("内存不足,无法创建链表!

");

getch();

}

printf("\n请输入第%d位职工的信息(以工号为0结束):

\n",n);

printf("工号:

");

scanf("%d",&p1->num);

if(p1->num==0)

{

printf("按任意键返回!

");

getch();

free(p1);

return0;

}

getchar();

printf("姓名:

");

gets(p1->name);

printf("工资月份:

");

scanf("%d",&p1->month);

printf("岗位工资,技能工资,职务津贴,职龄津贴,交通补贴,业绩津贴:

\n");

scanf("%f,%f,%f,%f,%f,%f",&p1->gw,&p1->jn,&p1->zw,&p1->zl,&p1->jt,&p1->yj);

printf("房租扣款,公积金,水电费,其它扣款:

\n");

scanf("%f,%f,%f,%f",&p1->fz,&p1->gj,&p1->sd,&p1->others);

p1->should_pay=p1->gw+p1->jn+p1->zw+p1->zl+p1->jt+p1->yj;

p1->rebate=p1->fz+p1->gj+p1->sd+p1->others;

p1->actual_pay=p1->should_pay-p1->rebate;

while(p1!

=NULL)

{

if(n==1)

head=p1;

else

p2->next=p1;

n++;

p2=p1;

p1=(PAY*)malloc(sizeof(PAY));

if(p1==NULL)

{

printf("内存不足,无法创建链表!

");

getch();

}

printf("请输入第%d位职工的信息(以工号为0结束):

\n",n);

printf("工号:

");

scanf("%d",&p1->num);

getchar();

if(p1->num==0)

{

p1=NULL;

break;

}

printf("姓名:

");

gets(p1->name);

printf("工资月份:

");

scanf("%d",&p1->month);

printf("岗位工资,技能工资,职务津贴,职龄津贴,交通补贴,业绩津贴:

\n");

scanf("%f,%f,%f,%f,%f,%f",&p1->gw,&p1->jn,&p1->zw,&p1->zl,&p1->jt,&p1->yj);

printf("房租扣款,公积金,水电费,其它扣款:

\n");

scanf("%f,%f,%f,%f",&p1->fz,&p1->gj,&p1->sd,&p1->others);

p1->should_pay=p1->gw+p1->jn+p1->zw+p1->zl+p1->jt+p1->yj;

p1->rebate=p1->fz+p1->gj+p1->sd+p1->others;

p1->actual_pay=p1->should_pay-p1->rebate;

}

p2->next=NULL;

部清单\n");

printf("\t\t2.按月输出\n");

printf("\t\t3.按工资段输出\n");

printf("\t\t0.返回\n");

scanf("%d",&sel);

}while(sel!

=1&&sel!

=2&&sel!

=3&&sel!

=0);

head=open();

if(head==NULL)

return;

else

switch(sel)

{

case1:

printf("\n\t\t\t******全部清单******\n");

printf(TITLE);

p1=head;

do

{

printf(DATA);

p1=p1->next;

}while(p1!

=NULL);

break;

case2:

flag=0;

printf("输入要查的月份:

");

scanf("%d",&month);

printf("\n\t\t\t******第%d月工资清单******\n",month);

printf(TITLE);

p1=head;

do

{

if(p1->month==month)

{

printf(DATA);

p1=p1->next;

flag=1;

}

else

p1=p1->next;

}while(p1!

=NULL);

if(flag==0)

printf("没有该月清单\n");

break;

case3:

flag=0;

printf("输入最低工资:

");

scanf("%f",&min);

printf("输入最高工资:

");

scanf("%f",&max);

printf("\n\t\t******%到%工资的名单******\n",min,max);

printf(TITLE);

p1=head;

do

{

if(p1->actual_pay>min&&p1->actual_pay

{

printf(DATA);

p1=p1->next;

flag=1;

}

else

p1=p1->next;

}while(p1!

=NULL);

if(flag==0)

printf("没有该工资段的职工\n");

break;

case0:

break;

}

}while(sel!

=0);

}

/*保存文件*/

voidsave(PAY*head)

{

shortwrite;

fp=fopen("","w");

if(fp==NULL)

{

printf("创建文件失败!

");

getch();

return;

}

p1=p2=head;

while(p1!

=NULL)

{

write=fwrite(p1,sizeof(PAY),1,fp);

if(!

write)

{

printf("无法写入文件!

");

getch();

return;

}

p1=p1->next;

}

fclose(fp);

printf("成功存盘!

");

getch();

}

/*打开文件*/

PAY*open()

{

shortn=1,read;

fp=fopen("","r");

if(fp==NULL)

{

printf("无法打开档案文件!

");

getch();

returnNULL;

}

if((p1=p2=(PAY*)malloc(sizeof(PAY)))==NULL)

{

printf("内存不足!

");

getch();

returnNULL;

}

read=fread(p1,sizeof(PAY),1,fp);

if(!

read)

{

printf("文件读取出错!

1");

getch();

returnNULL;

}

if(p1->next==NULL)

head=p1;

else

{

do

{

if(n==1)

head=p1;

else

p2->next=p1;

n++;

p2=p1;

if((p1=(PAY*)malloc(sizeof(PAY)))==NULL)

{

printf("内存不足!

");

getch();

returnNULL;

}

read=fread(p1,sizeof(PAY),1,fp);

if(!

read)

{

printf("文件读取出错!

2");

getch();

returnNULL;

}

}while(p1->next!

=NULL);

p2->next=p1;

}

returnhead;

fclose(fp);

}

/*插入模块*/

PAY*insert()

{

PAY*p3=NULL;

charsel;

head=open();

if(head==NULL)

returnNULL;

else

do

{

printf("请输入要插入的职工信息:

\n");

p3=(PAY*)malloc(sizeof(PAY));

if(p3==NULL)

{

printf("内存不足,无法创建链表!

");

getch();

}

printf("工号:

");

scanf("%d",&p3->num);

getchar();

printf("姓名:

");

gets(p3->name);

printf("工资月份:

");

scanf("%d",&p3->month);

printf("岗位工资,技能工资,职务津贴,职龄津贴,交通补贴,业绩津贴:

\n");

scanf("%f,%f,%f,%f,%f,%f",&p3->gw,&p3->jn,&p3->zw,&p3->zl,&p3->jt,&p3->yj);

printf("房租扣款,公积金,水电费,其它扣款:

\n");

scanf("%f,%f,%f,%f",&p3->fz,&p3->gj,&p3->sd,&p3->others);

p3->should_pay=p3->gw+p3->jn+p3->zw+p3->zl+p3->jt+p3->yj;

p3->rebate=p3->fz+p3->gj+p3->sd+p3->others;

p3->actual_pay=p3->should_pay-p3->rebate;

p1=head;

while(p1!

=NULL)

{

p2=p1;

p1=p1->next;

}

p2->next=p3;

p3->next=NULL;

printf("成功插入,是否继续是(Y)否(N)\n");

sel=getch();

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

printf("\n任意键返回,并存盘……\n");

getch();

returnhead;

}

/*查找模块*/

voidsearch()

{

shortsel;

longnum;

charname[20],choose;

head=open();

if(head==NULL)

return;

else

do

{

do

{

printf("\n选择查找方式:

\n");

printf("\t\t1.按工号查找\n");

printf("\t\t2.按姓名查找\n");

scanf("%d",&sel);

getchar();

}while(sel!

=1&&sel!

=2);

switch(sel)

{

case1:

printf("输入要查的工号:

");

scanf("%ld",&num);

break;

case2:

printf("输入要查的姓名:

");

gets(name);

break;

}

p1=head;

while((p1->next!

=NULL)&&(p1->num!

=num)&&(strcmp(p1->name,name)!

=0))工号删除\n");

printf("\t\t2.按姓名删除\n");

scanf("%d",&sel);

getchar();

}while(sel!

=1&&sel!

=2);

switch(sel)

{

case1:

printf("输入要删除的工号:

");

scanf("%ld",&num);

break;

case2:

printf("输入要删除的姓名:

");

gets(name);

break;

}

p1=head;

if((p1->num==num)||strcmp(p1->name,name)==0)

{

head=p1->next;

printf("删除信息成功!

");

}

else

{

while((p1->next!

=NULL)&&(p1->num!

=num)&&(strcmp(p1->name,name)!

=0))

{

p2=p1;

p1=p1->next;

}

if((p1->num==num)||strcmp(p1->name,name)==0)

{

p2->next=p1->next;

free(p1);

printf("\n删除信息成功!

\n");

}

else

printf("\n没有该信息!

\n");

}

printf("是否继续是(Y)否(N)\n");

choose=getch();

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

printf("任意键返回,并存盘……");

getch();

returnhead;

}

/*修改模块*/

PAY*revise()

{

shortsel;

longnum;

charname[20],choose;

head=open();

if(head==NULL)

returnNULL;

else

do

{

do

{

printf("\n查找要修改的对象:

\n");

printf("\t\t1.按工号查找\n");

printf("\t\t2.按姓名查找\n");

scanf("%d",&sel);

getchar();

}while(sel!

=1&&sel!

=2);

switch(sel)

{

case1:

printf("输入要查的工号:

");

scanf("%ld",&num);

break;

case2:

printf("输入要查的姓名:

");

gets(name);

break;

}

p1=head;

while((p1->next!

=NULL)&&(p1->num!

=num)&&(strcmp(p1->name,name)!

=0))//用成p1!

=NULL有问题

p1=p1->next;

if((p1->num==num)||strcmp(p1->name,name)==0)

{

printf("您要修改的原始信息如下:

\n");

printf(TITLE);

printf(DATA);

printf("\n将上述信息改为如下信息:

\n");

printf("工号:

");

scanf("%d",&p1->num);

getchar();

printf("姓名:

");

gets(p1->name);

printf("工资月份:

");

scanf("%d",&p1->month);

printf("岗位工资,技能工资,职务津贴,职龄津贴,交通补贴,业绩津贴:

\n");

scanf("%f,%f,%f,%f,%f,%f",&p1->gw,&p1->jn,&p1->zw,&p1->zl,&p1->jt,&p1->yj);

printf("房租扣款,公积金,水电费,其它扣款:

\n");

scanf("%f,%f,%f,%f",&p1->fz,&p1->gj,&p1->sd,&p1->others);

p1->should_pay=p1->gw+p1->jn+p1->zw+p1->zl+p1->jt+p1->yj;

p1->rebate=p1->fz+p1->gj+p1->sd+p1->others;

p1->actual_pay=p1->should_pay-p1->rebate;

}

else

printf("你要修改的信息不存在!

\n");

printf("是否继续是(Y)否(N)\n");

choose=getch();

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

printf("任意键返回,并存盘……");

getch();

returnhead;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1