ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【贪玩巴斯】入门c++,你最后需要亲自敲下的通讯录管理系统(黑马程序员基础压轴题)!(八){ 通讯录管理系统源代码!}

2021-04-01 22:01:22  阅读:144  来源: 互联网

标签:cout 管理系统 pArray age ret sex 通讯录 源代码 name


/

//  main.cpp

//  _08daycontactlist

//

//  Created by AchesonDan 贪玩巴斯 on 2021/3/31.

//

按照B站《黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难》学习总结

 

/*

注意点一:

switch是语句

return语句是退出 函数 回到 调用函数的地方。

如果switch 和return 在 main 函数里,则程序结束。

 

注意点二:

结论:if语句里的return,使程序跳出if所在的函数,返回到母函数中继续执行。

 

注意点三:

system("cls");  //清屏操作

 

注意点四:

在mac的xcode环境下 system("pause") 和 system("cls") 都是 command not found

 

注意点五:

switch语句中如果代码很长case里面,就需要添加一个大括号括上 break以上的代码!

 

*/

 

 

一、构建一个通信录目录 通讯录

我在老师讲的基础上有自己的增添删改。

比如在修改的时候,添加了原来的数据显示。

在要清空的时候,添加了询问功能,并且加入了一个小彩蛋。

 




#include <iostream>

using namespace std;

#include <string>

#define MAX 1000


/*
created by AchesonDan  贪玩巴斯 @ CSDN
*/






struct Person

{

    //姓名

    string m_name;

    //性别 1 男 2 女

    int m_sex;

    //年龄

    int m_age;

    //电话

    string m_phone;

    //住址

    string m_addr;

};



struct Contactlist

{

    //通讯录中保存的联系人数组

    struct Person pArray[MAX];

     

    //通讯录中当前记录联系人个数

    int m_size;

};



int searchPerson (Contactlist * t, string name);











void Menu()

{

    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;

}







//1、添加联系人的函数

void addPerson(Contactlist * t)

{

    // 先要判断通讯录是否已经满了,如果满了就不再添加

    if ( t->m_size == MAX )

    {

        cout << "本通讯录已满(达到了最大值1000人),无法继续添加!" << endl;

        return;

    }

    else

    {

        //添加具体联系人

        

        

        //姓名

        string name;

        cout << "请输入新建联系人的姓名:" << endl;

        cin >> name;

        t -> pArray[t->m_size].m_name = name;



        

        //性别

        cout << "请输入新建联系人的性别:" << endl;

        cout << "1 --- 男" << endl;

        cout << "2 --- 女" << endl;

        int sex = 0;

        

        while (true)

        {

            //如果输入1或2,正确值,那么可以退出循环。

            //如果输入有错误,重新输入

            cin >> sex;

            if ( sex == 1 || sex == 2)

            {

                t -> pArray[t->m_size].m_sex = sex;

                break;

            }

            cout << "您的输入有误,请您重新输入!" << endl;

        }

        

        

        //年龄

        cout << "请输入新建联系人的年龄:" << endl;

        int age = 0;

        

        while (true)

        {

            cin >> age;

            if( age >= 0 && age <= 150)

            {

                t -> pArray[t -> m_size].m_age = age;

                break;

            }

            cout << "您输入的年龄超过了150或者小于了0岁,请您重新输入!" << endl;

        }

        

        

        //电话

        cout << "请输入新建联系人的电话号码:" << endl;

        string phone;

        cin >> phone;

        t -> pArray[t -> m_size].m_phone = phone;

        

        

        //住址

        cout << "请输入家庭住址:" << endl;

        string address;

        cin >> address;

        t -> pArray[t->m_size].m_addr = address;

        

        cout << "添加新建联系人 " << name <<" 成功!" << endl;

        

        //更新通讯录的人数

        

        t -> m_size ++;

        

        system("pause");

        system("cls");  //清屏操作



    }



}





//2、显示联系人的函数

void showPerson(Contactlist * t)

{

    //判断通讯录中人数是否为0.如果为0.提示记录为空

    //如果不为0.显示记录的联系人的信息

    if ( t -> m_size == 0)

    {

        cout << "当前通讯录并没有存入联系人!" << endl;

    }

    else

    {

        for(int i = 0; i < t -> m_size ; i ++)

        {

            cout << "姓名:" << t -> pArray[i].m_name << "\t\t";

            cout << "性别:" << ( t -> pArray[i].m_sex == 1 ? " 男 " : " 女 " ) << "\t\t";

            cout << "年龄:" << t -> pArray[i].m_age << "\t\t";

            cout << "电话:" << t -> pArray[i].m_phone << "\t\t";

            cout << "住址:" << t -> pArray[i].m_addr << endl;

        }

    }

    

    system("pause");

    system("cls");  //清屏

}











//3、删除联系人

void deletePerson(Contactlist * t)

{

    cout << "请输入您要删除的联系人的姓名:" << endl;

    

    string name;

    cin >> name;

    

    //ret == -1 未查到

    //ret != -1 查到了

    int ret = searchPerson(t, name);

    

    if(ret != -1)

    {

        //查找到人,要进行删除操作

        for(int i = ret; i < t->m_size; i++)

        {

            //数据迁移覆盖操作! 赋值

            t -> pArray[i] = t -> pArray[i+1];

        }

        cout << "删除" << t -> pArray[ret].m_name << "成功!" << endl;

        

        //更新一下通讯录中的人员数,减少一个

        t -> m_size --;

    }

    else

    {

        cout << "查无此人!" << endl;

    }

    

}















//3.1检测联系人是否存在的函数,如果存在返回联系人所在数组中的具体位置,不存在的话返回-1

//参数1 通讯录  参数2 对比姓名

int searchPerson (Contactlist * t, string name)

{

    for(int i = 0; i < t -> m_size; i++)

    {

        if( t -> pArray[i].m_name == name)

        {

            return i;  //找到了返回这个人的下标编号!

    

        }

    }

    return -1;  //如果都没找到返回 -1

}









//4、查找指定联系人

void findPerson(Contactlist * t)

{

    cout << "请输入您要查找的联系人" << endl;

    string name;

    cin >> name;

    

    //判断指定的联系人是否存在通讯录中

    int ret = searchPerson(t, name);

    

    if(ret != -1)  //查到了联系人

    {

        cout << "姓名:" << t -> pArray[ret].m_name << "\t\t";

        cout << "性别:" << (t -> pArray[ret].m_sex == 1 ? "男" : "女") << "\t\t";

        cout << "年龄:" << t -> pArray[ret].m_age << "\t\t";

        cout << "电话:" << t -> pArray[ret].m_phone << "\t\t";

        cout << "住址:" << t -> pArray[ret].m_addr << endl;

    }

    else

    {

        cout << "并未在您的通讯录中查找到此人!" << endl;

    }

    

    system("pause");

    system("cls");  //清屏

}











//5、修改指定联系人信息

void modifyPerson(Contactlist * t)

