c++实现通讯录管理系统(控制台版)

此项目适合c++初学者,针对c++基础知识,涉及到变量、结构体定义使用、数组定义使用、指针定义使用等。

运行之后的结果如下:

代码:

#include <iostream>
#include <string>
using namespace std;
#define MAX 1000//定义通讯录最大容量为1000
//联系人结构体
struct person
{
    string name;
    int sex;
    int age;
    string address;
};
//通讯录结构体
struct contact
{
    struct person p[MAX];
    int size;
};

//操作菜单
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;
}
//封装查询联系人是否存在
int isExist(contact* con, string name) {
    ; i < con->size; i++) {
        if (con->p[i].name == name) {
            return i;
        }
    }
    ;
}
//添加联系人函数
void addPerson(contact *con){//传入数组的指针
    if (con->size == MAX) {
        cout << "通讯录已满"<<endl;
    }
    else {

        cout << "输入姓名";
        string name;
        cin >> name;
        cout << "输入年龄";
        int age;
        cin >> age;
        cout << "输入性别1:女 2:男";
        int sex;
        cin >> sex;
        cout << "输入地址";
        string address;
        cin >> address;
        con->p[con->size].name = name;
        con->p[con->size].age = age;
        con->p[con->size].sex = sex;
        con->p[con->size].address = address;
        con->size++;
    }
    cout << "添加成功"<<endl;
    system("pause");
}
//删除联系人函数
void deletecon(contact* con) {
    string name;
    cout << "输入要删除的姓名";
    cin >> name;
    int res = isExist(con,name);
    ) {
        for (int i = res; i < con->size; i++) {
            con->p[res] = con->p[res + ];
        }
        cout << "删除成功" << endl;
        con->size--;
    }
    else {
        cout << "查无此人"<<endl;
    }
    system("pause");
}
//修改联系人函数
void updateContact(contact* con) {
    string name;
    cout << "输入要修改的联系人姓名查询" << endl;
    cin >> name;
    int res = isExist(con, name);
    ) {
        cout <<  ? "女" : "男") << "地址:" << con->p[res].address << endl;
        cout << "输入修改姓名";
        string nametemp;
        cin >> nametemp;
        con->p[res].name = nametemp;
        cout << "输入修改年龄" << endl;
        int age;
        cin >> age;
        con->p[res].age = age;
        cout << "输入修改性别1:女2:男" << endl;
        int sex;
        cin >> sex;
        con->p[res].sex = sex;
        cout << "输入修改地址" << endl;
        string address;
        cin >> address;
        con->p[res].address = address;
        cout << "修改成功" << endl;
    }
    else {
        cout << "查无此人" << endl;
    }
    system("pause");
}
//查询联系人函数
void search(contact *con) {
    string name;
    cout << "输入姓名查询"<<endl;
    cin >> name;
    int res = isExist(con, name);
    ) {
        cout << ?"女":"男")<<endl;
    }
    else {
        cout << "查无此人" << endl;
    }
    system("pause");

}
//清空联系人函数
void clearContact(contact* con) {
    con->size = ;
    cout << "已清空通讯录"<<endl;
    system("pause");
}
//显示联系人函数
void showContact(contact* con) {
    ) {
        cout << "暂无联系人"<<endl;
    }
    else {
        ; i < con->size; i++) {
            cout <<?"女":"男") << endl;
        }
    }
    system("pause");
}

//退出系统函数
int exitapp() {
    exit();
}

/**
通讯录管理系统主程序
*/
int main() {
    contact con;
    con.size = ;
    while (true)
    {
        system("cls");//清屏
        showMenu();
        cout << "输入你的选择";
        int select;
        cin >> select;
        switch (select) {
        :
            addPerson(&con);
            break;
        :
            deletecon(&con);
            break;
        :
            updateContact(&con);
            break;
        :
            search(&con);
            break;
        :
            showContact(&con);
            break;
        :
            clearContact(&con);
            break;
        ://退出
            exitapp();
            break;
        }
    }
}
 

获取源码关注公众号 java一号  回复 通讯录即可。

