个人记账系统课程设计报告_第1页
个人记账系统课程设计报告_第2页
个人记账系统课程设计报告_第3页
个人记账系统课程设计报告_第4页
个人记账系统课程设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、您+a座打,文净软件工程学年设计题目:个人记账系统院系:计算机科学与技术班级:计算机班学号:姓名:指导教师:2011年7 月 15日摘要本报告介绍了一个运用c语言知识和dev c+创建的用于个人财务情况管 理的个人记账系统。在该系统中创建了包含增加、删除、修改、查找、插入、浏 览、统计的功能总列表,创建序号链接各功能列表,输入收入支出信息情况,增 加信息,删除信息,创建合计排序浏览用户可从总体上浏览个人财务信息情况。关键词:c语言,devc+,个人记账系统第一章绪论41.1 开发背景及意义41.2 相关技术背景51.3 开发及运行环境5笫二章 需求分析错误!未定义书签。2.1 设计目标62.2

2、 功能常求62.3 可行性分析6第三章 总体设计错误!未定义书签。3.1 设计目标73.2 系统结构设计73.3 系统功能结构图7第四章 详细设计错误!未定义书签。5.1 基本对象设计85.2 系统主程序的设计与实现85.3 用户登录功能的设计与实现错误!未定义书签。5.4 流水账视图的设计与实现95.5 消费结构视团的设计与实现错误!未定义书签。5.6 流水账明细视图的设计与实现错误!未定义书签。5.7 账户设置功能的设计与实现错误!未定义书签。5.8 消费趋势堆栈图的设计与实现错误!未定义书签。5.9 系统辅助功能的设计与实现错误!未定义书签。第六章 软件测试错误!未定义书签。6.1 系统

3、测试错误!未定义书签o6.2 性能测试错误!未定义书签。6.3 验收测试错误!未定义书签。笫七章 总结错误!未定义书签。参考文献错误!未定义书签。第一章绪论1.1 开发背景及意义个人理财在我国得到大众的认可和金融机构的亶视是近几年的事情。人们对 个人理财的重视程度,与我国市场经济制度不断完善、资本市场长足发展、金融 产品的日趋丰富以及居民总体收入水平的逐年上升等等是分不开的。但是比起 美、日等发达国家,我国人民对于个人理财的理解还处于初级阶段。但是其实理财并不困难,并非非要依靠个人理财专业人士的建议才能身体力 行。只要了解收支状况、设定财务目标、拟定策略、编列预算、执行预算到分析 成果这六大步

4、骤,便可以轻松的达成个人的财务管理。至于要如何预估收入掌握 支出进而检讨改进则有赖于平日的财务记录,简单的说记账是理财的第一步。最近越来越多的人具有了记账的习惯,在上班族、学生族既定收入稳定的情 况下,采取“节流”的科学理财方式是非常实际的,也符合个人理财统筹的原则。 家庭、个人的收入支出结构在日益发生变化,单纯地靠在本子上记录收入支出无 法满足对于收入支出结构的统计分析,因此以个人用户为目标的记账软件应运而 生。相应的各种面向家庭及个人的理财软件也越来越多。但是众多个人理财软件 操作专业,对于个人用户来说功能过于强大,分析数据用语专业也不易理解。因 此开发一个操作简便、统计结果直观并对个人用

5、户理财有参考价值的记账软件无 疑能为广大个人用户提供方便。在盛行个人理财的美国,7()%以上的家庭都拥有一套自己的理财软件,其中 最具影响力的理财软件要数intuit公司开发的quiks和微软公司开发的money 这两款软件。现在,intuit公司已成为世界最大的理财软件与理财咨询公司, quiks也成为全世界用户最多的家庭理财软件。欧美家庭平日的财务报表,预 算,税务处理,银行账目的查询等等都借助软件的各项功能,使用理财软件帮助 家庭打理日常的财务安排巳经成为一件很平常的事。但由于金融体制上的巨大差 异,在欧美国家使用的个人家庭理财软件却并没有登陆中国市场。但是国内的个人理财服务却刚刚起步,

