c课程设计个人财政支出管理南京理工大学谢记超

上传人:博****1 文档编号:505007633 上传时间:2023-12-28 格式:DOC 页数:20 大小:67.50KB
返回 下载 相关 举报
c课程设计个人财政支出管理南京理工大学谢记超_第1页
第1页 / 共20页
c课程设计个人财政支出管理南京理工大学谢记超_第2页
第2页 / 共20页
c课程设计个人财政支出管理南京理工大学谢记超_第3页
第3页 / 共20页
c课程设计个人财政支出管理南京理工大学谢记超_第4页
第4页 / 共20页
c课程设计个人财政支出管理南京理工大学谢记超_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《c课程设计个人财政支出管理南京理工大学谢记超》由会员分享,可在线阅读,更多相关《c课程设计个人财政支出管理南京理工大学谢记超(20页珍藏版)》请在金锄头文库上搜索。

1、南 京 理 工 大 学C+课程设计报告姓名:谢记超一、 课程设计题目:个人财政支出管理A级程序功能简介:将个人财物的目标及当前存款、支出保存下来,可随时更新查看,比 较盈余与目标的差距。设计要求:1将收支的数据与相应的函数封装到类中,并改写主程序,使程序结构化。2增加保存每笔收支的记录,并对每笔记录增加日期录入,按日期顺序保存查看记录。将所有记录放入一个文件中,每次运行程序时首先翻开这个文件,程序运行完毕时将更新的记录放回文件中。3完善程序,补充类中数据成员(dlbalance)的计算和输出,要求每笔收入和支出都要重新统计当前情况下的盈余数目。4增加程序监控功能,当输入时间发生错误如月份超过十

2、二,要求重新输入正确的时间;当结余数目为负数时,输出信息,警告已超支。二、 对题目的分析,以及功能的实现类:Clist(链表类)指针成员指向类cnode的对象类cnode各数据成员以及成员函数类CFinance的数据成员以及成员函数CNode 指针成员pData指向CFinance的对象类Clist的各数据成员以及成员函数关键的四个类1.class CFince数据类2.class CNode 结点类3.class CList 链表类4.class CRecord 处理类两个函数1. 判断日期是否正确的函数 2. main函数实现如下功能1. 程序的结构化,将各函数封装到类中。2. 数据的保存

3、与读取。3. 数据的处理,用相应函数实现4. 优化处理,界面美观,人性化提示,数据输入的监控三、 程序设计过程中遇到的问题与解决方法1. 开始做出的程序添加收入与支出记录是未进行日期检查,导致不实际的日期也被录入。对于日期的检查用了函数IsDateRight来实现,其中应用了if语句,switch语句帮助实现该功能。2. 数据的保存与读取开始实现不了,保存下来的数据格式不正确,打不开,再次运行时上次的数据也未能读取。最终在class CRecord 处理类中添加void ReadFromFile()和void SaveToFile()实现了这个功能,里面用到了输入输出流ifstream和ofs

4、tream,实现数据的保存与再次读取是很快乐的,最令人兴奋的是关闭程序后可以在文本文件中看到收支记录!3. 数据类 结点类 链表类 数据处理类的编写是很复杂的,环环相扣,数据类、节点类是根底,链表类将数据串起来,然后再用数据处理类中的函数处理链表中的数据!这四大类真是让人费力心思!当时实现这个生产链时,那是相当有成就感的!4. 如何区分开收入与支出记录输出,当时困扰了我很久,实在不希望不能实现收入记录与支出记录的分开显示,后来觉察可以通过判断函数的值来判断该笔记录是收入还是支出,最终实现了查看收入记录那么只显示收入记录,查看支出记录只显示支出记录。5. 累计计算余额,实现超支预警,void C

5、Record:ViewBalance() list.ShowList();if(list.GetLastNode()-GetData()-GetBalance()0)cout您的财政已超支!abC; ;获取时间,在Dos屏幕中输入 2021 8 5 100而入的的100会被下一次cind;获得即被当做收入获得如何在取得相应数据后清空为取得的数据?cin.ignore cin.sync cin.ignore 都不行。3.入与支出的用途在Dos屏幕中只能输入英文,不能输入汉语,如果这个程序用MFC编程来编写效果会更好!4.操作未实现,有时候运行次数过多就会在评上留下很多东西,DOS屏幕会显乱。五、

6、 程序演示截图#include#include#include#includebool IsDateRight(int,int,int); / 函数原形说明 static double dlPurpose=0.0; /全局静态变量,目标class CFinance /数据类int nYear,nMonth,nDay;double dlIncome,dlOutput;double dlBalance;char szPurpose20;double dlGap;public:CFinance(); /缺省构造函数CFinance(int,int,int); /为日期赋值的构造函数int Compa

7、re(CFinance &); /比拟日期大小的函数void Show(); /展示该笔收支情况,包括盈余状况void SetFinance(int,int,int,double,double,char *); /为所有成员变量赋初值的函数void Calculate(double dlBal); /累计计算总收入的函数double GetBalance(); void ModifyData(); /修改数据的函数void SetVal(int &,int &,int &,double &,double &,char *); /获得各成员值的函数bool IsDateEqual(int,int

8、,int); /判断日期是否存在void ShowWithoutBalance(); /展示该笔收支情况,不包括盈余情况;CFinance:CFinance() /缺省构造函数dlIncome=0.0;dlOutput=0.0;dlBalance=0.0;CFinance:CFinance(int year,int month,int day) /为日期赋值的构造函数nYear=year;nMonth=month;nDay=day;dlIncome=dlOutput=0.0;dlOutput=0.0;dlBalance=0.0;int CFinance:Compare(CFinance &fi

9、nance) /比拟日期的大小大于取1,小于取-1,相等取0if(nYearfinance.nYear)return 1;if(nYearfinance.nMonth)return 1;if(nMonthfinance.nDay)return 1;if(nDayfinance.nDay)return -1;if(nDay=finance.nDay)return 0;void CFinance:Show() /展示该笔收支情况,包括盈余状况cout日期:nYear nMonth nDay 收入:dlIncome 支出:dlOutput 用途:szPurpose 余额:dlBalance 目标:d

10、lPurpose0) /假设dlIncome0,修改收入数据;否那么修改支出数据couttemp;if(temp0)cout修改成功!endl;dlIncome=temp;elsecout输入有误,修改失败!endl;elsecouttemp;if(temp0)cout修改成功!endl;dlOutput=temp;elsecout输入有误,修改失败!endl;void CFinance:SetVal(int &year,int &month,int &day,double &income,double &output,char *purpose) /获得各成员值的函数year=nYear;month=nMonth;day=nDay;income=dlIncome;output=dlOutput;strcpy(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号