《第一章~~~第五章-综合运用———“同门切磋,第一回合”》 C++职业生涯笔记---手机通讯录管理系统综合实战

C++手机通讯录管理系统 | 小白也能轻松实现!附完整代码+运行效果✨

文末有总结表格+学习心得❤️ 建议点赞收藏!


系统功能一览

功能 描述
添加联系人 记录姓名、性别、年龄、职业等完整信息
显示所有联系人 列表展示所有联系人详细信息
删除联系人 按姓名删除指定联系人
查找联系人 按姓名查看指定联系人详情
修改联系人 按姓名修改联系人信息
清空通讯录 一键清空所有联系人数据
退出系统 安全退出通讯录程序

完整代码实现

#include 
#include 
#include 
using namespace std;

// 联系人结构体
struct Contact {
    string name;
    string gender;
    int age;
    string job;
    string phone;
    string address;
};

// 通讯录管理系统
class PhoneBook {
private:
    Contact contacts[500]; // 最多500个联系人
    int count = 0;         // 当前联系人数量

public:
    // 添加联系人
    void addContact() {
        if (count >= 500) {
            cout << "⚠️ 通讯录已满!最多500人" << endl;
            return;
        }

        cout << "\n 添加新联系人" << endl;
        cout << "---------------" << endl;
        cout << "姓名: ";
        cin >> contacts[count].name;
        cout << "性别(男/女): ";
        cin >> contacts[count].gender;
        cout << "年龄: ";
        cin >> contacts[count].age;
        cout << "职业: ";
        cin >> contacts[count].job;
        cout << "手机号: ";
        cin >> contacts[count].phone;
        cout << "家庭住址: ";
        cin.ignore(); // 清除缓冲区
        getline(cin, contacts[count].address);

        count++;
        cout << "✅ 添加成功!" << endl;
    }

    // 显示所有联系人
    void showAll() const {
        if (count == 0) {
            cout << " 通讯录为空!" << endl;
            return;
        }

        cout << "\n 通讯录列表 (" << count << "人)" << endl;
        cout << "======================================================" << endl;
        cout << left << setw(10) << "姓名" 
             << setw(5) << "性别" 
             << setw(5) << "年龄"
             << setw(10) << "职业"
             << setw(15) << "手机号"
             << "家庭住址" << endl;
        cout << "------------------------------------------------------" << endl;

        for (int i = 0; i < count; i++) {
            cout << left << setw(10) << contacts[i].name
                 << setw(5) << contacts[i].gender
                 << setw(5) << contacts[i].age
                 << setw(10) << contacts[i].job
                 << setw(15) << contacts[i].phone
                 << contacts[i].address << endl;
        }
        cout << "======================================================" << endl;
    }

    // 查找联系人(返回指针)
    Contact* findContact(const string& name) {
        for (int i = 0; i < count; i++) {
            if (contacts[i].name == name) {
                return &contacts[i]; // 返回指针
            }
        }
        return nullptr; // 未找到
    }

    // 删除联系人
    void deleteContact() {
        string name;
        cout << "\n️ 输入要删除的联系人姓名: ";
        cin >> name;

        for (int i = 0; i < count; i++) {
            if (contacts[i].name == name) {
                // 用指针操作数组元素移动
                for (int j = i; j < count - 1; j++) {
                    contacts[j] = contacts[j + 1];
                }
                count--;
                cout << "✅ 删除成功!" << endl;
                return;
            }
        }
        cout << "⚠️ 未找到联系人: " << name << endl;
    }

    // 查找联系人详情
    void searchContact() const {
        string name;
        cout << "\n 输入要查找的联系人姓名: ";
        cin >> name;

        for (int i = 0; i < count; i++) {
            if (contacts[i].name == name) {
                cout << "\n 联系人详情" << endl;
                cout << "---------------" << endl;
                cout << "姓名: " << contacts[i].name << endl;
                cout << "性别: " << contacts[i].gender << endl;
                cout << "年龄: " << contacts[i].age << endl;
                cout << "职业: " << contacts[i].job << endl;
                cout << "手机号: " << contacts[i].phone << endl;
                cout << "家庭住址: " << contacts[i].address << endl;
                return;
            }
        }
        cout << "⚠️ 未找到联系人: " << name << endl;
    }

    // 修改联系人
    void modifyContact() {
        string name;
        cout << "\n✏️ 输入要修改的联系人姓名: ";
        cin >> name;

        Contact* contact = findContact(name);
        if (contact != nullptr) {
            cout << "\n请修改信息 (直接回车保留原值)" << endl;
            cout << "--------------------------------" << endl;

            string input;
            cout << "姓名(" << contact->name << "): ";
            cin.ignore();
            getline(cin, input);
            if (!input.empty()) contact->name = input;

            cout << "性别(" << contact->gender << "): ";
            getline(cin, input);
            if (!input.empty()) contact->gender = input;

            cout << "年龄(" << contact->age << "): ";
            getline(cin, input);
            if (!input.empty()) contact->age = stoi(input);

            cout << "职业(" << contact->job << "): ";
            getline(cin, input);
            if (!input.empty()) contact->job = input;

            cout << "手机号(" << contact->phone << "): ";
            getline(cin, input);
            if (!input.empty()) contact->phone = input;

            cout << "家庭住址(" << contact->address << "): ";
            getline(cin, input);
            if (!input.empty()) contact->address = input;

            cout << "✅ 修改成功!" << endl;
        } else {
            cout << "⚠️ 未找到联系人: " << name << endl;
        }
    }

    // 清空通讯录
    void clearAll() {
        count = 0;
        cout << " 通讯录已清空!" << endl;
    }
};

// 显示菜单
void showMenu() {
    cout << "\n 手机通讯录管理系统" << endl;
    cout << "======================" << endl;
    cout << "1. 添加联系人" << endl;
    cout << "2. 显示所有联系人" << endl;
    cout << "3. 删除联系人" << endl;
    cout << "4. 查找联系人" << endl;
    cout << "5. 修改联系人" << endl;
    cout << "6. 清空通讯录" << endl;
    cout << "0. 退出系统" << endl;
    cout << "======================" << endl;
    cout << "请选择操作: ";
}

int main() {
    PhoneBook phoneBook;
    int choice = 0;

    do {
        showMenu();
        cin >> choice;

        switch(choice) {
            case 1: // 添加
                phoneBook.addContact();
                break;
            case 2: // 显示
                phoneBook.showAll();
                break;
            case 3: // 删除
                phoneBook.deleteContact();
                break;
            case 4: // 查找
                phoneBook.searchContact();
                break;
            case 5: // 修改
                phoneBook.modifyContact();
                break;
            case 6: // 清空
                phoneBook.clearAll();
                break;
            case 0: // 退出
                cout << " 感谢使用,再见!" << endl;
                break;
            default:
                cout << "⚠️ 无效选项,请重新输入!" << endl;
        }
    } while(choice != 0);

    return 0;
}

功能演示效果

1️⃣ 添加联系人

 添加新联系人
---------------
姓名: 张三
性别(男/女): 男
年龄: 28
职业: 工程师
手机号: 1666666666
家庭住址: 北京市海淀区
✅ 添加成功!

2️⃣ 显示所有联系人

 通讯录列表 (3人)
======================================================
姓名      性别 年龄 职业      手机号          家庭住址
------------------------------------------------------
张三      男   28   工程师     1666666666     北京市海淀区
李四      女   25   设计师     13900139000     上海市浦东新区
王五      男   30   教师       13700137000     广州市天河区
======================================================

3️⃣ 查找联系人

 输入要查找的联系人姓名: 李四

 联系人详情
---------------
姓名: 李四
性别: 女
年龄: 25
职业: 设计师
手机号: 13900139000
家庭住址: 上海市浦东新区

4️⃣ 修改联系人

✏️ 输入要修改的联系人姓名: 王五

请修改信息 (直接回车保留原值)
--------------------------------
姓名(王五): 王武
性别(男): 
年龄(30): 32
职业(教师): 教授
手机号(13700137000): 
家庭住址(广州市天河区): 广州市天河区中山大道
✅ 修改成功!

5️⃣ 删除联系人

️ 输入要删除的联系人姓名: 张三
✅ 删除成功!

6️⃣ 清空通讯录

 通讯录已清空!

0️⃣ 退出系统

 感谢使用,再见!

核心知识点应用

知识点 应用场景 代码示例
结构体定义 存储联系人信息 struct Contact { ... };
结构体数组 管理多个联系人 Contact contacts[500];
指针操作 查找和修改联系人 Contact* contact = findContact(name);
const修饰符 保护显示函数中的数据 void showAll() const;
函数封装 每个功能独立封装 addContact(), deleteContact()
数组操作 删除联系人时的数据移动 contacts[j] = contacts[j+1];
输入输出控制 格式化显示联系人列表 setw(), left 等操纵符

开发心得
1️⃣ 结构体是数据容器 - 把联系人信息打包成结构体,管理更轻松
2️⃣ 指针是精准定位器 - 通过指针快速找到要操作的联系人
3️⃣ const是数据保镖 - 确保显示数据时不被意外修改
4️⃣ 函数分治策略 - 每个功能独立封装,代码清晰易维护
5️⃣ 用户交互友好 - 添加emoji和格式美化提升使用体验

本程序综合运用了C++核心知识点,代码完整可运行!

你可能感兴趣的:(C++,c++,笔记,智能手机,visual,studio,code,linux,数据结构,开发语言)