c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx

上传人:b****5 文档编号:18781985 上传时间:2023-01-01 格式:DOCX 页数:25 大小:251.03KB
下载 相关 举报
c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx_第1页
第1页 / 共25页
c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx_第2页
第2页 / 共25页
c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx_第3页
第3页 / 共25页
c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx_第4页
第4页 / 共25页
c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx

《c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx》由会员分享,可在线阅读,更多相关《c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

c 课程设计个人财政支出管理南京理工大学谢记超Word文档格式.docx

"

您的财政已超支!

endl;

}

}累积计算的实现别看代码不长绝非易事。

6.主界面的美化,还是花了不少心思的!

四、程序中尚存在的不足

1.根据日期修改记录只实现了金额的修改,而日期和用途的修改未实现。

2.入日期时用cin>

>

a>

b>

C;

;

获取时间,在Dos屏幕中输入201285100而入的的100会被下一次cin>

d;

获得(即被当做收入获得)如何在取得相应数据后清空为取得的数据?

cin.ignorecin.synccin.ignore都不行。

3.入与支出的用途在Dos屏幕中只能输入英文,不能输入汉语,如果这个程序用

MFC编程来编写效果会更好!

4.操作未实现,有时候运行次数过多就会在评上留下很多东西,DOS屏幕会显乱。

五、程序演示截图

 

#include<

iostream.h>

#include<

string.h>

stdlib.h>

fstream.h>

boolIsDateRight(int,int,int);

//函数原形说明

staticdoubledlPurpose=0.0;

//全局静态变量,目标classCFinance//数据类

intnYear,nMonth,nDay;

doubledlIncome,dlOutput;

doubledlBalance;

charszPurpose[20];

doubledlGap;

public:

CFinance();

//缺省构造函数

CFinance(int,int,int);

//为日期赋值的构造函数intCompare(CFinance&

);

//比较日期大小的函数

voidShow();

//展示该笔收支情况,包括盈余状

voidSetFinance(int,int,int,double,double,char*);

//为所有成员变量赋初值的函数

voidCalculate(doubledlBal);

//累计计算总收入的函数doubleGetBalance();

voidModifyData();

//修改数据的函数

voidSetVal(int&

int&

double&

char*);

//获得各成员值的函数

boolIsDateEqual(int,int,int);

////判断日期是否存在

voidShowWithoutBalance();

//展示该笔收支情况,不包括盈余情况

};

CFinance:

CFinance()//缺省构造函数

dlIncome=0.0;

dlOutput=0.0;

dlBalance=0.0;

CFinance(intyear,intmonth,intday)//为日期赋值的构造函数

nYear=year;

nMonth=month;

nDay=day;

dlIncome=dlOutput=0.0;

intCFinance:

Compare(CFinance&

finance)//比较日期的大小(大于取1,小于取-1,相等取0)

if(nYear>

finance.nYear)return1;

if(nYear<

finance.nYear)return-1;

if(nYear==finance.nYear)

if(nMonth>

finance.nMonth)return1;

if(nMonth<

finance.nMonth)return-1;

if(nMonth==finance.nMonth)

if(nDay>

finance.nDay)return1;

if(nDay<

finance.nDay)return-1;

if(nDay==finance.nDay)return0;

voidCFinance:

Show()//展示该笔收支情况,包括盈余状况

cout<

日期:

nYear<

"

nMonth<

nDay<

收入:

dlIncome<

支出:

dlOutput<

用途:

szPurpose<

余额:

dlBalance<

目标:

dlPurpose<

SetFinance(intyear,intmonth,intday,doubleincome,doubleoutput,char

*purpose)