c++实现通讯录管理系统(控制台版)的更多相关文章

  1. Java小例子(学习整理)-----学生管理系统-控制台版

    1.功能介绍: 首先,这个小案例没有使用数据库,用集合的形式暂时保存数据,做测试! 功能: 增加学生信息 删除学生信息 修改学生信息 查询学生信息:  按照学号(精确查询)  按照姓名(模糊查询) 打 ...

  2. C++入门-控制台版的通讯录管理系统

    通讯录管理系统 1.系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别 ...

  3. 美萍超市销售管理系统标准版access数据库密码mp611

    美萍超市销售管理系统标准版access数据库密码mp611 作者:admin  来源:本站  发表时间:2015-10-14 19:01:43  点击:199 美萍超市销售管理系统标准版access后 ...

  4. iOS学习之Object-C语言简单的通讯录管理系统

    用这几天学的OC的知识,写了一个实现简单功能的通讯录管理系统,在这里分享给大家: 通讯录管理系统 *  需求: 1.定义联系人类Contact.实例变量:姓名(拼音,首字母大写).性别.电话号码.住址 ...

  5. c/c++ 贪吃蛇控制台版

    贪吃蛇控制台版(操作系统win7 64位:编译环境gcc, vs2017通过,其它环境未测试 不保证一定通过) 运行效果: #include <iomanip> #include < ...

  6. 基于TCP协议的聊天室控制台版

    我之前写过一篇博客,主要是基于TCP协议实现的聊天室swing版,在此再写一个基于TCP协议实现的聊天室控制台版,便于学习和比较. package 聊天室console版.utils; import ...

  7. c语言实现通讯录管理系统(c课程设计)

    工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...

  8. 蓝点通用管理系统V13版发布了!

    蓝点通用管理系统13版已发布! 重磅新功能:系统的通知和提醒功能,增加微信方式,微信通知.微信查询数据.微信拍照上传....... 蓝点的客户管理系统.进销存管理系统.产品管理系统.工作流管理系统.投 ...

  9. 5分钟快速部署PESCMS TEAM 团队任务管理系统开发版

    所在的公司也经历过小团队的发展,为了高效率,通常都是面对面交流,很多时候事情谈论过后不久就已经淡忘了.而且工作任务不能全局观察,成员之间基本上都要主动去询问,效率反而低下.所以今天就介绍一款中小团队的 ...

随机推荐

  1. Obeject.hasOwnProperty

    对象{ }要用for-in遍历对象内的属性,通过hasOwnProperty判断属性是否是对象本身的,而不是原型上的 数组[ ]可以通过forEach来遍历

  2. Java环境变量配置超详细教程

    https://blog.csdn.net/Mxdon_on/article/details/89461365 概述 Java的环境配置并不是特别难,但是对刚上手的新手来说确实是一个大问题 首先下载j ...

  3. CentOS7下设置网卡名称以eth开头

    一.前言 在CentOS7下,网卡的名称不再是以eth命名了,下以内容将教你如何在CentOS7下修改网卡以"eth"开头. 二.环境 ♦CentOS7.5_x86-64 三.配置 ...

  4. 2016/10/13 Oracle COALESCE()

    语法:COALESCE(s1,s2,...,sn),n>=2,此表达式的功能为返回第一个不为空的表达式,如果都为空则返回空值. 现有表tb_a: 实例1:在tb_a表中给sname列为空的人员设 ...

  5. Blockchain 基本知识

    本文是前奏,本来要介绍Azure上的Azure Blockchain Service,发现,需要从什么是区块链开始讲起... 什么是区块链?我们从比特币说起, 2008年11月,中本聪提出了比特币白皮 ...

  6. 【转载】img图片之间的间距问题

    [问题]页面中如果有多张图片,那么图片之间会有一些间距,在某些情况下(如切好的图片再次拼接),在显示上就会出现一些问题.效果如下: 解决方案参看以下文章 img图片之间的间距问题

  7. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之十二:新增SQL Server可用性副本

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  8. Python3-logging日志模块

    日志模块 logging模块默认收集的日志是warning以上等级的 日志一共分为5个等级,从低到高分别是: 级别 说明 DEBUG 输出详细的运行情况,主要用于调试 INFO 确定一切按预期运行,一 ...

  9. JavaScript-----15.简单数据类型和复杂数据类型

    1. 简单数据类型和复杂数据类型 简单数据类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型 值类型:在存储时变量中存储的是值本身:string number Boolean undefined ...

  10. CSS(3)---块级标签、行内标签、行内块标签

    块级标签.行内标签.行内块标签 html中的标签元素三种类型:块级标签.行内标签.行内块标签. 一.概述 1.块级标签 概念 每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度.高度.对齐等属 ...