家庭财务管理课程设计报告.doc

上传人:仙人指路1688 文档编号:3849424 上传时间:2023-03-25 格式:DOC 页数:20 大小:2.57MB
返回 下载 相关 举报
家庭财务管理课程设计报告.doc_第1页
第1页 / 共20页
家庭财务管理课程设计报告.doc_第2页
第2页 / 共20页
家庭财务管理课程设计报告.doc_第3页
第3页 / 共20页
家庭财务管理课程设计报告.doc_第4页
第4页 / 共20页
家庭财务管理课程设计报告.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《家庭财务管理课程设计报告.doc》由会员分享,可在线阅读,更多相关《家庭财务管理课程设计报告.doc(20页珍藏版)》请在三一办公上搜索。

1、一、 案例描述(小四号字体,段前断后0.5行)1.、总体描述家庭财务管理系统是一个典型的管理信息系统,主要运用添加、删除、修改、查询、显示等操作,给用户提供了一个在计算机上实现家庭的各项财务收支管理的平台,能够为每一个家庭的管理者提供充足的信息和快捷的查询手段,极大地提高家庭财务管理的效率,方便家庭管理者的合理理财。2、模块描述1)菜单设计主界面由封面图案、收入管理、支出管理、统计四大部分组成。其中,收入管理和支出管理两部分中各包含添加、查询、删除、修改、显示五大功能,而统计部分则包含统计总收入(总支出)的功能。封面主要利用ptintf函数,摆出各式各样的图形,又用上了system()更改了页

2、面的背景颜色、字体颜色、家庭财务管理系统的标题,以求达到美化封面的作用,而其余六大功能则是完善该家庭财务管理系统。2)load模块通过创建链表完成初始化。链表创建完成后,把读取的资料先放在linshi中。该模块的创建为实现接下来的一系列功能打下坚实基础。3)cover模块作为程序的封面,对主界面的颜色、尺寸、图案进行设置,起到美化作用。同时,把程序里的每一项主要功能的名称显示到主界面上,使界面更加亲近、友好,方便用户进入并进行使用,在不知不觉中提升了程序的档次。4)add模块:用于添加用户的信息。创建用户信息,依次输入家庭成员的姓名、收入(支出)的具体日期(可根据系统已有时间添加)、收入(支出

3、)金额、收入(支出)备注等详细信息,完善用户的资料,并将其保存在文件记录中。添加完一人信息后,界面提示用户“是否继续添加?(Y or N)”。若选择继续添加,则重复上述步骤,添加用户信息,并将其详细信息一并保存到文件记录中,文件记录加1。其中,用type判断是收入还是支出。5)search模块用于查询已添加的用户的信息。以日期、姓名、金额等其中任意一项为关键词进行搜索并显示用户的详细信息。若输入的关键词不存在,则提示用户“选择错误,请重新输入”。若输入关键词正确,则显示该联系人的所有相关信息。6)delete模块用于删除用户不需要或输入错误的用户的相关信息。首先,以姓名为关键词进行搜索并显示该

4、联系人的所有已输入的信息。然后,提示用户需要删除该联系人的第几条信息,删除该条完毕后,提示用户“是否继续删除?(Y or N)”。若当前家庭成员所有信息均已删除,则再继续删除时,提示“家庭财务管理内无任何信息!”。7)show模块用于显示已输入的相关信息。该模块建立后,用户通过点击该模块的名称,系统先提示用户选择以同月、同日、姓名、全部信息等其中一项关键词为显示依据,选择所需要显示的同一类型的详细信息,以便使所有信息一目了然,有利于用户核对之前所输入的信息,方便用户使用。8)save模块用于保存之前用户输入的所有用户的有用信息。该模块建立后,用户之前所输入的所有用户的详细信息皆可保存到指定文件

5、中,方便用户在下一次使用时仍能轻松、便捷地找到其所需的有用信息。9)修改模块用于重新输入用户需要却输入错误的用户的相关信息。先以姓名为关键词查找到需要修改的用户的所有相关信息。然后删除该条输入错误的信息,并重新输入正确有效的信息,最后保存。二、 界面设计菜单:序号15:进行收入管理 序号610:进行支出管理序号1112:进行统计本软件界面友好,不难操作,根据页面提示进行操作即可。三、 模块化设计方案1、系统主要函数及功能(五号黑体)1)load函数: 创建链表,打开并读取文件,保存相关资料,起到一定的储存功能。2)添加功能: 添加用户的相关收支信息,用户可根据选项选择是用系统时间还是自己添加时

