用c++完成:试编写合适的类Ebook,实现一个电话通讯录,内含姓名和电话号码成员,可以按姓名拼音顺序将通讯录排序,设计必要的数据进行测试。
时间: 2024-10-29 07:17:18 浏览: 41
在 C++ 中,我们可以创建一个名为 `Ebook` 的类来实现电话通讯录的功能。首先,我们需要定义一个类来存储姓名和电话号码,并提供用于排序的方法。下面是一个简单的例子:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
// 定义 PhoneBook 类,包含姓名(Name)和电话号码(PhoneNumber)
class PhoneBook {
public:
struct Record {
std::string name;
std::string phoneNumber;
};
// 构造函数
void addRecord(const std::string& name, const std::string& phoneNumber) {
records.push_back({name, phoneNumber});
}
// 按姓名拼音首字母排序
void sortRecords() {
std::sort(records.begin(), records.end(), [](const Record& a, const Record& b) {
return a.name < b.name; // 使用std::locale或第三方库如icu对中文名字排序
});
}
// 打印通讯录
void print() const {
for (const auto& record : records) {
std::cout << "姓名: " << record.name << ", 电话号码: " << record.phoneNumber << '\n';
}
}
private:
std::vector<Record> records;
};
int main() {
// 创建一个 PhoneBook 对象并添加记录
PhoneBook phoneBook;
phoneBook.addRecord("张三", "13800138000");
phoneBook.addRecord("李四", "13900139000");
phoneBook.addRecord("王五", "13700137000");
// 排序
phoneBook.sortRecords();
// 打印通讯录
phoneBook.print();
return 0;
}
```
在这个例子中,我们创建了一个 `PhoneBook` 类,内部有一个 `Record` 结构体用于存储姓名和电话号码。我们实现了添加记录、按姓名排序以及打印通讯录的功能。
为了测试这个功能,你可以添加更多记录,然后观察排序后的结果是否按照预期的姓名拼音顺序排列。
阅读全文