首页 > 编程语言 >C++通讯录管理系统[2023-06-17]

C++通讯录管理系统[2023-06-17]

时间:2023-06-17 15:23:48浏览次数:50  
标签:存储 06 函数 17 联系人 信息 手机卡 通讯录 手机

C++通讯录管理系统[2023-06-17]

通讯录管理系统
手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个联系人)。存储在手机中的联系人的信息只包含用户名和电话号码两项信息。存储在电话卡上的联系人的信息除了上面提到的两项信息外,还包含住址,QQ号等信息。
根据通用的手机通讯录的使用方式,采用OOP(Object Oriented Programming,面向对象编程)方法编写一个手机通讯录管理。
要求:

  1. 创建文本文件,记录联系人的信息(需要创建两个文本文件,分别存储手机和手机卡上的存储的联系人的信息)。
  2. 以菜单方式工作(字符界面即可)
  3. 存储在手机上的联系人的信息包括:姓名和电话号码;存储在手机卡上的联系人的信息包括姓名,住址,电话号码,QQ号等信息
  4. 管理系统的功能包括:
    a) 新建联系人:添加新的联系人(添加时确定是添加到手机上还是手机卡中)
    b) 删除:删除一个联系人(输入电话号码,删除该联系人。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行删除操作)
    c) 修改:修改某个联系人的信息(输入电话号码,查询到联系人之后进行信息的修改。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行删除操作)
    d) 查询:根据名字查询联系人信息(查询结果不唯一)
    e) 浏览:显示所有联系人的信息
    f) 将联系人的信息从手机转存到手机卡上(同时要避免重复数据的存在。并且在转存是要检查容量是否受限。下同。)
    g) 将联系人的信息从手机卡上准存到手机上(同时要避免重复数据的存在)
  5. 要支持继承、多态、重载(运算符重载、函数重载)等面向对象的基本特点
  6. 提交程序源码和课程设计报告。
  7. 课程设计评分说明:实现功能:通过;使用了继承技术:中;实现了运算符的重载:良;支持多态:优

实现过程分析:
建立两个文本文件,记录存储在手机上联系人的基本信息和存储在手机卡上的联系人的信息
建立以下几个类:
1. 手机联系人类:表示一个联系人
数据成员包括:
姓名
电话号码
成员函数包括
带参并带默认值的构造函数
一组set函数为数据成员赋值
一组modify函数,修改数据成员的值
重载>>,<<运算符,完成对象的输入和输出操作

2. 手机卡联系人(继承于手机联系人类):
新增数据成员:
住址
QQ号
成员函数包括
一组set函数为数据成员赋值
一组modify函数,修改数据成员的值
重载>>,<<运算符,完成数据成员的输入输出操作
3. 定义一个通讯簿抽象类,用来封装以下函数(为支持多态,可以将以下函数封装为纯虚函数)
增加函数:增加一个联系人
删除操作:删除一个联系人
Display:显示所有联系人的信息
修改某一联系人的信息:
查询并显示某一联系人的信息:
4. 手机通讯簿类(这是一个数据库类,继承于通讯簿抽象类):用于记录手机中存储的所有联系人的信息
数据成员包括:
手机联系人的数量
手机联系人对象数组
成员函数包括
构造函数:读取文本文件中的数据,并根据文件内容创建联系人对象数组
析构函数:将对象数组中的内容写入到文本文件中。
增加函数:增加一个联系人
删除操作:删除一个联系人
Display:显示所有联系人的信息
修改某一联系人的信息:
查询并显示某一联系人的信息:
5. 手机卡通信簿类(这是一个数据库类,继承于通讯簿抽象类):用于记录手机卡中存储的所有联系人的信息
数据成员包括:
手机联系人的数量
手机联系人对象数组
成员函数包括
构造函数:读取文本文件中的数据,并根据文件内容创建联系人对象数组
析构函数:将对象数组中的内容写入到文本文件中。
增加函数:增加一个联系人
删除操作:删除一个联系人
Display:显示所有联系人的信息
修改某一联系人的信息:
查询并显示某一联系人的信息:
6. 用户类(这是一个操作类,完成通讯簿的操作):用户拥有两个通讯簿(一个是手机中存储的联系人,一个是手机卡中存储的联系人),并且可以对通讯录进行管理
数据成员包括:
两个通讯簿对象
成员函数包括(成员函数体现用户的行为):
添加联系人:利用基类指针,调用相应的通讯簿对象(手机通讯簿或手机卡通信簿)的增加函数完成联系人的添加。实现动态联编,体现出多态特点。(下同)
删除联系人:调用相应的通讯簿对象的删除操作删除一个联系人
Display:显示相应的通讯簿中联系人的信息
修改某一联系人的信息:调用通讯簿对象的函数完成操作
查询并显示某一联系人的信息:调用通讯簿对象的函数完成操作
将手机卡中的存储的联系人的信息移动到手机中
将手机中存储的联系人的信息移动到手机卡中
将手机卡中的存储的联系人的信息复制到手机中
将手机中存储的联系人的信息复制到手机卡中
7. 界面菜单类:用来给出操作提示
数据成员:可以不定义数据成员
成员函数:
Display函数:显示操作菜单的提示。说明:可以根据需要定义多个函数,显示不同的菜单(操作提示)。

