c++语言写通讯录系统
时间: 2023-11-18 12:21:58 浏览: 78
基于C++语言和单链表数据结构实现的通讯录管理系统,包含文件读取、文件保存、增删改查、排序、清空等功能.zip
5星 · 资源好评率100%
好的,下面是一个简单的C++通讯录系统的代码实现。
```c++
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
// 定义联系人结构体
struct Contact {
string name;
string phone;
string address;
};
// 定义通讯录类
class AddressBook {
public:
// 添加联系人
void addContact() {
Contact contact;
cout << "请输入联系人姓名:";
cin >> contact.name;
cout << "请输入联系人电话:";
cin >> contact.phone;
cout << "请输入联系人地址:";
cin >> contact.address;
m_contacts.push_back(contact);
cout << "添加成功!" << endl;
}
// 删除联系人
void deleteContact() {
string nameOrPhone;
cout << "请输入联系人姓名或电话:";
cin >> nameOrPhone;
int index = findContact(nameOrPhone);
if (index == -1) {
cout << "没有找到该联系人!" << endl;
} else {
m_contacts.erase(m_contacts.begin() + index);
cout << "删除成功!" << endl;
}
}
// 修改联系人
void modifyContact() {
string nameOrPhone;
cout << "请输入联系人姓名或电话:";
cin >> nameOrPhone;
int index = findContact(nameOrPhone);
if (index == -1) {
cout << "没有找到该联系人!" << endl;
} else {
Contact& contact = m_contacts[index];
cout << "请输入联系人姓名:";
cin >> contact.name;
cout << "请输入联系人电话:";
cin >> contact.phone;
cout << "请输入联系人地址:";
cin >> contact.address;
cout << "修改成功!" << endl;
}
}
// 查找联系人
void searchContact() {
string nameOrPhone;
cout << "请输入联系人姓名或电话:";
cin >> nameOrPhone;
int index = findContact(nameOrPhone);
if (index == -1) {
cout << "没有找到该联系人!" << endl;
} else {
Contact& contact = m_contacts[index];
cout << "姓名:" << contact.name << endl;
cout << "电话:" << contact.phone << endl;
cout << "地址:" << contact.address << endl;
}
}
// 显示所有联系人
void showAllContacts() {
cout << "所有联系人:" << endl;
for (int i = 0; i < m_contacts.size(); i++) {
cout << "姓名:" << m_contacts[i].name << endl;
cout << "电话:" << m_contacts[i].phone << endl;
cout << "地址:" << m_contacts[i].address << endl;
cout << endl;
}
}
// 保存通讯录到文件
void saveToFile() {
ofstream fout("contacts.txt");
for (int i = 0; i < m_contacts.size(); i++) {
fout << m_contacts[i].name << endl;
fout << m_contacts[i].phone << endl;
fout << m_contacts[i].address << endl;
}
fout.close();
}
// 从文件中读取通讯录
void loadFromFile() {
ifstream fin("contacts.txt");
while (true) {
Contact contact;
fin >> contact.name;
if (fin.eof()) {
break;
}
fin >> contact.phone;
fin >> contact.address;
m_contacts.push_back(contact);
}
fin.close();
}
private:
// 查找联系人,返回其在vector中的下标,如果没有找到则返回-1
int findContact(string nameOrPhone) {
for (int i = 0; i < m_contacts.size(); i++) {
Contact& contact = m_contacts[i];
if (contact.name == nameOrPhone || contact.phone == nameOrPhone) {
return i;
}
}
return -1;
}
vector<Contact> m_contacts; // 存储所有联系人
};
int main() {
AddressBook addressBook;
addressBook.loadFromFile();
while (true) {
cout << "请选择操作:" << endl;
cout << "1、添加联系人" << endl;
cout << "2、删除联系人" << endl;
cout << "3、修改联系人" << endl;
cout << "4、查找联系人" << endl;
cout << "5、显示所有联系人" << endl;
cout << "6、保存通讯录到文件" << endl;
cout << "7、退出程序" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
addressBook.addContact();
break;
case 2:
addressBook.deleteContact();
break;
case 3:
addressBook.modifyContact();
break;
case 4:
addressBook.searchContact();
break;
case 5:
addressBook.showAllContacts();
break;
case 6:
addressBook.saveToFile();
break;
case 7:
return 0;
default:
cout << "输入错误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
这个程序使用了一个AddressBook类来管理所有联系人,其中定义了添加、删除、修改、查找、显示所有联系人、保存通讯录到文件和从文件中读取通讯录等方法。通讯录中的所有联系人存储在一个vector容器中,可以方便地进行添加、删除和查找操作。程序还使用了文件操作,可以将所有联系人信息保存到文件中,以便下次程序启动时可以读取。
阅读全文