急求通讯录管理系统(有链表的)数据结构c语言版的源代码。要求c++可以测试通过

通信录管理系统
问题描述
设计出模拟手机通信录管理系统,实现对手机中的通信录进行
管理。
基本要求 (1) 查看功能:选择此功能时显示出此类所有数据中的姓名和电话号码 (2) 增加功能:能录入新数据 (3)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改 (4)删除功能:选某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号

第1个回答  2013-11-08
这个绝对满足了你的要求了,谢谢采纳`

#include<iostream.h>
#include<string>
#include<stdlib.h>
class List;
class person
{
public:
friend class List;
private:
person() {next=0;}
person *next;
char name[10],tel[15];
};

class List
{
public:

List(){list=0;}
int gncd(); // 功能菜单
int print(); // 输出所有信息
int append(); // 增加一个信息
int revise(); // 根据姓名、电话修改信息
int dele(); // 根据姓名、电话删除信息
int exit(); // 退出
private:
person *end();
person *list;

};
int List::exit()
{
abort();
return 1;
}

int List::gncd()
{
cout<<"************欢迎使用****************************"<<endl;
cout<<"1.输入信息。"<<endl;
cout<<"2.根据姓名、电话修改信息。"<<endl;
cout<<"3.根据姓名、电话删除信息"<<endl;
cout<<"4.输出所有现有成员信息"<<endl;
cout<<"5.退出"<<endl;
cout<<"选择:";
int a;
cin>>a;
switch(a)
{
case(1):this->append();break;
case(2):this->revise();break;
case(3):this->dele();break;
case(4):this->print();break;
case(5):this->exit();break;
}
this->gncd();
return 1;
}

int List::print()
{
if(list==0)
{
cout<<"为空或没输入内容"<<endl;
return 0;
}

person *p=list;
while(p!=NULL)
{
cout<<"姓名:"<<p->name<<endl;
cout<<"电话:"<<p->tel<<endl;
p=p->next;
}
cout<<endl;
return 1;
}

int List::append()
{
person *p=new person;

cout<<"请输入姓名:"<<endl;
cin>>p->name;
cout<<"请输入电话号码:"<<endl;
cin>>p->tel;

char temp;
cout<<"是否继续输入(y/n)";
cin>>temp;
if(temp=='y'||temp=='Y')
this->append();

if(list==0)
list=p;
else
(end())->next=p;
return 1;
}
person *List::end()
{
person *p,*q;
for(q=p=list;p;q=p,p=p->next) ;
return q;
}

int List::revise()
{
person *p=list;
char temp[20];
cout<<"你选择了根据姓名、电话修改信息。"<<endl<<"请输入将要修改的姓名或电话:";
cin>>temp;
int i=0;
while(p!=NULL)
{
if(!strcmp(p->name,temp)||!strcmp(p->tel,temp))
{
i=1;
cout<<"请输入新的姓名:";
cin>>p->name;
cout<<"请输入新的电话号码:";
cin>>p->tel;

}
p=p->next;
}
if(i==1) cout<<"修改成功!"<<endl;
if(i!=1) cout<<"未能找到。"<<endl;
return 1;
}

int List::dele()
{
person *q,*p=list;
char temp[20];
cout<<"你选择了根据姓名、电话删除信息。"<<endl<<"请输入将要删除的姓名或电话:";
cin>>temp;
if(p==NULL)
cout<<"为空或没有输入信息。"<<endl;
if(!strcmp(p->name,temp)||!strcmp(p->tel,temp)) //要删除的结点是第一个时
{
list=p->next;
delete p;
cout<<"删除成功!"<<endl;
}
else
{
while(p!=NULL&&(strcmp(p->name,temp)||strcmp(p->tel,temp)))
{
q=p;
p=p->next;
}
if(p==NULL) return 0;

else if(q==NULL)
cout<<"没能找到。"<<endl;
else
{
q->next=p->next;
delete p;
cout<<"删除成功!"<<endl;
}

}

return 1;
}

void main()
{
List L;
L.gncd();

}本回答被提问者采纳
相似回答