51STL_list联系人demo
51STL_list联系人demo示例代码示例代码#include <iostream>#include <list>#include <string>using namespace std;enum MenuOptionSelection{InsertContactListEntry = 0,SortOnName = 1,...
·
51STL_list联系人demo
示例代码
#include <iostream>
#include <list>
#include <string>
using namespace std;
enum MenuOptionSelection
{
InsertContactListEntry = 0,
SortOnName = 1,
SortOnNumber = 2,
DisplayEntries = 3,
EraseEntry = 4,
QuitContactList = 5
};
class ContactListItem //一个联系人
{
public:
string strContactName;
string strPhoneNumber;
ContactListItem(const string& strName, const string& strNumber)
{
strContactName = strName;
strPhoneNumber = strNumber;
}
bool operator < (const ContactListItem itemToCompare) const // < 运算符重载,用于按姓名排序
{
return (this->strContactName < itemToCompare.strContactName);
}
bool operator == (const ContactListItem& itemToCompare) const
{
return (itemToCompare.strContactName == this->strContactName); //参数传进来的联系人是否等于当前联系人
}
};
int ShowMenu()
{
cout << "*** 选择你的操作 ***" << endl;
cout << "0. 输入新的联系人" << endl;
cout << "1. 按姓名排序" << endl;
cout << "2. 按照电话号码排序" << endl;
cout << "3. 显示所有联系人" << endl;
cout << "4. 删除一个联系人" << endl;
cout << "5. 退出" << endl;
int nOptionSelected = 0;
cin >> nOptionSelected;
cout << endl;
return nOptionSelected;
}
ContactListItem GetContactInfo()
{
cout << "*** 输入新的联系人 ***" << endl;
string strName;
cout << "联系人姓名:";
cin >> strName;
string strPhoneNumber;
cout << "联系人电话:";
cin >> strPhoneNumber;
return ContactListItem(strName, strPhoneNumber);
}
void DisplayContactList(const list<ContactListItem>& listContacts) //显示联系人函数
{
cout << "*** 这是所有联系人的信息 ***" << endl;
cout << "一共有" << listContacts.size() << "个联系人" << endl;
list<ContactListItem>::const_iterator iContact;
for(iContact = listContacts.begin();
iContact != listContacts.end();
++iContact)
{
cout << endl << "姓名:" << iContact->strContactName << endl;
cout << "电话:" << iContact->strPhoneNumber << endl;
}
cout << endl;
}
bool Predicate_CheckItemOnNumber(const ContactListItem& item1, const ContactListItem& item2)
{
return item1.strPhoneNumber < item2.strPhoneNumber;
}
void EraseEntryFromList(list<ContactListItem>& listContacts)
{
cout << "*** 删除一个联系人 ***" << endl;
cout << "被删除的联系人姓名:";
string strNameToErase;
cin >> strNameToErase;
listContacts.remove(ContactListItem(strNameToErase, " ")); //用姓名构造了一个联系人,再放到list容器中进行删除
}
int main()
{
list<ContactListItem> listContacts;
int nUserSelection = 0;
while((nUserSelection = ShowMenu()) != QuitContactList)
{
switch(nUserSelection)
{
case InsertContactListEntry: //使用枚举替换掉数字,增强可读性
listContacts.push_back(GetContactInfo());
cout << "联系人添加成功!" << endl;
break;
case SortOnName:
listContacts.sort();
DisplayContactList(listContacts);
break;
case SortOnNumber:
listContacts.sort(Predicate_CheckItemOnNumber);
DisplayContactList(listContacts);
break;
case DisplayEntries:
DisplayContactList(listContacts);
break;
case EraseEntry:
EraseEntryFromList(listContacts);
DisplayContactList(listContacts);
break;
case QuitContactList:
cout << "现在退出了,再见!" << endl;
break;
default:
cout << "非法的输入!" << nUserSelection << ", " << "有效的选项是数字0-4" << endl;
break;
}
}
return 0;
}
更多推荐
已为社区贡献2条内容
所有评论(0)