1、基于MFC的简易通讯录管理系统设计 基于MFC的简易通讯录管理系统设计 一、引言21世纪是IT普及的世界,到处都存在IT的身影,实时通讯已是占据它不可或缺的地位。一个好的、强大的通讯录系统的好坏,不但可以直接影响到企业、个人的人际关系,而且会间接的影响到企业、个人经济利益和社会地位。随着社会的发展,科技的进步,计算机的应用在社会各领域中都得到了普及,越来越多的人都感受到利用计算机进行各类管理的科学和便捷,利用计算机进行通讯管理已经是一种趋势。MFC是Microsoft Foundation Class Library(微软基础类库)的缩写形式。它是C+的类集,提供面向对象框架,利用这个框架,程
2、序员可以轻松的创建Windows应用程序。基于MFC的通讯管理系统具有美观的窗口界面、充足可靠的信息数据、简单方便的维护手段和灵活多变的查询方式以及快捷而准确的查询结果。 二、需求分析 通讯录使我们每个人必不可少的一个工具,利用通讯录我们可以对同学、朋友、同事等信息进行有效的管理,包括查询、添加、删除和修改等。 此通讯录系统利用本着人性化的设计,此系统包括了联系人的姓名、电话、地址、E-mail、和备注等信息,利用此系统可以对联系人进行查询、增加、修改、删除等操作,基本上可以满足我们对通讯录的需要。 基于MFC简易通讯录管理系统具有以下特点:1,操作简单,所有人不需学习就可以使用的系统;2,输
3、入简单,输入框都有相关提示,我们可以按照提示输入相关信息;3,界面显示信息完整,界面上每一个编辑框显示一条联系人信息,很清楚地显示了联系人的全部信息。数据库的操作与运行相比文件较复杂,一般对安全性较高的大型信息管理系统采用数据库方式,这里我们采用文件存取方式即可。三、整体设计1、系统框图 2、模块功能(1) 添加记录:可以增加通讯录相关信息;(2) 修改记录:可以修改通讯录相关信息;(3) 查询记录:可以查找通讯录中每个人的信息;(4) 删除记录:可以删除通讯录单条个人信息;(5) 清除记录:可以清除通讯录整个组信息;四、代码编写 1、定义一个Cperson类 程序中处理的学生信息是一个数据序
4、列,即线性表结构。以Coject为基类,公有派生Cperson类。中的代码:class CPerson:public CObject public: DECLARE_SERIAL(CPerson) /对类进行串行化宏定义 CPerson(); virtual CPerson(); CString m_Name; /姓名 CString m_Phone; /电话 CString m_Company; /公司 CString m_Email; /Emailpublic: virtual void Serialize(CArchive& ar);中编辑的初始化的代码CPerson:CPerson()
5、 /初始化人员信息(m_Name,m_Phone,m_Company,m_Email) m_Name=; /姓名 m_Phone=; /电话 m_Company=; /公司 m_Email=; /Email2、定义文档类数据成员m_StudengtList 在中编写代码:class CAddressBookView : public CFormViewprotected: / create from serialization only CAddressBookView(); DECLARE_DYNCREATE(CAddressBookView)public: CAddressBookDoc*
6、 GetDocument();public: virtual CAddressBookView();protected: POSITION m_Position; /指向链表中当前结点的指针 CObList *m_PersonViewList;/指向文档类成员(双向链表)的指针protected: DECLARE_MESSAGE_MAP();3、初始化文档类成员#include #include #include #include #include void CAddressBookView:OnInitialUpdate() CFormView:OnInitialUpdate(); GetP
7、arentFrame()-RecalcLayout(); ResizeParentToFit(); CAddressBookDoc *pDoc=GetDocument();/获得文档类指针 m_PersonViewList=&(pDoc-m_PersonList);/视图类指针指向文档类对象 m_Position=m_PersonViewList-GetHeadPosition();/获得头结点位置 CPerson*pListDoc=(CPerson *)m_PersonViewList-GetAt(m_Position);/获得头一个数据 m_strName=pListDoc-m_Name;
8、 m_strPhone=pListDoc-m_Phone; m_strCompany=pListDoc-m_Company; m_strEmail=pListDoc-m_Email;/将表头结点数据赋给视图类成员变量 UpdateData(false);/刷新窗口 (CDialog*)this)-GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME); /将光标停在姓名编辑框4、建立文档类和视图类数据成员之间的关系编写命令按钮代码:(1)添加记录void CAddressBookView:OnButtonAdd() /界面 (CButton*)GetDlgItem(IDC_
9、CHECK_MODIFY)-EnableWindow(false); (CButton*)GetDlgItem(IDC_BUTTON_CLEAR)-EnableWindow(false); (CButton*)GetDlgItem(IDC_BUTTON_PREVIOUS)-EnableWindow(false); (CButton*)GetDlgItem(IDC_BUTTON_NEXT)-EnableWindow(false); (CButton*)GetDlgItem(IDC_BUTTON_ADD)-SetWindowText(_T(继续添加); (CButton*)GetDlgItem(I
10、DC_BUTTON_DELETE)-SetWindowText(_T(添加完毕); (CEdit*)GetDlgItem(IDC_EDIT_NAME)-EnableWindow(true); (CEdit*)GetDlgItem(IDC_EDIT_EMAIL)-EnableWindow(true); (CEdit*)GetDlgItem(IDC_EDIT_PHONE)-EnableWindow(true); (CEdit*)GetDlgItem(IDC_EDIT_COMPANY)-EnableWindow(true); m_strName=; m_strPhone=; m_strCompany
11、=; m_strEmail=;/清空编辑框 UpdateData(false);/刷新界面 CPerson *pListDoc=new CPerson(); m_Position=m_PersonViewList-AddTail(pListDoc); /新建空人员信息添加至链表,并将当前位置移至该处 CAddressBookDoc *pDoc=GetDocument();/获得文档指针 pDoc-SetModifiedFlag();/设置文档被修改标置 (CDialog*)this)-GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME);/姓名编辑框获得焦点 / TODO
12、: Add your control notification handler code here(2)删除记录void CAddressBookView: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); /将当前结点从列表中删除 d
13、elete pOld;/释放空间 if(m_PersonViewList-IsEmpty() /链表若为空,则调用添加生成一个新结点 CAddressBookDoc *pDoc=GetDocument();/获得文档指针 pDoc-OnNewDocument(); m_Position=m_PersonViewList-GetHeadPosition(); CAddressBookDoc *pDoc=(CAddressBookDoc*)GetDocument(); pDoc-SetModifiedFlag(); /获得文档指针,标志文档已被修改 OnInitialUpdate();/显示列表第
14、一个结点 else AfxMessageBox(添加完毕!); (CButton*)GetDlgItem(IDC_CHECK_MODIFY)-EnableWindow(true); (CButton*)GetDlgItem(IDC_BUTTON_CLEAR)-EnableWindow(true); (CButton*)GetDlgItem(IDC_BUTTON_PREVIOUS)-EnableWindow(true); (CButton*)GetDlgItem(IDC_BUTTON_NEXT)-EnableWindow(true); (CButton*)GetDlgItem(IDC_BUTTON_ADD)-SetWindowText(_T(添加记录(&A); (CButton*)GetDlgItem(IDC_BUTTON_DELETE)-SetWindowText(_T(删除记录(&D); (CEdit*)GetDlgItem(IDC_EDIT_NAME)-EnableWindow(false); (CEdit*)GetDlgItem(IDC_EDIT_EMAIL)-EnableWindow(false); (CEdit*)GetDlgItem(IDC_EDIT_PHONE)-EnableWindow(false);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1