C++课程设计报告-个人财务管理系统(共16页).doc
-
资源ID:5436958
资源大小:103KB
全文页数:16页
- 资源格式: DOC
下载积分:20金币
快捷下载
![游客一键下载](/images/hot.gif)
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
C++课程设计报告-个人财务管理系统(共16页).doc
精选优质文档-倾情为你奉上 C+语言程序设计课程设计报告题 目:个人财政管理 年 级:2014级 专 业:信息与计算科学 学 号: 姓 名:指导教师:目录一、需求分析 2二、概要设计2三、详细设计3四、调试分析 64.1运行结果74.2调试结果84.3程序不足之处84.4改进之处8五、小结 8附录.9【摘要】个人理财管理系统是一款管理个人财物的应用软件。该软件代替了手工记账的麻烦,可以方便的实现个人收支状况的浏览、添加、删除、修改、查询等功能,适合个人管理自己的日常收入收支情况。该系统运用了C+语言程序设计知识中的面向对象的思想,在VC+6.0集成开发环境下完成程序的编写。【关键词】个人理财;管理信息系统;面向对象;VC+6.0 1.需求分析:1)程序中的收支情况按时间顺序存放,将其放入一个文件中,每次运行程序时首先打开这个文件,程序运行完毕时将更新的记录放回文件中。 2)可以按时间的范围检查账目,记在主菜单中增加检索的功能选项,输入时间范围即可打印出详细报表。3)可以修改、删除某笔收入或支出。4)当输入时间发生错误(如月份超过12等),要求重新输入正确的时间;当结余的数目为负数时,打印出信息,警告已经超支。5)显示时,要求每笔收入和支出都要重新统计当前情况下的盈余数目。 2概要设计:系统的功能模块划分:整个系统分为收支管理,报表统计管理,系统管理等模块,收支管理模块分为添加收支,修改收支, 删除收支,统计管理模块分为收支管理,收支明细,系统管理分为,帮助,退出系统。开始进入系统收入支出用户管理数据维护信息查询信息输出退出系统结束个人财政管理收支管理统计管理系统管理添加收支修改收支查询收支删除收支收支管理收支明细帮助退出系统3详细设计:3.1系统主界面设计主界面左侧有7个选项,分别为收入模式,支出模式,查看账目,制定目标,记录置零,退出系统,帮助,下侧为“请输入你的选择:”。相应代码:Manager main() /主函数 Manager mm; /创建对象char select; cprintf("=个人财政支出管理= ");/显示标题# ifdef MINcout<<"nnn#调 试 模 式#"<<endl;#endifcout<<"nnt<1> 收入模式"<<endl; /选择<1>进入收入模式 cout<<"nt<2> 支出模式"<<endl; /选择<2>进入支出模式 cout<<"nt<3> 查看帐目"<<endl; /选择<3>进入查看帐目模式 cout<<"nt<4> 制定目标"<<endl; /选择<4>进入制定目标模式 cout<<"nt<5> 记录置零"<<endl; /选择<5>记录置零cout<<"nt<6> 退出系统"<<endl; /选择<6>退出 cout<<"nt<0> 帮 助 "<<endl;cout<<"nnt请输入你的选择: " cin>>select; if(select = '1')mm.Deposit();else if(select = '2')mm.Withdraw();else if(select = '3')mm.ViewTotal();else if(select = '4')mm.SetGoal();else if(select = '5')mm.SetZero();elseif(select = '0')cout<<"nnnn程序功能简介:个人财政支出管理程序,完成收入,支出,盈余的记录和管理。主页面下选择数字键进入!"<<'n'<<'n' cout<<endl<<endl<<endl;getch();main(); /回主函数elseif(select = '6')exit(1); /退出else main(); /回主函数 3.2 收支模块设计1-输入收入记录动态产生一个新的数据,调用存款函数输入记录,将指向其的指针添加到链表,进行排序。2-输入支出记录动态产生一个新的数据,调用取款函数输入记录,将指向其的指针添加到链表,进行排序。3-输出收入记录调用链表中Showlistdeposit()函数,这个函数指向数据类中的输出收入记录,定义一个指针,输出指针指向的数据,然后指针指向下一个指针直到链表尾部。4-输出支出记录调用链表中Showlistwithdraw()函数,其中这个函数指向数据类中的输出支出记录,定义一个指针,输出指针指向的数据,然后指针指向下一个指针直到链表尾部。3.3 统计管理模块设计1-查询收支记录调用链表中Showlistgetbanlance()函数,其中这个函数指向数据类中的数据,然后指针指向下一个指针直到链表尾部。2-按日期查找记录在数据类中有一函数可以比较日期,大的返回+1,小的返回+1,相等的返回0。在查找记录时先比较日期与链表中的日期是否有相等的,若有则定义一个指针指向该结点,调用函数输出该结点的所有记录,指针指向下一个指针,继续查找。3-按日期删除记录在数据类中有一函数可以比较日期,大的返回+1,小的返回+1,相等的返回0。在删除记录时先比较日期与链表中的日期是否有相等的,若有则定义一个指针指向该结点,调用函数删除该结点的所有记录,指针指向下一个指针,继续查找。4调试分析:4.1运行结果:4.2调试结果程序上有小处编码错误,经过检查已经调试过来,调试成功。 4.3程序不足之处没有程序监控功能,当输入时间发生错误时,无法准确判断时间,当结余的数目为负数时,也无法及时提醒已经超支。4.4改进之处增加函数循环,置零功能,并在各函数中增加条件编译,达到测试程序目地。5小结: 转眼间一个学期就过去了,课程设计也接近尾声,在这几天的设计课程中,还是学到不少知识,课程一开始,拿到课题之后有点迷茫,不知从何下手,感觉以自己所学的不够用来完成这次课程设计,查找过一些资料之后发现没有想象中那么复杂,做到管理模块设计的时候不太顺利,一开始也没理解模块设计的含义,经过老师指点后才知道怎么去做,总的来说,经过这几天的努力,课程设计也算是完成了,虽然现在的学习已经逐渐深入,但是以前学的知识还是要注意复习,多加练习,才能在遇到问题的时候不会手足无措。专心-专注-专业附录# define MIN /调试模式时保留# define DE1 /调试模式时保留# define DE2 /调试模式时保留# define WI1 /调试模式时保留# define WI2 /调试模式时保留# define SG /调试模式时保留# define VT /调试模式时保留# define SZ /调试模式时保留#include <iostream.h>#include <fstream.h>#include <conio.h>#include <iomanip.h>#include <stdlib.h>class date private: int year,month,day; public: void setdate(int y=0,int m=0,int d=0); void showdate(); ; void date:setdate(int y,int m,int d) cin>>y>>m>>d; year=y; month=m; day=d; void date:showdate() cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl; class Manager /定义类Managerprivate: date time;double dAmt; /收入数目char ans; /存放键盘字符的ASCII码double num; /存入输入的数据double wAmt; /支出数目 double setAmt; /制定目标double gAmt; /取目标金额double balance; /收支金额double newbalance; /与目标所差金额public: /声名我所有的函数void Deposit(); /收入函数void Withdraw(); /支出函数void ViewTotal(); /查看帐目void SetGoal(); /制定目标void SetZero(); /记录置零;Manager main() /主函数 Manager mm; /创建对象char select; cprintf("=欢迎进入个人财政管理系统= ");/显示标题cout<<"nnt<1> 收入模式"<<endl; /选择<1>进入收入模式 cout<<"nt<2> 支出模式"<<endl; /选择<2>进入支出模式 cout<<"nt<3> 查看帐目"<<endl; /选择<3>进入查看帐目模式 cout<<"nt<4> 制定目标"<<endl; /选择<4>进入制定目标模式 cout<<"nt<5> 记录置零"<<endl; /选择<5>记录置零cout<<"nt<6> 退出系统"<<endl; /选择<6>退出 cout<<"nt<0> 帮 助 "<<endl;cout<<"nnt请输入你的选择: " cin>>select; if(select = '1')mm.Deposit();else if(select = '2')mm.Withdraw();else if(select = '3')mm.ViewTotal();else if(select = '4')mm.SetGoal();else if(select = '5')mm.SetZero();elseif(select = '0')cout<<"nnnn程序功能简介:个人财政支出管理程序,完成收入,支出,盈余的记录和管理。主页面下选择数字键进入!"<<'n'<<'n'cout<<"" cout<<endl<<endl<<endl;getch();main(); /回主函数elseif(select = '6')cout<<"nnt欢迎再次使用个人财政管理系统nnt" /退出else main(); /回主函数 void Manager:Deposit()/在程序中记录收入数目的函数 mm1:dAmt = 0; num = 0; double a=0,c=0;ifstream get("Money.txt"); /打开存贮数据文件# ifdef DE1cout<<"n#打开文件money.txt读取数据#"<<endl;#endifget>>a>>num>>c; /取得存档文件中的三个数据get.close(); cout<<endl<<endl;cprintf("*收入* "); cout<<"nnt请输入时间: " time.setdate(); cout<<"nnt请输入收入金额: $" cin>>dAmt;/检查输入的数据是否为错误的数据或是零,然后继续 if(dAmt <= 0) /如果数据小于等于零 cout<<"nnnnn"<<endl; cprintf(" !错误的数据! ."); getch(); main(); else cout<<"nnt数据输入 <"<<dAmt<<">."<<endl; cout<<"nt 确认你输入的数据<y/n>: " cin>>ans; if(ans = 'y') dAmt = dAmt + num; /把新数据加到原有数据上 ofstream save("Money.txt");# ifdef DE2cout<<"n#打开文件money.txt,保存数据#"<<endl;#endifsave<<a<<'n'<<dAmt<<'n'<<c; save.close(); cout<<"nnnnn"<<endl; cprintf(" 你的收入数据成功输入."); cout<<"nt 继续输入收入金额<y/n>: "cin>>ans;if(ans = 'y')goto mm1; /继续输入数据elsecout<<endl<<endl<<endl;main(); /回主函数getch(); cout<<endl<<endl<<endl;main(); /回主函数 else /中止输入数据 main(); /回主函数 main(); /回主函数 void Manager:Withdraw() /在程序中记录支出数目的函数 mm2:wAmt = 0; num = 0; double a=0,b=0;ifstream get("Money.txt"); /打开存贮数据文件# ifdef WI1cout<<"n#打开文件money.txt,读取数据#"<<endl;#endif get>>a>>b>>num; /取得存档文件中的三个数据 get.close(); cout<<endl<<endl;cprintf("*支出* "); cout<<"nnt请输入时间: " time.setdate(); cout<<"nnt请输入支出金额: $" cin>>wAmt; if(wAmt <= 0) /检查输入的数据是否为错误的数据或是零,然后继续 cout<<"nnnnn"<<endl; cprintf(" !错误的数据! ."); getch(); main(); else cout<<"nnt数据输入 <"<<wAmt<<">."<<endl; cout<<"nt 确认你输入的数据<y/n>: " cin>>ans; if(ans = 'y') wAmt = wAmt + num; /把新数据加到原有数据上 ofstream save("Money.txt");# ifdef WI2cout<<"n#打开文件money.txt,保存数据#"<<endl;#endifsave<<a<<'n'<<b<<'n'<<wAmt; save.close(); cout<<"nnnnn"<<endl; cprintf(" 你的支出数据成功输入."); cout<<"nt 继续输入支出金额<y/n>: "cin>>ans;if(ans = 'y')goto mm2; /继续输入数据elsecout<<endl<<endl<<endl;main(); /回主函数getch(); cout<<endl<<endl<<endl;main(); else /中止输入数据 main(); /回主函数 main(); /回主函数 void Manager:SetGoal() /在程序中制定目标金额的函数 setAmt = 0; double b=0,c=0,temp=0;cout<<endl<<endl;cprintf("*制定目标* "); cout<<"nnt请输入时间: " time.setdate(); cout<<"nnt制定目标金额: " cin>>setAmt; /保存新数据到文件中ifstream get("Money.txt"); /打开存贮数据文件 get>>temp>>b>>c; /取得存档文件中的三个数据 get.close();# ifdef SGcout<<"n#打开文件money.txt,保存数据#"<<endl;#endifofstream save("Money.txt"); save<<setAmt<<'n'<<b<<'n'<<c; save.close(); cout<<"nnnnn"<<endl; cprintf(" 你的目标金额已建立."); getch(); cout<<endl<<endl<<endl;main();void Manager:ViewTotal() /查看帐目函数 dAmt = 0; /收入数目 wAmt = 0; /支出数目 gAmt = 0; /取目标金额 balance = 0; /收支金额 newbalance = 0;/与目标所差金额# ifdef VTcout<<"n#打开文件money.txt,读取数据#"<<endl;#endififstream get("Money.txt"); /打开存贮数据文件 get>>gAmt>>dAmt>>wAmt; /取得存档文件中的三个数据 get.close(); balance = dAmt - wAmt; /收入减去支出取得收支平衡数据 cout<<endl<<endl;cprintf("*查看帐目* "); cout<<"nn"<<endl; cprintf(" 收支总数"); cout<<""<<endl; cprintf(" ="); cout<<"nn"<<endl; cprintf(" 收入总金额 支出总金额 收支总金额 "); cout<<"n"<<endl; cout<<setw(15)<<dAmt<<setw(25)<<wAmt<<setw(20)<<balance<<endl;/使每两个数据按一定的间隔输出 newbalance = gAmt - balance; cout<<"nnn"<<endl; cprintf(" 收支平衡"); cout<<""<<endl; cprintf(" ="); cout<<"nn"<<endl; cprintf(" 目标金额 收支平衡金额 相差金额 "); cout<<"n"<<endl; cout<<setw(15)<<gAmt<<setw(25)<<balance<<setw(23)<<newbalance<<endl; getch(); cout<<endl<<endl<<endl;main(); /回到主函数void Manager:SetZero() /记录置零函数cout<<"nnnn 你确定要将记录置零<y/n>: " cin>>ans; /确认是否要将记录置零if(ans = 'y')dAmt = 0; /先初始数据为零 wAmt = 0; setAmt = 0;# ifdef SZcout<<"n#打开文件money.txt,保存数据#"<<endl;#endifofstream save("Money.txt"); /打开存放数据的文件并将收入数据置零 save<<setAmt<<'n'<<dAmt<<'n'<<wAmt; save.close();cout<<endl<<endl<<endl;main(); /回主函数 elsecout<<endl<<endl<<endl;main(); /回主函数