#include<stdlib、h>
#include〈string、h>
#include<conio、h〉
#include〈math、h>
#define SIZE 100
typedefstruct
{
ﻩlongno; /*每一组输入得编号*/
longNumber;/*家庭成员编号*/
charName[20]; /*家庭成员姓名*/
floatin; /*家庭成员收入*/
charintime[10]; /*收入时间*/
floatout; /*家庭成员支出*/
ﻩcharouttime[10]; /*支出时间*/
float sum; /*总计*/
}money;
//-—---—---——--—---—------—--—--———--—--——-—-——-——--——-—-—--—-——
voiddayinshou()
{FILE *fp;
money Tm;
charDa[40],next;
printf("请输入您要查询得文件名\n");
gets(Da);
fp=fopen(Da,”rb”); /*只读方式打开二进制文件*/
if(fp==NULL)
{
printf(”\n打开文件%s失败!
按任意键结束!
\n",Da);
exit(0);
}
printf("文件全部内容如下:
\n\n");
while(fread(&Tm,sizeof(money),1,fp)!
=(int)NULL) /*读取文件内容,并判断就是否成功*/
{printf("###############################################\n”);
printf("\n成员编号:
%ld\n”,Tm、Number);
ﻩ printf("成员姓名:
%s\n",Tm、Name);
printf("成员收入:
%f元\n",Tm、in);
printf("收入时间:
%s\n",Tm、intime);
printf("###############################################\n”);
ﻩprintf("\n\n");
}
fclose(fp);
next=getche();
}
//—-—-—------———-------—---——---—---—----—-——-——--——----—--——-———---———--——-
voiddayinzhi()
{FILE*fp;
moneyTm;
charDa[40],next;
printf("请输入您要查询得文件名\n”);
gets(Da);
fp=fopen(Da,"rb"); /*只读方式打开二进制文件*/
if (fp==NULL)
{
printf("\n打开文件%s失败!
按任意键结束!
\n”,Da);
exit(0);
}
printf("文件全部内容如下:
\n\n”);
while(fread(&Tm,sizeof(money),1,fp)!
=(int)NULL)/*读取文件内容,并判断就是否成功*/
{printf(”###############################################\n");
printf(”\n成员编号:
%ld\n”,Tm、Number);
ﻩ printf("成员姓名:
%s\n”,Tm、Name);
ﻩﻩprintf("成员支出:
%f元\n”,Tm、out);
printf("支出时间:
%s\n",Tm、outtime);
printf("###############################################\n");
ﻩprintf("\n\n”);
}
fclose(fp);
next=getche();
}
//—---—--—-——-—-—-——-—---—-————--—--——-—--—-—--—--—-—----—-—-—---—--——--—----——--
voidchaxunzhi()/*按编号查询家庭成员财务支信息记录*/
{
intresult;/*"result=1"说明查询成功,反之查找失败*/
moneyTm;/*定义进行操作时得临时结构体变量*/
longbianhao,before=0;
charDa[40],next;
/*Da存储家庭成员财务信息得文件名,next为就是否进行下一次操作得选项*/
FILE*fp=NULL;
/*提示用户输入要查询得文件名*/
printf("\n请输入存储数据得文件名,按回车键结束。
\n”);
gets(Da);
/*提示用户输入要查询得家庭成员编号*/
begin:
result=0;system("cls");
printf(”请输入要查询得家庭成员编号,按回车键结束.\n");
scanf("%ld",&bianhao);
getchar();
fp=fopen(Da,”rb"); /*只读方式打开文件*/
if(fp==NULL)
{
printf("\n打开文件%s失败!
按任意键结束!
\n",Da);
exit(0);
}
/*循环查找与输入编号相匹配得家庭成员财务收支信息记录,如果查找到,则输出结果*/
while(feof(fp)==0) /*没有读到文件得结尾*/
{if(fread(&Tm,sizeof(money),1,fp)!
=(int)NULL) /*判断就是否从文件中成功读取数据*/
{if(Tm、Number==bianhao) /*文件内容编号与输入编号一致*/
{if(before!
=Tm、Number)
{system("cls”);printf(”\n查找成功!
\n\n您要查找得家庭成员得信息如下:
\n”);}
printf(”######################################\n");
printf("\n成员编号:
%ld\n",Tm、Number);
ﻩprintf("成员姓名:
%s\n",Tm、Name);
ﻩprintf("成员支出:
%f 元\n”,Tm、out);
ﻩprintf("支出时间:
%s\n",Tm、outtime);
ﻩprintf("######################################\n"); result=1;/*"result=1”说明找到了该家庭成员得对应信息、*/
ﻩﻩbefore=Tm、Number;ﻩﻩ
}
}
}
fclose(fp);
if(result==0)
{
system(”cls”);
printf("对不起!
\n文件中没有该家庭成员所对应得信息.\n”);
}
printf("\n继续?
(就是:
y/Y,否:
n/N)\n");
next=getche();
putchar('\n’);system("cls");
if(next=='y’||next=='Y')goto begin;
}
//--—--——-—--------—---—-—-——----—--—--—--——-—-—-----—------------—-—-—-————-----—
void chaxunshou() /*按编号查询家庭成员财务收支信息记录*/
{
intresult;/*"result=1"说明查询成功,反之查找失败 */
moneyTm;/*定义进行操作时得临时结构体变量*/
long bianhao,before=0;
char Da[40],next;
/*Da存储家庭成员财务信息得文件名,next为就是否进行下一次操作得选项*/
FILE*fp=NULL;
/*提示用户输入要查询得文件名*/
printf(”\n请输入存储数据得文件名,按回车键结束。
\n”);
gets(Da);
/*提示用户输入要查询得家庭成员编号*/
begin:
result=0;system(”cls”);
printf("请输入要查询得家庭成员编号,按回车键结束.\n");
scanf("%ld”,&bianhao);
getchar();
fp=fopen(Da,"rb”); /*只读方式打开文件*/
if(fp==NULL)
{
printf("\n打开文件%s失败!
按任意键结束!
\n",Da);
exit(0);
}
ﻩ/*循环查找与输入编号相匹配得家庭成员财务收支信息记录,如果查找到,则输出结果*/
while(feof(fp)==0) /*没有读到文件得结尾*/
{if(fread(&Tm,sizeof(money),1,fp)!
=(int)NULL) /*判断就是否从文件中成功读取数据*/
{if(Tm、Number==bianhao) /*文件内容编号与输入编号一致*/
{if(before!
=Tm、Number)
{system("cls");printf("\n查找成功!
\n\n您要查找得家庭成员得信息如下:
\n”);}
printf("######################################\n”);
printf("\n成员编号:
%ld\n",Tm、Number);
printf(”成员姓名:
%s\n”,Tm、Name);
printf(”成员收入:
%f 元\n",Tm、in);
ﻩprintf("收入时间:
%s\n",Tm、intime);
ﻩprintf("######################################\n");result=1;/*" result=1”说明找到了该家庭成员得对应信息、*/
ﻩbefore=Tm、Number;ﻩ
}
}
}
fclose(fp);
if(result==0)
{
system("cls”);
printf(”对不起!
\n文件中没有该家庭成员所对应得信息。
\n");
}
printf(”\n继续?
(就是:
y/Y,否:
n/N)\n”);
next=getche();
putchar('\n’);system("cls”);
if(next==’y’||next=='Y’)gotobegin;
}
//—------——----——-—---—---------——--——-----—--—-—-—--—----—------——-——--—--—---———--
voidxiugaizhi() /*修改家庭成员收支信息记录*/
{
inti,result=0;
longmodnum;/*存储要修改得家庭成员序号*/
/*输入各项修改后信息*/
long no,Number;
charName[20];
floatin;
ﻩcharintime[10];
float out;
charouttime[10];
floatsum;
moneyTm; /*定义进行操作时得临时结构体变量*/
moneys[SIZE]; /*SIZE,在shead、h头文件中定义得常量,值为100 */
int recNumber;
charDa[40],next;
/*Da存储家庭成员收支信息信息得文件名,next为就是否进行下一次操作得选项*/
FILE*fp;/*fp指针指向存储数据得文件名*/
/*输入要进行修改记录得文件名*/
printf("\n请输入存储数据得文件名,按回车键结束!
\n");
gets(Da);
begin:
fp=fopen(Da,”rb"); /*只读方式打开文件*/
if(fp==NULL)
{
printf(”\n打开文件%s失败!
按任意键结束!
\n”,Da);
exit(0);
}
printf(”请输入您要修改得家庭成员得成员编号:
");
scanf(”%ld",&modnum);
printf("您要修改得成员编号就是:
%ld\n\n",modnum);
ﻩwhile(fread(&Tm,sizeof(money),1,fp)!
=(int)NULL) /*读取文件内容,判断就是否读取成功*/
ﻩ{
ﻩﻩif(Tm、Number==modnum) /*输入得编号与文件内容得编号一致*/
ﻩﻩ{
ﻩﻩprintf(”############################\n”);
ﻩprintf("\n该项内容编号:
%ld\n",Tm、no);
ﻩﻩprintf("\n成员编号:
%ld\n",Tm、Number);
ﻩﻩprintf("\n成员姓名:
%s\n",Tm、Name);
ﻩﻩprintf(”\n 成员支出:
%f元\n",Tm、out);
ﻩprintf(”\n支出时间:
%s\n",Tm、outtime);
ﻩﻩprintf("############################\n");
ﻩresult=1;
ﻩ}
ﻩ}
rewind(fp); /*把文件指针指向文件得开头*/
if(result==0)
{printf("您输入得编号不存在,请确认后重新输入:
\n”);
printf("\n就是否继续?
(就是:
y/Y,否:
n/N)");
next=getche();system(”cls”);
putchar('\n');
if(next=='y'||next=='Y’)gotobegin;
elseexit(0);
}
result=0;
ﻩprintf(”请输入您要修改得该项内容编号:
\n");
scanf("%ld”,&no);
/*输入要修改记录得各项内容值*/
Number=modnum;
printf("输入姓名,支出,支出时间,输入编号为0时结束!
\n");
printf(”成员姓名:
”);
scanf("%s",Name);
printf(”成员支出:
");
scanf(”%f”,&out);
printf("支出时间:
");
scanf(”%s",outtime);
sum=in-out;
/*将文件中要修改得信息存入结构体数组*/
recNumber=0;
/*循环将文件数据读入结构体数组,
如文件中得数据家庭成员内容编号与要修改得家庭成员内容编号不符,则原样写入数组,
如文件中数据得家庭成员内容编号与要修改家庭成员内容编号匹配,
则根据输入得各项修改内容重新赋值,即修改,并写入数组*/
while((fread(&Tm,sizeof(money),1,fp))!
=(int)NULL) /*读取文件内容.就是否成功*/
{
if(Tm、no!
=no) /*输入得内容编号与文件内容编号不一致*/
{
s[recNumber]、no=Tm、no;
s[recNumber]、Number=Tm、Number;
strcpy(s[recNumber]、Name,Tm、Name);
s[recNumber]、in=Tm、in;
strcpy(s[recNumber]、intime,Tm、intime);
s[recNumber]、out=Tm、out;
strcpy(s[recNumber]、outtime,Tm、outtime);
s[recNumber]、sum=Tm、sum;
}
if(Tm、no==no) /*输入得内容编号与文件内容编号一致*/
{
s[recNumber]、no=no;
s[recNumber]、Number=Number;
strcpy(s[recNumber]、Name,Name);
s[recNumber]、in=in;
strcpy(s[recNumber]、intime,intime);
s[recNumber]、out=out;
strcpy(s[recNumber]、outtime,outtime);
s[recNumber]、sum=sum;
ﻩresult=1;
}
recNumber++;
}
fclose(fp);
/*将修改后得结构体数组记录写入文件*/
fp=fopen(Da,"wb+"); /*打开文件,原文件内容清空*/
if(fp==NULL)
{
printf("\n打开文件%s失败!
按任意键结束!
\n”,Da);
exit(0);
}
for(i=0;i<recNumber;i++) /*采用循环将数据写入文件*/
{
if(fwrite(&s[i],sizeof(money),1,fp)!
=1)
{
printf("\n写入文件 %s 失败!
按任意键结束!
\n",Da);
exit(0);
}
}
fclose(fp);
ﻩif(result==1)
{
ﻩprintf("文件修改成功,已成功保存在用户文件夹\n");
ﻩﻩ/*询问就是否查瞧修改后得文件*/
printf("\n就是否查瞧修改后得文件?
(就是:
y/Y,否:
n/N)”);
next=getche();system("cls");
putchar('\n');
if(next=='y'||next=='Y')
{/*显示修改后得文件*/
fp=fopen(Da,"rb”); /*只读方式打开文件*/
if(fp==NULL)
{
printf(”\n打开文件%s失败!
按任意键结束!
\n",Da);
exit(0);
}
ﻩsystem(”cls");
printf(”\n修改后得文件全部内容就是:
\n");
while(fread(&Tm,sizeof(money),1,fp)!
=(int)NULL)
{printf(”############################\n\n”);
printf(”成员编号:
%ld\n",Tm、Number);
ﻩprintf(”成员姓名:
%s\n",Tm、Name);
ﻩprintf("成员支出:
%f元\n",Tm、out);
printf(" 支出时间:
%s\n”,Tm、outtime);
ﻩprintf(”############################\n");
ﻩﻩprintf(”\n”);
}
fclose(fp);
ﻩ}
ﻩ}
ﻩif(result==0)
printf("\n您输入得内容编号不存在.文件修改失败。
。
\n\n");
/*提示就是否进行下一次修改*/
printf(”\n就是否继续?
(就是:
y/Y,否:
n/N)");
next=getche();system(”cls");
putchar(’\n’);
if(next==’y’||next==’Y')gotobegin;
}
//-----——-—-—-----——----——-—---------—-——--——-———--—----—-———------—----—--——-——
voidxiugaishou() /*修改家庭成员收信息记录*/
{
inti,result=0;
long modnum;/*存储要修改得家庭成员序号*/
/*输入各项修改后信息*/
long no,Number;
charName[20];
floatin;
charintime[10];
floatout;
ﻩcharouttime[10];
floatsum;
moneyTm; /*定义进行操作时得临时结构体变量*/
money s[SIZE];/*SIZE,在shead、h头文件中定义得常量,值为100*/
int recNumber;
char Da[40],next;
/*Da存储家庭成员收支信息信息得文件名,next为就是否进行下一次操作得选项*/
FILE*fp;/*fp指针指向存储数据得文件名*/
/*输入要进行修改记录得文件名*/
printf("\n请输入存储数据得文件名,按回车键结束!
\n");
gets(Da);
begin:
fp=fopen(Da,"rb"); /*只读方式打开文件*/
if(fp==NULL)
{
printf("\n打开文件%s失败!
按任意键结束!
\n”,Da);
exit(0);
}
printf("请输入您要修改得家