基于MFC的简易通讯录管理系统设计.docx

上传人:b****3 文档编号:3098233 上传时间:2022-11-17 格式:DOCX 页数:10 大小:18.89KB
下载 相关 举报
基于MFC的简易通讯录管理系统设计.docx_第1页
第1页 / 共10页
基于MFC的简易通讯录管理系统设计.docx_第2页
第2页 / 共10页
基于MFC的简易通讯录管理系统设计.docx_第3页
第3页 / 共10页
基于MFC的简易通讯录管理系统设计.docx_第4页
第4页 / 共10页
基于MFC的简易通讯录管理系统设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于MFC的简易通讯录管理系统设计.docx

《基于MFC的简易通讯录管理系统设计.docx》由会员分享,可在线阅读,更多相关《基于MFC的简易通讯录管理系统设计.docx(10页珍藏版)》请在冰豆网上搜索。

基于MFC的简易通讯录管理系统设计.docx

基于MFC的简易通讯录管理系统设计

 

基于MFC的简易通讯录管理系统设计

 

 

 

一、引言

21世纪是IT普及的世界,到处都存在IT的身影,实时通讯已是占据它不可或缺的地位。

一个好的、强大的通讯录系统的好坏,不但可以直接影响到企业、个人的人际关系,而且会间接的影响到企业、个人经济利益和社会地位。

随着社会的发展,科技的进步,计算机的应用在社会各领域中都得到了普及,越来越多的人都感受到利用计算机进行各类管理的科学和便捷,利用计算机进行通讯管理已经是一种趋势。

MFC是MicrosoftFoundationClassLibrary(微软基础类库)的缩写形式。

它是C++的类集,提供面向对象框架,利用这个框架,程序员可以轻松的创建Windows应用程序。

基于MFC的通讯管理系统具有美观的窗口界面、充足可靠的信息数据、简单方便的维护手段和灵活多变的查询方式以及快捷而准确的查询结果。

二、需求分析

通讯录使我们每个人必不可少的一个工具,利用通讯录我们可以对同学、朋友、同事等信息进行有效的管理,包括查询、添加、删除和修改等。

此通讯录系统利用本着人性化的设计,此系统包括了联系人的姓名、电话、地址、E-mail、和备注等信息,利用此系统可以对联系人进行查询、增加、修改、删除等操作,基本上可以满足我们对通讯录的需要。

基于MFC简易通讯录管理系统具有以下特点:

1,操作简单,所有人不需学习就可以使用的系统;2,输入简单,输入框都有相关提示,我们可以按照提示输入相关信息;3,界面显示信息完整,界面上每一个编辑框显示一条联系人信息,很清楚地显示了联系人的全部信息。

数据库的操作与运行相比文件较复杂,一般对安全性较高的大型信息管理系统采用数据库方式,这里我们采用文件存取方式即可。

三、整体设计

1、系统框图

2、模块功能

(1)添加记录:

可以增加通讯录相关信息;

(2)修改记录:

可以修改通讯录相关信息;

(3)查询记录:

可以查找通讯录中每个人的信息;

(4)删除记录:

可以删除通讯录单条个人信息;

(5)清除记录:

可以清除通讯录整个组信息;

四、代码编写

1、定义一个Cperson类

程序中处理的学生信息是一个数据序列,即线性表结构。

以Coject为基类,公有派生Cperson类。

中的代码:

classCPerson:

publicCObject

{

public:

DECLARE_SERIAL(CPerson)//对类进行串行化宏定义

CPerson();

virtual~CPerson();

CStringm_Name;//姓名

CStringm_Phone;//电话

CStringm_Company;//公司

CStringm_Email;//Email

public:

virtualvoidSerialize(CArchive&ar);

};

中编辑的初始化的代码

CPerson:

:

CPerson()

{

//初始化人员信息(m_Name,m_Phone,m_Company,m_Email)

m_Name="";//姓名

m_Phone="";//电话

m_Company="";//公司

m_Email="";//Email

}

2、定义文档类数据成员m_StudengtList

在中编写代码:

classCAddressBookView:

publicCFormView

{

protected:

//createfromserializationonly

CAddressBookView();

DECLARE_DYNCREATE(CAddressBookView)

public:

CAddressBookDoc*GetDocument();

public:

virtual~CAddressBookView();

protected:

POSITIONm_Position;//指向链表中当前结点的指针

CObList*m_PersonViewList;//指向文档类成员(双向链表)的指针

protected:

DECLARE_MESSAGE_MAP()

};

3、初始化文档类成员

#include""

#include""

#include""

#include""

#include""

voidCAddressBookView:

:

OnInitialUpdate()

{

CFormView:

:

OnInitialUpdate();

GetParentFrame()->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;

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)添加记录

voidCAddressBookView:

:

OnButtonAdd()

{

//界面

((CButton*)GetDlgItem(IDC_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(IDC_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="";

m_strEmail="";//清空编辑框

UpdateData(false);//刷新界面

CPerson*pListDoc=newCPerson();

m_Position=m_PersonViewList->AddTail(pListDoc);

//新建空人员信息添加至链表,并将当前位置移至该处

CAddressBookDoc*pDoc=GetDocument();//获得文档指针

pDoc->SetModifiedFlag();//设置文档被修改标置

((CDialog*)this)->GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME));//姓名编辑框获得焦点

//TODO:

Addyourcontrolnotificationhandlercodehere

}

(2)删除记录

voidCAddressBookView:

:

OnButtonDelete()

{

CStringstr;

GetDlgItem(IDC_BUTTON_DELETE)->GetWindowText(str);

if(str=="删除记录(&D)")

{

CObject*pOld;//临时对象指针

pOld=m_PersonViewList->GetAt(m_Position);//使其指向当前指针

m_PersonViewList->RemoveAt(m_Position);//将当前结点从列表中删除

deletepOld;//释放空间

if(m_PersonViewList->IsEmpty())//链表若为空,则调用添加生成一个新结点

{

CAddressBookDoc*pDoc=GetDocument();//获得文档指针

pDoc->OnNewDocument();

m_Position=m_PersonViewList->GetHeadPosition();

}

CAddressBookDoc*pDoc=(CAddressBookDoc*)GetDocument();

pDoc->SetModifiedFlag();//获得文档指针,标志文档已被修改

OnInitialUpdate();//显示列表第一个结点

}

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