您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页C++ 工资管理系统 源代码

C++ 工资管理系统 源代码

来源:欧得旅游网


#include

#include

#include

#include

#include

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

#define DATA

\" %2d %4ld %-10s %6.1f %6.1f %6.1f\\n\m,p1->name,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;

}PAY;

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\

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(\"\\\\ *主菜单选项*\\n\\n\");

printf(\"\\\\1.创建工资档案\\n\");

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

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

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

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

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

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

printf(\"\\\\0.退 出\\n\");

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

}

/*输入模块*/

PAY *input()

{

short n=1;

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

if(p1==NULL)

{

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

getch();

}

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

printf(\" 工号:\");

scanf(\"%d\

if(p1->num==0)

{

printf(\"按任意键返回!\");

getch();

free(p1);

return 0;

}

getchar();

printf(\" 姓名:\");

gets(p1->name);

printf(\" 工资月份:\");

scanf(\"%d\

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

scanf(\"%f,%f,%f,%f,%f,%f\->yj);

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

scanf(\"%f,%f,%f,%f\

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\

printf(\" 工号:\");

scanf(\"%d\

getchar();

if(p1->num==0)

{

p1=NULL;

break;

}

printf(\" 姓名:\");

gets(p1->name);

printf(\" 工资月份:\");

scanf(\"%d\

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

scanf(\"%f,%f,%f,%f,%f,%f\->yj);

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

scanf(\"%f,%f,%f,%f\

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 Yan-Xingyu Class Network-021

printf(\"职工信息已输入,请按任意键返回,并存盘……\");

getch();

return head;

}

/*输出模块*/

void output()

{

short sel,flag,month;

float min,max;

do

{

do

{

printf(\"\\n\\n请选择您的列表方式:\\n\");

printf(\"\\1.全部清单\\n\");

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

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

printf(\"\\0.返回\\n\");

scanf(\"%d\

}while(sel!=1&&sel!=2&&sel!=3&&sel!=0);

head=open();

if(head==NULL)

return;

else

switch(sel)

{

case 1:

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

p1=head;

do

******全部清单******\\n\");

{

printf(DATA);

p1=p1->next;

}while(p1!=NULL);

break;

case 2:

flag=0;

printf(\"输入要查的月份:\");

scanf(\"%d\

printf(\"\\n\\\******第%d月工资清单******\\n\

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;

case 3:

flag=0;

printf(\"输入最低工资:\");

scanf(\"%f\

printf(\"输入最高工资:\");

scanf(\"%f\

printf(\"\\n\\ ******%5.1f到%5.1f工资的名单******\\n\

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;

case 0:

break;

}

}while(sel!=0);

}

/*保存文件*/

void save(PAY *head)

{

short write;

fp=fopen(\"pay.txt\

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()

{

short n=1,read;

fp=fopen(\"pay.txt\

if(fp==NULL)

{

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

getch();

return NULL;

}

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

{

printf(\"内存不足!\");

getch();

return NULL;

}

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

if(!read)

{

printf(\"文件读取出错!1\");

getch();

return NULL;

}

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();

return NULL;

}

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

if(!read)

{

printf(\"文件读取出错!2\");

getch();

return NULL;

}

}while(p1->next!=NULL);

p2->next=p1;

}

return head;

fclose(fp);

}

/*插入模块*/

PAY *insert()

{

PAY *p3=NULL;

char sel;

head=open();

if(head==NULL)

return NULL;

else

do

{

printf(\"请输入要插入的职工信息:\\n\");

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

if(p3==NULL)

{

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

getch();

}

printf(\" 工号:\");

scanf(\"%d\

getchar();

printf(\" 姓名:\");

gets(p3->name);

printf(\" 工资月份:\");

scanf(\"%d\

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

scanf(\"%f,%f,%f,%f,%f,%f\->yj);

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

scanf(\"%f,%f,%f,%f\

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();

return head;

}

/*查找模块*/

void search()

{

short sel;

long num;

char name[20],choose;

head=open();

if(head==NULL)

return;

else

do

{

do

{

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

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

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

scanf(\"%d\

getchar();

}while(sel!=1&&sel!=2);

switch(sel)

{

case 1:

printf(\"输入要查的工号:\");

scanf(\"%ld\

break;

case 2:

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);

}

else

printf(\"没有该信息!\\n\");

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

choose=getch();

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

printf(\"任意键返回\");

getch();

}

/*删除模块*/

PAY *del()

{

short sel;

long num;

char name[20],choose;

head=open();

if(head==NULL)

return NULL;

else

do

{

do

{

printf(\"\\n选择删除方式:\\n\");

printf(\"\\1.按工号删除\\n\");

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

scanf(\"%d\

getchar();

}while(sel!=1&&sel!=2);

switch(sel)

{

case 1:

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

scanf(\"%ld\

break;

case 2:

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();

return head;

}

/*修改模块*/

PAY *revise()

{

short sel;

long num;

char name[20],choose;

head=open();

if(head==NULL)

return NULL;

else

do

{

do

{

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

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

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

scanf(\"%d\

getchar();

}while(sel!=1&&sel!=2);

switch(sel)

{

case 1:

printf(\"输入要查的工号:\");

scanf(\"%ld\

break;

case 2:

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\

getchar();

printf(\" 姓名:\");

gets(p1->name);

printf(\" 工资月份:\");

scanf(\"%d\

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

scanf(\"%f,%f,%f,%f,%f,%f\->yj);

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

scanf(\"%f,%f,%f,%f\

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();

return head;

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务