家庭财务信息管理系统单文件版.docx
《家庭财务信息管理系统单文件版.docx》由会员分享,可在线阅读,更多相关《家庭财务信息管理系统单文件版.docx(20页珍藏版)》请在冰豆网上搜索。
![家庭财务信息管理系统单文件版.docx](https://file1.bdocx.com/fileroot1/2023-6/4/22b932c8-8dfc-4004-9876-ceda89456cf8/22b932c8-8dfc-4004-9876-ceda89456cf81.gif)
家庭财务信息管理系统单文件版
//家庭信息管理系统
#include
#include
#include
#include
#defineMAX_PEO2000//定义家庭成员最大人数
#defineMAX_INF20000//定义收支信息的最大容量
#defineOUT_INFIORinf[i].name,inf[i].year,inf[i].month,inf[i].income,inf[i].output
#defineIN_INFIORinf[i].name,&inf[i].year,&inf[i].month,&inf[i].income,&inf[i].output
structmember//家庭成员登记信息结构
{
charusername[200];//用户名(也是姓名)
}peo[MAX_PEO];
structinfior//成员收支信息结构
{
charname[30];//姓名
intyear;//年份
intmonth;//月份
intincome;//收入
intoutput;//支出
}inf[MAX_INF];
intn=0,m=0;//全局变量n为文件中家庭成员实际容量m为文件中收支信息实际容量
voidhold();//将数据写进文件中
voidcarry();//将数据从文件中读出
voidadd_member();//增加新的家庭成员
voidadd_infior();//录入成员收支信息
voiddele_member();//删除家庭成员
voiddele_infior();//删除家庭成员收支信息
voidchange_infior();//修改收支信息
voidskin_peo();//浏览家庭成员信息
voidsearch();//查询某个成员收支信息
voidquit();//系统退出界面
voidmenu_select();//菜单选择功能
voidmenu();//菜单登陆界面
voidhandle_menu();//菜单处理
voidsave();//保存功能函数用来实现提示已保存
voidhold()//将数据写进文件中
{
FILE*fp;
inti;
fp=fopen("memberlist.txt","w");
{
fprintf(fp,"%d\n",n);
for(i=0;ifprintf(fp,"%s\n",peo[i].username);
}
fclose(fp);
fp=fopen("information.txt","w");
{
fprintf(fp,"%d\n",m);
for(i=0;ifprintf(fp,"%s%d%d%d%d\n",OUT_INFIOR);
}
fclose(fp);
}
voidcarry()//将数据从文件中读出
{
FILE*fp;
inti;
if((fp=fopen("memberlist.txt","r"))!
=NULL)
{
fscanf(fp,"%d\n",&n);
for(i=0;ifscanf(fp,"%s\n",peo[i].username);
}
fclose(fp);
if((fp=fopen("information.txt","r"))!
=NULL)
{
fscanf(fp,"%d\n",&m);
for(i=0;ifscanf(fp,"%s%d%d%d%d\n",IN_INFIOR);
}
fclose(fp);
}
voidadd_member()//增加新的家庭成员
{
intj=1,i,q=100,m=3;
carry();//将数据从文件中读出
printf("\n【添加新成员】\n\n");
printf("\n请输入新成员姓名:
");
scanf("%s",peo[n].username);
for(i=0;i{
if(strcmp(peo[i].username,peo[n].username)==0)
{j=0;break;}
}
if(j==0)printf("\n该成员已存在。
\n");
if(j==1)
{
n++;
hold();//将数据写进文件中
printf("\n添加新成员成功。
\n");
}
}
voidadd_infior()//录入成员收支信息
{
intk=3,i,p=1;
charname[200];
carry();//将数据从文件中读出
printf("\n【录入收支信息】\n\n请按以下顺序录入成员收支信息:
\n");
printf("\n请输入姓名:
");
scanf("%s",name);
for(i=0;i{
if(strcmp(peo[i].username,name)==0){k=1;break;}
}
if(i==n)k=0;
if(k==0)printf("\n不存在该成员,请先添加其为家庭成员。
\n");
if(k==1)
{
strcpy(inf[m].name,name);
printf("\n请输入年份:
");
scanf("%d",&inf[m].year);
printf("\n请输入月份:
");
scanf("%d",&inf[m].month);
for(i=0;i{
if(strcmp(peo[i].username,name)==0&&inf[i].year==inf[m].year&&inf[i].month==inf[m].month)
{
printf("\n已存在%d年%d月的收支信息。
\n录入失败。
。
。
\n",inf[m].year,inf[m].month);
p=0;
break;
}
}
if(p==1)
{
printf("\n请输入收入(元):
");
scanf("%d",&inf[m].income);
printf("\n请输入支出(元):
");
scanf("%d",&inf[m].output);
m++;
printf("\n······\n录入成功。
\n");
hold();//将数据写进文件中
}
}
else
{
printf("\n【录入收支信息】\n\n请按以下顺序录入成员收支信息:
\n姓名年份月份收入支出是否结束录入(是1否0)\n");
for(i=m;k!
=1;i++,m++)
scanf("%s%d%d%d%d%d",IN_INFIOR,&k);
hold();
}
}
voiddele_member()//删除家庭成员
{
FILE*fp;
charname[20];
inti,k,g,h,p=0;
printf("\n【删除家庭成员】\n\n请输入要删除的家庭成员姓名:
");
scanf("%s",name);
carry();//将数据从文件中读出
h=n;
for(i=0;i{
if(strcmp(peo[i].username,name)==0){k=1;break;}
}
if(i==n)k=0;
if(k==0)printf("\n不存在该成员。
\n");
if(k==1)
{
for(i=0;iif(strcmp(peo[i].username,name)==0)
{
g=i;p=1;break;
}
if(p==1)
{
n=h-1;
fp=fopen("memberlist.txt","w");
fprintf(fp,"%d\n",n);
for(i=0;ifprintf(fp,"%s\n",peo[i].username);
for(i=g+1;ifprintf(fp,"%s\n",peo[i].username);
fclose(fp);
printf("\n······\n删除成功。
\n");
}
}
hold();//将数据写进文件中
}
voiddele_infior()//删除家庭成员收支信息
{
FILE*fp;
charname[20];
inti,year,month,k,g,h=0,b;
printf("\n【删除收支信息】\n\n请输入需要删除收支信息的成员姓名:
");
scanf("%s",name);
carry();
b=m;
for(i=0;i{
if(strcmp(inf[i].name,name)==0){k=1;break;}
}
if(i==m)k=0;
if(k==0)printf("\n不存在该成员的收支信息。
\n");
if(k==1)
{
printf("\n以下为%s的所有收支信息:
\n\n年份月份收入(元)支出(元)\n",name);
for(i=0;i{
if(strcmp(inf[i].name,name)==0)
printf("%4d%4d%9d%9d\n",inf[i].year,inf[i].month,inf[i].income,inf[i].output);
}
printf("\n请输入需要删除的收支信息的具体时间:
\n年份月份\n");
scanf("%d%d",&year,&month);
for(i=0;iif(strcmp(inf[i].name,name)==0&&inf[i].year==year&&inf[i].month==month)
{
g=i;h=1;break;
}
if(h==1)
{
m=b-1;
fp=fopen("information.txt","w");
fprintf(fp,"%d\n",m);
for(i=0;ifprintf(fp,"%s%d%d%d%d\n",OUT_INFIOR);
for(i=g+1;i
fprintf(fp,"%s%d%d%d%d\n",OUT_INFIOR);
fclose(fp);
printf("\n······\n删除成功。
\n");
}
if(h==0)
printf("\n不存在该时间的收支信息。
。
。
\n");
}
}
voidchange_infior()//修改收支信息
{
charname[20],name1[20];
inti,year,month,year1,month1,income,output,k,p=0,t=0;
printf("\n【修改收支信息】\n\n请输入需要修改收支信息的成员姓名:
");
scanf("%s",name);
carry();
for(i=0;i{
if(strcmp(inf[i].name,name)==0){k=1;break;}
}
if(i==m)k=0;
if(k==0)printf("\n不存在该成员的收支信息。
\n");
if(k==1)
{
printf("\n以下为%s的所有收支信息:
\n\n年份月份收入(元)支出(元)\n",name);
for(i=0;i{
if(strcmp(inf[i].name,name)==0)
printf("%4d%4d%9d%9d\n",inf[i].year,inf[i].month,inf[i].income,inf[i].output);
}
printf("\n请输入需要修改的收支信息的具体时间:
\n年份月份\n");
scanf("%d%d",&year,&month);
for(i=0;i{
if(inf[i].year==year&&inf[i].month==month)
{
p=1;break;
}
}
if(p==0)
printf("\n没有该时间的收支信息。
\n\n修改失败。
。
。
\n");
if(p==1)
{
printf("\n请输入修改后的数据:
\n");
printf("\n姓名:
");
scanf("%s",name1);
for(i=0;i{
if(strcmp(peo[i].username,name1)==0){t=1;break;}
}
if(i==n)t=0;
if(t==0)printf("\n不存在该成员,请先添加其为家庭成员。
\n");
if(t==1)
{
printf("\n年份:
");
scanf("%d",&year1);
printf("\n月份:
");
scanf("%d",&month1);
printf("\n收入(元):
");
scanf("%d",&income);
printf("\n支出(元):
");
scanf("%d",&output);
for(i=0;iif(strcmp(inf[i].name,name)==0&&inf[i].year==year&&inf[i].month==month)
{
strcpy(inf[i].name,name1);
inf[i].year=year1;inf[i].month=month1;inf[i].income=income;inf[i].output=output;break;
}
printf("\n······\n修改成功。
\n");
}
hold();//将数据写进文件中
}
}
}
voidskin_peo()//浏览家庭成员信息
{
charname[20];
intq,a=0,i,year,j,t=0,income[20]={0},output[20]={0},in=0,out=0,in1=0,out1=0;
carry();//将数据从文件中读出
printf("请输入你要浏览的信息表的年份:
");
scanf("%d",&year);
printf("\n");
for(q=0;q{
if(inf[q].year==year)
{a=1;break;}
}
if(a==0)printf("不存在%d年的收支信息。
\n",year);
if(a==1)
{
printf("%d年度家庭成员收支信息表\n",year);
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃月份姓名收入(元)支出(元)总计(元)┃\n");
printf("┠─────────────────────────┨\n");
for(j=1;j<=12;j++)
{
for(i=0;i{
if(inf[i].year==year&&inf[i].month==j)
{
t++;
if(t==1)
{
printf("┃%3d月%9s%9d%10d%12d┃\n",j,inf[i].name,inf[i].income,inf[i].output,inf[i].income-inf[i].output);
income[j]=income[j]+inf[i].income;
output[j]=output[j]+inf[i].output;
}
if(t!
=1)
{
printf("┃%14s%9d%10d%12d┃\n",inf[i].name,inf[i].income,inf[i].output,inf[i].income-inf[i].output);
income[j]=income[j]+inf[i].income;
output[j]=output[j]+inf[i].output;
}
}
}
if(t!
=0)
{
printf("┠─────────────────────────┨\n");
printf("┃%d月统计%12d%10d%12d┃\n",j,income[j],output[j],income[j]-output[j]);
printf("┠─────────────────────────┨\n");
}
t=0;
}
for(i=1;i<=12;i++)
{
in=in+income[i];out=out+output[i];
}
printf("┠─────────────────────────┨\n");
printf("┃%d年统计%9d%10d%13d┃\n",year,in,out,in-out);
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("\n\n");
printf("附表:
\n");
printf("各家庭成员%d年度总收支信息表\n",year);
printf("┏━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃姓名总收入(元)总支出(元)总计(元)┃\n");
printf("┠──────────────────────┨\n");
for(i=0;i{
if(strcmp(inf[i].name,"0")!
=0)
{
strcpy(name,inf[i].name);
for(j=i;j{
if(strcmp(name,inf[j].name)==0)
{
in1=in1+inf[j].income;
out1=out1+inf[j].output;
strcpy(inf[j].name,"0");
}
}
printf("┃%8s%9d%12d%12d┃\n",name,in1,out1,in1-out1);
in1=0;out1=0;
}
}
printf("┗━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
}
voidsearch()//查询某个成员收支信息
{
inti,k;
charname[20];
carry();
printf("\n【查询收支信息】\n\n请输入你要查询的成员姓名:
");
scanf("%s",name);
for(i=0;i{
if(strcmp(inf[i].name,name)==0){k=1;break;}
}
if(i==m)k=0;
if(k==0)printf("\n不存在该成员的收支信息。
\n");
if(k==1)
{
printf("\n%s的所有收支信息:
\n\n",name);
printf("时间收入(元)支出(元)总计(元)\n");
for(i=0;i{
if(strcmp(inf[i].name,name)==0&&inf[i].year!
=0)
printf("%d-%d%9d%9d%9d\n",inf[i].year,inf[i].month,inf[i].income,inf[i].output,inf[i].income-inf[i].output);
}
}
}
voidsave()//保存功能函数用来实现提示已保存
{
printf("\n\n\t\t=====>程序在运行时已自动保存.....\n\n\n\n\n");
}
voidquit()//结束运行系统退出界面
{
printf("\n\n『谢谢使用家庭财务管理系统』\n\n\n\n\n");exit(0);
}
voidmenu_select()//菜单选择功能
{
intk;
scanf("%d",&k);
system("cls");
switch(k)
{
case1:
system("cls");skin_peo();break;
case2:
system("cls");change_infior();break;
case3:
system("cls");add_member();break;
case4:
system("cls");dele_infior();break;
case5:
system("cls");search();break;
case6:
system("cls");add_infior();break;
case7:
system("cls");dele_member();break;
case8:
system("cls");save();break;
case0:
system("cls");quit();break;
default:
break;
}
}
voidmenu()//登陆菜单界面
{
printf("\n选择菜单\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n");
printf("1.浏览家庭成员信息2.修改家庭成员收支信息\n");
printf("3.增加新的家庭成员4.删除家庭成员收支信息\n");
printf("5.查询成员收支信息6.录入成员收支信息\n");
printf("7.删除家庭成员8.保存文件\n");
printf("0.退出界面\n\n");
pr