试编写合适的类Ebook,实现一个电话通讯录,内含姓名和电话号码成员,可以按姓名拼音顺序将通讯录排序,设计必要的数据进行测试。c++且用dev c++可以编译正确
时间: 2024-10-29 12:17:50 浏览: 22
在C++中,我们可以创建一个名为`Ebook`的类,用于模拟电话通讯录的功能。首先,我们需要包含必要的头文件,如iostream和string,以及实现一个自定义的比较函数来支持按姓名拼音排序。这里假设我们有一个简单的拼音转换函数`toPinyin`来进行拼音化处理。
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
// 假设有一个简单的拼音转换函数,实际应用中可能需要外部库如pinyin或第三方API
std::string toPinyin(const std::string& name);
class Ebook {
public:
// 定义姓名和电话号码
struct Contact {
std::string name;
std::string phoneNumber;
};
// 按照姓名拼音排序的辅助函数
static bool compareByName(const Contact& a, const Contact& b) {
return toPinyin(a.name) < toPinyin(b.name);
}
// 添加联系人
void addContact(const std::string& name, const std::string& phoneNumber) {
contacts.push_back({name, phoneNumber});
sort(contacts.begin(), contacts.end(), compareByName);
}
// 打印通讯录
void printContacts() const {
for (const auto& contact : contacts) {
std::cout << "Name: " << contact.name << ", Phone Number: " << contact.phoneNumber << "\n";
}
}
private:
std::vector<Contact> contacts;
};
int main() {
Ebook phoneBook;
// 添加一些联系人进行测试
phoneBook.addContact("张三", "1234567890");
phoneBook.addContact("李四", "0987654321");
phoneBook.addContact("王五", "2345678901");
// 测试排序功能
phoneBook.printContacts();
return 0;
}
```
这个示例中,我们定义了一个`Ebook`类,并在其中实现了添加联系人、按姓名拼音排序和打印通讯录的基本操作。在`main`函数中,我们创建了一个`phoneBook`实例并添加了一些联系人进行测试。
阅读全文