{//为所有成员变量赋初值的函数

dlIncome=income;

dlOutput=output;

strcpy(szPurpose,purpose);

Calculate(doubledlBal)//累计计算总收入的函数

dlBalance=dlBal+dlIncome-dlOutput;

doubleCFinance:

GetBalance()

returndlBalance;

ModifyData()//修改数据函数

doubletemp;

if(dlIncome>

0)//若dlIncome>

0,修改收入数据;

否则修改支出数据

输入修改后的收入:

;

cin>

temp;

if(temp>

else

修改成功!

dlIncome=temp;

输入有误,修改失败!

输入修改后的支出:

dlOutput=temp;

输入有误,修改失败!

SetVal(int&

year,int&

month,int&

day,double&

income,double&

output,char*purpose)

{//获得各成员值的函数

year=nYear;

month=nMonth;

day=nDay;

income=dlIncome;

output=dlOutput;

strcpy(purpose,szPurpose);

boolCFinance:

IsDateEqual(intyear,intmonth,intday)//判断日期是否存在

if(nYear==year&

&

nMonth==month&

nDay==day)

returntrue;

returnfalse;

ShowWithoutBalance()//展示该笔收支情况,不包括盈余情况

支出"

用途:

目标:

classCNode//结点类

CFinance*pData;

//用于指向数据的指针,相当于节点中存放数据的部分

CNode*pNext;

//用于指向下一节点的指针public:

CNode();

//默认构造函数

CNode(CNode&

node);

//拷贝构造函数

voidInputData(CFinance*pdata);

//将数据的地址赋值给数据指针pData的函

voidShowNode();

//输出本节点所指向的数据

CFinance*GetData();

//获得该节点所指向的数据的地址friendclassCList;

//把CList定义为友员函数

CNode:

CNode()//默认构造函数

pData=0;

pNext=0;

node)//拷贝构造函数

pData=node.pData;

pNext=node.pNext;

voidCNode:

InputData(CFinance*pdata)//将数据的地址赋值给数据指针pData的函数

pData=pdata;

ShowNode()//输出本节点所指向的数据

pData->

Show();

CFinance*CNode:

GetData()//获得该节点所指向的数据的地址

returnpData;

classCList//链表类

protected:

CNode*pHead;

//定义一个CNode的头指针

CList();

//构造函数

~CList();

//析构函数

voidAddNode(CNode*pnode);

//增加结点

voidDeleteNode(CNode*);

//删除制定结点

CNode*LookUp(CFinance&

//根据日期查找指定数据,并返回该数据所在结点指针

voidShowList();

//输出链表中的数据

voidDeleteList();

//删除链表中的数据CNode*GetListHead();

//获得链表头指针

CNode*GetListNextNode(CNode*);

//返回指定结点的下一结点指针voidInsert(CNode*);

//据日期升序插入结点

CNode*GetLastNode();

//返回尾部的头指针

voidCalBalance();

//逐个结点计算盈余

CList:

CList()//构造函数

pHead=0;

~CList()//析构函数

DeleteList();

voidCList:

AddNode(CNode*pnode)//增加结点

if(pHead==0)//头指针为空

pHead=pnode;

pHead->

pNext=0;

GetLastNode()->

pNext=pnode;

pnode->

DeleteNode(CNode*pnode)//删除制定结点

if(!

pHead)//头指针为空,即还未建立链表

删除结点错误:

链表不存在!

exit

(1);

if(pnode==pHead&

pNext==0)//只有一个节点时删除节点

deletepHead->

pData;

deletepHead;

pHead=0;

elseif(pnode==pHead)//链表中有多个结点,要删除的结点是头结点

CNode*p=pnode->

pNext;

deletepHead->

pHead=p;

else//链表中有多个结点,要删除的结点是其他节点

CNode*p=pHead;

while(p&

p->

pNext!

=pnode)

p=p->

p)

结点不存在!

CNode*q=pnode->

deletepnode->

deletepnode;

p->

pNext=q;

CNode*CList:

LookUp(CFinance&

finance)//根据日期查找指定数据,并返回该数据所在结点指针

if(pHead==0)return0;

CNode*pn=pHead;

while(pn)

if(pn->

Compare(finance)==0)returnpn;

pn=pn->

return0;

ShowList()//输出链表中的数据

pHead)

链表为空"

return;

while(p)

ShowNode();

p=p->

DeleteList()//删除链表中的数据

if(pHead==0)return;

CNode*p,*q;

p=pHead;

while(p)

deletep->

q=p;

deleteq;

GetListHead()//获得链表头指针

returnpHead;

GetListNextNode(CNode*pnode)//9

returnpnode->

Insert(CNode*pnode)//按日期的升序插入结点

CNode*p,*q;

if(pHead==0)

pHead->

if(pHead->

Compare(*(pnode->

pData))==1)

pnode->

pNext=pHead;

pHead=pnode;

return;

p=pHead;

while(p&

pData))==-1)

q=p;

q->

pNext=p;

GetLastNode()//返回尾部结点的指针(该程序未用到,用于扩展功能)

while(p->

pNext)

returnp;

CalBalance()//逐个结点计算盈余

pHead)return;

doubletemp=0;

CNode*p=pHead;

Calculate(temp);

temp=p->

GetBalance();

classCRecord//处理记录类

CListlist;

//把CList的对象list作为CRecord的子对象

voidReadFromFile();

//从文本文档读取数据

voidSaveToFile();

//把数据写进文本文档

voidInputIncomeRecord();

//增加收入数据

voidInputOutputRecord();

//增加支出数据

voidViewIncomeRecord();

//展示全部收入记录

voidViewOutputRecord();

//展示全部支出记录

voidViewBalance();

//展示全部收入与支出记录,显示盈余情况,实现超支预警

voidLookUpRecord();

//根据日期寻找记录

voidEditRecord();

//根据日期修改记录

voidDeleteRecord();

//根据日期删除记录

voidsetgoal(double);

//设置存储目标

setgoal(doublegoal)//设置存储目标

{dlPurpose=goal;

ReadFromFile()//从文本文档读取数据

{ifstreaminfile1("

目标dlPurpose.txt"

if(!

infile1)

文件读取失败!

exit

(1);

infile1>

dlPurpose;

ifstreaminfile("

收支记录finance.txt"

infile)

intyear,month,day;

doubleincome,output;

charpurpose[20];

while(infile>

year>

month>

day>

income>

output>

purpose)

CFinance*pfinance=newCFinance;

pfinance->

SetFinance(year,month,day,income,output,purpose);

CNode*pnode=newCNode;

InputData(pfinance);

list.AddNode(pnode);

list.CalBalance();

SaveToFile()//把数据写进文本文档

{ofstreamoutfile1("

outfile1)

文件写入失败!

outfile1<

ofstreamoutfile("

outfile)

CNode*p=list.GetListHead();

SetVal(year,month,day,income,output,purpose);

outfile<

year<

month<

day<

income<

output<

purpose<

p=list.GetListNextNode(p);

InputIncomeRecord()//增加收入数据

doubleincome;

请输入日期:

(例如:

2012229)"

day;

while(!

IsDateRight(year,month,day))

日期不正确!

请重新输入:

请输入收入金额:

income;

请输入来源:

purpose;

SetFinance(year,month,day,income,0,purpose);

list.Insert

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

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1