while(!IsDateRight(year,month,day)) { cout<<\日期不正确!请重新输入:\ cin>>year>>month>>day;
}
cout<<\请输入支出金额:\ cin>>output;
cout<<\请输入支出用途:\ cin>>purpose;
CFinance *pfinance=new CFinance;
pfinance->SetFinance(year,month,day,0,output,purpose); CNode *pnode=new CNode; pnode->InputData(pfinance); list.Insert(pnode); cout<<\添加成功!\ list.CalBalance();
}
//查看收入记录
void CRecord::ViewDepositRecord() { if(list.GetListHead()==0)return; CNode *p=list.GetListHead(); int year,month,day; double income,output; char purpose[20]; while(p)
{ p->GetData()->SetVal(year,month,day,income,output,purpose); //据的输入/输出
if(income>0) {
cout<<\日期:\
cout<<\收入:\ cout<<\用途:\ }
p=list.GetListNextNode(p);
}
}
//查看支出记录
void CRecord::ViewWithdrawRecord() {
if(list.GetListHead()==0)return; 第 21 页 共 28 页
实现结点数
CNode *p=list.GetListHead(); int year,month,day; double income,output; char purpose[20]; while(p) {
p->GetData()->SetVal(year,month,day,income,output,purpose); //实现结点数if(output>0) {
cout<<\日期:\
据的输入/输出
cout<<\支出:\ cout<<\用途:\ }
//查看收支平衡情况
void CRecord::ViewBalance() { }
//根据日期查找记录
void CRecord::LookUpRecord() {
if(!list.GetListHead()) { }
int year,month,day; short mark=0; cout<<\请输入日期:\cin>>year>>month>>day;
while(!IsDateRight(year,month,day)) {
cout<<\日期不正确!请重新输入:\cin>>year>>month>>day; cout<<\当前没有记录!\return; list.ShowList();
if(list.GetLastNode()->GetData()->GetBalance()<0) { }
cout<<\警告,已经超支!!!\ }
}
p=list.GetListNextNode(p);
第 22 页 共 28 页
}
//根据日期修改记录 void CRecord::EditRecord() {
if(!list.GetListHead()) { }
int year,month,day; short mark=0,edited=0; cout<<\请输入日期:\cin>>year>>month>>day;
while(!IsDateRight(year,month,day)) { }
CNode *p=list.GetListHead(); while(p) {
if(p->GetData()->IsDateEqual(year,month,day)) {
mark=1; char edit; do {
p->GetData()->ShowWithoutBalance();
cout<<\日期不正确!请重新输入:\cin>>year>>month>>day; cout<<\当前没有记录!\return; }
CNode *p=list.GetListHead(); while(p) { } if(!mark) { }
cout<<\无当天记录!\
if(p->GetData()->IsDateEqual(year,month,day)) { }
p=list.GetListNextNode(p);
p->GetData()->ShowWithoutBalance(); mark=1;
第 23 页 共 28 页
}
//根据日期删除记录
void CRecord::DeleteRecord() {
if(!list.GetListHead()) { }
int year,month,day; short mark=0,deleted=0;; cout<<\请输入日期:\cin>>year>>month>>day;
while(!IsDateRight(year,month,day)) { }
CNode *p=list.GetListHead();
while(p) {
cout<<\日期不正确!请重新输入:\cin>>year>>month>>day; cout<<\当前没有记录!\return; } if(!mark) { }
if(edited) { }
list.CalBalance(); cout<<\无当天记录!\ }
p=list.GetListNextNode(p);
cout<<\修改?(Y/N)\
cin>>edit;
if(edit=='N'||edit=='n')break; else { }
p->GetData()->ModifyData(); edited=1; break;
}while(edit!='Y'&&edit!='y'&&edit!='N'&&edit!='n');
第 24 页 共 28 页
}
//设定目标
void CRecord::setgoal(double goal) {dlPurpose=goal;}
//判断日期是否正确
bool IsDateRight(int year,int month,int day) {
if(p->GetData()->IsDateEqual(year,month,day)) } if(!mark) { } else { }
list.CalBalance(); cout<<\无当天记录!\{ }
CNode *q=p;
p=list.GetListNextNode(p); if(deleted) { }
list.DeleteNode(q); deleted=0; mark=1; char del; do {
p->GetData()->ShowWithoutBalance(); cout<<\删除?(Y/N)\cin>>del;
if(del=='N'||del=='n')break; else { }
deleted=1;
cout<<\删除成功!\break;
}while(del!='Y'&&del!='y'&&del!='N'&&del!='n');
第 25 页 共 28 页