{

    cout << "请输入您要修改的联系人" << endl;

    string name;

    cin >> name;

    

    int ret = searchPerson(t, name);

    

    if(ret != -1)  //查到了联系人

    {

        cout << "你要修改的联系人的姓名为:" << t -> pArray[ret].m_name << " "<< endl;

        

        //开始执行修改

        //姓名

        string name;

        cout << "请输入要修改联系人的新的姓名:" << endl;

        cin >> name;

        t -> pArray[ret].m_name = name;



        

        //性别

        cout << "你要修改的联系人的性别为:" << (t -> pArray[ret].m_sex == 1 ? "男" : "女") << " "<< endl;

        cout << "请输入要修改联系人的性别:" << endl;

        cout << "1 --- 男" << endl;

        cout << "2 --- 女" << endl;

        int sex = 0;

        

        while (true)

        {

            //如果输入1或2,正确值,那么可以退出循环。

            //如果输入有错误,重新输入

            cin >> sex;

            if ( sex == 1 || sex == 2)

            {

                t -> pArray[ret].m_sex = sex;

                break;

            }

            cout << "您的输入有误,请您重新输入!" << endl;

        }

        

        

        //年龄

        cout << "你要修改的联系人的原年龄为:" << t -> pArray[ret].m_age << " "<< endl;

        cout << "请输入修改联系人的新的年龄:" << endl;

        int age = 0;

        

        while (true)

        {

            cin >> age;

            if( age >= 0 && age <= 150)

            {

                t -> pArray[ret].m_age = age;

                break;

            }

            cout << "您输入的年龄超过了150或者小于了0岁,请您重新输入!" << endl;

        }

        

        

        //电话

        cout << "你要修改的联系人的电话号码为:" << t -> pArray[ret].m_phone << " "<< endl;

        cout << "请输入修改联系人的新的电话号码:" << endl;

        string phone;

        cin >> phone;

        t -> pArray[ret].m_phone = phone;

        

        

        //住址

        cout << "你要修改的联系人的原家庭住址为:" << t -> pArray[ret].m_addr << " "<< endl;

        cout << "请输入修改的新的家庭住址:" << endl;

        string address;

        cin >> address;

        t -> pArray[ret].m_addr = address;

        

        cout << "恭喜您修改新建联系人成功!" << endl;

    }

    else

    {

        cout << "并未在您的通讯录中查找到此人!" << endl;

    }

    

    system("pause");

    system("cls"); //清屏

}









//6、清空联系人

void cleanPerson( Contactlist * t)

{

    t -> m_size = 0;   //将当前的记录联系人数置为0,做逻辑上的清空操作!

    cout << "通讯录已经清空啦!" << endl;

}





int main()

{

    //创建一个通讯录结构体变量

    Contactlist tongxunlu;

    //初始化通讯录中当前人员个数

    tongxunlu.m_size = 0;

    

    

    

   

    while(true)

    {

        // 菜单调用

        Menu();

        int in = 0;

        cin >> in ;

        

    

    switch (in) {

        case 1:     //1、添加联系人

            addPerson(&tongxunlu); //利用地址传值,可以修饰形参

            break;

        

        case 2:     //2、显示联系人

            showPerson(&tongxunlu);

            break;

            

        case 3:     //3、删除联系人

        /* 以下是测试3.1代码

        {

            cout << "请输入删除联系人的姓名: " << endl;

            string name;

            cin >> name;

            

            if (searchPerson(&t, name) == -1)

            {

                cout << "查无此人" << endl;

            }

            else

            {

                cout << "找到此人" << endl;

            }

        }

         */

            deletePerson(&tongxunlu);

           

            break;

            

        case 4:     //4、查找联系人

            findPerson(&tongxunlu);

            break;

            

        case 5:     //5、修改联系人

            modifyPerson(&tongxunlu);

            break;

            

        case 6:     //6、清空联系人

        {

            cout << "您确定要清空所有的联系人吗?" << endl;

            cout << "warning:该操作不可挽回!" << endl;

            cout << "1 --- 确认清空" << endl;

            cout << "2 --- 回到主界面" << endl;

            int i = 0;

            cin >> i;

            

            if (i == 1)

            {

            cleanPerson(&tongxunlu);

                

                system("pause");

                system("cls");

            }

            else

            {

                cout << "满目山河空念远,不如怜取眼前人" << endl;

            }

        }

            break;

            

        case 0:     //0、退出通讯录

            cout << "欢迎您下次继续使用贪玩巴斯通讯录!" << endl;

            system("pause");

            return 0;  //直接退出main函数

            

        default:    //

            break;

    }

    }

    

    

    system("pause");

    return 0;

}

 

标签:cout,管理系统,pArray,age,ret,sex,通讯录,源代码,name
来源: https://blog.csdn.net/D16100/article/details/115384862

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有