c++實例之通訊錄管理系統之查找聯系人功能(五)


#include<iostream>
using namespace std;
constexpr auto MAX = 1000;

//聯系人結構體
struct Person
{
    string m_name;
    int m_sex;
    int m_age;
    string m_phone;
    string m_address;

};
//通訊錄結構體
struct AddressBooks
{
    //聯系人數組
    struct Person personArray[MAX];
    //記錄聯系人個數
    int m_size;
};

//添加人員
void addPerson(AddressBooks* abs) {
    //判斷通訊錄是否已滿,已滿就不再添加
    if (abs->m_size == MAX) {
        cout << "通訊錄已滿" << endl;
    }
    else{
        string name;
        int sex;
        int age;
        string phone;
        string address;
        cout << "請輸入姓名:";
        cin >> name;
        while (true) {
            cout << "請輸入性別(0代表男,1代表女):";
            cin >> sex;
            if (sex == 0 || sex == 1) {
                break;
            }else{
                cout << "您輸入有誤,請重新輸入!" << endl;
            }
        }
        cout << "請輸入年齡:";
        cin >> age;
        cout << "請輸入電話:";
        cin >> phone;
        cout << "請輸入地址:";
        cin >> address;
        abs->personArray[abs->m_size].m_name = name;
        abs->personArray[abs->m_size].m_sex = sex;
        abs->personArray[abs->m_size].m_age = age;
        abs->personArray[abs->m_size].m_phone = phone;
        abs->personArray[abs->m_size].m_address = address;
        abs->m_size++;
        cout << "添加成功!" << endl;
        //請按任意鍵繼續
        system("pause");
        //清屏
        system("cls");
    }
}
//顯示聯系人
void showPerson(AddressBooks* abs) {
    if (abs->m_size == 0) {
        cout << "當前記錄為空" << endl;
    }else {
        for (int i = 0; i < abs->m_size; i++) {
            cout << "姓名:" << abs->personArray[i].m_name << "\t"
                << "性別:" << (abs->personArray[i].m_sex == 0 ? "" : "") << "\t"
                << "年齡:" << abs->personArray[i].m_age << "\t"
                << "電話:" << abs->personArray[i].m_phone << "\t"
                << "地址:" << abs->personArray[i].m_address << endl;
        }
    }
    system("pause");
    system("cls");
}
//判斷聯系人是否存在,若存在,則返回所在下標,否則返回-1
int isExist(AddressBooks* abs,string name) {
    for (int i = 0; i < abs->m_size; i++)
    {
        if (abs->personArray[i].m_name == name) {
            return i;
        }
    }
    return -1;
}

//真正的刪除操作
void del(AddressBooks* abs, int id) {
    for (int i = id; i < abs->m_size; i++) 
    {
        abs->personArray[i] = abs->personArray[i + 1];
    }
    abs->m_size--;
}

//查找並刪除
void deletePerson(AddressBooks* abs) {
    string name;
    cout << "請輸入要刪除的名字:";
    cin >> name;
    int tmp;
    tmp = isExist(abs, name);
    if (tmp != -1){
        del(abs, tmp);
        cout << "刪除成功"<<endl;
    }else{
        cout << "查無此人"<<endl;
    }
    system("pause");
    system("cls");
}

//顯示單個人信息
void showPerson(AddressBooks* abs,int i) {
    cout << "姓名:" << abs->personArray[i].m_name << "\t"
        << "性別:" << (abs->personArray[i].m_sex == 0 ? "" : "") << "\t"
        << "年齡:" << abs->personArray[i].m_age << "\t"
        << "電話:" << abs->personArray[i].m_phone << "\t"
        << "地址:" << abs->personArray[i].m_address << endl;
}

//查找並返回相應信息
void findPerson(AddressBooks* abs) {
    string name;
    cout << "請輸入要查找的名字:";
    cin >> name;
    int tmp;
    tmp = isExist(abs, name);
    if (tmp != -1) {
        cout << "找到該人" << endl;
        showPerson(abs, tmp);
    }
    else {
        cout << "查無此人" << endl;
    }
    system("pause");
    system("cls");
}

//菜單界面
void showMenu() {
    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;
}

int main() {
    //創建通訊錄結構體變量
    AddressBooks abs;
    abs.m_size = 0;
    int select = 0;
    while(true){
        showMenu();
        cout << "請輸入相應的選項:" << endl;
        cin >> select;
        switch (select){
        case 1://添加
            addPerson(&abs);
            break;
        case 2://顯示
            showPerson(&abs);
            break;
        case 3://刪除
            deletePerson(&abs);
            break;
        case 4://修改
            break;
        case 5://查找
            findPerson(&abs);
            break;
        case 6://清空
            break;
        case 0://退出
            cout << "歡迎下次使用" << endl;
            system("pause");
            return 0;
            break;
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM