用c++文件的方式写一个班级通讯录的类,通讯录信息主要包括:姓名、班级、手机、家庭电话、电子邮件、通讯录地址、邮编等内容,实现通讯录信息的添加、修改、删除和查询
时间: 2023-09-26 16:06:53 浏览: 84
好的,以下是一个班级通讯录的类的示例代码,其中包括添加、修改、删除和查询通讯录信息的功能。这个示例代码使用 C++ 文件的方式实现。
通讯录类定义头文件 AddressBook.h:
```c++
#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H
#include <string>
#include <vector>
class AddressBook {
public:
struct Contact {
std::string name;
std::string className;
std::string mobilePhone;
std::string homePhone;
std::string email;
std::string address;
std::string zipCode;
};
AddressBook(const std::string& fileName);
bool addContact(const Contact& contact);
bool updateContact(const std::string& name, const Contact& contact);
bool removeContact(const std::string& name);
Contact getContact(const std::string& name) const;
std::vector<Contact> getAllContacts() const;
private:
std::string m_fileName;
std::vector<Contact> m_contacts;
void loadContacts();
void saveContacts();
};
#endif // ADDRESSBOOK_H
```
通讯录类实现文件 AddressBook.cpp:
```c++
#include "AddressBook.h"
#include <fstream>
AddressBook::AddressBook(const std::string& fileName)
: m_fileName(fileName)
{
loadContacts();
}
bool AddressBook::addContact(const Contact& contact)
{
// 检查是否已经存在同名联系人
for (const auto& c : m_contacts) {
if (c.name == contact.name) {
return false;
}
}
m_contacts.push_back(contact);
saveContacts();
return true;
}
bool AddressBook::updateContact(const std::string& name, const Contact& contact)
{
for (auto& c : m_contacts) {
if (c.name == name) {
c = contact;
saveContacts();
return true;
}
}
return false;
}
bool AddressBook::removeContact(const std::string& name)
{
for (auto it = m_contacts.begin(); it != m_contacts.end(); ++it) {
if (it->name == name) {
m_contacts.erase(it);
saveContacts();
return true;
}
}
return false;
}
AddressBook::Contact AddressBook::getContact(const std::string& name) const
{
for (const auto& c : m_contacts) {
if (c.name == name) {
return c;
}
}
return Contact();
}
std::vector<AddressBook::Contact> AddressBook::getAllContacts() const
{
return m_contacts;
}
void AddressBook::loadContacts()
{
m_contacts.clear();
std::ifstream file(m_fileName);
if (!file.is_open()) {
return;
}
std::string line;
while (std::getline(file, line)) {
Contact c;
std::stringstream ss(line);
std::getline(ss, c.name, '\t');
std::getline(ss, c.className, '\t');
std::getline(ss, c.mobilePhone, '\t');
std::getline(ss, c.homePhone, '\t');
std::getline(ss, c.email, '\t');
std::getline(ss, c.address, '\t');
std::getline(ss, c.zipCode, '\t');
m_contacts.push_back(c);
}
file.close();
}
void AddressBook::saveContacts()
{
std::ofstream file(m_fileName);
if (!file.is_open()) {
return;
}
for (const auto& c : m_contacts) {
file << c.name << '\t'
<< c.className << '\t'
<< c.mobilePhone << '\t'
<< c.homePhone << '\t'
<< c.email << '\t'
<< c.address << '\t'
<< c.zipCode << '\n';
}
file.close();
}
```
使用示例:
```c++
#include "AddressBook.h"
#include <iostream>
int main()
{
AddressBook addressBook("contacts.txt");
// 添加联系人
AddressBook::Contact c1 = {
"张三", "一班", "13812345678", "010-12345678",
"zs@example.com", "北京市海淀区", "100000"
};
addressBook.addContact(c1);
// 修改联系人
AddressBook::Contact c2 = {
"李四", "二班", "13912345678", "010-23456789",
"ls@example.com", "北京市朝阳区", "200000"
};
addressBook.updateContact("张三", c2);
// 删除联系人
addressBook.removeContact("张三");
// 查询联系人
AddressBook::Contact c3 = addressBook.getContact("李四");
std::cout << "姓名:" << c3.name << '\n'
<< "班级:" << c3.className << '\n'
<< "手机:" << c3.mobilePhone << '\n'
<< "家庭电话:" << c3.homePhone << '\n'
<< "电子邮件:" << c3.email << '\n'
<< "通讯录地址:" << c3.address << '\n'
<< "邮编:" << c3.zipCode << '\n';
// 获取所有联系人
std::vector<AddressBook::Contact> allContacts = addressBook.getAllContacts();
for (const auto& c : allContacts) {
std::cout << "姓名:" << c.name << '\n'
<< "班级:" << c.className << '\n'
<< "手机:" << c.mobilePhone << '\n'
<< "家庭电话:" << c.homePhone << '\n'
<< "电子邮件:" << c.email << '\n'
<< "通讯录地址:" << c.address << '\n'
<< "邮编:" << c.zipCode << '\n';
}
return 0;
}
```
这个示例代码实现了班级通讯录的类,包括添加、修改、删除和查询通讯录信息的功能。在这个示例中,通讯录信息存储在一个文本文件中,但是也可以使用数据库等其他方式存储。
阅读全文