#include
using namespace std;
struct contact
{
int ID;
char name[10];
char ch;
char phone[13];
char addr[31];
struct contact *next;
};
class contacts
{
public:
contacts(){front= new contact; front=NULL;}
void AddCon(int n);
~contacts();
void InsertCon();////插入联系人的基本信息
void FindCon(); ////查找联系人的基本信息
void AmendMessage();//修改联系人的基本信息
void DeleteMessage();//删除联系人的基本信息
void Con();
private:
contact * front;
};
void contacts::AddCon(int n)
{
system("CLS");
contact p= new contact;
cout<<"输入联系人信息:"<
cout
cin>>p->name;
cout<<"ID:"<
cin>>p->ID;
cout<<"sex:"<
cin>>p->ch;
cout<<"phone:"<
cin>>p->phone;
cout<<"address:"<
cin>>p->addr;
front=p;
for(int i=0;i< n-1;i++)
{
system("CLS");
cout<<"现在输入第"<<i+2<<"个联系人的信息"<<endl;
contact q=new contact;
cout<<"name:"<
cin>>q->name;
cout<<"ID:"<
cin>>q->ID;
cout<<"sex:"<
cin>>q->ch;
cout<<"phone:"<
cin>>q->phone;
cout<<"address:"<
cin>>q->addr;
p->next=q;
p=q;
}
p->next=NULL;
}
contacts::~contacts()
{
contact *p=front;
while(p)
{
contact *q=new contact;
q=p;
p=p->next;
delete q;
}
}
void contacts::InsertCon()
{
contact *p=new contact;
p=front;
while(p)
{
p=p->next;
};
if(p==NULL)
cout<<"请先添加联系人"<<endl;
else
{
contact *q=new contact;
p->next=q;
cout << "请依次被插入人的信息:姓名"<<"性别"<<"住址"<<"手机号"<<"学号"<< endl;
cin >> q->name >> q->ch >> q->addr >> q->phone >> q->ID;
q->next=NULL;
}
}
void contacts::FindCon()
{
char a[20];
system("CLS");
/*if(front==NULL)
cout<<"请先添加联系人"<
//else
//{
cout
cin>>a;
contact *p=front;
while(p)
{
if(strcmp(p->name ,a)==0)
{
cout<<"结果如下"<<"name:"<name<<"ID:"<ID<<"sex:"<ch<<"phone:"<phone<<"address:"<addr<
break;
}
else if(p->next!= NULL && p->name != a)
{
p = p->next ;
}
else
{
cout << "输入名字错误" << endl;
}
}
//}
}
void contacts::AmendMessage()
{
system("CLS");
if(front==NULL)
cout<<"请先添加联系人"<<endl;
else
{
int ID1;
char name1[10];
char ch1;
char phone1[13];
char addr1[31];
int n;
cout<<"输入要修改的名字"<<endl;
cin>>name1;
contact *p=front;
while(p)
{
if(strcmp(p->name ,name1)==0)
{
cout<<"选择需要修改的内容:"<<endl;
cout<<"1,性别 2,学号 3,电话 4,地址"<<endl;
cin>>n;
switch(n)
{
case 1:
cout<<"输入改变后的性别"<<endl;
cin>>ch1;
p->ch=ch1; //char ch,ch1 strcpy(p->ch,ch1)为什么不行 必须是字符数组吗
cout<<"success"<<endl;
system("CLS");
break;
case 2:
cout<<"输入改变后的学号"<<endl;
cin>>ID1;
p->ID=ID1;
cout<<"success"<<endl;
system("CLS");
break;
case 3:
cout<<"输入改变后的电话"<<endl;
cin>>phone1;
strcpy(p->phone,phone1);
cout<<"success"<<endl;
system("CLS");
break;
case 4:
cout<<"输入改变后的地址"<<endl;
cin>>addr1;
strcpy(p->addr, addr1);
cout<<"success"<<endl;
system("CLS");
break;
default:
cout<<"wrong"<<endl;
break;
}
break;
}
else if(p->next!= NULL && p->name != name1)
{
p = p->next ;
}
else
{
cout << "输入名字错误" << endl;
}
}
}
}
void contacts::DeleteMessage()
{
system("CLS");
if(front==NULL)
cout<<"请先添加联系人"<
else
{
char name2[10];
cout
cin>>name2;
contact *p=front;
while(p)
{
if(strcmp(p->name ,name2)==0)
{
contact *q=p->next;
strcpy(p->addr,q->addr);//p->addr=q->addr;
p->ch=q->ch;
p->ID=q->ID;
strcpy(p->name,q->name);
strcpy(p->phone,q->phone);
p->next=q->next;
delete q;
break;
}
else if(p->next!= NULL && p->name != name2)
{
p = p->next ;
}
else
{
cout << "输入名字错误" << endl;
}
}
}
}
void contacts::Con()
{
int n;
do
{
cout<<" 通讯录 "<
cout
cout
cout
cout
cout
cout
contacts a;
cin>>n;
if(n!=1&&n!=2&&n!=3&&n!=4&&n!=5&&n!=6)
{
cout<<"输入错误"<
}
else
{
switch(n)
{
case 1:
int m;
do
{
cout
cin>>m;
}while(m<=0);
a.AddCon(m);
break;
case 2:
a.InsertCon();
break;
case 3:
a.FindCon();
break;
case 4:
a.AmendMessage();
break;
case 5:
a.DeleteMessage();
break;
case 6:
break;
default:
cout << "你输入错误,请重新选择!!!" << endl;
break;
}
}
}while(n !=6);
}
int main()
{
contacts b;
b.Con();
return 0;
}
为什么创建联系人之后,调用其他函数,都一直显示“请先添加联系人”?不知道怎么改,先谢谢大家了