手机通讯录模拟程序
程序说明:模拟手机的通讯录程序,实现添加、删除、查找以及修改等功能。
实现环境:windows 7 + C-Free 5.0
编程语言:C/C++
程序设计: 程序包括8个部分:主程序、用户界面、查找、添加、删除、修改、打电话、发短信。
① 程序
分析:程序流程:运行程序 --> 读入通讯录记录 --> 显示用户界面 --> 根据选择执行操作 --> 将修改后的记录写会通讯录 --> 结束运行
Postscript:1、为求程序简单,选择操作时没有使用循环,而是采用了if结构,每次运行程序只能进行一项操作。2、在修改信息操作中,没有输入合法性检查。
②用户界面
Name Number Remark ............................ .......................... ............................ ............................ .......................... ............................ ............................ .......................... ............................ Please choose your operation : Call(c) Send(s) Add(a) Delete(d) Query(q) Modify(m) |
③查找
分析:由于手机通讯录是按照记录姓名组织,是一种线性有序的逻辑结构。且查询操作频繁,添加和删除操作不频繁。因此,选择顺序存储结构。综合存储结构和时间复杂度考虑,采用折半查找法进行查找。时间复杂度O(log2n)。
④添加
分析:因为手机通讯录的记录是有序的,所以添加记录后仍然要有序。首先要判断手机容量是否已满,若是,则操作失败。若否,则查找插入位置,插入记录,修改通讯录的长度。采用顺序查找法,时间复杂度O(n)。
⑤删除
分析:删除通讯录中的记录是建立在查找的基础上的。如果查找成功,则删除这条记录,并修改通讯录的长度;否则,操作失败。调用query_user_record(),使用折半查找法,时间复杂度为O(log2n)。但删除后通讯录仍然要有序,需要移动记录,时间复杂度为O(n)。综合考虑,时间复杂度为O(n)。
⑥修改
分析:修改通讯录中记录同样是建立在查找的基础上。如果查找成功,则修改这条记录;否则操作失败。调用query_user_record(),使用折半查找法,时间复杂度是O(n)。
⑦打电话
分析:查找要通电话的记录,若查找成功,拨打即可;否则,操作失败。时间复杂度为O(log2n)。
⑧发短信
分析:查找要发短信的记录,若查找成功,发送即可;否则,操作失败。时间复杂度为O(log2n)。可添加一些有趣的小程序,例如,发送ping命令,打开网页等等(打电话也是如此)。
程序代码链接地址:http://download.youkuaiyun.com/detail/s_521_h/4280303