【C++课程设计】通讯录管理系统

代码开源地址c++课程设计通讯录管理系统. Contribute to ruomio123/AddressMS development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/ruomio123/AddressMS

一、任务书  

手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(假设每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个联系人)。存储在手机中的联系人的信息只包含姓名和电话号码两项信息。存储在电话卡上的联系人的信息除了上面提到的两项信息外,还包含籍贯,QQ号等信息。

根据通用的手机通讯录的使用方式,采用OOP(Object Oriented Programming,面向对象编程)方法编写一个手机通讯录管理。

要求:

创建文本文件,记录联系人的信息(需要创建两个文本文件,分别存储手机和手机卡上的联系人的信息)。

以菜单方式工作(字符界面即可)

存储在手机上的联系人的信息包括:姓名和电话号码;存储在手机卡上的联系人的信息包括姓名,籍贯,电话号码,QQ号等信息

管理系统的功能包括:

新建联系人:添加新的联系人(添加时确定是添加到手机上还是手机卡中,并且要检查目标位置上是否存在相同的电话号码)

删除:删除一个联系人(输入电话号码,删除该联系人。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行删除操作)

修改:修改某个联系人的信息(输入电话号码,查询到联系人之后进行信息的修改。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行修改操作)

查询:根据名字查询联系人信息(查询结果可能不唯一)

浏览:显示所有联系人的信息

将联系人的信息从手机转存到手机卡上(转存过程中,要避免重复数据(姓名和电话号码相同)的存在;并且在转存是要检查容量是否受限 。下同。)

将联系人的信息从手机卡上转存到手机上(同时要避免重复数据的存在)

要支持继承、多态、重载(运算符重载、函数重载)等面向对象的基本特点。

二、总体设计

 

三、各功能模块实现

3.1.增加联系人

首先选择添加联系人功能,基类指针a会调用派生类手机卡通讯录类的添加功能,当手机卡的内存不超过1000时可以进行添加,按照提示输入姓名和手机号即可,如果出现重复电话号码,会提示已经存在该联系人,如果不存在重复联系人,则添加成功,并询问用户是否继续添加。

流程图见图3.1  

图3.1 新增联系人流程图

运行效果见图 3.2  

图 3.2 新增联系人运行效果图

3.2.删除联系人

选择删除联系人功能,根据用户的输入,先查询是否存在,然后调用派生类功能,在两个地方同时删除 。

流程图见3.3


图3.3删除联系人功能流程图

运行效果图见图3.4

图3.4删除联系人运行效果图

3.3.查询联系人

用户选择在手机或手机卡上查询联系人,根据基类指针调用派生类查询函数,输入姓名,查询是否存在,存在则输出该联系人信息。

  流程图见3.5

图3.5查询联系人流程图

运行效果见图3.6

图3.6查询联系人运行效果图

3.4.浏览联系人

  用户选择浏览手机还是手机卡中联系人,根据不同选择,基类指针调用不同派生类的display函数。


  流程图见图3.7

图3.7 浏览联系人流程图

运行效果见图3.8

图3.8 浏览联系人运行效果图

3.5.修改联系人

根据用户选择,在手机卡或手机上进行修改,通过基类指针调用派生类函数,用户选择修改什么信息,不存在会提示。

     


图3.9 修改联系人流程图

运行效果见图3.10

图3.10 修改联系人运行效果图

3.6.将手机卡联系人复制到手机中

首先创建文件流,如果打开成功,则读取手机卡中的联系人信息,如果内存已满,则提示,如果内存不满且不重复出现,则将姓名和电话号码写入到phone文件中。复制成功。

流程图见图3.11

图3.11 手机卡联系人复制到手机流程图

运行效果见图3.12

图3.12 手机卡联系人复制到手机中功能运行效果

3.7.将手机联系人复制到手机卡中

首先创建文件流,如果打开成功,则读取手机中的联系人信息,如果内存已满,则提示,如果内存不满且不重复出现,则将姓名和电话号码写入到sim文件中。复制成功。

流程图见图3.11


3.13手机联系人复制到手机卡流程图

运行效果见图3.14

图3.14手机联系人复制到手机卡运行效果图

3.8.将手机联系人移动到手机卡中

打开"sim.txt"和"phone.txt"文件,检查打开是否成功。若有任一文件打开失败,则输出错误信息并终止执行。使用循环从person.txt文件中逐行读取联系人信息,每行包含姓名和电话号码。对于每行读取的联系人信息,进行以下操作:初始化标记变量flag为0,用于判断该联系人是否已存在。检查内存是否已满,如果已满则输出错误信息并跳出循环。遍历已存储的联系人列表,检查该联系人是否已存在。如果存在,将flag设为1表示重复。如果flag为0,即该联系人不重复,则将其添加到联系人列表simpersons中,并将计数器SimpersonNum增加1。输出当前成功移动的联系人姓名。循环读取并处理文件中的所有联系人信息。将手机联系人长度设置为0,关闭"sim.txt"和"phone.txt"的文件流。


流程图见图3.15

图3.15手机联系人移动到手机卡功能流程图

运行效果见图3.16

图3.16手机联系人移动到手机卡功能运行效果

3.9.将手机卡联系人移动到手机中

打开"sim.txt"和"phone.txt"文件,检查打开是否成功。若有任一文件打开失败,则输出错误信息并终止执行。使用循环从sim.txt文件中逐行读取联系人信息,每行包含姓名和电话号码和籍贯和QQ。对于每行读取的联系人信息,进行以下操作:初始化标记变量flag为0,用于判断该联系人是否已存在。检查内存是否已满,如果已满则输出错误信息并跳出循环。遍历已存储的联系人列表,检查该联系人是否已存在。如果存在,将flag设为1表示重复。如果flag为0,即该联系人不重复,则将其添加到联系人列表persons中,并将计数器personNum增加1。输出当前成功移动的联系人姓名。循环读取并处理文件中的所有联系人信息。将手机卡的长度设置为0。关闭"sim.txt"和"phone.txt"的文件流。

流程图见图3.17

图3.17手机卡联系人移动到手机中

运行效果见图3.18

图3.18手机卡联系人移动到手机功能运行效果图

四、总结

在这一学期的c++学习当中,我了解了面向对象(opp)的三大特性:封装,继承和多态,同时也学习了一些文件流操作的方法和重载的实现,在本次课程设计当中,涉及了大部分的c++特性和知识,在控制手机通讯录和手机卡通讯录的时候更是使用到了多态,比如去用基类指针调用子类的方法在本次课程设计中,我也遇到了一些问题,比如文件流操作的时候一开始无法写入,后来发现是没有关闭文件流,还有清空文件内容的时候遇到了问题,在老师的指导下发现是没有将计数变量设为0,我认为我对c++的认识还不够完全,需要进一步深入学习研究。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值