提供完整代码:www.huaianguandanwang.com
#include
#include
#include
#include
#include
#define TITLE "\n 月份工号姓名应发工资各种折扣实发工资\n"
#define DA TA " %2d %4ld %-10s %6.1f %6.1f %6.1f\n",p1->month,p1->num,p1->na me,p1->should_pay,p1->rebate,p1->actual_pay
typedef struct pay
{
long num;
short month;
char name[20];
float gw,jn,zw,zl,jt,yj;
float should_pay;
float fz,gj,sd,others;
float rebate;
float actual_pay;
struct pay *next;
}PA Y;
FILE *fp;
PAY *p1=NULL,*p2=NULL,*head=NULL;
void menu();
PAY *input();
void output();
void save(PAY *head);
PAY *open();
PAY *insert();
void search();
PAY *del();
PAY *revise();
/*主程序模块*/
void main(void)
{
short sel;
do
{
menu();
scanf("%d",&sel);
switch(sel)
{
case 1:
head=input(); //输入模块
break;
case 2:
head=insert(); //插入模块
break;
case 3:
head=revise(); //修改模块
break;
case 4:
head=del(); //删除模块
break;
case 5:
search(); //查找模块
break;
case 6:
output(); //输出模块
break;
case 7:
save(head); //保存模块
break;
case 0:
break;
}
}while(sel!=0);
}
/*菜单*/
void menu()
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t\t *主菜单选项*\n\n"); printf("\t\t\t\t1.创建工资档案\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.分类信息列
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
\n"); printf("\t\t\t\t7.保存信息\n"); printf("\t\t\t\t0.退出\n"); printf("\n\n\n\n\n\n\n\n");
/*输入模块*/
PAY *input()
{
short n=1;
p1=(PA Y*)malloc(sizeof(PA Y));
if(p1==NULL)
{
printf("内存不足,无法创建链表!");
getch();
}
printf("\n请输入第%d位职工的信息(以工号为0结束):\n",n);
printf(" 工号:");
scanf("%d",&p1->num);
if(p1->num==0)
{
printf("按任意键返回!");
getch();
free(p1);
return 0;
}
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=(PA Y*)malloc(sizeof(PA Y));
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;
//edit by Y an-Xingyu Class Network-021
printf("职工信息已输入,请按任意键返回,并存盘……");
getch();
return head;
}
/*输出模块*/
void output()
{
short sel,flag,month;
float min,max;
do
{
do
{
printf("\n\n请选择您的列表方式:\n");
printf("\t\t1.全部清单\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)
{
case 1:
printf("\n\t\t\t ******全部清单******\n");
printf(TITLE);
p1=head;
do
{
printf(DA TA);
p1=p1->next;
}while(p1!=NULL);
break;
case 2:
flag=0;
printf("输入要查的月份:");
scanf("%d",&month);
printf("\n\t\t\t******第%d月工资清单******\n",month); printf(TITLE);
p1=head;
do
{
if(p1->month==month)
{
printf(DA TA);
p1=p1->next;
flag=1;
}
else
p1=p1->next;
}while(p1!=NULL);
if(flag==0)
printf("没有该月清单\n");
break;
case 3:
flag=0;
printf("输入最低工资:");