1、 Visual C+课程设计 题目名称:手机通讯录 1 题目描述题目描述 利用 Visual C+实现一个手机通讯录管理软件。 该软件能够进行分组管理, 用户管理, 用户查询和手机通话短信功能模拟。 2 功能分析功能分析 软件主要功能包括: (1)分组管理 能够添加,删除,修改,每个分组设置一个来电音乐。 (2)用户管理 包括添加,插入,删除,修改用户姓名,手机,办公电话,电子邮箱,QQ,微博, 来点音乐。 (3)用户查询 通过输入关键字,按姓名和手机号码两种方式可以对用户进行模糊查询。 (4)功能模拟 当选中一个用户时,有通话和短信选项可以操作,选择后进入相应界面。 3 软件设计软件设计 3
2、.1 软件软件整体结构整体结构 3.1.1 软件中的联系人信息软件中的联系人信息链表链表类型类型 本软件中, 联系人信息存放在 Phonecard 类变量组成的链表中, 信息有联系人的姓名, 手机,办公电话,电子邮箱,QQ,微博,来电音乐。 图 1. 人员信息的各个成员 Phonecard 类 姓名 手 机 办 公邮箱 微博 来电音乐 QQ 3.1.2 对对信息信息联系人联系人的操作的操作 对联系人能够添加,删除,修改,插入,通过姓名和手机号查询用户姓名,手机,办 公电话,电子邮箱,QQ,微博,通过设置不同的分组来改变来电音乐,并且可以对其对 进行通话或短信的操作。 关于背景音乐,用了 mms
3、ystem.h 中的 playsound()函数,总共设置了三个分组,不同 分组的人员在拨打电话时能够播放不同的来电音乐, 并且用 sndPlaySound( NULL , NULL ) 控制停止音乐播放。 3.2 主要模块主要模块设计设计 3.2.1 对话框对话框类的设计类的设计 CPhongBook OnAddLoadIOnDe OnIns OnSearchb OnSearch 图 3 手机通讯录对话框类层次 OnExit DataI 联系人的操作 初始化 添加 插入 修改 删除 来电音乐 查询 图 2. 手机通讯录对联系人的操作 按姓名查询 按号码查询 3.2.2 主要数据结构主要数据结
4、构 本程序采用了较多对话框类,都是继承 CDialog 类. 在本程序的实现中,设置了结构体链表来存储各个联系人分组信息,把联系人信息存 在结构体链表里的结构体数组中实现对联系人信息管理,通过遍历链表,查找结点,实现 了软件的添加,删除,修改,插入等功能。 3.2.3 文件存储文件存储 文件的存储格式主要有文本格式和二进制格式。 文本格式的一个显著优点是可以用文 本编辑软件(如记事本)打开文件进行观察和读取。 与文本格式不同,二进制格式不能简单的 将文件打开编辑。但二进制文件读取速度快,并且能够利用 MFC 库进行序列化,是主流的 文件输出格式。 在本程序中,用“data”文件来保存手机通讯录
5、中人员的信息。增加人员是时直接将 该人员加至文件尾部。修改和删除通讯录人员时,在文件相应部分进行修改和删除。插入 时, 写入文件, 找到要插入结点的位置, 进行插入操作。 查询时将文件中的内容写入遍历, 再通过相应的函数进行查询。 3.3 程序界面设计程序界面设计 界面环境作为人机信息交流的通道,主要是辅助用户完成工作。为了方便用户使用, 在软件实现中进行了对程序界面美化设计。 3.3.1 背景设计背景设计 在主对话框中调用 SetDialogBkColor(RGB(0,0,0),RGB(255,255,255)函数, 使界面背景 变为黑色,字体为白色,看起来更加舒适美观。 3.3.2 界面设
6、计界面设计 通过对话框和 listbox 列表框,清晰的再现了通讯录中人员的信息存储情况,并且人性 化的添加了各种操作相应按钮。 3.4 类与函数类与函数的设计与实现的设计与实现 3.4.1 对话框类设计与实现对话框类设计与实现 由对话框基类 CDialog 派生出程序需要的各种类。 (1)在该类中定义了结构体链表等信息,完成在程序中对数据的存储。 struct PhoneCard char name20; /姓名 char phone13; /电话 char number13; /办公电话 char email20; /电子邮箱 char qq10; /QQ char blog20; /微博 int divide; struct PhoneCard *prev; /指向前一指针 struct PhoneCard *next; /指向后一指针 ;/定义结构体 (2)自定义初始化函数 void CPhoneBookDlg:DataInit() struct PhoneCard *p,*q;/ bFileEmpty=FALSE