6、各式各样的个人理财软件也如雨后春 笋,数不胜数。至少有上百款的所谓个人理财软件,但实际上99%是个人写的业 务小程序,功能比excel方便一点而已,有的加一点报表功能,充其量叫记账软 件。如果个人理财软件仅有告诉你“柴米油盐酱醋茶”这种流水账的功能,excel 足够了。但真正做到功能强大,技术专业,市场有影响力的,而只形成规模的, 国内只有区区两款,成都的财智和深圳的家财通。总而言之,在不久的将来家庭使用理财软件也将成为国内家庭的必需品。能 提供简单明了的功能及操作的记账软件更是被广泛带要。这种软件也会为提升人 们的生活质量发挥它最大的效用。1.2 相关技术背景c语言是国内外广泛使用的一种计算

7、机语言,学会使用c语言进行程序设 计是计算机工作者的一项基本功。对于我们大学生来说,学习这样一门“c程序 设计教程”更是必要的。本课程设计“家庭财务管理系统”就是通过学习c程 序设计采用visual c+作为编译环境,是程序编译和运行的。本系统的总体思 想基于结构化的程序设计。应用高级语言程序设计中的基本控制结构,如循环和 选择,着重实现管理系统的增、删、改、查等典型的管理功能由于主要实现的是 管理系统的增、删、改、查等典型功能。程序设计是一门实践性很强的课程,既 要掌握概念,又要动手编译,还要上机调试运行,通过这一次的课程设计我们从 实践中更进一步的学习和了解c语言,当然由于我们的技术水平有

8、限,在这途 中遇到很多问题,程序也未能做到很完美,望见谅!1.3 开发及运行环境开发工具:dev c+运行环境:windowsxp/windowsvista/win7第二章需求分析需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和 评估项目代价,最终形成开发计划的一个复杂过程。需求分析就是分析软件用户 的常求是什么。如果投入大量的人力、物力、财力和时间开发出的软件却不被人 需要,那么所有的投入都是徒劳。本章将详细阐述对于个人记账系统的需求分析。 以使得本系统可以尽可能地满足大多数个人用户记录日常收支的常要。2.1 设计目标为了做出满足个人用户的需要的符合质量要求的系统,制定以下

9、设计目标: 对于日常收入设parents,school,labor,others分类记录收入。a 对于日常支出设clothes,food,house,travel,else分类记录2.2 功能需求为满足用户需要,要求本系统有以下功能:记录日常收支情况的功能。查找某天的收支情况的功能。插入忘记的收支的功能。显示账单的功能。统计的功能。2.3 可行性分析本课题是基于dev c+ +环境,实现记账系统的开发。为了使本设计更 具可行性,本系统的设计严格按照软件工程的设计思想要求,首先对系统进行了 可行性分析。为了使分析更为清晰、完整,设计本系统的时,将可行性分析分为 经济可行性、操作可行性、技术可行性

10、三个方面进行分析。1 .经济上可行性:dev c+ +是免费开源的软件,使得开发成本大大下降。 而只可重用性高,节省了二次开发的费用。资源利用率高,成本低。从成本效益 角度考虑十分可行。2 .操作上的可行性:该设计的模块界面简洁,方便快捷,简单易学。即便电 脑初学者也可以轻松的操作所有系统的功能。并不需要掌握繁杂的财务专业知识 也可以对自己的日常收支有一个大体的把握。3 .技术上的可行性:该设计结合了软件工程和会计学两个专业的知识,通过 相关技术的学习和钻研是对大学几年学习内容的很好的串联。在给定的时间一定 能完成需求说明要求的功能,并且确保软件运行速度及性能均达到用户期望。第三章总体设计软件

11、总体设计是把需求分析阶段得到的需求转变成符合成本和质量要求的、 抽象的系统实现方案的过程。从需求分析到总体设计,是一个逐渐扩充模型的过 程。系统总体设计确定实现系统的策略和目标系统的高层结构。确定设计中的类、 关联、接口形式及实现操作的算法。符合传统面向对象设计的准则:模块化,抽 象,信息隐藏,低耦合,高内聚。3.1 设计目标本系统为个人用户提供一个记录日常收支情况,并得到相应统计结果的平 台,主要实现以下目标: 提供日常收支情况记录查看及修改的功能。备份账目信息。3.2 系统结构设计个人记账系统面向的用户主要是个人用户,用户只要记录流水账信息便可经 过测算得到相应的统计结果,结合实际调查的其