6、间,然后再输入相关用户姓名、金额、备注等基本信息,之后可自行选择是否继续添加,最后系统会自动保存用户信息,返回系统用户界面。3)删除功能:用户输入需要删除的姓名后系统根据用户输入信息删除,之后还可自行选择是否继续删除,待所有删除完毕后,返回系统用户界面。4)修改功能:用户根据系统提示输入需要修改的姓名,然后根据用户输入信息进行删除、重新添加,之后自行选择是否继续,在全部修改成功之后,返回系统用户界面。5)查询功能:用户根据系统提示输入判断资料,系统根据用户输入的信息进行查询,在查询成功之后,之后自行选择是否继续,否,则返回系统用户界面。6)显示功能:系统将根据用户的选择显示家庭财务管理系统中的

7、相关信息。7)统计功能:系统将根据用户需要统计出总收入或总支出。8)退出功能:完成所有操作后,用户可以退出家庭财务管理系统。9)main函数:主函数提供用户操作界面(主菜单),供用户选择相应的功能模块。2、主函数调用各功能函数流程图四、 数据结构描述#include #include #include#include #include#define len sizeof(struct manage)struct massage int year; int month; int day; int type; /1表示收入,-1表示支出 char name20; float money; char

8、 beizhu100; ;struct manage struct massage info; struct manage*next; ;int n,a=0; /计算结点数 struct manage*head=NULL; /使首结点为空 ,全局变量五、 算法设计 六、 程序运行结果 七、 总结1、 工作时间(5号黑色)封面 15分钟 添加功能1小时删除功能1小时 查询功能1小时修改功能1小时 显示功能30分钟 统计 30分钟2、分工情况封面设计: 总体框架:流程图: 拓展功能: 显示功能设计: 报告模块描述: 2、 心得体会杨:家庭财务管理软件的开发主要考察我们对于C语言中的结构体函数、链表

9、、指针及使用以文本方式建立文件和打开文件等知识的掌握。因为结构的复杂性,我们在编写过程中遇到了一系列的困难和错误。当然,对于初学者的我们而言,在程序运行中出现这些错误是在所难免的。但是当错误出现时,我们不能选择任其自生自灭,而是要怀着刻苦钻研的态度,通过团队协作的方式力争解决,做到允许用户排除环境错误继续运行程序。同时,在设计程序时还应该考虑全面,避免出现低级的漏洞。作为一名的信管专业的学生,更加需要重视使用此程序设计,使得将来计算机可以在各个家庭中占有重要地位,也为计算机未来更长远的发展带来诸多可能的希望。同时也使各个家庭成员更多地了解计算机为计算机的广泛使用做好准备。刘:通过这次程序设计:

10、一、让我懂得了只有平时多练习才能真正地掌握程序,学会分析这些程序的功能并正确的运用,了解程序的特点。二、然我明白认真和细心会让我们在编写程序时节约很多时间。三、团队的合作非常重要,这有利于我们团队成员之间取长补短,明确分工有利于我们更好的完成任务,并减少打酱油的人,从而确保每位成员都学到知识。在本次试验中,我们小组成员深刻的体会到了基础知识的重要性,在编写程序的过程中,我们小组遇到了很多的问题,特别是细节问题在解决了问题后,我们明白了,只有拥有过硬的专业基础知识,在完成任务时才能得心应手,节省更多的时间。在本次试验中,我们成员之间彼此帮助,依彼之长,补彼之短,在工作中积极参与,服从分配,工作热

11、情高涨,团队合作出色,并且,在老师的指导下圆满的完成了任务。这是全组沉吟不懈努力的结果,这让我们深刻体会到“知识就是力量”的道理。一个人的力量是有限的,但是大家的力量却是无限的。叶:在本次实验中,我们小组共同协作完成了“家庭财务管理”这个程序的大体设计。在完成这项任务的过程中,我们主要运用了C语言中指针、链表、以及系统时间相关知识进行了代码的编写,由于是指针、链表的知识是初学,因此我们小组遇到了很多困难,特别是一些细节问题。但这丝毫没有影响我们对这项设计的热情。我们在图书馆研究、讨论,查阅相关书籍,尽自己最大的努力解决难题。遇到商讨后仍无法解决的问题,我们就虚心请教老师,在老师的点拨后继续努力

12、钻研,最终完成了本次程序设计的实践要求。本次课题设计让我们对C语言有了进一步的了解,丰富了C语言这门学科的知识。同时,我们小组认为本次“家庭财务管理”软件的开发,是一次将计算机应用于现实管理的很有意义的实践,使用该系统将给用户的理财需求带来极大方便。附页(源代码附加注释)#include #include #include#include #include #include#define len sizeof(struct manage)struct massage int year; int month; int day; int type; /1表示收入,-1表示支出 char name2

