文章目录

  • 一、需求说明
  • 二、效果
  • 三、整体思路
  • 四、详细思路
  • 五、代码实现

一、需求说明

使用c++开发一个个人版通讯录,要求简单实现下面功能:
1.向通讯录添加联系人
2.从通讯录删除联系人
3.查找联系人
4.显示通讯录
5.通讯录存盘
6.读出通讯录

二、效果

三、整体思路

view层使用switch_case语句实现函数跳转, service层使用对象数组模拟数据库存储.

四、详细思路

设计一个Address联系人类
    private私有: 
        (1)联系人信息
    public公开:
        (1)get联系人信息
        (2)flag变量—用来判断当前对象是否可存,即数组对象角标是否可用 .(规定true为可用,false为不可用)
        (3)Put方法(有参)—用来实现向私有变量传值,即传递联系人信息 .
设计另一个 AddressBook功能类,实现具体操作
    private私有:
        (1)此类中开辟一个对象数组.(人为设置仅使用存储单元[1-100])
    public公开:
首先定义FindFree()方法—获取空位,进行if判断,如果不是[1-100]的范围,返回-1
        (1)Put()方法—添加联系人, 在此类中调用Address类的Put方法,向数组传递信息.
        (2)Delete()方法—删除联系人, for循环内嵌套if语句使用compare方法进行匹配,匹配成功将对应的标志变量flag设置为false
        (3)Search()方法—查找联系人,实现方法同Delete()方法,仅将具体操作功能更换为cout输出
        (3)List()方法—显示联系人,遍历对象数组,如果flag为true,就进行打印
        (4)Save()方法—存盘,创建ofstream对象,从内存向外存写数据
        (5)Read()方法—读盘,创建ifstream对象,从外存向内存读数据

五、代码实现