12、他资料可以得出系统的主要功能 和辅助功能,并进行主控界面及基本对象的设计。根据上述分析,结合用户的具 体带求,确定系统主要包括四大功能,分别是流水账、统计报表。3.3 系统功能结构图具体系统结构如下图:个人记账系统流水账杳找流水账排序流水账统计保存读取文件新增流水账删除流水账按序号查找接口期查找按时间排序按金额排序第四章详细设计软件详细设计是软件工程的重要阶段,软件详细设计细化了高层的体系结 构设计,将软件结构中的主要部件划分为能独立编码、编译和测试的软件单元, 并进行软件单元的设计,并最终将影响软件实现的成败。优秀的详细设计在提高 编码质量、保证开发周期、节约开发成本等各方面都起着非常重要的

13、作用,是一 个软件项目成功的关键保证。本章将按照设计实现的顺序介绍各个单元的设计与 实现情况。4.1基本对象设计按照面向对象的分析与设计方法的基本思想,“万物皆对象”,把“对象”作 为解决问题的重心。根据个人记账系统的具体情况分析主要对象有流水账、统计 数据等。1 .流水账对象流水账对象代表用户所记录的每一笔账目。每一笔账目信息包括账目发生的 年月日信息,账目所属的消费或收入的详细类别,账目名称和金额。2 .统计数据对象本来其实统计数据对象可以不设立,因为全部的统计数据都可以通过计算得 到。但是考虑到用户查询较为频繁,为了避免每次查询均要计算一次,特别设立 了统计数据对象。实际上,用于保存计算

14、结果的数据量比较小,牺牲了这些许的 空间却能换来整个系统的高性能,这无疑是很值得的。统计数据对象包含了消费 结构所需要的各项收支的统计计算结果。3 .2系统主程序的设计与实现在设计系统主程序时,着重考虑项目的核心功能,并围绕核心功能进行设计。 显然本项目的核心功能就是记账。用户需要很方便的进行记账活动,并且可以快速看到记账结果。经过反复考虑设计系统的主控界面如图5-1所示。欢迎使用个人记账系统xxxxxxxxx xxx个人记账系统二一一二一一二 012 w1234 5g789111暨录efe录lr1. 辈记记号期记间额s 料人示除入序日翦金计需却斗 ii4.3流水账视图的设计与实现1.输入数据

15、创建链表欢迎使用个人记账系统个人记账系统清远操项目序号:8输入嗨创建链表r一显示簸箪2删除记录 b制入记亲号查期查找ss11-12系统的序日in言有余的序入入入入入入出入入入序号曹墨.番号:1,格式为* : 2011.7.10out表示收入和支出:in:100,“攵有parents、school、 labor s othersclothes x food、house、trauelx else: parents :200号为。时代表输入记录结束实现代码如下:aptr crcatqaptr cptr;int num;printf(输入的序号为0时代表输入记录结束n);primf(输入序号:) sc

