家庭财务信息管理系统单文件版.docx
- 文档编号:25080318
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:20
- 大小:18.26KB
家庭财务信息管理系统单文件版.docx
《家庭财务信息管理系统单文件版.docx》由会员分享,可在线阅读,更多相关《家庭财务信息管理系统单文件版.docx(20页珍藏版)》请在冰豆网上搜索。
家庭财务信息管理系统单文件版
//家庭信息管理系统
#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;i fprintf(fp,"%s\n",peo[i].username); } fclose(fp); fp=fopen("information.txt","w"); { fprintf(fp,"%d\n",m); for(i=0;i fprintf(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;i fscanf(fp,"%s\n",peo[i].username); } fclose(fp); if((fp=fopen("information.txt","r"))! =NULL) { fscanf(fp,"%d\n",&m); for(i=0;i fscanf(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;i if(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;i fprintf(fp,"%s\n",peo[i].username); for(i=g+1;i fprintf(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;i if(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;i fprintf(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;i if(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家庭 财务 信息管理 系统 文件