#include<iostream>
#include<string>
#include<fstream> using namespace std;
/**文件说明: 使用c++对象类模拟手机通讯录√实现的功能:1.向通讯录添加联系人2.从通讯录删除联系人 3.查找联系人4.显示通讯录5.通讯录存盘6.读出通讯录 整体思路:view层使用switch_case语句实现函数跳转, service层使用对象数组模拟数据库存储.  详细思路:设计一个Address联系人类: private私有:(1)联系人信息public公开: (1)get联系人信息(2)flag变量---用来判断当前对象是否可存,即数组对象角标是否可用 .(规定true为可用,false为不可用) (3)Put方法(有参)---用来实现向私有变量传值,即传递联系人信息 . 设计另一个 AddressBook功能类,实现具体操作:private私有: (1)此类中开辟一个对象数组.(人为设置仅使用存储单元[1-100])public公开: 首先定义FindFree()方法---获取空位,进行if判断,如果不是[1-100]的范围,返回-1 (1)Put()方法---添加联系人, 在此类中调用Address类的Put方法,向数组传递信息.        (2)Delete()方法---删除联系人, for循环内嵌套if语句使用compare方法进行匹配,匹配成功将对应的标志变量flag设置为false(3)Search()方法---查找联系人,实现方法同Delete()方法,仅将具体操作功能更换为cout输出(3)List()方法---显示联系人,遍历对象数组,如果flag为true,就进行打印 (4)Save()方法---存盘,创建ofstream对象,从内存向外存写数据 (5)Read()方法---读盘,创建ifstream对象,从外存向内存读数据
*/ //为了使数组角标和联系人个数匹配
static int Num = 1;//充当数组地址角标
static int number = 0; //通讯录联系人个数 //一、Address联系人类
class Address
{private:string Name;  //姓名string Phone; //电话string Email; //邮箱 string Addr; //地址string PostCode; //邮编
public:bool flag;//标志变量(为true表示可以存) string GetName(); string GetPhone(); string GetEmail(); string GetAddr(); string GetPostCode(); void Put(string name, string phone, string email, string addr, string postcode); //添加联系人
};string Address::GetName()
{return Name;
}string Address::GetPhone()
{return Phone;
}string Address::GetEmail()
{return Email;
}string Address::GetAddr()
{return Addr;
}string Address::GetPostCode()
{return PostCode;
}void Address::Put(string name, string phone, string email, string addr, string postcode)
{//Address层添加通讯录 Name = name;Phone = phone;Email = email;Addr = addr;PostCode = postcode;
}//二、AddressBook功能类
class AddressBook
{private:Address Item[101];//此通讯录最大容量为 100,[1-100]
public:int FindFree();  //0.寻找空位void Put();  //1.增加void Delete(); //2.删除void Search();  //3.查找void List();  //4.显示void Save();  //5.存盘void Read();  //6.读盘
};int AddressBook::FindFree()
{//0.寻找空位 if(Num>0 && Num<=100){return Num;}else{return -1;}
}void AddressBook::Put()
{//1.AddressBook层添加通讯录 cout<<"请依次输入姓名、电话、邮箱、地址、邮编:"<<endl;string Name,Phone,Email,Addr,PostCode;cin>>Name>>Phone>>Email>>Addr>>PostCode;Item[Num].Put(Name,Phone,Email,Addr,PostCode);//传到Address层number++; Item[Num].flag = true;Num++;
}void AddressBook::Delete()
{//2.删除通讯录 string temp;cin>>temp;for(int i=1;i<=Num;i++){if(temp.compare(Item[i].GetName())==0 || temp.compare(Item[i].GetPhone())==0){Item[i].flag= false;number--;cout<<"删除成功!"<<endl;}}
} void AddressBook::Search()
{//3.查找联系人 string temp;cin>>temp;for(int i=1;i<=Num;i++){if(temp.compare(Item[i].GetName())==0 || temp.compare(Item[i].GetPhone())==0){cout<<"联系人已找到:"<<endl;cout<<Item[i].GetName()<<"     "<<Item[i].GetPhone()<<"      "<<Item[i].GetEmail()<<"      "<<Item[i].GetAddr()<<"       "<<Item[i].GetPostCode()<<endl;    }}
}void AddressBook::List()
{//4.显示通讯录 for(int i=1;i<=number;i++){if(Item[i].flag == true){cout<<Item[i].GetName()<<"     "<<Item[i].GetPhone()<<"      "<<Item[i].GetEmail()<<"      "<<Item[i].GetAddr()<<"       "<<Item[i].GetPostCode()<<endl;    }}
}void AddressBook::Save()
{//5.通讯录存盘ofstream ofs;ofs.open("D:\\手机通讯录.txt",ios::app); if(ofs){for(int i=1;i<=Num;i++){ofs<<Item[i].GetName()<<"      "<<Item[i].GetPhone()<<"      "<<Item[i].GetEmail()<<"      "<<Item[i].GetAddr()<<"       "<<Item[i].GetPostCode()<<endl;    }cout<<"存储成功!"<<endl;}else{cout<<"存储失败!"<<endl;}ofs.close();
}void AddressBook::Read()
{//6.读出通讯录ifstream ifs("D:\\手机通讯录.txt");char buf[256];cout<<"手机通讯录.txt内容如下:"<<endl;while(!ifs.eof()){ifs.getline(buf,256,'\n');cout<<buf<<endl;} ifs.close();
} int main(){AddressBook A;cout<<"                   ****** 模拟电话簿  ******"<<endl;;cout<<"                  **   1.添加联系人  **"<<endl;cout<<"                   **   2.删除联系人  **"<<endl;cout<<"                   **   3.查找联系人  **"<<endl;cout<<"                   **   4.显示通讯录  **"<<endl;cout<<"                   **   5.通讯录存盘  **"<<endl;cout<<"                   **   6.读出通讯录  **"<<endl;cout<<"                   **   7.退       出  **"<<endl;     while(true){cout<<"请输入选项进行您的操作:";int n = 0;cin>>n;switch(n){case 1://1.添加联系人 if(A.FindFree()>0 && A.FindFree()<=100){//如果有空位,添加通讯录 cout<<"通讯录未满,可以进行存储!"<<endl; A.Put();cout<<"存储成功"<<endl;               }else{cout<<"通讯录已满,无法进行存储!"<<endl; }break;case 2://2.删除通讯录cout<<"请输入联系人的姓名或电话:"<<endl;A.Delete();break;case 3://3.查找联系人cout<<"请输入姓名或电话:"<<endl; A.Search(); break;case 4://4.显示通讯录cout<<"显示通讯录"<<endl;if(number>0){cout<<"通讯录中有"<<number<<"个联系人信息."<<endl; A.List(); }else{cout<<"当前通讯录为空!"<<endl;}break;case 5:A.Save(); //5.电话簿存盘break;case 6://6.读出通讯录A.Read();break;case 7://7.退出cout<<"您已退出本产品,谢谢使用!"<<endl;exit(0);break; default:cout<<"输入不合法,请重新输入:"; }} return 0;
}

c++对象数组模拟手机通讯录Demo相关推荐

  1. 模拟手机通讯录联系人功能

    实训:模拟手机通讯录联系人功能 package com.qf.day43_02; import android.app.Activity; import android.app.AlertDialog ...

  2. Java版数据结构之数组模拟环形队列demo

    Java版数据结构之数组模拟环形队列demo 我的代码仓库:https://github.com/zhuangbinan/datastructure 类 CircleArray package clu ...

  3. 模拟手机通讯录管理 2021.2.11

    模拟手机通讯录管理 现在手机都有通讯录程序,下面这个代码模拟手机通讯录设置添加,查询,删除联系人等功能. 今天是除夕,祝各位程序员朋友们新春快乐,阖家欢乐! import os import sysp ...

  4. python模拟手机通讯录

    print('-' * 20) print('欢迎使用通讯录:\n1.添加联系人\n2.查看通讯录\n3.删除联系人\n4.修改联系人信息\n5.查找联系人\n6.退出') print('-' * 2 ...

  5. python通讯录的录入与测试_python实现手机通讯录搜索功能

    # -*- coding:utf-8 -*- # 练习2: # 模拟手机通讯录搜索功能 class PERSON(object): def __init__(self): self.name_list ...

  6. python制作手机通讯录功能

    模拟手机通讯录功能 个人练习,仅供参考 print('-' * 20) print('欢迎使用通讯录:\n1.添加联系人\n2.查看通讯录\n3.删除联系人\n4.修改联系人信息\n5.查找联系人\n ...

  7. python实现手机通讯录_python实现手机通讯录搜索功能

    # -*- coding:utf-8 -*- # 练习2: # 模拟手机通讯录搜索功能 class PERSON(object): def __init__(self): self.name_list ...

  8. 【Demo】IOS中将对象数组按照时间戳排序

    将对象按照时间戳排序,这里典型的一个例子是登录账户的排序:本地客户端可能保存了多个账户信息,在登录窗口用户可以选择已经登陆过的账户直接登录,现在的需求是要时刻让最近登陆过的账户排在前面,对于每个账户, ...

  9. 练习-Java类和对象之对象引用之模拟手机功能

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 任务: 实现手机的基本功能. 手机具有属性:品牌(brand).型号(type).价格(price).操作系统(os)和内存( ...

最新文章

  1. Matplotlib使用日期作为横坐标
  2. 提升深度学习模型性能及网络调参
  3. 为什么不应该重写service方法?
  4. 需求管理(3)------方法论
  5. linux断开会话不中断进程,Linux screen 解决会话终止当前进程断开的问题
  6. 直方图中最大的矩形(遍历与单调栈)
  7. 二十四、数据挖掘时序模式
  8. xmlWriter 以UTF-8格式写xml问题
  9. python裁剪图片并保存_python – 如何从图像中剪切轮廓并将其保存到新文件中
  10. Java 面向对象 之 接口 火车票实例
  11. java 有序map_Java有序的Hash集合:LinkedHashMap
  12. C语言基础函数(二)
  13. 一个近乎完美基于Dubbo的微服务改造实践
  14. java redis设置过期时间_Redis的内存回收原理,及内存过期淘汰策略详解
  15. Symantec赛门铁克安全软件免密卸载方式
  16. ​我国首个5G消息平台标准发布;华为拿下支付牌照;工业富联、酷派发布2020年业绩报告...
  17. 关于QComboBox
  18. c语言英文背单词软件下载,英语百词斩下载,背单词最好的软件排名?
  19. 05.前端面经汇总javaScript篇
  20. 【软件测试】可以写进简历的项目实战内容

热门文章

  1. JAVA学习路线资料
  2. 基于R语言 meta/metafor 包进行荟萃分析(一)
  3. 能否针对容量和性能来优化数据中心的存储?Adaptec by PMC解决方案给你肯定的答案
  4. 一种基于倏逝波的离子浓度测试芯片
  5. 手机APPUI界面设计流程
  6. 移动端页面inputfile打不开_移动端input“输入框”常见问题及解决方法
  7. eclipse及IDE开发工具介绍
  8. postgres更改数据库名的条件
  9. mysql给表加外键约束_MySQL为表添加外键约束
  10. 最受欢迎的当代设计风格