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
, " "));
}
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;
}
转载请注明原文地址: https://win8.8miu.com/read-1546637.html