#include<iostream>
#include<string>
using namespace std;
class Maillist;
class Person
{
private:
string name,number,qq,email,address;
friend class Maillist;
public:
Person(string n="0",string nu="0",string q="0",string e="0",string a="0"):name(n),number(nu),qq(q),email(e),address(a){}
friend ostream& operator <<(ostream& os,Person &obj);
};
class Maillist
{
private:
int n;
Person *p;
public:
Maillist();
Maillist(Person*,int);
//~Maillist();
Person& operator[](int i);
void set_list();
void set_list2(int a);
bool inspect_name(Person& person,int now,int a);
bool inspect_number(Person& person,int now,int a);
bool inspect_qq(Person& person,int now,int a);
int find_ranking(string number1);
void search_sb(string number1);
void delete_(string number1);
void modify_sb(string number1);
void aboveall();
void display_list();
};
Maillist::Maillist()
{
cout<<"欢迎来到通讯录管理页面"<<'\n';
cout<<'\n';
p=new Person[500];
n=0;
}
void Maillist::set_list()
{
cout<<"请输入姓名:";
cin>>p[n].name;
inspect_name(p[n],n,n);
cout<<"请输入电话号码:";
cin>>p[n].number;
inspect_number(p[n],n,n);
cout<<"请输入QQ:";
cin>>p[n].qq;
inspect_qq(p[n],n,n);
cout<<"请输入e-mail:";
cin>>p[n].email;
cout<<"请输入地址:";
cin>>p[n].address;
n++;
cout<<endl;
}
void Maillist::set_list2(int a)
{
cout<<"请输入姓名:";
cin>>p[a].name;
inspect_name(p[a],n,a);
cout<<"请输入电话号码:";
cin>>p[a].number;
inspect_number(p[a],n,a);
cout<<"请输入QQ:";
cin>>p[a].qq;
inspect_qq(p[a],n,a);
cout<<"请输入e-mail:";
cin>>p[a].email;
cout<<"请输入地址:";
cin>>p[a].address;
cout<<endl;
}
bool Maillist::inspect_name(Person& person,int now,int a)
{
int i;
for(i=0;i<now;i++)
{
while(p[i].name==person.name)
{
if(i==a)
{
break;
}
else
{
cout<<"你的名字重复,请重新输入:";
cin>>person.name;
}
}
}
}
bool Maillist::inspect_number(Person& person,int now,int a)
{
int i;
for(i=0;i<now;i++)
{
while(p[i].number==person.number)
{
if(i==a)
{
break;
}
else
{
cout<<"你的电话号码重复,请重新输入:";
cin>>person.number;
}
}
}
}
bool Maillist::inspect_qq(Person& person,int now,int a)
{
int i;
for(i=0;i<now;i++)
{
while(p[i].qq==person.qq)
{
if(i==a)
{
break;
}
else
{
cout<<"你的QQ重复,请重新输入:";
cin>>person.qq;
}
}
}
}
void Maillist::display_list()
{
int i;
for(i=0;i<n;i++)
{
cout<<p[i];
}
cout<<endl;
}
void Maillist::aboveall()
{
string command;
while(1)
{
cout<<"请输入add命令进行添加"<<'\n';
cout<<"请输入search命令进行查找"<<'\n';
cout<<"请输入modify命令进行修改"<<'\n';
cout<<"请输入delete命令进行删除"<<'\n';
cout<<"请输入display命令浏览整个通讯录"<<'\n';
cin>>command;
if(command=="add")
{
set_list();
}
else if(command=="search")
{
cout<<"请输入要查找用户的姓名/电话号码/QQ:";
string w1;
cin>>w1;
search_sb(w1);
}
else if(command=="modify")
{
cout<<"请输入要修改用户的姓名/电话号码/QQ:";
string w3;
cin>>w3;
modify_sb(w3);
}
else if(command=="delete")
{
cout<<"请输入要删除用户的姓名/电话号码/QQ:";
string w2;
cin>>w2;
delete_(w2);
cout<<endl;
}
else if(command=="display")
{
display_list();
}
else
{
cout<<"没有找到命令,请重新输入:"<<'\n';
}
}
}
int Maillist::find_ranking(string number1)
{
int i;
for(i=0;i<n;i++)
{
if(number1==p[i].name)
{
return i;
break;
}
else if(number1==p[i].number)
{
return i;
break;
}
else if(number1==p[i].qq)
{
return i;
break;
}
}
if(i==n) return i;
}
void Maillist::search_sb(string number1)
{
int a;
a=find_ranking(number1);
if(a==n)
{
cout<<"对不起,没有找到该用户"<<'\n'<<'\n';
}
else
{
cout<<p[a]<<'\n'<<'\n';
}
}
void Maillist::delete_(string number1)
{
int a,i;
a=find_ranking(number1);
if(a==n)
{
cout<<"对不起,没有找到该用户"<<'\n'<<'\n';
}
else
{
for(i=0;i<n;i++)
{
if(i>a)
{
p[i-1]=p[i];
}
}
n--;
}
}
void Maillist::modify_sb(string number1)
{
int a;
a=find_ranking(number1);
if(a==n)
{
cout<<"对不起,没有找到该用户"<<'\n'<<'\n';
}
else
{
set_list2(a);
cout<<'\n';
}
}
ostream& operator <<(ostream& os,Person &obj)
{
os<<"姓名:"<<obj.name<<'\t'<<"电话号码:"<<obj.number<<'\t'<<"QQ:"<<obj.qq<<'\t'<<"电子邮件:"<<obj.email<<'\t'<<"地址:"<<obj.address<<'\n';
return os;
}
int main()
{
Maillist mail;
mail.aboveall();
}
[C++]模拟通讯录管理系统
最新推荐文章于 2022-09-29 11:08:35 发布