c++,实现电话簿管理程序, Mytel类描述单个电话号码,TelManager类负责管理电话号码。把增、删、改、查功能封装到该类中。要求电话号码能从磁盘读写
时间: 2024-02-16 12:00:28 浏览: 70
好的,我可以为您提供一个基本的实现。首先,我们需要定义一个 Mytel 类来描述单个电话号码:
```cpp
class Mytel {
public:
Mytel() {}
Mytel(const std::string &name, const std::string &number)
: m_name(name), m_number(number) {}
// 获取电话号码的名称和号码
std::string getName() const { return m_name; }
std::string getNumber() const { return m_number; }
// 设置电话号码的名称和号码
void setName(const std::string &name) { m_name = name; }
void setNumber(const std::string &number) { m_number = number; }
// 从字符串中解析电话号码
void fromString(const std::string &str) {
size_t pos = str.find(',');
if (pos != std::string::npos) {
m_name = str.substr(0, pos);
m_number = str.substr(pos + 1);
}
}
// 将电话号码转换为字符串
std::string toString() const {
return m_name + "," + m_number;
}
private:
std::string m_name; // 电话号码的名称
std::string m_number; // 电话号码
};
```
然后,我们需要定义一个 TelManager 类来管理所有的电话号码。在这个类中,我们可以实现增加、删除、修改和查找电话号码的功能,并且我们需要将电话号码保存到磁盘上。
```cpp
#include <fstream>
#include <iostream>
#include <vector>
class TelManager {
public:
TelManager(const std::string &filename) : m_filename(filename) {}
// 从磁盘中读取电话号码
bool load() {
std::ifstream in(m_filename);
if (!in) {
std::cerr << "Error: cannot open file " << m_filename << std::endl;
return false;
}
std::string line;
while (std::getline(in, line)) {
Mytel tel;
tel.fromString(line);
m_tels.push_back(tel);
}
in.close();
return true;
}
// 将电话号码保存到磁盘中
bool save() {
std::ofstream out(m_filename);
if (!out) {
std::cerr << "Error: cannot open file " << m_filename << std::endl;
return false;
}
for (const auto &tel : m_tels) {
out << tel.toString() << std::endl;
}
out.close();
return true;
}
// 添加一个电话号码
void addTel(const Mytel &tel) {
m_tels.push_back(tel);
}
// 删除一个电话号码
void removeTel(const std::string &number) {
for (auto it = m_tels.begin(); it != m_tels.end(); ++it) {
if (it->getNumber() == number) {
m_tels.erase(it);
break;
}
}
}
// 修改一个电话号码
void modifyTel(const std::string &number, const Mytel &tel) {
for (auto &t : m_tels) {
if (t.getNumber() == number) {
t = tel;
break;
}
}
}
// 查找一个电话号码
Mytel findTel(const std::string &number) {
for (const auto &t : m_tels) {
if (t.getNumber() == number) {
return t;
}
}
return Mytel();
}
private:
std::string m_filename;
std::vector<Mytel> m_tels;
};
```
这样,我们就实现了一个简单的电话簿管理程序,可以实现增加、删除、修改和查找电话号码,并且可以将电话号码保存到磁盘上。
阅读全文