#include#include #include #define MAX 1000 using namespace std; class Addressbooks; class Person { friend class Addressbooks; friend ostream& operator<<(ostream& out, Person&p);//重载<< string m_name, m_phone, m_qq, m_Email, m_addr; }; class Addressbooks { friend ostream& operator<<(ostream& out, Addressbooks&a); public: int isExistQQ(string qq);//通过qq号查找联系人 int isExistName(string name);//通过姓名查找联系人 int isExistPhone(string phone);//通过电话号码查找联系人 void addPerson();//1、添加联系人 按照姓名、电话号码、qq进行操作 void deletePerson();//2、删除联系人 void modifyPerson();//3、修改联系人 void FindPerson();//4、查找联系人 int findWay();//查找方式 private: Person* personArray = new Person[MAX]; int m_size = 0;//通讯录中联系人个数 }; //重载Addressbooks<< ostream& operator<<(ostream& out, Addressbooks& a) { for (int i = 0; i < a.m_size; i++) { out << a.personArray[i] << endl; } return out; } //重载Person<< ostream& operator<<(ostream& out, Person&p) { out << "姓名:" << setw(15) << left << p.m_name << "电话号码:" << setw(15) << left << p.m_phone << "QQ:" << setw(15) << left << p.m_qq << "Email:" << setw(15) << left << p.m_Email << "籍贯:" << setw(15) << left << p.m_addr << endl; return out; } void showMenx() { cout << "**************************************" << endl; cout << "***********0、退出通讯录**************" << endl; cout << "***********1、添加联系人**************" << endl; cout << "***********2、删除联系人**************" << endl; cout << "***********3、修改联系人**************" << endl; cout << "***********4、查找联系人**************" << endl; cout << "**************************************" << endl; } //通过qq号查找联系人 int Addressbooks::isExistQQ(string qq) { for (int i = 0; i < m_size; i++) { if (personArray[i].m_qq == qq) { return i; } } return -1; } //通过姓名查找联系人 int Addressbooks::isExistName(string name) { for (int i = 0; i < m_size; i++) { if (personArray[i].m_name == name) { return i; } } return -1; } //通过电话号码查找联系人 int Addressbooks::isExistPhone(string phone) { for (int i = 0; i < m_size; i++) { if (personArray[i].m_phone == phone) { return i; } } return -1; } //查找方式 int Addressbooks::findWay() { int select = 0; cout << "1----通过qq号" << endl; cout << "2----通过姓名" << endl; cout << "3----通过电话号码" << endl; cin >> select; if (select == 1) { string qq; cout << "请输入QQ号" << endl; cin >> qq; return isExistQQ(qq); } else if (select == 2) { string name; cout << "请输入姓名" << endl; cin >> name; return isExistName(name); } else if (select == 3) { string phone; cout << "请输入电话号码" << endl; cin >> phone; return isExistPhone(phone); } return -1; } //1、添加联系人 void Addressbooks::addPerson() { if (m_size != MAX) { string name; cout << "请输入姓名:" << endl; cin >> name; personArray[m_size].m_name = name; string phone; cout << "请输入电话号码:" << endl; cin >> phone; personArray[m_size].m_phone = phone; string qq; cout << "请输入qq号:" << endl; while (true) { int ret = 0; cin >> qq; ret = isExistQQ(qq); if (ret == -1) { personArray[m_size].m_qq = qq; break; } cout << "qq号与他人重复,请检查是否有误后重新输入" << endl; } string Email; cout << "请输入Email:" << endl; cin >> Email; personArray[m_size].m_Email = Email; string addr; cout << "请输入籍贯:" << endl; cin >> addr; personArray[m_size].m_addr = addr; m_size++; cout << "该联系人添加完成!" << endl; } else { cout << "通讯录已满,不能再添加了" << endl; } } //2、删除联系人 void Addressbooks::deletePerson() { int Ret; Ret = findWay(); if (Ret != -1) { for (int i = Ret + 1; i < m_size; i++) { personArray[i - 1] = personArray[i]; } m_size--; cout << "删除已完成" << endl; } else { cout << "此人本来就不存在" << endl; } } //3、修改联系人 void Addressbooks::modifyPerson() { int Ret; Ret = findWay(); if (Ret != -1) { string name; cout << "请输入姓名:" << endl; cin >> name; personArray[Ret].m_name = name; string phone; cout << "请输入电话号码:" << endl; cin >> phone; personArray[Ret].m_phone = phone; string qq; cout << "请输入qq号:" << endl; while (true) { int ret = 0; cin >> qq; ret = isExistQQ(qq); if (ret == -1) { personArray[Ret].m_qq = qq; break; } cout << "qq号与他人重复,请检查是否有误后重新输入" << endl; } string Email; cout << "请输入Email:" << endl; cin >> Email; personArray[Ret].m_Email = Email; string addr; cout << "请输入籍贯:" << endl; cin >> addr; personArray[Ret].m_addr = addr; cout << "修改完成" << endl; } else { cout << "此人不存在" << endl; } } //4、查找联系人 void Addressbooks::FindPerson() { int Ret; Ret = findWay(); if (Ret != -1) { cout << personArray[Ret] << endl; cout << "查找完成" << endl; } else { cout << "此人不存在" << endl; } } int main() { Addressbooks a1; while (true) { int select = 0; showMenx(); cin >> select; switch (select) { case 0: return 0; case 1: a1.addPerson(); break; case 2: a1.deletePerson(); break; case 3: a1.modifyPerson(); break; case 4: a1.FindPerson(); break; } system("pause"); system("cls"); } system("pause"); return 0; }