13、0; float money; char beizhu100; ;struct manage struct massage info; struct manage*next; ;int n,a=0,j; /计算结点数struct manage*head=NULL; /使首结点为空 ,全局变量 struct manage* load() /初始化 struct manage *q=NULL; struct manage *p; FILE *fp; fp=fopen(data11.txt,rb); /读取文件 if(fp!=NULL) struct massage lishi; / 将读取的资料先

14、存放在lishi中 while(fread(&lishi, sizeof(struct massage),1,fp)=1) p=(struct manage *)malloc(len); p-info=lishi; p-next=NULL; if(head=NULL) head=p; q=p; else q-next=p; q=p; n+; fclose(fp); return(head); void cover() /封面 system(cls); system(color 3b); system(mode con cols=70 );system(title 家庭财务管理系统);print

15、f(n);printf(n);printf(n);printf(n);printf(tt (info.year=local-tm_year+1900; p0-info.month=local-tm_mon+1; p0-info.day=local-tm_mday; else printf(日期:n); printf(年:);scanf(%d,& p0-info.year); printf(月:);scanf(%d,&p0-info.month); printf(日:);scanf(%d,&p0-info.day); printf(姓名:);scanf(%s,p0-info.name); pri

16、ntf(金额:);scanf(%f,&p0-info.money); printf(备注:);scanf(%s,p0-info.beizhu); p0-info.type=type; if(head=NULL) /*原来的链表是空表*/ head=p0; p0-next=NULL; /*使p0指向的结点作为头结点*/ else for(p1=head;p1-next!=NULL; p1=p1-next); p1-next=p0; p0-next=NULL; /*插到最后的结点之后*/ n+; return(head); int date(int type) struct manage*p; i

17、nt nian,yue,ri; printf(请输入要查询的日期:n); printf(年:);scanf(%d,&nian); printf(月:);scanf(%d,&yue); printf(日:);scanf(%d,&ri); for(p=head;p!=NULL;p=p-next)if(p-info.type=type&p-info.year=nian&p-info.month=yue&p-info.day=ri) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.name);

18、 printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(*n); void mingzi(int type) struct manage*p; char mingz20; printf(请输入要查询的姓名:);scanf(%s,mingz); for(p=head;p!=NULL;p=p-next) if(p-info.type=type&strcmp(p-info.name,mingz)=0) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); pri

19、ntf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(*n); int jine(int type) struct manage*p; float mone; printf(请输入要查询的金额;);scanf(%f,&mone); for(p=head;p!=NULL;p=p-next) if(p-info.type=type&p-info.money=mone) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.

20、day); printf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(*n); void search(int type) /查询功能 system(color 78); int choice; printf(请输入要查询的依据:n);printf(tt1.日期:n);printf(tt2.姓名:n);printf(tt3.金额:n);scanf(%d,&choice); switch(choice)case 1:date(type);break;/根据日期查询 c

21、ase 2:mingzi(type);break;/根据姓名查询 case 3:jine(type);break; /根据金额查询 default:printf(n);printf(n);printf(n);printf(选择错误,请重新输入n);printf(n); printf(n);int tongyue(int type) struct manage*p; int n,y; printf(请输入要显示的年月:n); printf(年:);scanf(%d,&n); printf(月:);scanf(%d,&y); printf(所有的记录是:n,n); for(p=head;p!=NU

22、LL;p=p-next) if(p-info.type=type&p-info.year=n&p-info.month=y) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n); int tongxingming(int type)struct manage*p; char c20; printf(请输入要显示的姓名:);scanf(%s,

23、c); printf(所有的记录是:n,n); for(p=head;p!=NULL;p=p-next) if(p-info.type=type&strcmp(p-info.name,c)=0) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n); int tongri(int type) struct manage*p; int n,y,

24、r; printf(请输入要显示的年月:n); printf(年:);scanf(%d,&n); printf(月:);scanf(%d,&y); printf(日:);scanf(%d,&r); printf(所有的记录是:n,n); for(p=head;p!=NULL;p=p-next) if(p-info.type=type&p-info.year=n&p-info.month=y&p-info.day=r) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.name); pri

