资讯专栏INFORMATION COLUMN

【黑马程序员】通讯录管理系统----个人改良版(附带程序打包)

tanglijun / 2456人阅读

摘要:添加联系人显示联系人删除联系人查找联系人修改联系人清空联系人退出通讯录您输入的联系人信息已达最大值请输入该联系人姓名请输入该联系人性别男女请输入正确的性别。

#include
using namespace std;

#define Max 1000

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

struct person
{
    string p_name;
    int p_gender = 0;
    int p_age = 0;
    string p_phone;
    string p_addr;
};

struct addressbook
{
    struct person personArray[Max];
    int p_size;
};

void addperson(struct addressbook* ab)
{
    if (ab->p_size == Max)
    {
        cout << "您输入的联系人信息已达最大值" << endl;
        return;
    }
    else
    {
        string name;
        cout << "请输入该联系人姓名" << endl;
        cin >> name;
        ab->personArray[ab->p_size].p_name = name;

        int gender = 0;
        cout << "请输入该联系人性别" << endl;
        cout << "1、男" << endl;
        cout << "2、女" << endl;
        cin >> gender;

        while (true)
        {
            if (gender == 1 || gender == 2)
            {
                ab->personArray[ab->p_size].p_gender = gender;
                break;
            }
            cout << "请输入正确的性别。" << endl;
            cin >> gender;
        }

        int age = 0;
        cout << "请输入该联系人年龄" << endl;
        cin >> age;
        ab->personArray[ab->p_size].p_age = age;

        string phone;
        cout << "请输入该联系人手机号码" << endl;
        cin >> phone;
        ab->personArray[ab->p_size].p_phone = phone;

        string addr;
        cout << "请输入该联系人地址" << endl;
        cin >> addr;
        ab->personArray[ab->p_size].p_addr = addr;

        ab->p_size++;

        cout << "添加成功!" << endl;

        system("pause");
        system("cls");
    }
}

void showperson(struct addressbook* ab)
{
    if (ab->p_size == 0)
    {
        cout << "当前记录为空" << endl;
    }
    else
    {
        for (int i = 0; i < ab->p_size; i++)
        {
            cout << "姓名:" << ab->personArray[i].p_name << "/t"
                 << "性别:" << (ab->personArray[i].p_gender == 1 ? "男" : "女") << "/t"
                 << "年龄:" << ab->personArray[i].p_age << "/t"
                 << "电话:" << ab->personArray[i].p_phone << "/t"
                 << "地址:" << ab->personArray[i].p_addr
                 << endl;
        }
    }
    system("pause");
    system("cls");
}

int exist(addressbook* ab, string name)
{
    for (int i = 0; i < ab->p_size; i++)
    {
        if (ab->personArray[i].p_name == name)
        {
            return i;
        }
    }
    return -1;
}

void deleteperson(addressbook* ab)
{
    cout << "请输入您要删除的联系人" << endl;

    string name;
    cin >> name;

    int ret = exist(ab, name);

    if (ret != -1)
    {
        for (int i = ret; i < ab->p_size; i++)
        {
            ab->personArray[i] = ab->personArray[i + 1];//数据前移
        }
        ab->p_size--;
        cout << "删除成功" << endl;
    }
    else
    {
        cout << "查无此人" << endl;
    }
    system("pause");
    system("cls");
}

void findperson(addressbook* ab)
{
    string name;
    cout << "请输入您要查找人的姓名" << endl;
    cin >> name;

    int ret = exist(ab, name);

    if (ret == -1)
    {
        cout << "查无此人" << endl;
    }
    else
    {
        cout << "姓名:" << ab->personArray[ret].p_name << "/t"
             << "性别:" << (ab->personArray[ret].p_gender == 1 ? "男" : "女") << "/t"
             << "年龄:" << ab->personArray[ret].p_age << "/t"
                << "电话:" << ab->personArray[ret].p_phone << "/t"
              << "地址:" << ab->personArray[ret].p_addr
             << endl;
    }

    system("pause");
    system("cls");
}

void modifyperson(addressbook* ab)
{
    cout << "请输入您要查找人的姓名" << endl;
    string name;
    cin >> name;

    int ret = exist(ab, name);

    if (ret == -1)
    {
        cout << "查无此人" << endl;
        system("pause");
        system("cls");
    }
    else
    {
        cout << "请输入您要修改的联系人姓名" << endl;
        string new_name;
        cin >> new_name;
        ab->personArray[ret].p_name = new_name;

        cout << "请输入您要修改的联系人性别" << endl;
        cout << "1、男" << endl;
        cout << "2、女" << endl;
        int new_gender;
        cin >> new_gender;
        while (true)
        {
            cin >> new_gender;
            if (new_gender == 1 || new_gender == 2)
            {
                ab->personArray[ret].p_gender = new_gender;
                break;
            }
            else 
            {
                cout << "输入有误,请重新输入" << endl;
            }
        }
    
        cout << "请输入您要修改的联系人年龄" << endl;
        int new_age;
        cin >> new_age;
        ab->personArray[ret].p_age = new_age;

        cout << "请输入您要修改的联系人手机号码" << endl;
        string new_phone;
        cin >> new_phone;
        ab->personArray[ret].p_phone = new_phone;

        cout << "请输入您要修改的联系人地址" << endl;
        string new_addr;
        cin >> new_addr;
        ab->personArray[ret].p_addr = new_addr;

        cout << "修改成功" << endl;

        system("pause");
        system("cls");
    }
}

void cleanpeople(addressbook* ab)
{
    cout << "您是否要进行清空操作?" << endl;
    cout << "如果是(清空操作),请按1;不是,输入任意其他数字返回" << endl;
    int flag = 0;
    cin >> flag;
    if (flag == 1)
    {
        cout << "如果是(清空操作),请按2;不是,输入任意其他数字返回" << endl;
        cin >> flag;
        if (flag == 2)
        {
            cout << "如果是(清空操作),请按3;不是,输入任意其他数字返回" << endl;
            cin >> flag;
            if (flag == 3)
            {
                ab->p_size = 0;
                cout << "清空完成" << endl;
            }
        }
    }
    system("pause");
    system("cls");
}


int main()
{
    addressbook ab;

    ab.p_size = 0;
    
    int select = 0;

    while (true)
    {
        showMenu();

        cin >> select;

        switch (select)
        {
        case 1://添加
            addperson(&ab);
            break;

        case 2://显示
            showperson(&ab);
            break;

        case 3://删除
        /*{
            cout << "请输入删除联系人的姓名" << endl;
            string name;
            cin >> name;

            if (exist(&ab, name) == -1)
            {
                cout << "查无此人" << endl;
            }
            else
            {
                cout << "找到此人" << endl;
            }
        }*/
            deleteperson(&ab);
            break;

        case 4://查找
            findperson(&ab);
            break;

        case 5://修改
            modifyperson(&ab);
            break;

        case 6://清空
            cleanpeople(&ab);
            break;

        case 0://退出
            cout << "欢迎下次使用" << endl;
            system("pause");
            return 0;
            break;
        default:
            cout << "请输入合适的数" << endl;
        }
    }
    system("pause");
    return 0;
}

程序打包方法:

1,扩展--管理扩展--找到并下载 installer projects

2,新建项目与原项目在一起

 如图所示

 3,添加项目输出

 

 

 创建快捷方式,并拖入user‘s desktop

在属性中重命名以及添加图标文件,图标文件可从其他地方拖进相应文件夹中

 

 

 

在User"s Programs Menu 添加文件夹,在右边空白处右击,按照先前方式创建新的快捷方式,选择Applicaiton Folder,主输出,确定。

 

 

 

4,最后设置一些安装包属性以及环境需求,选择生成

 

 5,安装与运行

 

 

 安装完毕,运行成功。

 

 

 

 

 

 

 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121398.html

相关文章

  • CGI、FastCGI、PHP-CGI、PHP-FPM个人理解

    摘要:与的理解与都是一种通讯协议,是与其他程序此程序通常叫做程序,如脚本解析器之间通讯的桥梁是的改良进化版,相比更安全性能更好所以现在都是使用协议进行通讯兼容与其实就是脚本解析器,他是协议的实现就是协议的实现和都是程序与的执行流程 CGI与FastCGI的理解 CGI与FastCGI都是一种通讯协议,是web Sever(Apache/nginx/iis)与其他程序(此程序通常叫做CGI程...

    Bryan 评论0 收藏0
  • 动态文件通讯及C语言中的文件的读写操作

    摘要:那么我们首先来改造储存空间也就是通讯录结构体静态版本人信息存放在数组中统计存放的人数动态版本统计存放的人数有效容量我们将原本的结构体数组改为一个结构体指针,以此来维护用以储存个人信息的空间。 上一期我们编写了一个C语言版本的简易通讯录,但是我们的之前的通讯录是没有记忆功能的,也就是说,一旦关...

    h9911 评论0 收藏0
  • 2018前端值得关注的技术

    摘要:年前端有哪些领域,技术值得关注,哪些技术会兴起,哪些技术会没落。自从谷歌提出后,就持续的获得了业界的关注,热度可见一斑。就在今年,谷歌也宣布将获得与安卓原生应用同等的待遇与权限。但是无论都值得关注。 1.前言 2017悄然过去,2018已经来到。人在进步,技术在发展。2018年前端有哪些领域,技术值得关注,哪些技术会兴起,哪些技术会没落。下面就我个人的判断进行一个预测判断,希望能对大家...

    xiao7cn 评论0 收藏0
  • 2018前端值得关注的技术

    摘要:年前端有哪些领域,技术值得关注,哪些技术会兴起,哪些技术会没落。自从谷歌提出后,就持续的获得了业界的关注,热度可见一斑。就在今年,谷歌也宣布将获得与安卓原生应用同等的待遇与权限。但是无论都值得关注。 1.前言 2017悄然过去,2018已经来到。人在进步,技术在发展。2018年前端有哪些领域,技术值得关注,哪些技术会兴起,哪些技术会没落。下面就我个人的判断进行一个预测判断,希望能对大家...

    用户84 评论0 收藏0
  • Python数据科学环境:Anaconda 了解一下

    摘要:我自己印象最深的是在上安装加密和科学计算模块,折腾了很久。这个精装是面向数据科学的,同时也保留了你自己进一步改装的空间。数据科学库包环境管理工具,这几样就是的主要功能。 几乎所有的 Python 学习者都遇到过 安装 方面的问题。这些安装问题包括 Python 自身环境的安装、第三方模块的安装、不同版本的切换,以及不同平台、版本间的兼容问题 等。当你因为这些问题而卡壳,一行代码没写就已...

    shaonbean 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<