源码

https://pan.baidu.com/s/1J--MYtUyPilpJKTD15-SgA?pwd=1111

标签:存储,06,函数,17,联系人,信息,手机卡,通讯录,手机
From: https://www.cnblogs.com/codewriter/p/17487495.html

相关文章

  • 系统架构设计师笔记第17期: 关系数据库
    数据库的分类可以根据不同的标准进行划分:根据数据结构分类:1.1关系数据库(RelationalDatabase):关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据,以表格形式存储数据,并支持事务处理、多用户访问、数据安全性和完整性控制等功能。1.2非关系型数据......
  • 洛谷 P8179 Tyres
    滴叉题/se/se题意直接复制了有\(n\)套轮胎,滴叉需要用这些轮胎跑\(m\)圈。使用第\(i\)套轮胎跑的第\(j\)圈(对每套轮胎单独计数)需要\(a_i+b_i(j-1)^2\)秒。滴叉需要进入维修站来更换轮胎,所消耗的时间为\(t\)秒。特别地,滴叉使用的第一套轮胎不需要进站更换。你需......
  • SummerResearch_Log_20230616
    WorkingContent:1.学到的关于VCL方法的几个点:(1)最小化KL散度=最大化ELBO(EvidenceLowerBound)。tyxe的源代码应该用的就是最大化ELBO,这里loss是由关于ELBO的函数得到的(具体怎么得到的不太知道)。(2)源代码用了Pyro库中的SVI,是一种类。......
  • 2023.6.17 每日一题
    原题链接B:CodeforcesRound691(Div.1)-AB.RowGCD-1600题目大意给定两列大正数\(a_1,\dots,a_n\)和\(b_1,\dots,b_m\),现在要求\(a_1+b_j,\dots,a_n+b_j\)的最大公约数。解题思路暴力一个个找不TLE才怪了,我们需要找到每次运算的公共特征。我们知道对......
  • HIMA F7131 981713102 电源单元
    HIMAF7131981713102电源单元HIMAF7131981713102电源单元 引言在一个桥接的局域网里,为了增强可靠性,必然要建立一个冗余的路径,网段会用冗余的网桥连接。但是,在一个透明桥桥接的网络里,存在冗余的路径就能建立一个桥回路,桥回路对于一个局域网是致命的。它会带来如下问......
  • HIMA F 8650X 中央模块 PN:98 4865065 REV,01
    HIMAF8650X中央模块PN:984865065REV,01HIMAF8650X中央模块PN:984865065REV,01 多任务机制其实在单一CPU的情况下,是不存在真正的多任务机制的,存在的只有不同的任务轮流使用CPU,所以本质上还是单任务的。但由于CPU执行速度非常快,加上任务切换十分频繁并且切......
  • POJ2117 Electricity 题解 tarjan点双连通分量 割点
    题目链接:http://poj.org/problem?id=2117题目大意:给定一个由\(n\)个点\(m\)解题思路:tarjan,判断\(u\)的子节点有几个\(v\)满足\(low[v]\gedfn[u]\)就是答案,但是同时如果\(u\)不是这个dfs树的根节点,个数还要加\(1\)。示例程序1(C++11,POJ不支持):#include<bits/stdc++.h>......
  • P2860 [USACO06JAN]Redundant Paths G 题解 tarjan边双连通分量
    题目链接:https://www.luogu.com.cn/problem/P2860题目大意:给定一个无向连通图,求至少加几条边,能使其变成一个边双连通图。解题思路:边双连通分量缩点后计算度数为\(1\)的节点个数,假设有\(cnt\)个,则答案为\((cnt+1)/2\)。示例程序:#include<bits/stdc++.h>usingnamespacestd;......
  • C++通讯录管理系统[2023-06-16]
    C++通讯录管理系统[2023-06-16]通讯录管理系统手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(假设每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个联系人)。存储在手机中的联系人的信息只包含姓名和电话号码两项......
  • CF1817E Half-sum 另解与 Trygub Number
    一题水两篇怎么说。上一篇中我们采用智慧方法减少了比较次数,避免了使用复杂的高精度数。现在我们有高论!可以做到\(\mathrmO(\log_BV\log_2n)\)在某一位加或者减一个大小\(\mathrmO(V)\)的数,支持判断正负和取特定位的值。怎么做呢。很简单,我们每一位的数值域原本是\([0,......