- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南京理工大学C课程设计报告
南 京 理 工 大 学
C++课程设计报告
1010190410吴立珠
程序功能简介
个人财政支出的管理程序,将个人财务的目标及当前的存款,支出保存下来,可以随时更新,查看,比较赢余和目标的差距。
课程设计的要求
将收支的数据与相应的函数封装到类中,并改写主程序,是程序结构化。
增加保存每笔收支的记录,并对每闭记录增加日期录入,按日期的顺序保存,查看记录,将每一个记录放入一个文件中,每次运行程序时首先打开这个文件,程序运行完毕是将更新的记录放回文件中。
完善程序,补充类中数据成员赢余的计算和输出,要求每笔收入和支出都要重新统计当前情况下的赢余数目。
增加程序监控功能,当输入时间发生错误是,要求重新输入正确的时间;当结余的数目为负数时,输出信息,警告已经超支!
程序设计思想
类的封装
远程序的结构比较简单,只保留了每次更新操作的最后结果,达不到财务帐册的要求。
若要详细记录下每闭收笔的记录的款项和原因等。于是才用了链表的形式保存了数据,且可以根据实际需要动态开辟空间。链表结构如下:
class CFinance
{
private:
int nYear,nMonth,nDay; //年月日
double dlIncome,dlOutput;//收入,支出数目
double dlBalance; //结余
char szPurpose[20]; //用途,目的
static double dlPurpose; //目标
double dlGap; //据目标的差额
public:
CFinance(){dlIncome=dlOutput=dlBalance=0.0;}//缺省的构造函数
CFinance(int a,int b,int c,double d,double e,char f[],double g,double h);//构造函数
CFinance(int a,int b,int c,double d,double e,char g[]);//构造函数
CFinance(int a,int b,int c){nYear=a,nMonth=b,nDay=c;}//根据日期生成结点,查找用
int Compare(CFinance);//比较时间的大小
void Show();//输出类的成员
void Showdeposit();//输出收入的时间和目的,用途
void Showwithdraw();//输出支出的时间和目的,用途
void SetFinance(int,int,int,double,double,char*);//对象赋值
void GetPurpose(double purs){dlPurpose=purs;}//赋值目标
double ShowPur(){return dlPurpose;}//返回目标
void calculatebalance(double dlBal){dlBalance=dlBal+dlIncome-dlOutput;}//计算结点的赢余情况,计算下一个结点用
double GetBalance(){return dlBalance;}//返回与目标的差额
void ModifyData();//修改结点记录
void calculatedlgap();//返回差额
friend void Deposit(CFinance *);//定义存款函数为友元函数
friend void Withdraw(CFinance *);//定义取款函数为友元函数
friend class Clist;//定义链表类为友元类
};
class CNode //结点类
{
private:
CFinance *pData; //用于指向数据类的指针
CNode *pnext; //指向链表的下一个结点的指针
public:
CNode(){pData=0;pnext=0;} //结点的构造函数
CNode(CNode node){pData=node.pData,pnext=node.pnext;} //用于拷贝的构造函数
void InputData(CFinance *pdata){pData=pdata;} //输入数据
void ShowNode(){pData-Show();} //结点的输出
void modify(){pData-ModifyData();} //修该结点的数据
CFinance *GetData(){return pData;} //返回数据类的指针
void
文档评论(0)