C语言课程设计-家庭财务管理系统02135_第1页
C语言课程设计-家庭财务管理系统02135_第2页
C语言课程设计-家庭财务管理系统02135_第3页
C语言课程设计-家庭财务管理系统02135_第4页
C语言课程设计-家庭财务管理系统02135_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#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;i<n;i++) fprintf(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;i<m;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); return0;}intcarry()//将数据从文件中读出{ FILE*fp; inti; if((fp=fopen("peoplelist4.txt","r"))!=NULL) { fscanf(fp,"%d\n",&n); for(i=0;i<n;i++) fscanf(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;i<m;i++) fscanf(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<n;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<n;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<m;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<n;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<n;i++) if(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;i<g;i++) fprintf(fp,"%s%s%s\n",peo[i].username,peo[i].code,peo[i].flag); for(i=g+1;i<h;i++) fprintf(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<m;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<m;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<m;i++)if(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;i<g;i++) fprintf(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<b;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<m;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<m;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<m;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<n;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<m;i++)if(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<n;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<n;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<m;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<m;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<m;i++) { if(strcmp(thi[i].name,"0")!=0) {strcpy(name,thi[i].name); for(j=i;j<m;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<m;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<m;i++) { if(strcmp(thi[i].name,name)==0&&thi[i].year!=0) printf("%d-%d%9d%9d%9d\n",thi[i].year,thi[i].month,thi[i].income,thi[i].output,thi[i].income-thi[i].output); } } return0;}intchange_code()//修改密码{ inti,j=0,b,a; charname[20],code[20],code1[20],ch,k[20]; carry(); printf("\n【修改密码】\n\n请输入姓名:"); scanf("%s",name); for(i=0;i<n;i++) { if(strcmp(peo[i].username,name)==0){b=1;a=i;break;} } if(i==n)b=0; if(b==0)printf("\n不存在该成员。\n"); if(b==1) { printf("\n请输入旧密码:"); while((ch=getch())!='\r') { code[j]=ch; code[j+1]='\0'; if(code[j]=='\b') { j--; code[j]='\0'; putchar('\b'); putchar(''); putchar('\b'); continue; } j++; putchar('*'); } if(strcmp(peo[a].code,code)!=0){printf("\n\n旧密码错误!\n");} else { j=0; printf("\n\n请输入新密码:"); while((ch=getch())!='\r') { code1[j]=ch; code1[j+1]='\0'; if(code1[j]=='\b') { j--; code1[j]='\0'; putchar('\b'); putchar(''); putchar('\b'); continue; } j++; putchar('*'); } printf("\n\n是否确定修改密码(是输入1否0):"); scanf("%s",k); if(strcmp(k,"1")!=0&&strcmp(k,"0")!=0) {printf("\n输入格式错误,请重新输入1或者0!!"); } for(i=0;strcmp(k,"1")!=0&&strcmp(k,"0")!=0;i++) { if(i!=0){printf("\n输入格式错误,请重新输入1或者0!!");}printf("\n\n是否确定修改密码(是输入1否0):"); scanf("%s",k); } if(strcmp(k,"1")==0) { strcpy(peo[a].code,code1); printf("\n······\n密码修改成功。\n"); hold(); } if(strcmp(k,"0")==0)printf("\n\n放弃修改密码.\n"); } } return0;}intranking()//月度收支排行榜{ inti,a,t,j=0,year,month,incom[20],outpu[20]; charnam[20][20]; carry(); printf("请输入你想浏览的哪年哪月的收支排行榜:\n年份月份\n"); scanf("%d%d",&year,&month); printf("\n【收入排行榜】\n"); printf("\n排行姓名收入支出总计\n"); printf("(元)(元)(元)\n"); for(i=0;i<m;i++) {if(thi[i].year==year&&thi[i].month==month) { strcpy(nam[j],thi[i].name); incom[j]=thi[i].income; outpu[j]=thi[i].output; j++; } } for(i=0,a=0;a<j;a++) { for(t=1;t<j;t++) { if(incom[i]<incom[t])i=t; } printf("NO.%-5d%-10s%-9d%-9d%-9d\n",a+1,nam[i],incom[i],outpu[i],incom[i]-outpu[i]); incom[i]=0; i=0; } j=0; carry(); printf("\n【支出排行榜】\n"); printf("\n排行姓名支出收入总计\n"); printf("(元)(元)(元)\n"); for(i=0;i<m;i++) {if(thi[i].year==year&&thi[i].month==month) { strcpy(nam[j],thi[i].name); incom[j]=thi[i].income; outpu[j]=thi[i].output; j++; } } for(i=0,a=0;a<j;a++) { for(t=1;t<j;t++) { if(outpu[i]<outpu[t])i=t; } printf("NO.%-5d%-10s%-9d%-9d%-9d\n",a+1,nam[i],outpu[i],incom[i],incom[i]-outpu[i]); outpu[i]=0; i=0; } return0;}intgo()//系统退出界面{ printf("\n\n『谢谢使用家庭财务管理系统』\n\n\n\n\n");exit(0); return0;}intchoose1()//家长选择功能{ intk; scanf("%d",&k); system("cls"); switch(k) { case1:system("cls");skin_peo();break; case2:system("cls");change_thing();break; case3:system("cls");add_people();break; case4:system("cls");dele_thing();break; case5:system("cls");search();break; case6:system("cls");ranking();break; case7:system("cls");add_thing();break; case8:system("cls");change_host();break; case9:system("cls");dele_people();break; case10:system("cls");change_code();break; case11:system("cls");go();break; } return0;}intchoose2()//普通成员选择功能{ intk; scanf("%d",&k); system("cls"); switch(k) { case1:system("cls");skin_peo();break; case2:system("cls");search();break; case3:system("cls");ranking();break; case4:system("cls");change_code();break; case5:system("cls");go();break; } return0;}voidface1()//家长登陆界面{ printf("\n家长选择菜单\n"); printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n"); printf("1.浏览家庭成员信息2.修改家庭成员收支信息\n"); printf("3.增加新的家庭成员4.删除家庭成员收支信息\n"); printf("5.查询成员收支信息6.家庭成员收支排行榜\n"); printf("7.录入成员收支信息8.更改家长\n"); printf("9.删除家庭成员10.修改密码\n"); printf("11.退出界面\n\n");printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n"); printf("请从1-11中输入您的选择:");}voidface2()//普通成员登陆界面{printf("\n普通成员选择菜单\n");printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n"); printf("1.浏览家庭成员信息2.查询成员收支信息\n\n"); printf("3.家庭成员收支排行榜4.修改密码\n\n"); printf("5.退出界面\n\n");printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n"); printf("请从1-5中输入您的选择:");}voidf1c1()//家长登录{ intq=100;face1(); choose1(); printf("\n1.返回上一级2.退出系统\n请输入你的选择:"); scanf("%d",&q); if(q==1) { system("cls"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论