| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4877 人关注过本帖, 1 人收藏
标题:【求助】c语言工资管理系统问题
取消只看楼主 加入收藏
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:7 
【求助】c语言工资管理系统问题
代码如下,保存数据的函数是不是有错,每次关闭程序,再进去  之前输入的工资数据就没有了,求助大神。谢谢
#include <stdio.h>
#include <stdlib.h>
void menu();
void menu1();
void input(int *n,struct information *p);
void save(int *n,struct information *p);
void calcu(int *n,struct information *p);
void write(int *n,struct information *p);
void find(int *n,struct information *p);
void load();
void view(int *n,struct information *p);
struct information
{

long num;

float base;

float fact;

float jin;

float gin;

float bin;

float fin;

float jbin;

float save;

float hin;
}a[1000];
main()
{
    struct information a[1000];

int amd,n;

menu();

scanf("%d",&amd);

while(amd!=0)

{

if(amd==1)

{

system("cls");

input(&n,a);

system("cls");

        menu();

}

if(amd==2)

{

system("cls");

calcu(&n,a);

system("cls");

menu();

}

if(amd==3)

{

system("cls");

write(&n,a);

system("cls");

menu();

}

if(amd==4)

{

system("cls");

find(&n,a);

system("cls");

menu();

}

if(amd==5)

{

system("cls");

view(&n,a);

system("cls");

menu();

}

scanf("%d",&amd);

}

}
void menu()
{
    printf("************************************主菜单************************************\n\n\n\n");

printf("    1.添加职工工资信息\t");

printf("            2.计算个人所得税\n\n");

printf("    3.修改工人记录\t");

printf("            4.查询工资信息\n\n");

printf("    5.统计工资信息\t");

printf("            6.删除个人工资信息\n\n\n");

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

printf("    \n\n\n输入序号选择功能\n");

}
void menu1()
{

printf("按任意数字返回主菜单\n");
}
void input(int *n,struct information *p)
{

int i,amd,j,k,l;

l=*n;

printf("输入职工人数");

scanf("%d",n);


for(i=0;i<*n;i++)

{

printf("请按职工工号 基本工资 实发工资 津贴 岗贴 补贴 房帖 交通补贴 储蓄 汇费的顺序输入数据");

scanf("%ld,%f,%f,%f,%f,%f,%f,%f,%f,%f",&p->num,&p->base,&p->fact,&p->jin,&p->gin,&p->bin,&p->fin,&p->jbin,&p->save,&p->hin);

}

for(i=0;i<*n-1;i++)

{

for(j=0;j<*n-1-i;j++)

{

if(p[j].base<p[j+1].base)

{

k=p[j].base;

p[j].base=p[j+1].base;

p[j+1].base=k;

}

}

}

save(&l,a);

menu1();

scanf("%d",&amd);
}
void save(int *n,struct information *p)  
{
   int i;
   FILE*fp;
   if ((fp=fopen("gongzi_list","wb"))==NULL)
   {
     printf ("cannot open file\n");
     exit(0);
   }
   for (i=0;i<*n;i++)
   if (fwrite(&a[i],sizeof(struct information),1,fp)!=1)
   printf("file write error\n");
   fclose(fp);
}

void calcu(int *n,struct information *p)
{

float tax[1000]={0};

int i=0,j,amd;

while(i<*n)

{

if(p->base-1000<0)

{

tax[i]=0;

}

else if(p->base-1000>=0&&p->base-5000<=0)

{

tax[i]=(p->base-1000)/100;

}

else

{

tax[i]=(p->base-5000)/100*3+3000/100;


}


i++;

}

j=0;
    while(j<*n)

{

printf("%4ld    %f\n",p[j].num,tax[j]);

    j++;

}

menu1();

scanf("%d",&amd);
}
void write(int *n,struct information *p)
{

long input;

int i,amd;

printf("请输入工号");
here:
scanf("%ld",&input);

for(i=0;i<*n;i++)

{

if(p->num==input)

{

printf("修改信息,把新信息按职工工号 基本工资 实发工资 津贴 岗贴 补贴 房帖 交通补贴 储蓄 汇费的顺序输入");

scanf("%ld,%f,%f,%f,%f,%f,%f,%f,%f,%f",&p->num,&p->base,&p->fact,&p->jin,&p->gin,&p->bin,&p->fin,&p->jbin,&p->save,&p->hin);

}

else

{

printf("无此工号,请重新输入");
            goto here;

}

}

menu1();

scanf("%d",&amd);
}
void find(int *n,struct information *p)
{

long input;

int i,j,amd;

printf("输入要查询的工号");
here:
scanf("%ld",&input);

for(i=0;i<*n;i++)

{
        load();

if(input==p->num)

{

printf("工号:%ld\n%基本工资:%f\n实发工资:%f\n津贴:%f\n岗贴:%f\n补贴:%f\n房帖:%f\n交通补贴:%f\n储蓄:%f\n汇费:%f\n",p->num,p->base,p->fact,p->jin,p->gin,p->bin,p->fin,p->jbin,p->save,p->hin);

}

else

{

printf("无此工号,请重新输入");
            goto here;

}

}

menu1();

scanf("%d",&amd);
}
void load()
{
     int i;
     FILE*fp;
     if((fp=fopen("gongzi_list","rb"))==NULL)
         {
     printf ("cannot open file\n");
     exit(0);
         }
else
{
  do
  {
        i=0;
        fread(&a[i],sizeof(struct information),1,fp);
        i++;
  }
  while(feof(fp)==0);
}
fclose(fp);
}
void view(int *n,struct information *p)
{

int i,amd;

load();

printf("工号  基本工资  实发工资  津贴  岗贴  补贴  房帖  交通补贴  储蓄  汇费\n");

for(i=0;i<*n;i++)

{

printf("\n%ld  %5f  %5f  %5f  %5f  %5f  %5f  %5f  %5f  %5f  ",p->num,p->base,p->fact,p->jin,p->gin,p->bin,p->fin,p->jbin,p->save,p->hin);

printf("\n");

}

menu1();

scanf("%d",&amd);
}

[此贴子已经被作者于2015-12-13 21:54编辑过]

搜索更多相关主题的帖子: 管理系统 include c语言 write 
2015-12-13 17:31
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
收藏
得分:0 
一下午了  求帮助
2015-12-13 17:32
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
收藏
得分:0 
求大神
2015-12-13 17:32
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
收藏
得分:0 
2015-12-13 17:36
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
收藏
得分:0 
回复 5楼 newdos
改了,还是不行。求帮助
2015-12-13 21:55
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
收藏
得分:0 
回复 5楼 newdos
而且我就是输入一个数据,只要程序关闭,再打开,记录就没了
2015-12-13 21:56
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
收藏
得分:0 
回复 8楼 newdos
等你
2015-12-14 10:57
jobs19951130
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-12-12
收藏
得分:0 
回复 10楼 newdos
因为没学完老师就让做这个,所以草草的看了看书就写了,问一下   读取数据的代码中的 *n = i-1; 这句起什么作用,我发现加上它就可以了,去掉就不能了
2015-12-14 22:09
快速回复:【求助】c语言工资管理系统问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022572 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved