您好,登录后才能下订单哦!
通讯录管理系统是一个常见的编程练习项目,适合初学者学习和掌握C++的基本语法、数据结构、文件操作等知识。本文将介绍如何使用C++实现一个简单的通讯录管理系统。
通讯录管理系统的主要功能包括:
为了实现上述功能,我们需要设计一个合适的数据结构来存储联系人信息。每个联系人可以表示为一个结构体,包含姓名、电话号码、电子邮件等字段。
struct Contact {
    std::string name;
    std::string phoneNumber;
    std::string email;
};
为了管理多个联系人,我们可以使用std::vector来存储所有联系人信息。
std::vector<Contact> contacts;
添加联系人的功能可以通过向contacts向量中插入一个新的Contact对象来实现。
void addContact() {
    Contact newContact;
    std::cout << "Enter name: ";
    std::cin >> newContact.name;
    std::cout << "Enter phone number: ";
    std::cin >> newContact.phoneNumber;
    std::cout << "Enter email: ";
    std::cin >> newContact.email;
    contacts.push_back(newContact);
    std::cout << "Contact added successfully!\n";
}
删除联系人可以通过查找指定姓名或电话号码的联系人,并将其从contacts向量中移除。
void deleteContact() {
    std::string searchTerm;
    std::cout << "Enter name or phone number to delete: ";
    std::cin >> searchTerm;
    auto it = std::remove_if(contacts.begin(), contacts.end(), [&](const Contact& contact) {
        return contact.name == searchTerm || contact.phoneNumber == searchTerm;
    });
    if (it != contacts.end()) {
        contacts.erase(it, contacts.end());
        std::cout << "Contact deleted successfully!\n";
    } else {
        std::cout << "Contact not found.\n";
    }
}
修改联系人可以通过查找指定姓名或电话号码的联系人,并允许用户修改其信息。
void modifyContact() {
    std::string searchTerm;
    std::cout << "Enter name or phone number to modify: ";
    std::cin >> searchTerm;
    for (auto& contact : contacts) {
        if (contact.name == searchTerm || contact.phoneNumber == searchTerm) {
            std::cout << "Enter new name: ";
            std::cin >> contact.name;
            std::cout << "Enter new phone number: ";
            std::cin >> contact.phoneNumber;
            std::cout << "Enter new email: ";
            std::cin >> contact.email;
            std::cout << "Contact modified successfully!\n";
            return;
        }
    }
    std::cout << "Contact not found.\n";
}
查找联系人可以通过遍历contacts向量,找到与用户输入匹配的联系人。
void searchContact() {
    std::string searchTerm;
    std::cout << "Enter name or phone number to search: ";
    std::cin >> searchTerm;
    for (const auto& contact : contacts) {
        if (contact.name == searchTerm || contact.phoneNumber == searchTerm) {
            std::cout << "Name: " << contact.name << "\n";
            std::cout << "Phone: " << contact.phoneNumber << "\n";
            std::cout << "Email: " << contact.email << "\n";
            return;
        }
    }
    std::cout << "Contact not found.\n";
}
显示所有联系人可以通过遍历contacts向量,并输出每个联系人的信息。
void displayAllContacts() {
    if (contacts.empty()) {
        std::cout << "No contacts found.\n";
        return;
    }
    for (const auto& contact : contacts) {
        std::cout << "Name: " << contact.name << "\n";
        std::cout << "Phone: " << contact.phoneNumber << "\n";
        std::cout << "Email: " << contact.email << "\n";
        std::cout << "-------------------\n";
    }
}
为了持久化存储联系人信息,我们可以将contacts向量中的数据保存到文件中,并在程序启动时从文件中加载数据。
void saveContactsToFile(const std::string& filename) {
    std::ofstream file(filename);
    if (file.is_open()) {
        for (const auto& contact : contacts) {
            file << contact.name << "," << contact.phoneNumber << "," << contact.email << "\n";
        }
        file.close();
        std::cout << "Contacts saved to file.\n";
    } else {
        std::cerr << "Unable to open file for saving.\n";
    }
}
void loadContactsFromFile(const std::string& filename) {
    std::ifstream file(filename);
    if (file.is_open()) {
        contacts.clear();
        std::string line;
        while (std::getline(file, line)) {
            Contact contact;
            size_t pos1 = line.find(',');
            size_t pos2 = line.find(',', pos1 + 1);
            contact.name = line.substr(0, pos1);
            contact.phoneNumber = line.substr(pos1 + 1, pos2 - pos1 - 1);
            contact.email = line.substr(pos2 + 1);
            contacts.push_back(contact);
        }
        file.close();
        std::cout << "Contacts loaded from file.\n";
    } else {
        std::cerr << "Unable to open file for loading.\n";
    }
}
为了方便用户操作,我们可以设计一个简单的文本菜单,允许用户选择不同的功能。
void displayMenu() {
    std::cout << "1. Add Contact\n";
    std::cout << "2. Delete Contact\n";
    std::cout << "3. Modify Contact\n";
    std::cout << "4. Search Contact\n";
    std::cout << "5. Display All Contacts\n";
    std::cout << "6. Save Contacts to File\n";
    std::cout << "7. Load Contacts from File\n";
    std::cout << "8. Exit\n";
}
int main() {
    int choice;
    std::string filename = "contacts.txt";
    while (true) {
        displayMenu();
        std::cout << "Enter your choice: ";
        std::cin >> choice;
        switch (choice) {
            case 1:
                addContact();
                break;
            case 2:
                deleteContact();
                break;
            case 3:
                modifyContact();
                break;
            case 4:
                searchContact();
                break;
            case 5:
                displayAllContacts();
                break;
            case 6:
                saveContactsToFile(filename);
                break;
            case 7:
                loadContactsFromFile(filename);
                break;
            case 8:
                return 0;
            default:
                std::cout << "Invalid choice. Please try again.\n";
        }
    }
    return 0;
}
通过以上步骤,我们实现了一个简单的通讯录管理系统。这个项目涵盖了C++的基本语法、数据结构、文件操作等知识点,适合初学者练习和巩固所学内容。当然,这个系统还可以进一步扩展,例如增加分组功能、支持更多字段、优化用户界面等。希望本文能对你理解和实现通讯录管理系统有所帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。