}
void CFinance::Calculate(double dlBal) //计算结点的盈余情况 { }
double CFinance::GetBalance() //返回结点的盈余情况 { }
//修改结点数据记录
void CFinance::ModifyData() {
double temp;
if(dlIncome>0) //若dlIncome>0,修改收入数据;否则修改{ } else {
cout<<\输入修改后的支出:\cin>>temp; if(temp>0) { } else {
cout<<\修改成功!\dlOutput=temp;
cout<<\输入修改后的收入:\cin>>temp; if(temp>0) { } else { }
cout<<\修改失败!\cout<<\修改成功!\dlIncome=temp;
return dlBalance;
dlBalance=dlBal+dlIncome-dlOutput; dlIncome=income; dlOutput=output;
strcpy(szPurpose,purpose); //拷贝
支出数据
第 11 页 共 28 页
}
//实现结点数据的输入/输出
void CFinance::SetVal(int &year,int &month,int &day,double &income,double &output,char *purpose) { }
//判断日期是否存在
bool CFinance::IsDateEqual(int year,int month,int day) { }
//输出除收支情况以外的记录
void CFinance::ShowWithoutBalance() { }
//定义结点类
class CNode {
CFinance *pData; //指向数据类的指针
CNode *pNext; //指向链表的下一个结点的指针
cout<<\日期:\收入:\支出\用途:\目标:\
if(nYear==year&&nMonth==month&&nDay==day) { } else { }
return false; return true; year=nYear; month=nMonth; day=nDay; income=dlIncome; output=dlOutput;
strcpy(purpose,szPurpose); //拷贝 }
}
cout<<\,修改失败!\
public:
第 12 页 共 28 页
}; //赋初值 CNode::CNode() { }
//用于拷贝的构造函数 CNode::CNode(CNode &node) { }
//输入数据
void CNode::InputData(CFinance *pdata) { }
//输出结点数据
void CNode::ShowNode() { }
CFinance *CNode::GetData() //返回数据 { }
//定义链表类 class CList {
protected: //保护成员
return pData; pData->Show(); pData=pdata; pNext=0;
pData=node.pData; pNext=node.pNext; pData=0; pNext=0;
CNode(); //结点构造函数 CNode(CNode &node); //用于拷贝的构造函数 void InputData(CFinance *pdata); //输入数据 void ShowNode(); //输出结点数据 CFinance *GetData(); //返回数据
friend class CList; //定义链表类为友元类
第 13 页 共 28 页
}; //赋初值
CList::CList() { }
CList::~CList() { }
//在首部添加结点
void CList::AddNode(CNode *pnode) { }
//删除指定结点
void CList::DeleteNode(CNode *pnode)
if(pHead==0) { } else { }
GetLastNode()->pNext=pnode; pnode->pNext=0; pHead=pnode; pHead->pNext=0; DeleteList(); pHead=0;
CNode *pHead; //链表头结点指针 CList(); ~CList();
void DeleteNode(CNode *); //删除一个指定的结点,返回该结点的指针
CNode *LookUp(CFinance&); //查找一个指定的数据,返回该数据所在结点在链表中的void ShowList(); //打印整个链表 void DeleteList(); //删除整个链表 CNode *GetListHead(); //返回链表首结点
CNode *GetListNextNode(CNode *); //返回链表指定结点的下一个结点 void Insert(CNode *); //据日期插入结点
CNode *GetLastNode(); //返回最后一个结点,看看最后的盈余有无赤字
public:
void AddNode(CNode *pnode); //在首部添加结点
指针,若未找到返回0
void CalBalance(); //逐个结点计算盈余
第 14 页 共 28 页
{ }
//查找指定数据,并返回该数据所在结点指针
CNode *CList::LookUp(CFinance& finance) {
if(!pHead) { }
if(pnode==pHead&&pHead->pNext==0) { }
else if(pnode==pHead) { } else { }
CNode *p=pHead;
while(p&&p->pNext!=pnode) { } if(!p) { } else { }
CNode *q=pnode->pNext; delete pnode->pData; delete pnode; p->pNext=q;
cout<<\删除结点错误:结点不存在!\exit(1); p=p->pNext; CNode *p=pnode->pNext; delete pHead->pData; delete pHead; pHead=p;
delete pHead->pData; delete pHead; pHead=0;
cout<<\删除结点错误:链表不存在!\
exit(1); //终止程序的执行
第 15 页 共 28 页