VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 364|回复: 7

[分享] c++学习之路的点滴记录(利用基础语法)打造通讯录系统,大牛飘过

[复制链接]
13_avatar_middle
最佳答案
1 
在线会员 发表于 2021-4-7 00:04:19 | 显示全部楼层 |阅读模式
本帖最后由 小白学编程 于 2021-4-7 23:33 编辑


非常适合我这个小白练手c++学习之路的点滴记录(利用基础语法)打造通讯录系统,大牛飘过
通讯录是一个可以记录亲人、好友信息的工具。
系统中需要实现的功能如下:
* 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
* 显示联系人:显示通讯录中所有联系人信息
* 删除联系人:按照姓名进行删除指定联系人
* 查找联系人:按照姓名查看指定联系人信息
* 修改联系人:按照姓名重新修改指定联系人
* 清空联系人:清空通讯录中所有信息
* 退出通讯录:退出当前使用的通讯录

#include <iostream>
#include <string>
using namespace std;
#define  MAX  1000
1-----//设计联系人的结构体
struct Person
{
        //姓名
        string m_Name;
        //性别
        int m_Sex;
        //年龄
        int m_Age;
        //电话
        string m_Phone;
        //住址
        string m_Addr;
};
2----------//设计通讯录的结构体
struct Addressbooks
{
        //通讯录中保存的联系人数组
        struct Person personArray[MAX];
        //通讯录中当前联系人个数
        int m_Size;
};

3------//添加联系人
void addPerson(Addressbooks *abs)
{
        //判断通讯录是否已满,满了就不在添加
        if (abs->m_Size==MAX)
        {
                cout << "通讯录已满,无法添加" << endl;
                return;
        }
        else
        {
                //姓名
                string name;
                cout << "请输入姓名:" << endl;
                cin >> name;
                abs->personArray[abs->m_Size].m_Name = name;
                //性别
                cout << "请输入性别:" << endl;
                cout << "1-----男" << endl;
                cout << "2-----女:" << endl;
                int sex = 0;

                while (true)
                {
                        cin >> sex;
                        if (sex == 1 || sex == 2)
                        {
                                abs->personArray[abs->m_Size].m_Sex = sex;
                                break;
                        }
                        cout << "输入有误,请重新输入" << endl;
                }
               
                //年龄
                cout << "请输入年龄:" << endl;
                int age = 0;
                cin >> age;
                abs->personArray[abs->m_Size].m_Age = age;
                //电话
                cout << "请输入电话:" << endl;
                string phone;
                cin >> phone;
                abs->personArray[abs->m_Size].m_Phone = phone;
                //住址
                cout << "请输入住址:" << endl;
                string address;
                cin >> address;
                abs->personArray[abs->m_Size].m_Addr = address;
                //更新通讯录人数
                abs->m_Size++;
                cout << "添加成功" << endl;
                system("pause");
                        system("cls");//清空屏幕
        }
}

4-----//显示所有联系人
void showPerson(Addressbooks * abs)
{
        //判断通讯录中人数是否为0
        if (abs->m_Size==0)
        {
                cout << "当前记录为空" << endl;
        }
        else
        {
                for (int i=0;i<abs->m_Size;i++)
                {
                        //姓名
                        cout << "姓名" << abs->personArray.m_Name << "\t";
                        //年龄
                        cout << "年龄" << abs->personArray.m_Age << "\t";
                        //性别
                        cout << "性别" << (abs->personArray.m_Sex==1?"男":"女")<<"\t";
                        //电话
                        cout << "电话" << abs->personArray.m_Phone << "\t";
                        //住址
                        cout << "住址" << abs->personArray.m_Addr << endl;
                }
        }
        system("pause");
        system("cls");
}

5------//检测联系人是否存在,如果存在,返回联系人所在的数组中的具体位置,不存在返回-1
int isExist(Addressbooks * abs, string name)
{
        for (int i = 0; i < abs->m_Size; i++)
        {
                //找到用户输入的姓名了
                if (abs->personArray.m_Name==name)
                {
                        return i;
                }
        }
        return -1; //如果遍历结束都没有找到,返回-1
}

6-------//删除指定联系人
void deletePerson(Addressbooks * abs)
{
        cout << "请输入你要删除的联系人" << endl;
        string name;
        cin >> name;
        //ret==-1未查到
        //ret!=1查到了
        int ret = isExist(abs, name);
        if (ret != -1)
        {
                for (int i=ret;i<abs->m_Size;i++)
                {
                        abs->personArray = abs->personArray[i + 1];
                }
                abs->m_Size--; //更新通讯录的人员数
        }
        else
        {
                cout << "查无此人" << endl;
        }
}

7--------//查找指定联系人信息
void findPerson(Addressbooks * abs)
{
        cout << "请输入你要查找的联系人" << endl;
        string name;
        cin >> name;
        //判断指定的联系人是否在通讯录中
        int ret = isExist(abs, name);
        if (ret!=-1)
        {
                //姓名
                cout << "姓名" << abs->personArray[ret].m_Name << "\t";
                //性别
                cout << "性别" << abs->personArray[ret].m_Sex << "\t";
                //年龄
                cout << "年龄" << abs->personArray[ret].m_Age << "\t";
                //电话
                cout << "电话" << abs->personArray[ret].m_Phone << "\t";
                //住址
                cout << "住址" << abs->personArray[ret].m_Addr << "\t";
        }
        else
        {
                cout << "查无此人" << endl;
        }
        system("pause");
        system("cls");
}

8------------//修改指定联系人信息
void modifyPerson(Addressbooks * abs)
{
        cout << "请输入你要修改的联系人" << endl;
        string name;
        cin >> name;
        int ret = isExist(abs, name);
        if (ret != -1)
        {
                //姓名
                string  name;
                cout << "请输入姓名" << endl;
                cin >> name;
                abs->personArray[ret].m_Name = name;
                //性别
                cout << "请输入性别" << endl;
                cout << "1---男" << endl;
                cout << "2---女" << endl;
                int sex = 0;

                while (true)
                {
                        cin >> sex;
                        if (sex == 1 || sex == 2)
                        {
                                abs->personArray[ret].m_Sex = sex;
                                break;
                        }
                        cout << "输入有误,请重新输入" << endl;
                }
                //年龄
                cout << "请输入年龄" << endl;
                int age = 0;
                cin >> age;
                abs->personArray[ret].m_Age = age;
                //电话
                cout << "请输入电话" << endl;
                string phone;
                cin >> phone;
                abs->personArray[ret].m_Phone = phone;
                //住址
                cout << "请输入住址" << endl;
                string address;
                cin >> address;
                abs->personArray[ret].m_Addr = address;
                cout << "修改成功" << endl;
        }
        else
        {
                cout << "查无此人" << endl;
        }
        system("pause");
        system("cls");
}

9----------------//清空所有联系人
void cleanPerson(Addressbooks *abs)
{
        abs->m_Size = 0;
        cout << "通讯录已清空" << endl;
        system("pause");
        system("cls");
}

10------------void showMoun()
{
        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)
        {
                showMoun();  //调用菜单
                cin >> select;
                switch (select)
                {
                case 1:  //1.添加联系人
                        addPerson(&abs);
                        break;
                case 2:   //2.显示联系人
                        showPerson(&abs);
                        break;
                case 3:   //3.删除联系人
                        deletePerson(&abs);
                        break;
                case 4:   //4.查找联系人
                        findPerson(&abs);
                        break;
                case 5:   //5.修改联系人
                        modifyPerson(&abs);
                        break;
                case 6:   //6.清空通讯录
                        cleanPerson(&abs);
                        break;
                case 0:   //0.退出通讯录
                        cout << "欢迎下次使用" << endl;
                        system("pause");
                        system("cls");
                        return 0;
                default:
                        break;
                }
        }
        system("pause");
        return 0;
}

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 学习了

查看全部评分





上一篇:一起跟我学习c++之路的点点滴滴,从入门学到废
下一篇:VS2010怎么打开高版本工程或解决方案
70_avatar_middle
最佳答案
43 
在线会员 发表于 2021-4-7 08:49:30 | 显示全部楼层
很赞,不过能不能把代码放到代码块里呢,这么多代码看着怪别扭的,看一眼直接失去耐心了c++学习之路的点滴记录(利用基础语法)打造通讯录系统,大牛飘过
96_avatar_middle
最佳答案
0 
donate_vip 发表于 2021-4-7 08:57:22 | 显示全部楼层
运行报错,
13_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-4-7 23:35:12 | 显示全部楼层
tony666 发表于 2021-4-7 08:49
很赞,不过能不能把代码放到代码块里呢,这么多代码看着怪别扭的,看一眼直接失去耐心了

怎么编辑,不会啊   怎么放代码块??  我想图片和代码编辑搞不清楚怎么弄   上传一张图片看不到
70_avatar_middle
最佳答案
43 
在线会员 发表于 2021-4-8 08:56:18 | 显示全部楼层
本帖最后由 tony666 于 2021-4-8 08:57 编辑
小白学编程 发表于 2021-4-7 23:35
怎么编辑,不会啊   怎么放代码块??  我想图片和代码编辑搞不清楚怎么弄   上传一张图片看不到


编辑里的 <>就是  ,
c++学习之路的点滴记录(利用基础语法)打造通讯录系统,大牛飘过

图片上传之后 需要再点一下
c++学习之路的点滴记录(利用基础语法)打造通讯录系统,大牛飘过
13_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-4-8 16:11:08 | 显示全部楼层
tony666 发表于 2021-4-8 08:56
编辑里的 就是  ,

c++学习之路的点滴记录(利用基础语法)打造通讯录系统,大牛飘过非常感谢你指导 学会编辑了
37_avatar_middle
最佳答案
1 
在线会员 发表于 2021-4-8 16:39:34 | 显示全部楼层
学习了return 0;
70_avatar_middle
最佳答案
43 
在线会员 发表于 2021-4-9 08:39:55 | 显示全部楼层
小白学编程 发表于 2021-4-8 16:11
非常感谢你指导 学会编辑了

感谢分享这么多东西c++学习之路的点滴记录(利用基础语法)打造通讯录系统,大牛飘过
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-4-23 05:09

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表