1、手机卡联系人类:
表示一个联系人
数据成员包括:姓名、电话号码
成员函数包括:
带参并带默认值的构造函数
一组set函数为数据成员赋值
一组modify函数,修改数据成员的值
重载>>,<<运算符,完成对象的输入和输出操作
实现代码:
class Phonecard_contact
{
protected:
string name;
string pho_num;
public:
Phonecard_contact(string tname="无姓名",string tpho_num="无号码")
{
name=tname;pho_num=tpho_num;
}
void Set(string tname,string tpho_num);
void modify();
string getname();
string getpho_num();
friend istream&operator>>(istream &input,Phonecard_contact &);
friend ostream&operator<<(ostream &output,Phonecard_contact &);
};
void Phonecard_contact::Set(string tname,string tpho_num)
{
name=tname;pho_num=tpho_num;
}
void Phonecard_contact::modify()
{
int a;
change1:
{
cout<<"**************************************"<<endl;
cout<<"*修改联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.修改联系人姓名 *"<<endl;
cout<<"* 2.修改联系人号码 *"<<endl;
cout<<"* 3.修改联系人全部信息 *"<<endl;
cout<<"* 4.返回上一级 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"修改联系人哪些信息?"<<'\n'<<endl;
cin>>a;
switch(a)
{
case 1:{
cout<<"请重新输入联系人姓名"<<endl;
cin>>name;
break;
}
case 2:{
cout<<"请重新输入联系人电话"<<endl;
cin>>pho_num;
break;
}
case 3:{
cout<<"请重新输入联系人姓名"<<endl;
cin>>name;
cout<<"请重新输入联系人电话"<<endl;
cin>>pho_num;
break;
}
case 4:{
return;
}
default:{
cout<<"选择错误,请重新选择"<<endl;
goto change1;
}
}
}
}
string Phonecard_contact::getname()
{
return name;
}
string Phonecard_contact::getpho_num()
{
return pho_num;
}
istream&operator>>(istream &input,Phonecard_contact &obj)
{
cout<<"请输入联系人姓名"<<endl;
input>>obj.name;
cout<<"请输入联系人号码"<<endl;
input>>obj.pho_num;
return input;
}
ostream&operator<<(ostream &output,Phonecard_contact &obj)
{
output<<"联系人姓名:"<<obj.name<<endl;
output<<"联系人手机号:"<<obj.pho_num<<endl;
return output;
}
2. 手机联系人(继承于手机卡联系人类):
新增数据成员:籍贯、QQ号
成员函数包括
一组set函数为数据成员赋值
一组modify函数,修改数据成员的值
重载>>,<<运算符,完成数据成员的输入输出操作
实现代码:
class Phone_contact:public Phonecard_contact
{
string nat_pla;
string qq;
public:
Phone_contact(string tname="无姓名",string tpho_num="无号码",string tnat_pla="无籍贯",string tqq="无QQ"):Phonecard_contact(tname,tpho_num)
{
nat_pla=tnat_pla;qq=tqq;
}
void Set(string tname,string tpho_num,string tnat_pla,string tqq);
void modify();
string getnat_pla();
string getqq();
friend istream&operator>>(istream &input,Phone_contact &);
friend ostream&operator<<(ostream &output,Phone_contact &);
};
void Phone_contact::Set(string tname,string tpho_num,string tnat_pla,string tqq)
{
name=tname;pho_num=tpho_num;
nat_pla=tnat_pla;qq=tqq;
}
void Phone_contact::modify()
{
int a;
change2:
{
cout<<"**************************************"<<endl;
cout<<"*修改联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.修改联系人姓名 *"<<endl;
cout<<"* 2.修改联系人号码 *"<<endl;
cout<<"* 3.修改联系人籍贯 *"<<endl;
cout<<"* 4.修改联系人QQ *"<<endl;
cout<<"* 5.修改联系人全部信息 *"<<endl;
cout<<"* 6.返回上一级 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"修改联系人哪些信息?"<<'\n'<<endl;
cin>>a;
switch(a)
{
case 1:{
cout<<"请重新输入联系人姓名"<<endl;
cin>>name;
break;
}
case 2:{
cout<<"请重新输入联系人号码"<<endl;
cin>>pho_num;
break;
}
case 3:{
cout<<"请重新输入联系人籍贯"<<endl;
cin>>nat_pla;
break;
}
case 4:{
cout<<"请重新输入联系人QQ"<<endl;
cin>>qq;
break;
}
case 5:{
cout<<"请重新输入联系人姓名"<<endl;
cin>>name;
cout<<"请重新输入联系人号码"<<endl;
cin>>pho_num;
cout<<"请重新输入联系人籍贯"<<endl;
cin>>nat_pla;
cout<<"请重新输入联系人QQ"<<endl;
cin>>qq;
break;
}
case 6:{
return;
}
default:{
cout<<"选择错误,请重新选择"<<endl;
goto change2;
}
}
}
}
string Phone_contact::getnat_pla()
{
return nat_pla;
}
string Phone_contact::getqq()
{
return qq;
}
istream&operator>>(istream &input,Phone_contact &obj)
{
cout<<"请输入联系人姓名"<<endl;
input>>obj.name;
cout<<"请输入联系人号码"<<endl;
input>>obj.pho_num;
cout<<"请输入联系人籍贯"<<endl;
input>>obj.nat_pla;
cout<<"请输入联系人QQ"<<endl;
input>>obj.qq;
return input;
}
ostream&operator<<(ostream &output,Phone_contact &obj)
{
output<<"联系人姓名:"<<obj.name<<endl;
output<<"联系人号码:"<<obj.pho_num<<endl;
output<<"联系人籍贯:"<<obj.nat_pla<<endl;
output<<"联系人QQ:"<<obj.qq<<endl;
return output;
}
3. 定义一个通讯簿抽象类,用来封装以下函数(为支持多态,可以将以下函数封装为纯虚函数)
增加函数:增加一个联系人
删除操作:删除一个联系人
Display:显示所有联系人的信息
修改某一联系人的信息:
查询并显示某一联系人的信息:
实现代码:
class Address_book
{
public:
virtual void newcontact()=0;
virtual void deletecontact(string tpho_num)=0;
virtual void modify(string tpho_num)=0;
virtual void query(string tname)=0;
virtual void browse()=0;
};
4. 手机通讯簿类(这是一个数据库类,继承于通讯簿抽象类):
用于记录手机中存储的所有联系人的信息
数据成员包括:手机联系人的数量、手机联系人对象数组
成员函数包括
构造函数:读取文本文件中的数据,并根据文件内容创建联系人对象数组
析构函数:将对象数组中的内容写入到文本文件中。
增加函数:增加一个联系人
删除操作:删除一个联系人
Display:显示所有联系人的信息
修改某一联系人的信息:
查询并显示某一联系人的信息:
实现代码:
class Phone_address_book:public Address_book
{
protected:
int phone_contact_num;
vector<Phone_contact>phone_contact;
public:
Phone_address_book();
~Phone_address_book();
void newcontact();
void deletecontact(string tpho_num);
void modify(string tpho_num);
void query(string tname);
void browse();
int getphone_contact_num();
void copy(string tname,string tpho_num);
string getname(int i);
string getpho_num(int i);
void clear();
};
Phone_address_book::Phone_address_book()
{
ifstream ist("手机.txt");
if(!ist)
{
cout<<"未找到手机.txt文件"<<endl;
return;
}
char str[80];
ist.getline(str,80);
ist.getline(str,80);
ist.getline(str,80);
ist.getline(str,80);
phone_contact_num=-1;
string tname,tpho_num,tnat_ple,tqq;
while(ist>>tname>>tpho_num>>tnat_ple>>tqq)
{
Phone_contact temp;
temp.Set(tname,tpho_num,tnat_ple,tqq);
phone_contact.push_back(temp);
phone_contact_num++;
}
ist.close();
}
Phone_address_book::~Phone_address_book()
{
ofstream ost("手机.txt");
ost<<"**************************************************"<<endl;
ost<<"* 手机联系人 *"<<endl;
ost<<"**************************************************"<<endl;
ost.setf(ios::left);
ost.width(16);
ost<<"姓名";
ost.width(16);
ost<<"号码";
ost.width(16);
ost<<"籍贯";
ost.width(16);
ost<<"QQ"<<endl;
for(int i=0;i<=phone_contact_num;i++)
{
ost.setf(ios::left);
ost.width(16);
ost<<phone_contact[i].getname();
ost.width(16);
ost<<phone_contact[i].getpho_num();
ost.width(16);
ost<<phone_contact[i].getnat_pla();
ost.width(16);
ost<<phone_contact[i].getqq();
ost<<endl;
}
phone_contact_num=-1;
phone_contact.clear();
ost.close();
}
void Phone_address_book::newcontact()
{
if(phone_contact_num>=1000)
{
cout<<"手机通讯簿内存已满。"<<endl;
cout<<"请重新选择操作。"<<endl;
return ;
}
else
{
Phone_contact temp;
cin>>temp;
phone_contact.push_back(temp);
phone_contact_num++;
cout<<"新建联系人成功。"<<endl;
}
}
void Phone_address_book::deletecontact(string tpho_num)
{
if(phone_contact_num<0)
{
cout<<"手机通讯部内无联系人,请重新选择操作。"<<endl;
return ;
}
else
{
bool flag=false;
for(int i=0;i<=phone_contact_num;i++)
{
if(phone_contact[i].getpho_num()==tpho_num)
{
flag=true;
cout<<"要删除的联系人信息是:"<<endl;
cout<<phone_contact[i];
cout<<"是否删除该联系人"<<endl;
cout<<"1.确定删除"<<'\n'<<"2.取消删除"<<endl;
int sign;
cin>>sign;
if(sign==1)
{
phone_contact.erase(phone_contact.begin()+i);
phone_contact_num--;
cout<<"删除成功!"<<endl;
}
else
{
continue;
}
}
}
if(!flag)
{
cout<<"手机通讯簿中无该联系人,请重新选择操作。"<<endl;
return ;
}
}
}
void Phone_address_book::modify(string tpho_num)
{
if(phone_contact_num<0)
{
cout<<"手机通讯簿无联系人,请重新选择。"<<endl;
return ;
}
else
{
bool flag=false;
for(int i=0;i<=phone_contact_num;i++)
{
if(phone_contact[i].getpho_num()==tpho_num)
{
flag=true;
cout<<"要修改的联系人信息是:"<<endl;
cout<<phone_contact[i];
cout<<"是否修改该联系人"<<endl;
cout<<"1.确定修改"<<'\n'<<"2.取消修改"<<endl;
int sign;
cin>>sign;
if(sign==1)
{
phone_contact[i].modify();
cout<<"修改成功"<<endl;
return;
}
else continue;
}
}
if(!flag)
{
cout<<"手机通讯簿中无该联系人,请重新选择。"<<endl;
return;
}
}
}
void Phone_address_book::query(string tname)
{
if(phone_contact_num<0)
{
cout<<"手机通讯簿无联系人,请重新选择。"<<endl;
return;
}
else
{
bool flag=false;
for(int i=0;i<=phone_contact_num;i++)
{
if(phone_contact[i].getname()==tname)
{
flag=true;
cout<<"目标联系人信息"<<endl;
cout<<phone_contact[i];
return ;
}
}
if(!flag)
{
cout<<"手机通讯簿中无该人信息,请重新选择。"<<endl;
return;
}
}
}
void Phone_address_book::browse()
{
if(phone_contact_num<0)
{
cout<<"手机通讯簿无联系人信息,请重新选择。"<<endl;
return;
}
else
{
cout<<"手机通讯簿中有联系人个数:"<<phone_contact_num+1<<endl;
cout<<"信息如下:"<<endl;
vector<Phone_contact>::iterator temp;
for(temp=phone_contact.begin();temp!=phone_contact.end();temp++)
{
cout<<(*temp);
cout<<endl;
}
}
}
int Phone_address_book::getphone_contact_num()
{
return phone_contact_num;
}
void Phone_address_book::copy(string tname,string tpho_num)
{
for(int i=0;i<=phone_contact_num;i++)
{
if(phone_contact[i].getname()==tname&&phone_contact[i].getpho_num()==tpho_num)
{cout<<"姓名为;"<<tname<<"号码为:"<<tpho_num<<"的用户已存在!"<<endl;
return;}
}
Phone_contact temp(tname,tpho_num,"无籍贯","无QQ");
phone_contact.push_back(temp);
phone_contact_num++;
cout<<"姓名为:"<<tname<<"号码为:"<<tpho_num<<"的用户已存储完!"<<endl;
}
string Phone_address_book::getname(int i)
{
return phone_contact[i].getname();
}
string Phone_address_book::getpho_num(int i)
{
return phone_contact[i].getpho_num();
}
void Phone_address_book::clear()
{
phone_contact.clear();
phone_contact_num=-1;
}
5. 手机卡通信簿类(这是一个数据库类,继承于通讯簿抽象类):
用于记录手机卡中存储的所有联系人的信息
数据成员包括:手机联系人的数量、手机联系人对象数组
成员函数包括
构造函数:读取文本文件中的数据,并根据文件内容创建联系人对象数组
析构函数:将对象数组中的内容写入到文本文件中。
增加函数:增加一个联系人
删除操作:删除一个联系人
Display:显示所有联系人的信息
修改某一联系人的信息:
查询并显示某一联系人的信息:
实现代码
class Phonecard_address_book:public Address_book
{
protected:
int phonecard_contact_num;
vector<Phonecard_contact>phonecard_contact;
public:
Phonecard_address_book();
~Phonecard_address_book();
void newcontact();
void deletecontact(string tpho_num);
void modify(string tpho_num);
void query(string tname);
void browse();
int getphonecard_contact_num();
void copy(string tname,string tpho_num);
string getname(int i);
string getpho_num(int i);
void clear();
};
Phonecard_address_book::Phonecard_address_book()
{
ifstream ist("手机卡.txt");
if(!ist)
{
cout<<"未找到手机卡.txt文件"<<endl;
return;
}
char str[80];
ist.getline(str,80);
ist.getline(str,80);
ist.getline(str,80);
ist.getline(str,80);
phonecard_contact_num=-1;
string tname,tpho_num,tnat_ple,tqq;
while(ist>>tname>>tpho_num)
{
Phonecard_contact temp;
temp.Set(tname,tpho_num);
phonecard_contact.push_back(temp);
phonecard_contact_num++;
}
ist.close();
}
Phonecard_address_book::~Phonecard_address_book()
{
ofstream ost("手机卡.txt");
ost<<"*********************************************"<<endl;
ost<<"* 手机卡联系人 *"<<endl;
ost<<"*********************************************"<<endl;
ost.setf(ios::left);
ost.width(16);
ost<<"姓名";
ost.width(16);
ost<<"号码"<<endl;
for(int i=0;i<=phonecard_contact_num;i++)
{
ost.setf(ios::left);
ost.width(16);
ost<<phonecard_contact[i].getname();
ost.width(16);
ost<<phonecard_contact[i].getpho_num();
ost<<endl;
}
phonecard_contact_num=-1;
phonecard_contact.clear();
ost.close();
}
void Phonecard_address_book::newcontact()
{
if(phonecard_contact_num>=1000)
{
cout<<"手机卡通讯簿内存已满。"<<endl;
cout<<"请重新选择操作。"<<endl;
return ;
}
else
{
Phonecard_contact temp;
cin>>temp;
phonecard_contact.push_back(temp);
phonecard_contact_num++;
cout<<"新建联系人成功。"<<endl;
}
}
void Phonecard_address_book::deletecontact(string tpho_num)
{
if(phonecard_contact_num<0)
{
cout<<"手机卡通讯簿内无联系人,请重新选择操作。"<<endl;
return ;
}
else
{
bool flag=false;
for(int i=0;i<=phonecard_contact_num;i++)
{
if(phonecard_contact[i].getpho_num()==tpho_num)
{
flag=true;
cout<<"要删除的联系人信息是:"<<endl;
cout<<phonecard_contact[i];
cout<<"是否删除该联系人"<<endl;
cout<<"1.确定删除"<<'\n'<<"2.取消删除"<<endl;
int sign;
cin>>sign;
if(sign==1)
{
phonecard_contact.erase(phonecard_contact.begin()+i);
phonecard_contact_num--;
cout<<"删除成功!"<<endl;
}
else
{
continue;
}
}
}
if(!flag)
{
cout<<"手机卡通讯簿中无该联系人,请重新选择操作。"<<endl;
return ;
}
}
}
void Phonecard_address_book::modify(string tpho_num)
{
if(phonecard_contact_num<0)
{
cout<<"手机卡通讯簿无联系人,请重新选择。"<<endl;
return ;
}
else
{
bool flag=false;
for(int i=0;i<=phonecard_contact_num;i++)
{
if(phonecard_contact[i].getpho_num()==tpho_num)
{
flag=true;
cout<<"要修改的联系人信息是:"<<endl;
cout<<phonecard_contact[i];
cout<<"是否修改该联系人"<<endl;
cout<<"1.确定修改"<<'\n'<<"2.取消修改"<<endl;
int sign;
cin>>sign;
if(sign==1)
{
phonecard_contact[i].modify();
cout<<"修改成功"<<endl;
return;
}
else continue;
}
}
if(!flag)
{
cout<<"手机卡通讯簿中无该联系人,请重新选择。"<<endl;
return;
}
}
}
void Phonecard_address_book::query(string tname)
{
if(phonecard_contact_num<0)
{
cout<<"手机卡通讯簿无联系人,请重新选择。"<<endl;
return;
}
else
{
bool flag=false;
for(int i=0;i<=phonecard_contact_num;i++)
{
if(phonecard_contact[i].getname()==tname)
{
flag=true;
cout<<"目标联系人信息"<<endl;
cout<<phonecard_contact[i];
return ;
}
}
if(!flag)
{
cout<<"手机卡通讯簿中无该人信息,请重新选择。"<<endl;
return;
}
}
}
void Phonecard_address_book::browse()
{
if(phonecard_contact_num<0)
{
cout<<"手机卡通讯簿无联系人信息,请重新选择。"<<endl;
return;
}
else
{
cout<<"手机卡通讯簿中有联系人个数:"<<phonecard_contact_num+1<<endl;
cout<<"信息如下:"<<endl;
vector<Phonecard_contact>::iterator temp;
for(temp=phonecard_contact.begin();temp!=phonecard_contact.end();temp++)
{
cout<<(*temp);
cout<<endl;
}
}
}
int Phonecard_address_book::getphonecard_contact_num()
{
return phonecard_contact_num;
}
void Phonecard_address_book::copy(string tname,string tpho_num)
{
for(int i=0;i<=phonecard_contact_num;i++)
{
if(phonecard_contact[i].getname()==tname&&phonecard_contact[i].getpho_num()==tpho_num)
{cout<<"姓名为:"<<tname<<"号码为:"<<tpho_num<<"的用户已存在!"<<endl;
return;}
}
Phonecard_contact temp;
temp.Set(tname,tpho_num);
phonecard_contact.push_back(temp);
phonecard_contact_num++;
cout<<"姓名为;"<<tname<<"号码为:"<<tpho_num<<"的用户已存储完!"<<endl;
}
string Phonecard_address_book::getname(int i)
{
return phonecard_contact[i].getname();
}
string Phonecard_address_book::getpho_num(int i)
{
return phonecard_contact[i].getpho_num();
}
void Phonecard_address_book::clear()
{
phonecard_contact.clear();
phonecard_contact_num=-1;
}
6. 用户类(这是一个操作类,完成通讯簿的操作):
用户拥有两个通讯簿(一个是手机中存储的联系人,一个是手机卡中存储的联系人),并且可以对通讯录进行管理
数据成员包括:两个通讯簿对象
成员函数包括(成员函数体现用户的行为):
添加联系人:利用基类指针,调用相应的通讯簿对象(手机通讯簿或手机卡通信簿)的增加函数完成联系人的添加。实现动态联编,体现出多态特点。(下同)
删除联系人:调用相应的通讯簿对象的删除操作删除一个联系人
Display:显示相应的通讯簿中联系人的信息
修改某一联系人的信息:调用通讯簿对象的函数完成操作
查询并显示某一联系人的信息:调用通讯簿对象的函数完成操作
将手机卡中的存储的联系人的信息移动到手机中
将手机中存储的联系人的信息移动到手机卡中
将手机卡中的存储的联系人的信息复制到手机中
将手机中存储的联系人的信息复制到手机卡中
实现代码:
class User
{
Phone_address_book phone_address_book;
Phonecard_address_book phonecard_address_book;
Menu menu;
public:
User();
~User();
void New();
void Delete();
void modify();
void query();
void browse();
void move_card_to_phone();
void move_phone_to_card();
void copy_card_to_phone();
void copy_phone_to_card();
};
User::User()
{
cout<<"**********************************"<<endl;
cout<<"* 欢迎来到窝瓜的 *"<<endl;
cout<<"* 通讯录管理系统 *"<<endl;
cout<<"*--------------------------------*"<<endl;
cout<<"*当前联系人个数: *"<<endl;
cout<<"* 手机通讯簿上有"<<phone_address_book.getphone_contact_num()+1<<"个联系人 *"<<endl;
cout<<"* 手机卡通讯簿上有"<<phonecard_address_book.getphonecard_contact_num()+1<<"个联系人 *"<<endl;
cout<<"* *"<<endl;
cout<<"**********************************"<<endl;
cout<<'\n'<<endl;
system("pause");
}
User::~User()
{
cout<<"**********************************"<<endl;
cout<<"* 感谢使用窝瓜的 *"<<endl;
cout<<"* 通讯录管理系统 *"<<endl;
cout<<"*--------------------------------*"<<endl;
cout<<"*当前联系人个数: *"<<endl;
cout<<"* 手机通讯簿上有"<<phone_address_book.getphone_contact_num()+1<<"个联系人 *"<<endl;
cout<<"* 手机卡通讯簿上有"<<phonecard_address_book.getphonecard_contact_num()+1<<"个联系人 *"<<endl;
cout<<"* *"<<endl;
cout<<"**********************************"<<endl;
cout<<'\n'<<endl;
system("pause");
system("cls");
}
void User::New()
{
change3:{
system("cls");
menu.newMenu();
Address_book *temp;
int sign;
cin>>sign;
switch(sign)
{
case 1:{
temp=&phone_address_book;
temp->newcontact();
break;
}
case 2:{
temp=&phonecard_address_book;
temp->newcontact();
break;
}
case 3:{
return;
}
default:{
cout<<"输入有误,请重新选择。"<<endl;
system("pause");
goto change3;
}
}
}
}
void User::Delete()
{
change4:{
system("cls");
menu.deleteMenu();
Address_book *temp;
int sign;
cin>>sign;
string tpho_num;
switch(sign)
{
case 1:{
cout<<"请输入要删除的联系人号码"<<endl;
cin>>tpho_num;
temp=&phone_address_book;
temp->deletecontact(tpho_num);
break;
}
case 2:{
cout<<"请输入要删除的联系人号码"<<endl;
cin>>tpho_num;
temp=&phonecard_address_book;
temp->deletecontact(tpho_num);
break;
}
case 3:{
return;
}
default:{
cout<<"输入有误,请重新选择。"<<endl;
system("pause");
goto change4;
}
}
}
}
void User::modify()
{
change5:{
system("cls");
Address_book *temp;
menu.modifyMenu();
int sign;
cin>>sign;
string tpho_num;
switch(sign){
case 1:{
cout<<"请输入要修改联系人的号码。"<<endl;
cin>>tpho_num;
temp=&phone_address_book;
temp->modify(tpho_num);
break;
}
case 2:{
cout<<"请输入要修改联系人的号码。"<<endl;
cin>>tpho_num;
temp=&phonecard_address_book;
temp->modify(tpho_num);
break;
}
case 3:{
cout<<"请输入要修改联系人的号码。"<<endl;
cin>>tpho_num;
cout<<"--------------手机通讯簿------------"<<endl;
temp=&phone_address_book;
temp->modify(tpho_num);
cout<<"-------------手机卡通讯簿-----------"<<endl;
temp=&phonecard_address_book;
temp->modify(tpho_num);
break;
}
case 4:{
return;
}
default:{
cout<<"输入有误,请重新输入。"<<endl;
system("pause");
goto change5;
}
}
}
}
void User::query()
{
change6:
{
system("cls");
menu.queryMenu();
Address_book *temp;
int sign;
string tname;
cin>>sign;
switch(sign)
{
case 1:{
cout<<"请输入要查询的联系人姓名"<<endl;
cin>>tname;
temp=&phone_address_book;
temp->query(tname);
break;
}
case 2:{
cout<<"请输入要查询的联系人姓名"<<endl;
cin>>tname;
temp=&phonecard_address_book;
temp->query(tname);
break;
}
case 3:{
cout<<"请输入要查询的联系人姓名"<<endl;
cin>>tname;
cout<<"--------------手机通讯簿------------"<<endl;
temp=&phone_address_book;
temp->query(tname);
cout<<"-------------手机卡通讯簿-----------"<<endl;
temp=&phonecard_address_book;
temp->query(tname);
break;
}
case 4:{
return;
}
default:{
cout<<"输入有误,请重新输入。"<<endl;
goto change6;
}
}
}
}
void User::browse()
{
change7:
{
system("cls");
menu.browseMenu();
Address_book *temp;
int sign;
cin>>sign;
switch(sign)
{
case 1:{
cout<<"--------------手机通讯簿------------"<<endl;
temp=&phone_address_book;
temp->browse();
break;
}
case 2:{
cout<<"-------------手机卡通讯簿-----------"<<endl;
temp=&phonecard_address_book;
temp->browse();
break;
}
case 3:{
cout<<"--------------手机通讯簿------------"<<endl;
temp=&phone_address_book;
temp->browse();
cout<<"-------------手机卡通讯簿-----------"<<endl;
temp=&phonecard_address_book;
temp->browse();
break;
}
case 4:{
return;
}
default:{
cout<<"输入有误,请重新输入。"<<endl;
system("pause");
goto change7;
}
}
}
}
void User::move_phone_to_card()
{
if(phone_address_book.getphone_contact_num()<0)
{
cout<<"手机通讯簿内无联系人。"<<endl;
return;
}
else
{
for(int i=0;i<=phone_address_book.getphone_contact_num();i++)
{
if(phonecard_address_book.getphonecard_contact_num()>=1000)
{
cout<<"手机卡通讯簿容量已满。"<<endl;
return;
}
phonecard_address_book.copy(phone_address_book.getname(i),phone_address_book.getpho_num(i));
}
phone_address_book.clear();
cout<<"移动成功。"<<endl;
}
}
void User::move_card_to_phone()
{
if(phonecard_address_book.getphonecard_contact_num()<0)
{
cout<<"手机卡通讯簿内无联系人。"<<endl;
return;
}
else
{
for(int i=0;i<=phonecard_address_book.getphonecard_contact_num();i++)
{
if(phone_address_book.getphone_contact_num()>=1000)
{
cout<<"手机通讯簿容量已满。"<<endl;
return;
}
phone_address_book.copy(phonecard_address_book.getname(i),phonecard_address_book.getpho_num(i));
}
phonecard_address_book.clear();
cout<<"移动成功。"<<endl;
}
}
void User::copy_phone_to_card()
{
if(phone_address_book.getphone_contact_num()<0)
{
cout<<"手机通讯簿内无联系人。"<<endl;
return;
}
else
{
for(int i=0;i<=phone_address_book.getphone_contact_num();i++)
{
if(phonecard_address_book.getphonecard_contact_num()>=1000)
{
cout<<"手机卡通讯簿容量已满。"<<endl;
return;
}
phonecard_address_book.copy(phone_address_book.getname(i),phone_address_book.getpho_num(i));
}
cout<<"复制成功。"<<endl;
}
}
void User::copy_card_to_phone()
{
if(phonecard_address_book.getphonecard_contact_num()<0)
{
cout<<"手机卡通讯簿内无联系人。"<<endl;
return;
}
else
{
for(int i=0;i<=phonecard_address_book.getphonecard_contact_num();i++)
{
if(phone_address_book.getphone_contact_num()>=1000)
{
cout<<"手机通讯簿容量已满。"<<endl;
return;
}
phone_address_book.copy(phonecard_address_book.getname(i),phonecard_address_book.getpho_num(i));
}
cout<<"复制成功。"<<endl;
}
}
7. 界面菜单类:用来给出操作提示
数据成员:可以不定义数据成员
成员函数:Display函数:显示操作菜单的提示。说明:可以根据需要定义多个函数,显示不同的菜单(操作提示)。
实现代码:
class Menu
{
public:
void mainMenu();
void newMenu();
void deleteMenu();
void modifyMenu();
void queryMenu();
void browseMenu();
void archivedMenu();
};
void Menu::mainMenu()
{
cout<<"**************************************"<<endl;
cout<<"*----------欢迎来到窝瓜的------------*"<<endl;
cout<<"*----------通讯录管理系统------------*"<<endl;
cout<<"**************************************"<<endl;
cout<<"*主菜单: *"<<endl;
cout<<"* 0.退出 *"<<endl;
cout<<"* 1.新建联系人 *"<<endl;
cout<<"* 2.删除联系人 *"<<endl;
cout<<"* 3.修改联系人 *"<<endl;
cout<<"* 4.查询联系人 *"<<endl;
cout<<"* 5.浏览联系人 *"<<endl;
cout<<"* 6.转存联系人 *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"请输入你的选择"<<'\n'<<endl;
}
void Menu::newMenu()
{
cout<<"**************************************"<<endl;
cout<<"*新建联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.手机通讯录 *"<<endl;
cout<<"* 2.手机卡通讯录 *"<<endl;
cout<<"* 3.返回主菜单 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"新建联系人到那个通讯录?"<<"\n"<<endl;
}
void Menu::deleteMenu()
{
cout<<"**************************************"<<endl;
cout<<"*删除联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.手机通讯录 *"<<endl;
cout<<"* 2.手机卡通讯录 *"<<endl;
cout<<"* 3.返回主菜单 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"删除哪个通讯录的联系人?"<<'\n'<<endl;
}
void Menu::modifyMenu()
{
cout<<"**************************************"<<endl;
cout<<"*修改联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.手机通讯簿 *"<<endl;
cout<<"* 2.手机卡通讯簿 *"<<endl;
cout<<"* 3.手机和手机卡通讯簿 *"<<endl;
cout<<"* 4.返回主菜单 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"修改哪个通讯簿联系人?"<<'\n'<<endl;
}
void Menu::queryMenu()
{
cout<<"**************************************"<<endl;
cout<<"*查询联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.手机通讯录 *"<<endl;
cout<<"* 2.手机卡通讯录 *"<<endl;
cout<<"* 3.手机通讯录和手机卡通讯录 *"<<endl;
cout<<"* 4.返回主菜单 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"查询哪个通讯录的联系人?"<<'\n'<<endl;
}
void Menu::browseMenu()
{
cout<<"**************************************"<<endl;
cout<<"*浏览联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.手机通讯录 *"<<endl;
cout<<"* 2.手机卡通讯录 *"<<endl;
cout<<"* 3.手机通讯录和手机卡通讯录 *"<<endl;
cout<<"* 4.返回主菜单 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"浏览哪个通讯录的联系人?"<<'\n'<<endl;
}
void Menu::archivedMenu()
{
cout<<"**************************************"<<endl;
cout<<"*转存联系人: *"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.将联系人信息从手机移动到手机卡上 *"<<endl;
cout<<"* 2.将联系人信息从手机卡移动到手机上 *"<<endl;
cout<<"* 3.将联系人信息从手机复制到手机卡上 *"<<endl;
cout<<"* 4.将联系人信息从手机卡复制到手机上 *"<<endl;
cout<<"* 5.返回上一级 *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************"<<endl;
cout<<'\n'<<"请输入你的选择"<<'\n'<<endl;
}
主函数:
int main()
{
User user;
Menu menu;
int sign=1;
while(sign!=0)
{
change8:{
system("cls");
menu.mainMenu();
cin>>sign;
switch(sign)
{
case 1:{
user.New();
goto change8;
}
case 2:{
user.Delete();
goto change8;
}
case 3:{
user.modify();
system("pause");
goto change8;
}
case 4:{
user.query();
system("pause");
goto change8;
}
case 5:{
user.browse();
system("pause");
goto change8;
}
case 6:{
change9:{
system("cls");
int n;
menu.archivedMenu();
cin>>n;
switch(n)
{
case 1:{
user.move_phone_to_card();
system("pause");
goto change8;
}
case 2:{
user.move_card_to_phone();
system("pause");
goto change8;
}
case 3:{
user.copy_phone_to_card();
system("pause");
goto change8;
}
case 4:{
user.copy_card_to_phone();
system("pause");
goto change8;
}
case 5:{
goto change8;
}
default:{
cout<<"输入有误,请重新输入。"<<endl;
system("pause");
goto change9;
}
}
}
}
case 0:{
system("cls");
break;
}
default:{
cout<<"输入有误,请重新输入"<<endl;
system("pause");
goto change8;
}
}
}
}
return 0;
}