16、anf(,%d,&num);if (num=0)return null;else cptr=(apir)malloc(sizcof(account);cptr-num=num;printff输入日期,格式为*.*.* :);scanf(u%sh,cptr-datc);print/喻入in或out表示收入和支出:。;scanf(1,%sh,cptr-in_out);prints输入金额:7scanf(n%f&cptr-amount);prinif(输入门类,收入有 parents、schoor labor、othersll ”支出有:clothesfood、house travel、else:

17、,r);scanf(n%sh,cptr-kind);printff输入余额:7scanf(u%f&cptr-rcmain);cptr-ncxt=crcat(); return eptr;2 .显示账单1 no.datein_outamountkindremain2011.?.10in100.00parents200.002011.7.11out15.00food185.002011.7.11out20.00else165.00个人记账系统-请选择项目序号:。一输入蜗居创建链表1 一显示解箪一 nnjr?a 、一实现代码如下:void print(aptr hcadptr)if(hcadptr=

18、null)primf(“鞋表为空 n”); return;elseif (hcdptr-nuxt=null)printf(,%dt%-10st%-5stt%5.2ftt%-10st(i5.2fn,hcadptr-nurn,hcadptr-datc,hcadptr-in_out,hcadptr-aiyiount,hcadptr-kind,hcadptr-rctnain); elseprintf(h%dt%-10st%-5stt%5.2ftt%-10st%5.2fnh,hcadptr-num,hcadptr-datc,hcadptr-in_out,hcadptr-amount,hcadptr-ki

19、nd,hcadptr-rcmain); print(lcadptr-ncxt);3 .删除记录2陨掾删除方西班入序号:2 .按时间删惊一秦记录3腼除全部记录谿入要删除的记录序号:1删i除成功, lf个人记账系统f 号 : i序录录期; 2人记记日/ 2_一录录 f 记记 f方撒部除 i除号间会f怦时除1 f sb am f 2 选1,2,be2 输删方册册葛414除号 时亲,一一录 式翳记先一 - 、p 1 2 3 3实现代码如下:aptr dcl(aptr hcadptr)aptr pl;aptr p2;int n j;char datc12;if(hcdptr=null)primf(nno

20、 list!”);return (licadptr);printf(选择删除方式,输入序号:n);primf(”l.按序号删除一条记录n”2.按时间删除一条记录n”3.删除全部记录n”);scanf(%d,&i);if(i=l)printf(输入要删除的记录序号:?scanf(h%d,&n);pl=hcadptr;whilc(pl -num!=n&p l-ncxt!=nc ll)p2 = pl;pl=pl-ncxt;if(pl-num=n) /pl 的 num 等于 nif(pl=headptr)hcadptr=hcadptr-ncxt;elsep2-ncxt=p l-ncxt;)frcc(p

21、l);printf(删除成功、吟;elseprintf(记录不存在,序号错误n);else if(i=2)primff输入要删除记录的日期:scanf(%s ,datu);pl=hcadptr;whilc(strcmp(daic,pl-datc)!=o& pl-ncxt!=nclll) p2=pl;pl=pl-ncxt;if(strcmp(datc,p 1 -datc)=o)if(pl=headptr)hcadptr=hcadptr-ncxt;elsep2-ncxt=pl-ncxt;frcc(pl);primfc删除成功n”);elseprints记录不存在n”);else if(i=3)wh

22、ilc(hcadptr!=null)pl=hcadptr;hcadptr=hcadptt-ncxt; frcc(pl);printf(删除成功it);rcturn(hcadptr);4 .账单查找蓍输入要查询的序号:1no.datein_outanountkindrenain12011.?.10in180.00parents180.00个人记账系统情输入要查询的日期:2011.7.10no .datein_outamountkindrenain12011.7.10in180.00parents180.0022011.7.10out15.00food175.00d人记账系统实现代码如下:/*4.

23、按num查询*/aptr num_scarch(aptr hcadptr,int num) aptr cptr;printfc%3st%-10st%l8st%-10st%-10st%10sn”, “notdme”,“in_out”amoum?kindt*main);if 0icadptr-num=num)printf(%dt%-10st%-5stt%5.2fti%10st%6.2fn”,hsdptr-num,hcadpit-datc,hcadptr-in_out,hcadptr-amount,hcadptr-kind,hcadptr-rcmain); elsecptr=hcadptt;whil

24、e (cpir!=ntill&cptr-num!=nutn) cptr=cptr-ncxt;if(cptr!=null) printff,%dt%-10st%-5stt%5.2ftt%-10st%5.2fnm,cptr-num, cptr-datc,cptr-in_out,cptr-amount,cptr-kind,cptr-rcmain);return eptr; elseprimf,该条记录不存在n);return eptr;/*5.按 date 查询*/void datc_scarch(aptr hcadptr,char datcq) aptr eptr;int m=0;printfc%

25、3st%-10st%l8st%-10st%-10st%10sn”,“no.ldatj, ”in_qut”,“amount”,咋 indlrumain);cptr=hcadptr;whilc(cptr!=null) if (strcmp(cptr-datc,datc)=o)printf(,%dt%-10stxr5stt%5.2fttcrl0st%5.2fnn,cptr-num, cptr-datc,cptr-in_out,cptr-amount,cptr-kind,cptr-rcmain);m=m+l;cptr=cptr-ncxt;if(m=0)primf(该条记录不存在n);5 .账单排序浏览

26、诲单显示如下:2011.7.11in2011.7.12out个人记账系统50.0020.00labor food225.00205.008旅单显示如下:2011.7.12out2011.7.11in个人记账系统20.0050.00food labor205.00225.00实现代码如下:void datc_sort(aptr *sptr)apitppit=nllll,cpir=nullalpvr=null,t2ptr=null;int i,j;for (i=0;incxt;for (j=o;jdatc,cptr-datc)o&pptr=*sptr)pptr-ncxt=cpir-ncxt; cp

