C语言课程设计家庭财务管理系统.docx
《C语言课程设计家庭财务管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计家庭财务管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
C语言课程设计家庭财务管理系统
C语言课程设计——家庭财务管理系统.txt
#include
#include
#include
#include
#definemaxsize2000//定义家庭成员最大人数
#definemaxinfor20000//定义收支信息的最大容量
structpeople//家庭成员登录信息结构
{
charusername[200];//用户名(也是姓名)
charcode[200];//密码
charflag[200];//标志0为普通成员,1为家长
}peo[maxsize];
structthing//成员收支信息结构
{
charname[30];//姓名
intyear;//年份
intmonth;//月份
intincome;//收入
intoutput;//支出
}thi[maxinfor];
intn=0,m=0;//全局变量n为文件中家庭成员实际容量m为文件中收支信息实际容量
inthold()//将数据写进文件中
{
FILE*fp;
inti;
fp=fopen("peoplelist4.txt","w");
{
fprintf(fp,"%d\n",n);
for(i=0;ifprintf(fp,"%s%s%s\n",peo[i].username,peo[i].code,peo[i].flag);
}
fclose(fp);
fp=fopen("thinglist4.txt","w");
{
fprintf(fp,"%d\n",m);
for(i=0;ifprintf(fp,"%s%d%d%d%d\n",thi[i].name,thi[i].year,thi[i].month,thi[i].income,thi[i].output);
}
fclose(fp);
return0;
}
intcarry()//将数据从文件中读出
{
FILE*fp;
inti;
if((fp=fopen("peoplelist4.txt","r"))!
=NULL)
{
fscanf(fp,"%d\n",&n);
for(i=0;ifscanf(fp,"%s%s%s\n",peo[i].username,peo[i].code,peo[i].flag);
}
fclose(fp);
if((fp=fopen("thinglist4.txt","r"))!
=NULL)
{
fscanf(fp,"%d\n",&m);
for(i=0;ifscanf(fp,"%s%d%d%d%d\n",thi[i].name,&thi[i].year,&thi[i].month,&thi[i].income,&thi[i].output);
}
fclose(fp);
return0;
}
intmaster()//初始化家长
{
carry();
if(n==0)
{
strcpy(peo[n].username,"小明");
strcpy(peo[n].code,"2010");
strcpy(peo[n].flag,"1");
n++;
}
hold();
return0;
}
intadd_people()//增加新的家庭成员
{
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)
{
printf("\n\n请输入新成员密码:
");
scanf("%s",peo[n].code);
printf("\n\n新成员是否作为家长(是请输入1,否输入0):
");
scanf("%s",peo[n].flag);
if(strcmp(peo[n].flag,"1")!
=0&&strcmp(peo[n].flag,"0")!
=0)
{
printf("\n输入格式错误,请重新输入1或者0!
!
");
}
for(i=0;strcmp(peo[n].flag,"1")!
=0&&strcmp(peo[n].flag,"0")!
=0;i++)
{
if(i!
=0)
{printf("\n输入格式错误,请重新输入1或者0!
!
");}
printf("\n\n新成员是否作为家长(是请输入1,否输入0):
");
scanf("%s",peo[n].flag);
}
n++;
hold();
printf("\n添加新成员成功。
\n");
}
return0;
}
intadd_thing()//录入成员收支信息
{
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(thi[m].name,name);
printf("\n请输入年份:
");
scanf("%d",&thi[m].year);
printf("\n请输入月份:
");
scanf("%d",&thi[m].month);
for(i=0;i{
if(strcmp(peo[i].username,name)==0&&thi[i].year==thi[m].year&&thi[i].month==thi[m].month)
{
printf("\n已存在%d年%d月的收支信息。
\n录入失败。
。
。
\n",thi[m].year,thi[m].month);
p=0;
break;
}
}
if(p==1)
{
printf("\n请输入收入(元):
");
scanf("%d",&thi[m].income);
printf("\n请输入支出(元):
");
scanf("%d",&thi[m].output);
m++;
printf("\n······\n录入成功。
\n");
hold();
}
}
//printf("\n【录入收支信息】\n\n请按以下顺序录入成员收支信息:
\n姓名年份月份收入支出是否结束录入(是1否0)\n");
//for(i=m;k!
=1;i++,m++)
//scanf("%s%d%d%d%d%d",thi[i].name,&thi[i].year,&thi[i].month,&thi[i].income,&thi[i].output,&k);
return0;
}
intdele_people()//删除家庭成员
{
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("peoplelist4.txt","w");
fprintf(fp,"%d\n",n);
for(i=0;ifprintf(fp,"%s%s%s\n",peo[i].username,peo[i].code,peo[i].flag);
for(i=g+1;ifprintf(fp,"%s%s%s\n",peo[i].username,peo[i].code,peo[i].flag);
fclose(fp);
printf("\n······\n删除成功。
\n");
}
}
hold();
return0;
}
intdele_thing()//删除家庭成员收支信息
{
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(thi[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(thi[i].name,name)==0)
printf("%4d%4d%9d%9d\n",thi[i].year,thi[i].month,thi[i].income,thi[i].output);
}
printf("\n请输入需要删除的收支信息的具体时间:
\n年份月份\n");
scanf("%d%d",&year,&month);
for(i=0;iif(strcmp(thi[i].name,name)==0&&thi[i].year==year&&thi[i].month==month)
{
g=i;h=1;break;
}
if(h==1)
{
m=b-1;
fp=fopen("thinglist4.txt","w");
fprintf(fp,"%d\n",m);
for(i=0;ifprintf(fp,"%s%d%d%d%d\n",thi[i].name,thi[i].year,thi[i].month,thi[i].income,thi[i].output);
for(i=g+1;i
fprintf(fp,"%s%d%d%d%d\n",thi[i].name,thi[i].year,thi[i].month,thi[i].income,thi[i].output);
fclose(fp);
printf("\n······\n删除成功。
\n");
}
if(h==0)
printf("\n不存在该时间的收支信息。
。
。
\n");
}
return0;
}
intchange_thing()//修改收支信息
{
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(thi[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(thi[i].name,name)==0)
printf("%4d%4d%9d%9d\n",thi[i].year,thi[i].month,thi[i].income,thi[i].output);
}
printf("\n请输入需要修改的收支信息的具体时间:
\n年份月份\n");
scanf("%d%d",&year,&month);
for(i=0;i{
if(thi[i].year==year&&thi[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(thi[i].name,name)==0&&thi[i].year==year&&thi[i].month==month)
{
strcpy(thi[i].name,name1);
thi[i].year=year1;thi[i].month=month1;thi[i].income=income;thi[i].output=output;break;
}
printf("\n······\n修改成功。
\n");
}
hold();
}
}
return0;
}
intchange_host()//更换家长
{
inti,p=0,h=0,a,b;
charname[20],name1[20];
carry();
printf("\n【更换家长】\n\n请输入现任家长的姓名:
");
scanf("%s",name);
for(i=0;i{
if(strcmp(peo[i].username,name)==0&&strcmp(peo[i].flag,"1")==0)
{
a=i;
p=1;
break;
}
}
if(p==0)printf("\n%s不是现任家长。
\n修改失败。
。
。
。
\n",name);
if(p==1)
{
printf("\n请输入新家长的姓名:
");
scanf("%s",name1);
for(i=0;i{
if(strcmp(peo[i].username,name1)==0)
{
b=i;
h=1;break;
}
}
if(h==0)printf("\n不存在家庭成员%s,修改失败。
\n",name1);
if(h==1)
{
strcpy(peo[a].flag,"0");;//更换家长即更换标志flag
strcpy(peo[b].flag,"1");
printf("\n······\n更换家长成功。
\n");
hold();
}
}
return0;
}
intskin_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(thi[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(thi[i].year==year&&thi[i].month==j)
{
t++;
if(t==1)
{
printf("┃%3d月%9s%9d%10d%12d┃\n",j,thi[i].name,thi[i].income,thi[i].output,thi[i].income-thi[i].output);
income[j]=income[j]+thi[i].income;
output[j]=output[j]+thi[i].output;
}
if(t!
=1)
{
printf("┃%14s%9d%10d%12d┃\n",thi[i].name,thi[i].income,thi[i].output,thi[i].income-thi[i].output);
income[j]=income[j]+thi[i].income;
output[j]=output[j]+thi[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(thi[i].name,"0")!
=0)
{
strcpy(name,thi[i].name);
for(j=i;j{
if(strcmp(name,thi[j].name)==0)
{
in1=in1+thi[j].income;
out1=out1+thi[j].output;
strcpy(thi[j].name,"0");
}
}
printf("┃%8s%9d%12d%12d┃\n",name,in1,out1,in1-out1);
in1=0;out1=0;
}
}
printf("┗━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
return0;
}
intsearch()//查询某个成员收支信息
{
inti,k;
charname[20];
carry();
printf("\n【查询收支信息】\n\n请输入你要查询的成员姓名:
");
scanf("%s",name);
for(i=0;i{
if(strcmp(thi[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(thi[i].name,name)==0&