ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:148.44KB ,
资源ID:5637621      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5637621.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MFC的通讯录设计含源文件Word下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于MFC的通讯录设计含源文件Word下载.docx

1、0引 言本课程通过设计一个简单通讯录,来减少查询通信信息的时间,提高工作效率。该程序可以在界面下输入学生的姓名,学号,电话,Email等联系方式。在设计中,通过设计、编制、调试一个模拟通讯录的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。而在面向对象程序设计中关键是如何将问题域中的实体抽取出来,作为C+程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。1系统分析1.1系统现状分

2、析通讯录是日常生活中十分便捷有效且必备的工具,能实现对个人信息记录备案的工具。要实现记录信息的功能,可以用VC+的知识编写程序来解决此问题。该通讯录记录了个人必备的联系信息,在高效的现代社会,他可以帮助我们提高工作效率,因此它有存在的价值和设计的必要性。1.2MFC概述MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC,微

3、软基础类(Microsoft Foundation Classes),同VCL类似,是一种Application Framework,随微软Visual C+ 开发工具发布。目前最新版本为9.0(截止2008年11月)。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外。MFC 应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。 Windows 应用程序中,MFC 的主包含文件为“Afxwin.h”。 此外MFC的部分类为MFC/

4、ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。由于它的易用性,初学者常误认为VC+开发必须使用MFC。这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。1.2.1MFC特点MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,VC+是WinDOS下开发人员使用的专业C+ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂

5、在它之上的一个辅助软件开发包,MFC作为与VC+血肉相连的部分(注意C+和VC+的区别:C+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC+只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Delphi的关系一个道理,Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又

6、成长成一个新的程序设计语言),MFC同BC+集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC+专配的。MFC是Win API与C+的结合,API,即微软提供的WinDOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对WinDOS下应用程序的开发,使这些被开发出来的应用程序能在WinDOS下运行,比如VB,VC+,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守Wi

7、nDOS作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C+封装,这种结合一方面让用户使用微软的专业C+ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Win下用C+ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的。最后要明白MFC不

8、只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinDOS(用MFC编写的程序绝大部分都在WinDOS中运行)中实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对C+和MFC的学习中最难的部分是指针,C+面向对像程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C+版。MFC是微软封装了的API。什么意思呢?windows作为一个提供功能强大的应用程序接口编程的操作系统,的确方便了许多程序员,

9、传统的win32开发(直接使用windows的接口函数API)对于程序员来说非常的困难,因为,API函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。MFC是面向对象程序设计与Application framework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架, MFC是对WindowsAPI的封装,大大简化了我们的工作;学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。应该象背4级单词一样将这些常用类搞懂;当然不要死记,要通过看帮助、看例子、动手练习来学会它们;而且,并非每个类的内部的所有函数都要学会,要日积月累。如果真的想成

10、为高手,做个笔记本把自己认为重要的类、函数记下来,随时学习,也是很好的突击方法。1.3开发工具Visual C+6.0. Visual C+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。1.4开发环境WindowsXP.WindowsXP是基于Windows2000代码的产品

11、,同时拥有一个新的用户图形界面(叫做月神Luna),它包括了一些细微的修改,其中一些看起来是从Linux的桌面环境(desktopenvironmen)诸如KDE中获得的灵感。带有用户图形的登陆界面就是一个例子。此外,WindowsXP还引入了一个“基于人物”的用户界面,使得工具条可以访问任务的具体细节。它包括了简化了的Windows2000的用户安全特性,并整合了防火墙,以用来确保长期以来一直困扰微软的安全问题。WindowsXP的最低系统要求:计算机使用时钟频率为300MHz或更高的处理器;至少需要233MHz(单个或双处理器系统);使用IntelPentium/Celeron系列、AMD

12、K6/Athlon/Duron系列或兼容的处理器,使用128MBRAM或更高(最低支持64M,可能会影响性能和某些功能),1.5GB可用硬盘空间,SuperVGA(800x600)或分辨率更高的视频适配器和监视器,CD-ROM或DVD驱动器,键盘和Microsoft鼠标或兼容的指针设备。2 功能实现2.1功能说明该通讯录系统设计严格按照软件工程的方法从需求到测试进行了开发。系统具有良好的界面;必要的交互信息;简约美观的效果。即可单击按钮进行操作,也可直接通过键盘直接输入(快捷键操作)。即时准确地获得需要的查询信息的结果,充分降低了查找的难度和节约了时间,对人们的生活有一定的帮助。(1)可添加的