25、ntf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n); struct manage *del(int type) system(color 78); struct manage *p1,*p2; char c20; int n,a=0; char mingz20; printf(请输入姓名:);scanf(%s,mingz); for(p1=head;p1!=NULL;p1=p1-next) if(p1-info.type=type&strcmp(p1-info.name,mingz)=0) printf(第%d条信

26、息n,a+1); printf(日期:%d.%d.%dn,p1-info.year,p1-info.month,p1-info.day); printf(姓名:%sn,p1-info.name); printf(金额:%fn,p1-info.money); printf(备注:%sn,p1-info.beizhu); printf(*n); a+; j=a; if(a=0) printf(家庭财务管理内无任何信息!n); else printf(要删除第几条信息n); scanf(%d, &n); a=0; for(p1=head;p1!=NULL;p1=p1-next) if(p1-info

27、.type=type&strcmp(p1-info.name,mingz)=0) a+;if(a=n)break; p2=p1; if(p1= head) head=p1-next; printf(删除成功n);/删除头结点 else p2- next = p1-next; printf(删除成功n); /删除一个结点 void show1(int type) float all=0; struct manage *p; int nian; printf(请输入要查询的日期:n); printf(年:);scanf(%d,&nian); printf(所有的记录是:n); for(p=head

28、;p!=NULL;p=p-next) if(p-info.type=type&p-info.year=nian) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n); all=all+(p-info.money)*(p-info.type); printf(所有收支统计为:%fn,all);void show2(int type) floa

29、t all=0; struct manage *p; int nian,yue; printf(请输入要查询的日期:n); printf(年:);scanf(%d,&nian); printf(月:);scanf(%d,&yue); printf(所有的记录是:n); for(p=head;p!=NULL;p=p-next) if(p-info.type=type&p-info.year=nian&p-info.month=yue) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.na

30、me); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n); all=all+(p-info.money)*(p-info.type); printf(所有收支统计为:%fn,all);void show3(int type) float all=0; struct manage *p; int nian,yue,ri; printf(请输入要查询的日期:n); printf(年:);scanf(%d,&nian); printf(月:);scanf(%d,&yue); printf(日:);scanf(%

31、d,&ri); printf(所有的记录是:n); for(p=head;p!=NULL;p=p-next) if(p-info.type=type&p-info.year=nian&p-info.month=yue&p-info.day=ri) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n); all=all+(p-info.mone

32、y)*(p-info.type); printf(所有收支统计为:%fn,all); void show4(int type) float all=0; struct manage *p; char c20; printf(请输入要显示的姓名:n); printf(姓名:);scanf(%s,c); printf(所有的记录是:n);for(p=head;p!=NULL;p=p-next) if(p-info.type=type&strcmp(p-info.name,c)=0) printf(日期:%d.%d.%dn,p-info.year,p-info.month,p-info.day);

33、printf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n);all=all+(p-info.money)*(p-info.type); printf(所有收支统计为:%fn,all);void show5(int type) float all=0; struct manage *p; printf(所有的记录是:n); for(p=head;p!=NULL;p=p-next) if(p-info.type=type) printf(日期:%d.%d.%dn,p

34、-info.year,p-info.month,p-info.day); printf(姓名:%sn,p-info.name); printf(金额:%fn,p-info.money); printf(备注:%sn,p-info.beizhu); printf(n);all=all+(p-info.money)*(p-info.type); printf(所有收支统计为:%fn,all);void show(int type) system(color 78); int choice; printf(请输入要显示的依据:n);printf(tt1.年:n); printf(tt2.年月:n);

35、 printf(tt3.年月日:n); printf(tt4.姓名:n);printf(tt5.全部:n);scanf(%d,&choice); switch(choice) case 1:show1(type);break;/按照收支年计算金额 case 2:show2(type);break;/按照收支月计算金额 case 3:show3(type);break; /按照收支日计算金额 case 4:show4(type);break; /按照姓名计算金额 case 5:show5(type);break; /统计所有收支金额 default: printf(n);printf(n);pr

36、intf(n);printf( 选择错误,请重新输入n);printf(n);printf(n);printf(n); void showall(int type) system(color 78);int choice; printf( n); printf(请输入要显示的依据:n); printf(tt1.按同月统计:n); printf(tt2.按姓名统计:n); printf(tt3.按同日统计:n); printf(tt4.全部显示统计:n); scanf(%d,&choice); switch(choice)case 1:tongyue(type);break;/显示同月 case

37、 2:tongxingming(type);break;/显示同名 case 3:tongri(type);break; /显示同日 case 4:show5(type);break; /显示全部 default: printf(n);printf(n);printf(n);printf( 选择错误,请重新输入n);printf(n); printf(n);printf(n); void save(struct manage*p) FILE *fp=fopen(data11.txt,wb ); while(p!=NULL)fwrite(&(p-info),sizeof(struct massage),1,fp); p=p-next; fclose(f

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号