c语言编写-家庭财务管理系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
s[recNumber].in=Tm.in;
strcpy(s[recNumber].intime,Tm.intime);
s[recNumber].out=Tm.out;
strcpy(s[recNumber].outtime,Tm.outtime);
if (fp==NULL) /*判断是否打开成功*/
{
printf("\n打开文件%s失败!按任意键结束!\n",Da);
exit(0);
}
while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据,是否读取成功*/
fp=fopen(Da,"ab+");
if (fp==NULL) /*判断文件是否成功打开*/
{
printf("\n 打开文件 %s 失败!按任意键结束!\n",Da);
exit(0);
}
while(fread(&ch,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据并判断是否成功*/
scanf("%f",&Tm.in);
printf("输入收入时间:");
scanf("%s",Tm.intime);
printf("输入成员支出:");
scanf("%f",&Tm.out);
printf("输入支出时间:");
{ printf("###############################################\n");
printf("成员编号:%ld\n",Tm.Number);
printf("成员姓名:%s\n",);
printf("成员收入:%f元\n",Tm.in);
}
/*询问是否删除*/
printf("\n你确定要删除该记录吗?删除后不可恢复!!(是:y/Y;否:n/N)");
next=getche();
putchar('\n');
if ( next=='y'||next=='Y')
{ system("cls");
printf("成员姓名:%s\n",);
printf("成员收入:%f元\n",Tm.in);
printf("收入时间:%s\n",Tm.intime);
printf("成员支出:%f元\n",Tm.out);
printf("支出时间:%s\n",Tm.outtime);
fclose(fp);
system("cls");
printf("您输入的数据已成功存储在 %s 文件中。\n",Da);
printf("文件全部内容如下:\n");
fp=fopen(Da,"rb"); /*只读方式打开二进制文件*/
printf("编号不超过九位,姓名不超过二十个字符。\n");
while(count<=SIZE)
{
Tm.no=count;
printf("\n 输入 编号为零时结束输入!\n");
printf("成员编号:");
scanf("%ld",&Tm.Number);
printf("收支总和:%f\n",Tm.sum);
printf("############################\n");
result=1;
}
}
rewind(fp); /*把文件指针重新指向文件的开头*/
if(result==0)
long Number; /*家庭成员编号*/
char Name[20]; /*家庭成员姓名*/
float in; /*家庭成员收入*/
char intime[10]; /*收入时间*/
float out; /*家庭成员支出*/
printf("恭喜!该项纪录已成功删除。。\n");
/*将文件中信息存入结构体数组*/
/*与要删除的家庭成员序号相匹配的项不写入数组,
循环后数组中即为去掉了要删除记录后的剩余记录*/
recNumber=0;
while((fread(&Tm,sizeof(money),1,fp))!=(int)NULL)/*从文件中读取数据,是否读取成功*/
{
if(Tm.Number!=delnum)
{
s[recNumber].no=Tm.no;
s[recNumber].Number=Tm.Number;
strcpy(s[recNumber].Name, );
}
/*输入要删除的家庭成员序号*/
printf("请输入要删除的家庭成员编号:");
scanf("%ld",&delnum);
printf("您要删除的编号是:%ld\n",delnum);
while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据,是否读取成功*/
s[recNumber].sum=Tm.sum;
recNumber++;
}
}
fclose(fp);
/*将删除后的剩余结构体记录写入文件*/
fp=fopen(Da,"wb+"); /*读写方式打开文件,原文件内容清空*/
printf("收入时间:%s\n",Tm.intime);
printf("成员支出:%f元\n",Tm.out);
printf("支出时间:%s\n",Tm.outtime);
printf("收支总和:%f\n",Tm.sum); printf("###############################################\n");
if (Tm.Number==0 ) /*如果输入的编号为0,结束*/
break;
printf("输入成员姓名:");
scanf("%s",);
printf("输入成员收入:");
{
count++;
}
fclose(fp);
/*如果成功打开或创建文件,则提示输入家庭成员序号、姓名、收入、支出等相关信息*/
fp=fopen(Da,"ab+");/*ab+:当文件存在时,追加,当文件不存在时,创建*/
printf("输入编号,姓名,收入,收入时间,支出,支出时间,输入编号为0时结束!\n");
}
void shanchushouzhi() /*删除家庭成员收支信息记录*/
{
int i,result=0;
long delnum; /*存放要输入的要删除家庭成员序号*/
money Tm; /*定义进行操作时的临时结构体变量*/
money s[SIZE];
int recNumber; /*原文件中的记录数*/
char Da[40],next;
FILE *fp; /*fp指针指向存储数据的文件名*/
printf("\n请输入存储数据的文件名,按回车键结束!\n");
printf("\n\n");
}
fclose(fp);
/*询问是否继续*/
printf("\n是否继续?(是:y/Y; 否:n/N)");
next=getche();system("cls");
putchar('\n');
if ( next=='y'||next=='Y') goto begin;
char Da[40],next; /*存储财务收支信息的文件名*/
int count=1; /*计算可输入数据的最大范围*/
printf("\n 请输入要添加财务收支信息的文件名:");
gets(Da);
begin:count=1;
gets(Da);
begin:
/*以二进制读的方式打开文件*/
fp=fopen(Da,"rb");
if (fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束!\n",Da);
exit(0);
if (fp==NULL)
char outtime[10]; /*支出时间*/
float sum; /*总计*/
}money;
void tianjiashouzhi()/*添加财务收支信息记录*/
{
FILE *fp = NULL; /*定义指向文件的指针*/
money Tm,ch; /*定义进行操Байду номын сангаас时的临时结构体变量*/
{printf("\n你输入的编号不存在,请确认后重新输入\n");
printf("\n是否继续删除?(是:y/Y;否:n/N)");
next=getche();
system("cls");/*清屏*/
putchar('\n');
if ( next=='y'||next=='Y') goto begin;
scanf("%s",Tm.outtime);
Tm.sum=Tm.in-Tm.out;
printf("\n");
if(fwrite(&Tm,sizeof(money),1,fp)!=1) /*将数据写入文件并判断是否成功*/
{
printf("\n写入文件 %s 失败!以任意键结束!\n",Da);
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<math.h>
#include<windows.h>
#define SIZE 100
typedef struct
{
long no; /*每一组输入的编号*/
{
if(Tm.Number==delnum)
{ printf("该项收支记录如下:\n");
printf("############################\n");
printf("该项内容编号:%ld\n",Tm.no);
printf("成员编号:%ld\n",Tm.Number);
exit(0);
}
count++;
}
/*如果输入的数据量超过最大允许的范围,则提示数据不能录入*/
if (count>SIZE)
printf("\n对不起,输入的数据量超过最大允许的范围%d\n",SIZE);
strcpy(s[recNumber].intime,Tm.intime);
s[recNumber].out=Tm.out;
strcpy(s[recNumber].outtime,Tm.outtime);
if (fp==NULL) /*判断是否打开成功*/
{
printf("\n打开文件%s失败!按任意键结束!\n",Da);
exit(0);
}
while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据,是否读取成功*/
fp=fopen(Da,"ab+");
if (fp==NULL) /*判断文件是否成功打开*/
{
printf("\n 打开文件 %s 失败!按任意键结束!\n",Da);
exit(0);
}
while(fread(&ch,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据并判断是否成功*/
scanf("%f",&Tm.in);
printf("输入收入时间:");
scanf("%s",Tm.intime);
printf("输入成员支出:");
scanf("%f",&Tm.out);
printf("输入支出时间:");
{ printf("###############################################\n");
printf("成员编号:%ld\n",Tm.Number);
printf("成员姓名:%s\n",);
printf("成员收入:%f元\n",Tm.in);
}
/*询问是否删除*/
printf("\n你确定要删除该记录吗?删除后不可恢复!!(是:y/Y;否:n/N)");
next=getche();
putchar('\n');
if ( next=='y'||next=='Y')
{ system("cls");
printf("成员姓名:%s\n",);
printf("成员收入:%f元\n",Tm.in);
printf("收入时间:%s\n",Tm.intime);
printf("成员支出:%f元\n",Tm.out);
printf("支出时间:%s\n",Tm.outtime);
fclose(fp);
system("cls");
printf("您输入的数据已成功存储在 %s 文件中。\n",Da);
printf("文件全部内容如下:\n");
fp=fopen(Da,"rb"); /*只读方式打开二进制文件*/
printf("编号不超过九位,姓名不超过二十个字符。\n");
while(count<=SIZE)
{
Tm.no=count;
printf("\n 输入 编号为零时结束输入!\n");
printf("成员编号:");
scanf("%ld",&Tm.Number);
printf("收支总和:%f\n",Tm.sum);
printf("############################\n");
result=1;
}
}
rewind(fp); /*把文件指针重新指向文件的开头*/
if(result==0)
long Number; /*家庭成员编号*/
char Name[20]; /*家庭成员姓名*/
float in; /*家庭成员收入*/
char intime[10]; /*收入时间*/
float out; /*家庭成员支出*/
printf("恭喜!该项纪录已成功删除。。\n");
/*将文件中信息存入结构体数组*/
/*与要删除的家庭成员序号相匹配的项不写入数组,
循环后数组中即为去掉了要删除记录后的剩余记录*/
recNumber=0;
while((fread(&Tm,sizeof(money),1,fp))!=(int)NULL)/*从文件中读取数据,是否读取成功*/
{
if(Tm.Number!=delnum)
{
s[recNumber].no=Tm.no;
s[recNumber].Number=Tm.Number;
strcpy(s[recNumber].Name, );
}
/*输入要删除的家庭成员序号*/
printf("请输入要删除的家庭成员编号:");
scanf("%ld",&delnum);
printf("您要删除的编号是:%ld\n",delnum);
while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据,是否读取成功*/
s[recNumber].sum=Tm.sum;
recNumber++;
}
}
fclose(fp);
/*将删除后的剩余结构体记录写入文件*/
fp=fopen(Da,"wb+"); /*读写方式打开文件,原文件内容清空*/
printf("收入时间:%s\n",Tm.intime);
printf("成员支出:%f元\n",Tm.out);
printf("支出时间:%s\n",Tm.outtime);
printf("收支总和:%f\n",Tm.sum); printf("###############################################\n");
if (Tm.Number==0 ) /*如果输入的编号为0,结束*/
break;
printf("输入成员姓名:");
scanf("%s",);
printf("输入成员收入:");
{
count++;
}
fclose(fp);
/*如果成功打开或创建文件,则提示输入家庭成员序号、姓名、收入、支出等相关信息*/
fp=fopen(Da,"ab+");/*ab+:当文件存在时,追加,当文件不存在时,创建*/
printf("输入编号,姓名,收入,收入时间,支出,支出时间,输入编号为0时结束!\n");
}
void shanchushouzhi() /*删除家庭成员收支信息记录*/
{
int i,result=0;
long delnum; /*存放要输入的要删除家庭成员序号*/
money Tm; /*定义进行操作时的临时结构体变量*/
money s[SIZE];
int recNumber; /*原文件中的记录数*/
char Da[40],next;
FILE *fp; /*fp指针指向存储数据的文件名*/
printf("\n请输入存储数据的文件名,按回车键结束!\n");
printf("\n\n");
}
fclose(fp);
/*询问是否继续*/
printf("\n是否继续?(是:y/Y; 否:n/N)");
next=getche();system("cls");
putchar('\n');
if ( next=='y'||next=='Y') goto begin;
char Da[40],next; /*存储财务收支信息的文件名*/
int count=1; /*计算可输入数据的最大范围*/
printf("\n 请输入要添加财务收支信息的文件名:");
gets(Da);
begin:count=1;
gets(Da);
begin:
/*以二进制读的方式打开文件*/
fp=fopen(Da,"rb");
if (fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束!\n",Da);
exit(0);
if (fp==NULL)
char outtime[10]; /*支出时间*/
float sum; /*总计*/
}money;
void tianjiashouzhi()/*添加财务收支信息记录*/
{
FILE *fp = NULL; /*定义指向文件的指针*/
money Tm,ch; /*定义进行操Байду номын сангаас时的临时结构体变量*/
{printf("\n你输入的编号不存在,请确认后重新输入\n");
printf("\n是否继续删除?(是:y/Y;否:n/N)");
next=getche();
system("cls");/*清屏*/
putchar('\n');
if ( next=='y'||next=='Y') goto begin;
scanf("%s",Tm.outtime);
Tm.sum=Tm.in-Tm.out;
printf("\n");
if(fwrite(&Tm,sizeof(money),1,fp)!=1) /*将数据写入文件并判断是否成功*/
{
printf("\n写入文件 %s 失败!以任意键结束!\n",Da);
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<math.h>
#include<windows.h>
#define SIZE 100
typedef struct
{
long no; /*每一组输入的编号*/
{
if(Tm.Number==delnum)
{ printf("该项收支记录如下:\n");
printf("############################\n");
printf("该项内容编号:%ld\n",Tm.no);
printf("成员编号:%ld\n",Tm.Number);
exit(0);
}
count++;
}
/*如果输入的数据量超过最大允许的范围,则提示数据不能录入*/
if (count>SIZE)
printf("\n对不起,输入的数据量超过最大允许的范围%d\n",SIZE);