#include <iostream>
#include <string>
using namespace std;
struct memo
{
int year1;
int month1;
int day1;
string content;
memo*next;
};
class mem
{
public:
void del();
void insert();
void sel();
void print();
private:
memo del_date;
memo sel_date;
memo choice;
memo*head,*m;
};
void class mem::del()
{
cout<<"请输入要删除的年月日及内容"<<endl;
cin>>del_date.year1>>del_date.month1>>del_date.day1>>del_date.content;
while (del_date.year1!=0||del_date.month1!=0||del_date.day1!=0||del_date.content!=0) //输入零停止
{
memo*a1,*a2;
if(head==NULL) //链表为空的情况
{
cout<<"内容为空!"<<endl;
}
a1=head;
while (del_date.year1!=a1->year1&&a1->next!=NULL) //寻找删除的结点
{
a2=a1;
a1=a1->next;
}
if(del_date.year1==a1->year1) //找到删除的同年结点
{
if(del_date.month1==a1->month1) //找到删除的同月结点
{
if(del_date.year1==a1->year1) //找到删除的同日结点
{
if(a1==head) head=a1->next;
else a2->next=a1->next;
}
else cout<<"不能找到该备忘记录"<<num; //没找到相应结点
}
else cout<<"不能找到该备忘记录"<<num; //没找到相应结点
}
else cout<<"不能找到该备忘记录"<<num; //没找到相应结点
cout<<"请输入要删除的年月日及内容:"<<endl;
cin>>del_date.year1>>del_date.month1>>del_date.day1>>del_date.content;
}
}
void class mem::insert()
{
memo*add,*a1,*a2;
a1=head;
cout<<"请输入要添加的年月日及内容:"<<endl;
add=new memo; //创建新的记录
cin>>add->year1>>add->month1>>add->day1>>add->content;
while (add->year1!=0||add->month1!=0||add->day1!=0||add->content!=0)
{
if(head==NULL) //原来链表为空,就放在第一个
{
head=add;
add->next=NULL;
}
else
{
while((add->year1>a1->year1)&&(a1->next!=NULL)) //寻找相应位置
{
a2=a1;
a1=a1->next;
}
if(add->year1<=a1->year1)
{
while((add->month1>a1->month1)&&(a1->next!=NULL)) //寻找相应位置
{
a2=a1;
a1=a1->next;
}
if(add->month1<=a1->month1)
{
while((add->day1>a1->day1)&&(a1->next!=NULL)) //寻找相应位置
{
a2=a1;
a1=a1->next;
}
if(add->day1<=a1->day1)
{
if(a1==head) head=add; //插在第一的位置
else a2->next=add; //插在非第一的位置
add->next=a1;
}
else //插在最后的位置
{
a1->next=add;
add->next=NULL;
}
}
else //插在最后的位置
{
a1->next=add;
add->next=NULL;
}
}
else //插在最后的位置
{
a1->next=add;
add->next=NULL;
}
}
cout<<"请输入要添加的年月日及内容:"<<endl;
add=new memo; //创建新的记录
cin>>add->year1>>add->month1>>add->day1>>add->content;
}
}
void class mem::print()
{
memo*p;
p=head;
if(head!=NULL)
do
{
cout<<p->year1<<" "<<p->month1<<" "<<p->day1<<" "<<p->content<<endl;
p=p->next;
}while(p!=NULL);
}
void class mem::sel()
{
cout<<"请输入要查看的年月日及内容:"<<endl;
cin>>sel_date.year1>>sel_date.month1>>sel_date.day1;
while (sel_date.year1!=0||sel_date.month1!=0||sel_date.day1!=0) //输入零停止
{
memo*a1,*a2;
if(head==NULL) //链表为空的情况
{
cout<<"内容为空!"<<endl;
}
a1=head;
while (sel_date.year1!=a1->year1&&a1->next!=NULL) //寻找查看的结点
{
a2=a1;
a1=a1->next;
}
if(sel_date.year1==a1->year1) //找到查看的结点
{
while (sel_date.month1!=a1->month1&&a1->next!=NULL) //寻找查看的结点
{
a2=a1;
a1=a1->next;
}
if(sel_date.month1==a1->month1) //找到查看的结点
{
while (sel_date.day1!=a1->day1&&a1->next!=NULL) //寻找查看的结点
{
a2=a1;
a1=a1->next;
}
for(;sel_date.day1==a1->day1;) //找到查看的结点
{
cout<<sel_date.year1<<sel_date.month1<<sel_date.day1<<sel_date.content;
a2=a1;
a1=a1->next;
}
}
}
else cout<<"没有找到相应日期的备忘录"<<num; //没找到相应结点
cout<<"请输入要查看的年月日及内容:"<<endl;
cin>>sel_date.year1>>sel_date.month1>>sel_date.day1;
}
}
int main()
{
mem a;
int choice;
cout<<"1:删除备忘记录"<<" "<<"2:添加备忘记录"<<" "<<"3:查看所有备忘记录"<<" "<<"4:查看一天的备忘记录"<<"5:退出"<<endl;
cin>>choice;
while(choice!=5)
{
if(choice==1)
{
a.del();
}
else if(choice==2)
{
a.insert();
}
else if(choice==3)
{
a.print();
}
else
{
a.sel();
}
cout<<endl;
cout<<"1:删除备忘记录"<<" "<<"2:添加备忘记录"<<" "<<"3:查看所有备忘记录"<<" "<<"4:查看一天的备忘记录"<<"5:退出"<<endl;
cin>>choice;
}
return 0;
}
没有少括号啊,是什么原因呢,求助大神!