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

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

作者:互联网

/

//  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