通讯录管理系统

基于Linux系统,IDE选择vscode,编程语言为C++来实现一个简易的通讯录管理系统。
该系统主要包括六项功能:
1 添加联系人
2 显示联系人
3 删除联系人
4 查找联系人
5 修改联系人
6 清空联系人

在windows系统下,为了程序运行的美观性,往往会用system(“pause”)以及system(“cls”)两条系统指令。后者在Linux下可以使用system(“clear”)来代替。前者在Linux下我没有找到合适的替代指令,因此自己写了一个简单的程序来替代它。程序如下:

void keyControl()
{
    int keyNum;
    while(1)
    {
        cout << "请按任意键继续~~~" << endl;
        cin >> keyNum;
        if(keyNum >=0 && keyNum <<9)
        {
            break;
        }
    }
}

通讯录管理系统的全部程序如下:

#include <iostream>
#include <string>

#define MAX 1000

using namespace std;

struct Person
{
    string name;
    string sex;
    int age;
    string tele;
    string addr;
};

struct Addressbooks
{
    struct Person personArray[MAX];
    int m_size;
};


void showMenu();                             // 显示菜单
void exitSystem();                           // 退出系统
void addPerson(Addressbooks *abs);           // 1 添加联系人
void showPerson(Addressbooks *abs);          // 2 显示联系人
void deletePerson(Addressbooks *abs);        // 3 删除联系人
void searchPerson(Addressbooks *abs);        // 4 查找联系人
void modifyPerson(Addressbooks *abs);        // 5 修改联系人
void clearPerson(Addressbooks *abs);         // 6 清空联系人
int ishave(Addressbooks *abs, string name);  // 检测联系人是否存在
void keyControl();                           // 模拟“按下任意键继续”

int main(int argc, char **argv)

{
    int select = 0;
    Addressbooks abs;
    abs.m_size = 0;
    while(true)
    {
        showMenu();
        cout << "通讯录当前人数:" << abs.m_size << endl;

        cout << "please input select:";
        cin >> select;
        switch (select)
        {
        case 0:
            cout << "bye bye ~~" << endl;
            exitSystem();
            break;
        case 1: // 1 添加联系人
            addPerson(&abs);
            system("clear"); // 清屏
            break;
        case 2: // 2 显示联系人
            showPerson(&abs);
            break;
        case 3: // 3 删除联系人
            deletePerson(&abs);
            break;
        case 4: // 4 查找联系人
            searchPerson(&abs);
            break;
        case 5: // 5 修改联系人
            modifyPerson(&abs);
            break;
        case 6:
            clearPerson(&abs);
            break;
        default:
            cout << "input error!" << endl;
            break;
        }
    }
    
    return 0;
}

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;
}

void exitSystem()
{
    exit(0);
}

void addPerson(Addressbooks *abs)
{
    if(abs -> m_size < MAX)
    {
        cout << "name:";
        cin >> abs->personArray[abs->m_size].name;

        cout << "sex :";
        cin >> abs->personArray[abs->m_size].sex;

        cout << "age :";
        cin >> abs->personArray[abs->m_size].age;

        cout << "tele:";
        cin >> abs->personArray[abs->m_size].tele;

        cout << "addr:";
        cin >> abs->personArray[abs->m_size].addr;

        abs->m_size ++;
    }
    if(abs->m_size >= MAX)
    {
        cout << "addressbook full, add failure!" 
             << endl;
    }
}

void showPerson(Addressbooks *abs)
{
    for(int i=0; i<abs->m_size; i++)
    {
        cout << "name:" << abs->personArray[i].name << "\t";
        cout << "sex :" << abs->personArray[i].sex << "\t";
        cout << "age :" << abs->personArray[i].age << "\t";
        cout << "tele:" << abs->personArray[i].tele << "\t";
        cout << "home:" << abs->personArray[i].addr << endl;
    }
    keyControl();
    system("clear");
}

int ishave(Addressbooks *abs, string name)
{
    int flag;
    for(int i=0; i<abs->m_size; i++)
    {
        if(name == abs->personArray[i].name)
        {
            return i;
        }
    }
    return -1;
}

void deletePerson(Addressbooks *abs)
{
    string name;
    cout << "输入要删除的联系人:";
    cin >> name;
    int index = ishave(abs, name);
    if(index != -1)
    {
        for(int i = index; i<abs->m_size; i++)
        {
            abs->personArray[i] = abs->personArray[i+1];
        }
        abs->m_size --;
        for(int i=0; i<abs->m_size; i++)
        {
            cout << "name:" << abs->personArray[i].name << "\t";
            cout << "sex :" << abs->personArray[i].sex << "\t";
            cout << "age :" << abs->personArray[i].age << "\t";
            cout << "tele:" << abs->personArray[i].tele << "\t";
            cout << "home:" << abs->personArray[i].addr << endl;
        }
    }
    else
    {
        cout << "要删除的人不存在" << endl;
    }

    keyControl();
    system("clear");
}

void searchPerson(Addressbooks *abs)
{
    string name;
    cout << "输入要查找的联系人:";
    cin >> name;
    int index = ishave(abs, name);
    if(index != -1)
    {
        cout << "name:" << abs->personArray[index].name << "\t";
        cout << "sex :" << abs->personArray[index].sex << "\t";
        cout << "age :" << abs->personArray[index].age << "\t";
        cout << "tele:" << abs->personArray[index].tele << "\t";
        cout << "home:" << abs->personArray[index].addr << endl;
    }
    else
    {
        cout << "要查找的人不存在" << endl;
    }
    keyControl();
    system("clear");
}

void modifyPerson(Addressbooks *abs)
{
    string name;
    cout << "输入要修改的联系人:";
    cin >> name;
    int index = ishave(abs, name);
    if(index != -1)
    {
        cout << "修改姓名:"; cin >> abs->personArray[index].name;
        cout << "修改性别:"; cin >> abs->personArray[index].sex;
        cout << "修改年龄:"; cin >> abs->personArray[index].age;
        cout << "修改电话:"; cin >> abs->personArray[index].tele;
        cout << "修改住址:"; cin >> abs->personArray[index].addr;

        for(int i=0; i<abs->m_size; i++)
        {
            cout << "name:" << abs->personArray[i].name << "\t";
            cout << "sex :" << abs->personArray[i].sex << "\t";
            cout << "age :" << abs->personArray[i].age << "\t";
            cout << "tele:" << abs->personArray[i].tele << "\t";
            cout << "home:" << abs->personArray[i].addr << endl;
        }
    }
    else
    {
        cout << "要修改的人不存在" << endl;
    }

    keyControl();
    system("clear");
}

void clearPerson(Addressbooks *abs)
{
    abs->m_size = 0;
    keyControl();
    system("clear");
}

void keyControl()
{
    int keyNum;
    while(1)
    {
        cout << "请按任意键继续~~~" << endl;
        cin >> keyNum;
        if(keyNum >=0 && keyNum <<9)
        {
            break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值