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

下载本文档

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

文档简介

1、课程设计报告课程设计题目:家庭财务管理系统学生姓名:专业:信息工程班级:指导教师:2018年1月1 需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及 支出进行记录和管理。该系统要求:家庭月收入管理家庭月支出管理统计家庭总收入/总支出系统提供收入/支出的添加、删除和修改功能。2 .总体设计根据以上分析,本家庭账务管理系统主要包括: 从键盘键入家庭月收入、月支出数据; 查询月收入、月支出明细;删除收入、支出数据;修改收入、支出数据;统计总收入/总支出;退出系统。除main ()函数之外,系统还定义了以下函数来实现各部分内容:addjncome ():添加收入数据

2、函数。add_payout ():添加支出数据函数。search_data ():查找数据函数。ini tialize ():初始化函数,读取文本数据。showjnfo ():显示数据函数。countjotal ():统计函数,统计总收入、总支出。update_data ():修改信息函数。delete_data ():删除数据函数。(9) quit ():退出函数。程序结构功能图如下:家庭财务管理系统退W系统z收入管理3.详细设 计3.1收入管理3.2支出管理开始输出菜单,输入操作选择,/4 .测试结果4.1程序运行主菜单室庭财务管理系统4.3查询收入明细测试支出雷理:5.7.退出:。退出系

3、统)请选B要进行的操作”小4.2添加收入测试收入管理亶翻J支8 6袁羽细余支出8修沓支统计汁-统计总收入二总支出退出词-退出系统请选择要进行的操作2沁青输入要查询的穿月好匹肮“7年月1!20t3/09DM型;收入:备汪工资请按任意键畛心其也数据? o叶n>4.4删除收入测试WWVWUAAAnAARK/W.MAAjAjIKJ(冢庭财务管理系统3:.EKKKN 扶1X3<Wr>Et MiMKIiEXXXX匚77rH一k KiHpta十.: 一力卜纨/<¥¥Wzfl>201-4/l112014Z01168.23:备汪Ky)删除成功) an人 key

4、to cnnt-imie4.5修改收入测试4.8删除支出测试计 LXHJCWOftUiXJHXKKIHIHieTCJlXlUCJUUJUaaC收A管理m添加收入3删除收入趴查育收入明细收入* x)« BOf MJtHBtiM 一 K.出一KJCMiMtiMICiUJUfNJf 3<JC支出管理出.添加支出删除支出查询支出明细8 修改支出统 计也统计创“ i2吏出退出:肌退出系Z充1.操作段二9:4 牟百 YYY/02: 2013/02;收入1400.08: I!#a请输入年月(¥¥¥V/ri>2013/2 输入奈庭成员姓名(最大长度为_L少输

5、:lyy人眷注(最大长度为饷:工资.4.6添加支出测试1 KH%ittWKME JB冢庭财务管理系统资细 面细收入管理逍3-剃:一支出吩勰金十诵出:肌退出系统>wwga行:的操作<0-9>=&>6殉人年月 <VW¥/M)2 013/1症志入家庭成负妊电(最大长度为,4SWAWi=2M籍输黄睿注嚎大长度加哄购物4.7查询支出明细测试K31唾月休:&学I择人也输:类型作值I海am", m mote,姓亡I金额2BB.00 I倚汪-S udvlBllmlaufMawmwvwlvllBlwlurlVlaA-waufvawMilw 豕庭财

6、务* 菅 珥1 务nrrwmvwwwMwvwnrnmwmwwKirwwruYuwvwwdmwvrw收初狒敏:M1XNJf 繇 XNw 4翘:K轨耳 NJIeKH 曲 2-0.耳X质耳昶X *入HL ML"L JR支出管于郭亏探加支出巴删I除支出般护细绕 i+=?.AAfcA/.aSSmerS : 0-iai泉庭财务管理系统LMJ4M XKJWJC JCXIMTeTW - THt收入管理【添加收入 删雀收入J收入明名田“攵入 -K - KME- V.U JOC 3KHU NW_一 支出管理污一添加豆串查询支出阳细7 .俱IJ除支田驭焉改支出出3< :gatdi K 出 虹 ;kl

7、M.甘 u 材 皿 口出X :utava; j fcUtea _ik 计二9 统计包收入/总支出 退出gg 退出系统请选择要进行的操作V。-”汐请辅人要查询的年月VY¥Y¥ZH>2O13Z1;#£购物;NO. ;年声月;类型:姓名;金额1 i2Ul3z(»l;支出 ilyy;删除成功Fr«ss an<Z key to continue4.9修改支出测试家庭财务管理系统rwrw.IFWOw缺 4-1?I攵人明细I攵入支出管理汗hlwLi音!wK.luwK. H.,衬!山q“KW也W 岸U耐U岸山K,屏lK 统 计汐-统计总收入”总支出

8、退出=0.退出系统ZRQ、。<¥¥¥¥/H>2313/9NO.I年帛I类倒姓名I金额I备注IN0.12013/09年/月12013/09:2001MV300.00衣耶请 H修改成功注最大长度为20:农服裘型姓名金教I#?-支出200.00衣服lyy4.10*MMHWmMlFWV6rwwwiNHrwawWY/HHavilvwiw%MM细丁 明明 入也 询改。询改 直修“否修 X 2 4MG 0CM入入F 片支支 加除“扪除 添删2添删 X 1 3x5 7 X 理S 管I管 入MM出 收一支统i: 9 统注/总支出X X * XX k X X X

9、 X'M MM XX XV MMX XM XM X XX X一出:。.退出系统>谙选婪进行的操作v0-9> = ?合计收入J734-63嘴余420d.G3V I500980I4.11送 1匕系统测试)接任百,迪返回主菜单ikWlVJkWAWWANWJJUVUVCVrVLrAHKJtflJVAJ 解才务管理系统nsrwnwrsmmmrmxmnriwrKmnrwwihrKmHVMYU)A A.宜月。支出管理=$总支出查询支出明名日 !除支出改支出统计伙统计施收人/总支出整丁竽昌1借4#蒜一林一督一- MIU*阳版珞X 绑 竽F媳品MU4,玄艮|卜出 /充科斗冷料若瓢滞-K斗Hi

10、HXi芹君斗骞番祥耳辜屏M斗科 Q低耳济耳刺誉界耳精选摄萝进亍的操作d日勺rcss any key to continue.5 .软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示)然后按照 主界面菜单指引操作即可。家庭财务管理系统*w 、r« 、r W8rwirwmn、rrw«ai、*<M一fWKT/VAAX/K/1n<TMwrsr收入管理”透加收入2 .真硼为人明细 3 ,删际收入4.修改收入支出管理工,懑加支出6 .查迪克出明细 二期1五包8二送艾包一一里土9受tt包上足三老菽一加;至而凄彳 一 请选择要进行的操作。-9;6.

11、总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。这样很容易遗漏,连 续性也 不好。通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的 理解。希望在以后的课程设计中对于知识的运用能够更加的熟练。代码:# in elude <stdio.h>#inelude <stdlib.h># in elude <stri ng.h># in elude vconi o.h>#defi ne MAXNAME 11 /家庭成员姓名的最大长度#define MAXDETAIL 21/ 注最大长度自定义枚举类型fLtype,用来表示收入与支出

12、typedef enum _fi_type(in come=1, / 收入payout =-1 支出 fiJype;/家庭财务信息结构体typedef struct JiJnfo(int year;int mon th;fiJype type;char n ame9;float mon ey;char detail11;fi nfo;/存储财务数据结构的结构体typedef struct _fi_data(fi info info;struct fi data* n ext; fi_data;fi-data *head;/财务数据的头结点void menu ();/ 菜单函数void add_

13、 in come();void search_ in come();void delete_ in come();void update_ in come();void addjDayout();void search_payout();void delete_payout();void update_payout();void coun t_total();void quit();/void search_data(fi_type type);void delete_data(fi_type type);void update_data(fi_type type);/void in itia

14、lize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p);void in put_ in fo(fi_ info *in fo);void show J nfo(fi_data *p);void menu()prin tf("nn); prinprinprin tf("tt prin tf("5. printf(" 6. prin tf("ttt 7. printf(n 8.tf(Htt*nn) prin*

15、nH) 家庭财务管理系统n");收入管理:”);添加收入)查询收入明细rT); 删除收入) 修改收入n“);*prin tf("tt prin tf("1. printf(" 2. prin tf("ttt 3. printf(" 4.支出管理:”);添加支出)查询支出明细n“);删除支出) 修改支出n“);prin tf("tt 统 计:");printf("9.统计总收入/总支出n“);prin*n")printf(ntt 退 出:0.退出系统 n“);prin*)void mai n()(

16、int selected=O;in itialize();while(selected>=0&&selected<=9)(system(,cls");menu();printf("tt>请选择要进行的操作(0-9):");if(sca nf(”d”, &selected)!=1 |selected<0|selected>9)printf("tt>输入有误!请选择S9)之间的数字!按任意键重试)getchar(); ) else ( switch(selected)(case O:exit(O);

17、clear_data();break;case 1 :add_ in come();save_to_file();break;case 2:search_ in come();break;case 3:delete_ in come();save_to_file();break;case 4:update_ in come();save_to_file();break;case 5:add_payout();save_to_file();break;case 6:search_payout();break;case 7:delete_payout();save_to_file();break;

18、case 8:update_payout();save_to_file();break;case 9:co un t_total();break;)void add_ in come() 添力I收入(fi_data *p=(fi_data *)malloc(sizeof(fi_data);p-> next=NULL;in putj nfo(&(p->i nfo);p->in fo.type=in come;if(head=NULL) head=p;elseget_last()->n ext=p;)void add_payout() 添加支出(fi_data *p

19、=(fi_data *)malloc(sizeof(fi_data); p-> next=NULL;in putj nfo(&(p->i nfo);p->in fo.type=payout;if(head=NULL) head=p;elseget_last()->n ext=p;)输入函数void in putj nfo(fi_i nfo *info) (printf("tt> 请输入年月(YYYY/M)");sea nf("%d/%dM,&(in fo->year),&(in fo->mo nth

20、);prin tf("tt>请输入家庭成员姓名(最大长度为%d):'MAXNAME-1);sea nf(,%s,',i nfo-> name);printfC'tt>输入金额:");sea nf(,'%f',&(i nfo->mo ney);printf("tt>请输入备注(最大长度为d):“,20);sea nf("%sn,i nfo->detail);)查找数据函数void search_data(fi_type type)(int year=0;int mon th

21、=O;fi_data *p=NULL;int coun t=0;char in put=':while(l)(prin tf("tt>请输入要查询的年月(YYYY/M)");if(sca nf("%d/%dH, &year,&mon th)!=2)( printf("tt> 输入有误 nM);) else( p=head;coun t=0;while(p!=NULL)(if(p->in fo.year=year)&&(p->info.mon th=month)&&(p->

22、;in fo.type=type)( show_ in fo(p);system("PAUSE");coun t+;) p=p->n ext;)if(co un t=0)printfC'tt>没有找到数据n");)prin tf("tt>继续查找其他数据?(y or n)”);in put=getchar();if(i nput=y|i nput='Y,)con ti nue;elsebreak;)初始化函数,读取文本数据void in itialize()(FILE * fp=NULL;fi_data *p=NULL;

23、fi data *last=NULL;int coun t=0;fp=fope n( Hdata.txtH,"rb");if(fp=NULL)(fp=fope n( Hdata.txtH,"w");fclose(fp);retur n;)p=(fi_data*)malloc(sizeof(fi_data); memset(p,0,sizeof(fi_data);p-> next=NULL;while(fread(&(p->in fo),sizeof(fi_ in fo),1,fp)=1) if(head=NULL)head=p;els

24、e(last=get_last();last- >n ext=p;)coun t+;fseek(fp,cou nt*sizeof(fi_i nfo),SEEK_SET); p=(fi_data *)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p-> next=NULL;)free(p);p=NULL;fclose(fp);)显示信息函数void show nfo(fi_data *p)(int i=0;prin tf("|tt|tt|tt|tt|tt|tt|nn);printfC'|NO.t | 年/ 月 t

25、t| 类型 tt| 姓名 tt| 金额 tt| 备注 tt|nH);prin tf("|%5dt|%4d/%02dt|%4st|%10st|%10.2f|%20s|n",i+1,p->info.year,p->info.month,p->info.type=income?"收入":“支出”,p->info.n ame,p->info.mon ey,p->in fo.detail);prin tf("|tt|tt|tt|tt|tt|tt|nn);)统计总收入、总支出void coun t_total()(flo

26、at total in come=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL)(if(p->in fo.type=in come)(total_ in come+=p->info.mon ey;)else(total_payout+=p->info.mon ey;)p=p->n ext;)prin tf(',tt+tt4-tt+n,');printf("tt|合计收入t|合计支出W结余t|W);prin tf("tt%12.2f|%12.2f|%12.2f|nM,t

27、otalJ ncome,total_payout,total_i ncome -total_payout);prin tf(Htt+tt+tt+n");printf('>tt>按任意键返回主菜单)getchar();getchar();)保存到文件void save_to_file()(FILE *fp=fopen("data.txt","wbH);fi_data *p=head;while(p!=NULL)(fwrite(&(p->i nfo),sizeof(fi_i nfo),1,fp);fseek(fp,O,SEE

28、K_END);p=p->n ext;) fclose(fp);)修改信息函数void update_data(fi_type type)int year=0;int mon th=O;fi_data *p=NULL;fi_data *pre=NULL;char in put;int coun t=0;int i=0;while(1) prin tf("tt>请输入要查询的年月(YYYY/M)");if(sca nf("%d/%dH, &year,&mon th)!=2)( printf("tt> 输入有误 n"

29、);) else( p=head;coun t=0;while(p!=NULL)( if(p->in fo.year=year)&&(p->info.mon th=month)&&(p->in fo.type=type)(coun t+;show_ in fo(p);in putj nfo(&(p->i nfo);printf("tt修改成功 n");P=get_previous(p);)p=p->n ext;)if(co un t=0)printf("tt>没有找到数据n");

30、prin tf("tt>继续查找其他数据?(y or n)");in put=getchar();if(i nput=y|i nput='Y') con ti nue;elsebreak;)void delete_data(fi_type type)/删除数据函数(int year=0;int mon th=O;fi_data *p=NULL;fi_data *pre=NULL;int coun t=0;char in put=':int i=0;while(1) prin tf(ntt>请输入要查询的年月(YYYY/M)");if(sca nf("%d/%d", &year,&mo nth)!=2)( printfC*tt> 输入有误 n) else(p=head;coun t=0;while(p!=NULL) (if(p->in fo.year=year)&&(p->info.mon th=month)&&

温馨提示

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

评论

0/150

提交评论