27、tr-ncxt=pptr;tlptr=pptr;pptr=cptr;cpir=tlptr;*sptr=pptr;elseif (strcmp(pptr-datc,cpir-datc)o)tlptr-ncxt=cptr; cptr-ncxt=pptr; pptr-ncxt=t2ptr; tlptr=pptr;pptr=cptr; cptr=tlptr;if(cptr-ncxt!= null)tlptr=pptr;pptr=cptr;cptr=cptr-ncxt; t2ptr=cpir-ncxt;void amount_sort(aptr *sptr)|aptrpptr=null,cpir=nul

28、l,tlptr=null,t2ptr=null;ini i j;for (i=0;incxt;for (j=o;jamountcptr-amount&pptr=*spir) pptr-ncxt=cptr-ncxt;cptr-ncxt=pptr;tlptr=pptr;pptr=cptr;cptr=tlptr;*sptr=pptr; elseif (pptr-amountcptr-amount)tlptr-ncxt=cptr;cptr-ncxt=pptr;pptr-ncxt=t2ptr;tlptr=pptr;pptr=cptr;cptr=tlptr;if(cptr-ncxt!=ncll) tlpt

29、r=pptr;pptr=cptr;cptr=cptr-ncxt;t2ptr=cpir-ncxt;6 .统计实现代码如下:/*9.统计各类数据*/void stat(aptr hcadptr) |int choice;char io4,kind30,date12;primf(请选择项目序号:n”);primf(”l总收入和总支出n”2各门类总计统计n”3月度总计n”4各门类多占总量的比例n”);scanf(l,%dll,&choice);switch(choicc)case l:printf(hi+算总收入请输入in,计算总支出请输入outn); scanf(%sh,io);o_total(hc

30、adptr,io);break;case 2:print,统计收入输入in,统计支出输入out:);scanf(%sh,io);printf(请输入要统计的kind类型:);scanff,%sh,kind);kind_total(licadpir,kindjo);break;case 3:printf(统计收入输入in,统计支出输入out:11); scanf(,f%sn,io);printf(”请输入要统计的年月,格式*.*:”); scanffl%sh,date);mon_total(licadptr,datc,k);break;case 4:printf(统计收入输入in,统计支出输入o

31、ut:);scanf(h%sh,io);printf(”请输入要统计的kind类型:);scanfff%sh,kind);proportion(hcadptr,kindjo);break;/*各门类总计统计*/float kind_tx)tal(aptr hcadptr,char kind口,char 10口) file *fp;float sum=0;char str20;aptr cptr=hcadptr;while(cptr!=null)if(strcmp(kindtcptr-kind)=0&strcmp(io,cptr-in_out)=0) sum+=cptr-amount;cptr=

32、cptr-ncxt;printf(h%s 类的s 统计结果为:kind,io,sum);printfc保存结果,输入要保存的文件名:*);scanf(n%sm,str);if(fp=fopcn(str;,ah)=null)primf(文件打不开,无法保存n)fprintf(fp;,%sh;,tlic result is tr);fprintf(fp,%st%st%fn”,kindjo,sum); primf(保存成功h);return sum;/*总收入总支出*/float io_tt)tal(aptr hcadptr,char ioq)float sum=0;char str20;aptr

33、cpir=hcadptr;file *fp;while(cptr!=null)if(strcmp(cptr-in_out,io)=0)sum+=cptr-amount;cptr=cptr-ncxt;printf(h%s 的结果为:%fnjo,sum);primf(保存结果,输入要保存的文件名:*1);scanf(m%sh,str);if(力=fbpen(so=null)primf(文件打不开,无法保存n); elsefprintf(fp;,%s,tlic result is rintf(fp,h%st%fnh,io,sum);printf(保存成功4寿 return sum;/*月度开销*/void mon_total(aptr hcadptr,char date0,char 1。口) |file *fp;char str20;float sum=0;aptr cpir=hcadptr;while(cptr!=null)if(sirctyip(cptr-in_out,k)=0&sirncmp(cptr-daic,datc,7)=0)sum+=cptr-amo

温馨提示

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

评论

0/150

提交评论