您好,登录后才能下订单哦!
在现代软件开发中,通讯录功能是一个非常常见的需求。无论是手机应用、桌面软件还是Web应用,通讯录功能都扮演着重要的角色。本文将介绍如何使用C++实现一个简易的通讯录功能,帮助读者理解基本的编程概念和数据结构。
在开始编写代码之前,我们需要明确通讯录的基本功能需求:
为了实现上述功能,我们需要设计一个合适的数据结构来存储联系人信息。在C++中,我们可以使用std::vector
来存储联系人,每个联系人可以用一个struct
来表示。
#include <string>
#include <vector>
struct Contact {
std::string name;
std::string phoneNumber;
};
std::vector<Contact> contacts;
添加联系人的功能可以通过向contacts
向量中插入一个新的Contact
对象来实现。
void addContact(const std::string& name, const std::string& phoneNumber) {
Contact newContact = {name, phoneNumber};
contacts.push_back(newContact);
std::cout << "联系人添加成功!" << std::endl;
}
删除联系人可以通过遍历contacts
向量,找到匹配的联系人并将其删除。
void deleteContact(const std::string& name) {
for (auto it = contacts.begin(); it != contacts.end(); ++it) {
if (it->name == name) {
contacts.erase(it);
std::cout << "联系人删除成功!" << std::endl;
return;
}
}
std::cout << "未找到该联系人!" << std::endl;
}
查找联系人可以通过遍历contacts
向量,找到匹配的联系人并显示其信息。
void findContact(const std::string& name) {
for (const auto& contact : contacts) {
if (contact.name == name) {
std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
return;
}
}
std::cout << "未找到该联系人!" << std::endl;
}
显示所有联系人可以通过遍历contacts
向量,逐个输出联系人的信息。
void displayAllContacts() {
if (contacts.empty()) {
std::cout << "通讯录为空!" << std::endl;
return;
}
for (const auto& contact : contacts) {
std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
}
}
为了保存和加载通讯录,我们可以将联系人信息写入文件,并在需要时从文件中读取。
#include <fstream>
void saveContactsToFile(const std::string& filename) {
std::ofstream file(filename);
for (const auto& contact : contacts) {
file << contact.name << " " << contact.phoneNumber << std::endl;
}
std::cout << "通讯录已保存到文件!" << std::endl;
}
void loadContactsFromFile(const std::string& filename) {
std::ifstream file(filename);
if (!file) {
std::cout << "文件打开失败!" << std::endl;
return;
}
contacts.clear();
std::string name, phoneNumber;
while (file >> name >> phoneNumber) {
contacts.push_back({name, phoneNumber});
}
std::cout << "通讯录已从文件加载!" << std::endl;
}
最后,我们可以编写一个简单的主程序来测试上述功能。
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
struct Contact {
std::string name;
std::string phoneNumber;
};
std::vector<Contact> contacts;
void addContact(const std::string& name, const std::string& phoneNumber) {
Contact newContact = {name, phoneNumber};
contacts.push_back(newContact);
std::cout << "联系人添加成功!" << std::endl;
}
void deleteContact(const std::string& name) {
for (auto it = contacts.begin(); it != contacts.end(); ++it) {
if (it->name == name) {
contacts.erase(it);
std::cout << "联系人删除成功!" << std::endl;
return;
}
}
std::cout << "未找到该联系人!" << std::endl;
}
void findContact(const std::string& name) {
for (const auto& contact : contacts) {
if (contact.name == name) {
std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
return;
}
}
std::cout << "未找到该联系人!" << std::endl;
}
void displayAllContacts() {
if (contacts.empty()) {
std::cout << "通讯录为空!" << std::endl;
return;
}
for (const auto& contact : contacts) {
std::cout << "姓名: " << contact.name << ", 电话号码: " << contact.phoneNumber << std::endl;
}
}
void saveContactsToFile(const std::string& filename) {
std::ofstream file(filename);
for (const auto& contact : contacts) {
file << contact.name << " " << contact.phoneNumber << std::endl;
}
std::cout << "通讯录已保存到文件!" << std::endl;
}
void loadContactsFromFile(const std::string& filename) {
std::ifstream file(filename);
if (!file) {
std::cout << "文件打开失败!" << std::endl;
return;
}
contacts.clear();
std::string name, phoneNumber;
while (file >> name >> phoneNumber) {
contacts.push_back({name, phoneNumber});
}
std::cout << "通讯录已从文件加载!" << std::endl;
}
int main() {
int choice;
std::string name, phoneNumber, filename;
while (true) {
std::cout << "\n简易通讯录\n";
std::cout << "1. 添加联系人\n";
std::cout << "2. 删除联系人\n";
std::cout << "3. 查找联系人\n";
std::cout << "4. 显示所有联系人\n";
std::cout << "5. 保存通讯录\n";
std::cout << "6. 加载通讯录\n";
std::cout << "0. 退出\n";
std::cout << "请选择操作: ";
std::cin >> choice;
switch (choice) {
case 1:
std::cout << "请输入姓名: ";
std::cin >> name;
std::cout << "请输入电话号码: ";
std::cin >> phoneNumber;
addContact(name, phoneNumber);
break;
case 2:
std::cout << "请输入要删除的姓名: ";
std::cin >> name;
deleteContact(name);
break;
case 3:
std::cout << "请输入要查找的姓名: ";
std::cin >> name;
findContact(name);
break;
case 4:
displayAllContacts();
break;
case 5:
std::cout << "请输入保存文件名: ";
std::cin >> filename;
saveContactsToFile(filename);
break;
case 6:
std::cout << "请输入加载文件名: ";
std::cin >> filename;
loadContactsFromFile(filename);
break;
case 0:
return 0;
default:
std::cout << "无效的选择,请重新输入!" << std::endl;
}
}
return 0;
}
通过本文的介绍,我们使用C++实现了一个简易的通讯录功能。这个通讯录具备添加、删除、查找、显示联系人以及保存和加载通讯录的功能。虽然这个通讯录功能相对简单,但它涵盖了C++编程中的一些基本概念,如数据结构、文件操作、循环和条件判断等。希望本文能帮助读者更好地理解C++编程,并为开发更复杂的应用打下基础。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。