13、记录:姓名,学号,电话,EMAIL等功能(2)可以对对记录的信息进行的操作:添加,删除,修改。(3)通过向前浏览,向后浏览来查询已经记录的信息。(4)输入的原始数据、查询结果都显示在对应窗口顶部的对应一个标签中。功能模块的实现: 该系统是一个基于对话框的应用系统。采用传统的对话框设计方法。细节实现见下一节。2.2系统的实现2.2.1窗体设计利用MFC AppWinzard生成通讯录应用程序框架具体步骤如下:(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project na

14、me文本框中输入Address Book 。(2)单击OK按钮,弹出MFC AppWinzard_Step1对话框。选中单选按钮,。(3)单击Next按钮,弹出MFC AppWinzard_Step2 of4对话框,如图所示。(4)单击Next按钮,弹出MFC AppWinzard_Step3 of4对话框,如图所示。(5)单击Next按钮,弹出MFC AppWinzard_Step4 of4对话框,如图所示。单击Finish按钮,创建框架。2.2.2编辑对话框及控件资源 利用Visual C+提供的资源编辑器对对话框资源进行编辑。删除对话框中默认的OK和Cancel按钮。添加一个Edit控件

15、,其控件ID为IDC_DSPEDIT。添加若干按钮控件,其ID如表所示。按钮名称按钮ID用途添加记录(&A)IDC_BUTTON_ADD添加记录删除记录(&D)IDC_BUTTON_DELETE删除记录清除记录(&C)IDC_BUTTON_CLEAR清除记录向前浏览(&P)IDC_BUTTON_PREVIOUS向前浏览通讯录向后浏览(&N)IDC_BUTTON_NEXT向后浏览通讯录修改记录(&E)IDC_CHECK_MODIFY对保存的记录进行修改表 按钮控件资源清单2.3高级按钮控件类及其实现在对话框的各个组件添加完成以后进行各个功能实现:2.3.1添加记录相应消息函数OnButtonAd

16、d()的实现void CAddressBookView:OnButtonAdd() /界面 (CButton*)GetDlgItem(IDC_CHECK_MODIFY)-EnableWindow(false); (CButton*)GetDlgItem(IDC_BUTTON_CLEAR)- (CButton*)GetDlgItem(IDC_BUTTON_PREVIOUS)- (CButton*)GetDlgItem(IDC_BUTTON_NEXT)- (CButton*)GetDlgItem(IDC_BUTTON_ADD)-SetWindowText(_T(继续添加); (CButton*)G

17、etDlgItem(IDC_BUTTON_DELETE)-添加完毕 (CEdit*)GetDlgItem(IDC_EDIT_NAME)-EnableWindow(true); (CEdit*)GetDlgItem(IDC_EDIT_EMAIL)- (CEdit*)GetDlgItem(IDC_EDIT_PHONE)- (CEdit*)GetDlgItem(IDC_EDIT_NOEnableWindow(true); m_strName=; m_strPhone= m_strNo= m_strEmail=/清空编辑框 UpdateData(false);/刷新界面 CPerson *pListD

18、oc=new CPerson(); m_Position=m_PersonViewList-AddTail(pListDoc);/新建空人员信息添加至链表,并将当前位置移至该处 CAddressBookDoc *pDoc=GetDocument();/获得文档指针 pDoc-SetModifiedFlag();/设置文档被修改标置 (CDialog*)this)-GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME);/姓名编辑框获得焦点 / TODO: Add your control notification handler code here2.3.2删除记录按钮的响

19、应函数OnButtonDelete()实现:OnButtonDelete() CString str; GetDlgItem(IDC_BUTTON_DELETE)-GetWindowText(str); if(str=D) CObject *pOld; /临时对象指针 pOld=m_PersonViewList-GetAt(m_Position);/使其指向当前指针 m_PersonViewList-RemoveAt(m_Position); /将当前结点从列表中删除 delete pOld;/释放空间 if(m_PersonViewList-IsEmpty() /链表若为空,则调用添加生成一

20、个新结点 CAddressBookDoc *pDoc=GetDocument(); pDoc-OnNewDocument(); m_Position=m_PersonViewList-GetHeadPosition(); CAddressBookDoc *pDoc=(CAddressBookDoc*)GetDocument(); pDoc- /获得文档指针,标志文档已被修改 OnInitialUpdate();/显示列表第一个结点 else AfxMessageBox(添加完毕!); (CButton*)GetDlgItem(IDC_CHECK_MODIFY)- (CButton*)GetDl

21、gItem(IDC_BUTTON_CLEAR)- (CButton*)GetDlgItem(IDC_BUTTON_PREVIOUS)- (CButton*)GetDlgItem(IDC_BUTTON_NEXT)- (CButton*)GetDlgItem(IDC_BUTTON_ADD)-A) (CButton*)GetDlgItem(IDC_BUTTON_DELETE)- 2.3.3清除记录按钮的按钮相应函数OnButtonClear()的实现:OnButtonClear() if(m_PersonViewList-GetCount()=1) /链表若为空,则调用添加生成一个新结点没有可清空的

22、记录! return; if(MessageBox(所有的记录将被清空!,清空警告,MB_YESNO)=IDYES) /* while(!pDoc-m_PersonList.IsEmpty() /循环删除最前的结点,直到删尽为止 delete pDoc-m_PersonList.RemoveHead(); m_strName=someone m_strPhone= m_strNO= m_strEmail= UpdateData(false); CPerson *pListDoc=new CPerson(); m_Position=m_PersonViewList-/新建空人员信息添加至链表,并

23、将当前位置移至该处 pDoc- (CDialog*)this)-/姓名编辑框获得焦点*/ / TODO:2.3.4向前浏览按钮OnButtonPrevious()的代码实现:OnButtonPrevious() POSITION m_templeposition;/定义一个临时位置指针 m_templeposition=m_Position;/并使其指向当前结点的前驱结点 m_PersonViewList-GetPrev(m_templeposition);/获得当前结点位置的前一个 if(m_templeposition=NULL) /若到链表头结点 AfxMessageBox(_T(已到表头! m_Position=m_templeposition;/当前指针定位到前一个 CPerson *pListDoc=(CPerson *)m_PersonViewList- /获得前一个人员的信息 m_strName=pListDoc-m_Name; m_strPhone=pListDoc-m_Phone; m_strNO=pListDoc-m_NO m_strEmail=pListDoc-m_Email; /赋值给视图类数据成员/刷新窗口2.3.5向后浏览按钮OnButtonNext()函数实现:OnButtonNext()

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2