1、1荆楚理工学院面向对象程序设计课程设计成果学院: 电子信息工程学院 _ 班 级: 2014 级物联网工程 2 班 学生姓名: 王一中 学 号: 2014401030215 设计地点(单位): D1202 设计题目: 电话薄管理系统 完成日期: 2017 年 6 月 2 日 指导教师评语: _ 成绩(五级记分制): 教师签名: 2目 录一、 设计目的和要求31.1 设计目的31.2 设计要求3二、总体设计方案42.1 系统分析42.1.1 系统设计意义42.1.2 系统设计需求分析42.1.3MFC 简介42.2 系统组成框图352.3 各模块功能设计62.3.1 各模块功能62.3.2 各文本
2、框功能设计6三、详细系统设计63.1 界面设计63.1.1MFC 框架界面设计63.2 数据库设计73.3 模块功能说明73.3.1 控件的通知消息机制743.3.2 各按钮功能8四、调试与测试94.1 调试分析与讨论94.2 实际完成情况说明104.3 本设计改进建议11五、源程序清单12六、总结23七、主要参考文献24一、设计目的和要求1.1 设计目的随着计算机技术的飞速发展,计算机的普及,利用计算机实现通讯管理已经是这一趋势的必然要5求。计算机管理具有无法比拟的检索迅速、可靠性高、存储量大、低成本、方便快捷的巨大优势。这给人们带来极大的方便,尤其是商务人士,免去了人们记忆大量信息的痛苦。
3、而一个高效地信息管理系统可以为人们的生活带来极大的便利。1.通过这次课程设计,实际掌握面向对象程序设计方法,了解 C+面向对象程序设计的方法与技巧,有效地、深刻地理解课程设计的内容,体会理论、方法和设计原则,培养自己分析思考和解决问题的能力,使学生具备面向对象程序设计开发工具设计实际系统的能力。2.VC+6.0 是 Microsoft 公司推出的一个功能强大的可视化软件开发工具,它是目前为止在Windows 环境下进行大型软件开发的首选。通过这次课程设计,在熟练掌握 C+面向对象设计的程序设计基础上,掌握 VC+6.0 软件的使用,通过自学 MFC,完成简单的二维平面的绘画,增强学生软件开发能
4、力。3.通过这次课程设计,尝试利用所学的知识 解决实际问题,学以致用。MFC 是建立自 C+的基础上的,所以 C/C+语言的重要性不言而喻。在进行课程设计中,深入的理解 C+语言的封装性、派生性、重载性的优势,理解 MFC 的消息处理机制,提高学生工程实践能力。1.2 设计要求1.设计一个简单的电话薄管理系统,并使用 VC+6.0 做出可视化界面,该电话薄默认存储了一些联系人信息,该系统能显示联系人的姓名、电话、邮编和地址。2.具有信息删除和添加功能,能够添加和删除联系人,当选中某个联系人姓名时,点击“删除” ,就可以删除该联系人和与之相关的信息。当点击“添加”时,可以向电话薄中添加新的联系人
5、,并编辑联系人姓名、电话、地址和邮编,点击“更新信息”时,就成功添加了新的联系人。3.具有查询信息的功能,可以按电话查找或按姓名查找通讯录中的联系人。输入联系人姓名,并点击“按姓名查找” ,就能显示该联系人的信息,包括同名的联系人。输入联系人电话,并点击“按电话查找” ,就能显示该联系人信息。4.在进行程序设计时,定义相关的类,为相应控件添加时间响应函数。二、总体方案设计该系统基于 VC+6.0 开发环境,利用 MFC 做出电话薄系统的可视化界面。首先要设计出电话薄6的总体框架,设计其功能:添加、删除、更新信息、姓名、电话、地址、邮编。并为其添加相应控件,建立数据库,链接数据库。最后为其控件添
6、加响应的响应函数,并完成程序设计。2.1 系统分析2.1.1 系统设计意义管理信息系统是一个将企业生产和经营中的各种内、外信息进行收集、整理、传递,并有序地存储,以用于经营和决策,是企业增强效率的信息系统。它能够使企业更加及时、准确、全面、详细地了解所需哟的信息数据。同时管理信息系统对各种信息数据的进一步加工,能使企业领导层的生产、经营、管理决策依据更加充分,具有合理性、科学性,从而方便人们管理各种信息。随着社会的发展、关系广泛,人们之间采用电话沟通越来越多,电话号码也就越来越多。要求查找一个电话号码也要节省时间和精力,要快捷方便。因此,这次课程设计设计了一款低成本、可靠性好、管理方便的电话薄
7、管理系统。2.1.2 系统设计需求分析话薄是日常工作生活中常用的记录工具,主要是对个人的人脉通讯信息的管理,使个人信息管理更加科学化、便捷化。要能实现通讯录的信息管理,基本信息包括:姓名、电话号码、邮编和地址;利用数据库的强大的管理功能,可以大大提高个人查找所需基本信息的效率。本系统应该满足以下几点:(1)操作界面友好,信息查询灵活、方便、快捷、准确、数据存储安全可靠;(2)对联系人的操作简单,可以方便地进行建立、修改和删除;(3)可以根据需要修改联系人的基本信息,并实现系统的易维护性和易操作性。2.1.3 MFC 简介MFC,微软基础类(Microsoft Foundation Classe
8、s),同 VCL 类似,是一种应用程序框架,随微软Visual C+ 开发工具发布,该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外。 MFC 应用程序的总体结构通常由开发人员从 MFC 类派生的几个类和一个 CWinApp 类对象(应用程序对象)组成。MFC 提供了 MFC AppWizard 自动生成框架。 Windows 应用程序中,MFC 的主包含文件为“Afxwin.h“。 此外 MFC 的部分类为 MFC/ATL 通用,可以在 Win32 应用程序中单独包含并使用这些类。 由于它的易用性,初学者常误认为 VC+开发必须使用
9、 MFC。这种想法是错误的。作为Application Framework,MFC 的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代7整个 Win32 程序设计。2.2 系统组成框图电话薄管理系统的功能结构见下图:包含查询记录模块、更新记录模块、输出信息模块、数据库模块等。电话薄管理系统功能模块图2.3 各模块功能设计2.3.1 各模块功能1.查询记录模块:可以实现多种方式的模糊查询,可以通过姓名、电话等查询结果,可在列表中显示出来,其分别对应相关函数。2.个人信息模块:为便于通讯记录的管理,本系统能通过操作界面进行添加、修改、删除记录。要实现应用程序对数据库的操作,还须向应用程
10、序添加相关的操作代码。3.输出信息模块:用户可以通过人机界面,对数 据库中的记录进行逐条查询,通过最前、向前、向后、最后按钮,逐次显示电话薄中记录的信息,还可通过成员列表显示所有记录。4.数据库模块:系统中的数据通过数据库模块存入数据库,当进行记录的查询、修改、删除、添加等操作时,数据库模块从数据库中读取相应记录供给用户进行相应操作。电话薄信息管理系统查询记录模块 输出信息模块个人信息模块按姓名查找按电话查找添加个人信息删除个人信息找更新信息清除信息关于82.3.2 各文本框功能(1)静态文本框静态文本框一般都是对话框或其他窗口的子窗口,而且是可见的,用于显示文字说明。本系统中的静态文本框有姓
11、名、电话、邮编、地址、请输入查找内容、查找记录和个人信息等。(2)编辑框编辑框是可以编辑的,在系统中,我们可以往其中输入相关信息,最后可以通过控件来对其进行修改。三、系统详细设计3.1 界面设计3.1.1 MFC 框架界面设计在进行界面设计时,用到了一些控件,主要有静态文本框、编辑框、按钮、列表框等,并为相应控件添加了响应函数,实现其相应的功能。最后生成的界面如图所示:3.2 数据库设计系统中的数据通过数据库模块存入数据库,当进行记录的查询、修改、删除、添加等操作时,数据库模块从数据库中读取相应记录供给用户进行相应操作。本系统中通过 void 9CPhoneBookDlg:DataInit()
12、函数来对该系统进行初始化,并建立文件,存储数据。在进行数据库的操作流程设计时,操作流程图如下:添加记录流程图3.3 模块功能说明3.3.1 控件的通知消息机制当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单击了,此时控件会向父窗口发送 BN_CLICKED 消息,实际上也就是给父窗口发送 WM_COMMAND 消息,在 wParam 参数中包含有通知消息码(鼠标单击时的通知消息码就是 BN_CLICKED)和控件 ID,lParam 参数中包含了控件的句柄。在 MFC 消息映射机制概述中,鸡啄米讲过,消息就是由三个部分组成:消息值、wParam 参数和 lParam 参数
13、。控件的消息映射宏的格式大致是:ON_通知消息码(nID, memberFun),nID 参数是控件的 ID,memberFun 参数是消息处理函数名。例如,ON_BN_CLICKED(IDC_BUTTON1, 添加录入基本信息确定查询数据库检验数据是否合法是否有通条记录取消按钮单击单击单击返回提交否添加数据库否提交是10&CDlg:OnBnClickedButton1)。此消息映射宏应添加到 BEGIN_MESSAGE_MAP 和END_MESSAGE_MAP 之间。消息处理函数声明的语法形式为:afx_msg void memberFun()。3.3.2 各按钮功能(1)处理“添加”按钮点
14、击“添加”按钮后,在 void CPhoneBookDlg:OnAdd()函数中,在链表的结尾添加一条记录,并将默认将新记录的姓名置为“新名字” ,其它项为空。输入输出均为空,这只是一个过程。之后,我们可以添加联系人的相关信息。(2)处理“删除”按钮点击“删除”按钮后,在 void CPhoneBookDlg:OnDelete()函数中,通过m_NameList.GetCurSel()得到所选记录在列表框中的序列号,最后确认要删除后,通过m_NameList.DeleteString(sel)在列表框中删除记录。删除完成后,并在结尾调用 void CPhoneBookDlg:OnSelchan
15、geNamelist()函数,移动指针到指定结点的位置。(3)处理“更新信息”按钮点击“更新信息”按钮后,在 void CPhoneBookDlg:OnUpdate()函数中,完成修改当前记录的操作。首先通过 m_NameList.GetCurSel()得到所选择记录在列表框中的序号,然后调用 strcpy(char *, const char *)函数,将更新的数据从文本输入框复制到结点,最后完成信息更新的操作。(4)处理“全部清除”按钮点击“全部清除”按钮后,在 void CPhoneBookDlg:OnClear()函数中,完成清除文本框中所有内容的操作。(5)处理“按姓名查找”按钮在“请输入查找内容”栏输入联系人姓名后,点击“按姓名查找”按钮,在 void CPhoneBookDlg:OnSearchbyname()函数中,完成对联系人查找的操作。直接调用 FindString 函数查找并得到序号,若查找不到,则提示找不到,最后调用 SetCurSel(sel)函数选中查找到的记录。(6)处理“按电话查找”按钮在“请输入查找内容”栏输入联系人电话号码后,点击“按电话查找”按钮,在 void CPhoneBookDlg:OnSearchbyphone()函数中,完成对联系人查找的操作。通过