基于C++的通讯录管理系统课程设计.docx

上传人:b****5 文档编号:30213203 上传时间:2023-08-07 格式:DOCX 页数:33 大小:168.24KB
下载 相关 举报
基于C++的通讯录管理系统课程设计.docx_第1页
第1页 / 共33页
基于C++的通讯录管理系统课程设计.docx_第2页
第2页 / 共33页
基于C++的通讯录管理系统课程设计.docx_第3页
第3页 / 共33页
基于C++的通讯录管理系统课程设计.docx_第4页
第4页 / 共33页
基于C++的通讯录管理系统课程设计.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

基于C++的通讯录管理系统课程设计.docx

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

基于C++的通讯录管理系统课程设计.docx

基于C++的通讯录管理系统课程设计

 

荆楚理工学院

面向对象程序设计课程设计成果

 

学院:

电子信息工程学院_班级:

2014级物联网工程2班

学生姓名:

王一中学号:

2014401030215

设计地点(单位):

D1202

设计题目:

电话薄管理系统

完成日期:

2017年6月2日

 

指导教师评语:

_________________________________

成绩(五级记分制):

教师签名:

 

目录

一、设计目的和要求·························································3

1.1设计目的····························································3

1.2设计要求····························································3

二、总体设计方案·····························································4

2.1系统分析····························································4

2.1.1系统设计意义··················································4

2.1.2系统设计需求分析··············································4

2.1.3MFC简介·······················································4

2.2系统组成框图························································5

2.3各模块功能设计······················································6

2.3.1各模块功能····················································6

2.3.2各文本框功能设计··············································6

三、详细系统设计····························································6

3.1界面设计····························································6

3.1.1MFC框架界面设计···············································6

3.2数据库设计··························································7

3.3模块功能说明························································7

3.3.1控件的通知消息机制············································7

3.3.2各按钮功能····················································8

四、调试与测试·····························································9

4.1调试分析与讨论······················································9

4.2实际完成情况说明····················································10

4.3本设计改进建议·····················································11

五、源程序清单····························································12

六、总结···································································23

七、主要参考文献···························································24

一、设计目的和要求

1.1设计目的

随着计算机技术的飞速发展,计算机的普及,利用计算机实现通讯管理已经是这一趋势的必然要求。

计算机管理具有无法比拟的检索迅速、可靠性高、存储量大、低成本、方便快捷的巨大优势。

这给人们带来极大的方便,尤其是商务人士,免去了人们记忆大量信息的痛苦。

而一个高效地信息管理系统可以为人们的生活带来极大的便利。

1.通过这次课程设计,实际掌握面向对象程序设计方法,了解C++面向对象程序设计的方法与技巧,有效地、深刻地理解课程设计的内容,体会理论、方法和设计原则,培养自己分析思考和解决问题的能力,使学生具备面向对象程序设计开发工具设计实际系统的能力。

2.VC++6.0是Microsoft公司推出的一个功能强大的可视化软件开发工具,它是目前为止在Windows环境下进行大型软件开发的首选。

通过这次课程设计,在熟练掌握C++面向对象设计的程序设计基础上,掌握VC++6.0软件的使用,通过自学MFC,完成简单的二维平面的绘画,增强学生软件开发能力。

3.通过这次课程设计,尝试利用所学的知识解决实际问题,学以致用。

MFC是建立自C++的基础上的,所以C/C++语言的重要性不言而喻。

在进行课程设计中,深入的理解C++语言的封装性、派生性、重载性的优势,理解MFC的消息处理机制,提高学生工程实践能力。

1.2设计要求

1.设计一个简单的电话薄管理系统,并使用VC++6.0做出可视化界面,该电话薄默认存储了一些联系人信息,该系统能显示联系人的姓名、电话、邮编和地址。

2.具有信息删除和添加功能,能够添加和删除联系人,当选中某个联系人姓名时,点击“删除”,就可以删除该联系人和与之相关的信息。

当点击“添加”时,可以向电话薄中添加新的联系人,并编辑联系人姓名、电话、地址和邮编,点击“更新信息”时,就成功添加了新的联系人。

3.具有查询信息的功能,可以按电话查找或按姓名查找通讯录中的联系人。

输入联系人姓名,并点击“按姓名查找”,就能显示该联系人的信息,包括同名的联系人。

输入联系人电话,并点击“按电话查找”,就能显示该联系人信息。

4.在进行程序设计时,定义相关的类,为相应控件添加时间响应函数。

 

二、总体方案设计

该系统基于VC++6.0开发环境,利用MFC做出电话薄系统的可视化界面。

首先要设计出电话薄的总体框架,设计其功能:

添加、删除、更新信息、姓名、电话、地址、邮编。

并为其添加相应控件,建立数据库,链接数据库。

最后为其控件添加响应的响应函数,并完成程序设计。

2.1系统分析

2.1.1系统设计意义

管理信息系统是一个将企业生产和经营中的各种内、外信息进行收集、整理、传递,并有序地存储,以用于经营和决策,是企业增强效率的信息系统。

它能够使企业更加及时、准确、全面、详细地了解所需哟的信息数据。

同时管理信息系统对各种信息数据的进一步加工,能使企业领导层的生产、经营、管理决策依据更加充分,具有合理性、科学性,从而方便人们管理各种信息。

随着社会的发展、关系广泛,人们之间采用电话沟通越来越多,电话号码也就越来越多。

要求查找一个电话号码也要节省时间和精力,要快捷方便。

因此,这次课程设计设计了一款低成本、可靠性好、管理方便的电话薄管理系统。

2.1.2系统设计需求分析

话薄是日常工作生活中常用的记录工具,主要是对个人的人脉通讯信息的管理,使个人信息管理更加科学化、便捷化。

要能实现通讯录的信息管理,基本信息包括:

姓名、电话号码、邮编和地址;利用数据库的强大的管理功能,可以大大提高个人查找所需基本信息的效率。

本系统应该满足以下几点:

(1)操作界面友好,信息查询灵活、方便、快捷、准确、数据存储安全可靠;

(2)对联系人的操作简单,可以方便地进行建立、修改和删除;

(3)可以根据需要修改联系人的基本信息,并实现系统的易维护性和易操作性。

2.1.3MFC简介

MFC,微软基础类(MicrosoftFoundationClasses),同VCL类似,是一种应用程序框架,随微软VisualC++开发工具发布,该类库提供一组通用的可重用的类库供开发人员使用。

大部分类均从CObject直接或间接派生,只有少部分类例外。

MFC应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。

MFC提供了MFCAppWizard自动生成框架。

Windows应用程序中,MFC的主包含文件为"Afxwin.h"。

此外MFC的部分类为MFC/ATL通用,可以在Win32应用程序中单独包含并使用这些类。

由于它的易用性,初学者常误认为VC++开发必须使用MFC。

这种想法是错误的。

作为ApplicationFramework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32程序设计。

2.2系统组成框图

电话薄管理系统的功能结构见下图:

包含查询记录模块、更新记录模块、输出信息模块、数据库模块等。

 

电话薄管理系统功能模块图

2.3各模块功能设计

2.3.1各模块功能

1.查询记录模块:

可以实现多种方式的模糊查询,可以通过姓名、电话等查询结果,可在列表中显示出来,其分别对应相关函数。

2.个人信息模块:

为便于通讯记录的管理,本系统能通过操作界面进行添加、修改、删除记录。

要实现应用程序对数据库的操作,还须向应用程序添加相关的操作代码。

3.输出信息模块:

用户可以通过人机界面,对数据库中的记录进行逐条查询,通过最前、向前、向后、最后按钮,逐次显示电话薄中记录的信息,还可通过成员列表显示所有记录。

4.数据库模块:

系统中的数据通过数据库模块存入数据库,当进行记录的查询、修改、删除、添加等操作时,数据库模块从数据库中读取相应记录供给用户进行相应操作。

2.3.2各文本框功能

(1)静态文本框

静态文本框一般都是对话框或其他窗口的子窗口,而且是可见的,用于显示文字说明。

本系统中的静态文本框有姓名、电话、邮编、地址、请输入查找内容、查找记录和个人信息等。

(2)编辑框

编辑框是可以编辑的,在系统中,我们可以往其中输入相关信息,最后可以通过控件来对其进行修改。

三、系统详细设计

3.1界面设计

3.1.1MFC框架界面设计

在进行界面设计时,用到了一些控件,主要有静态文本框、编辑框、按钮、列表框等,并为相应控件添加了响应函数,实现其相应的功能。

最后生成的界面如图所示:

3.2数据库设计

系统中的数据通过数据库模块存入数据库,当进行记录的查询、修改、删除、添加等操作时,数据库模块从数据库中读取相应记录供给用户进行相应操作。

本系统中通过voidCPhoneBookDlg:

:

DataInit()函数来对该系统进行初始化,并建立文件,存储数据。

在进行数据库的操作流程设计时,操作流程图如下:

返回

单击

单击

单击

提交

提交

添加记录流程图

3.3模块功能说明

3.3.1控件的通知消息机制

当控件有事件发生时,它会向父窗口发送通知消息。

最常发生的事件就是鼠标单击了,此时控件会向父窗口发送BN_CLICKED消息,实际上也就是给父窗口发送WM_COMMAND消息,在wParam参数中包含有通知消息码(鼠标单击时的通知消息码就是BN_CLICKED)和控件ID,lParam参数中包含了控件的句柄。

在MFC消息映射机制概述中,鸡啄米讲过,消息就是由三个部分组成:

消息值、wParam参数和lParam参数。

控件的消息映射宏的格式大致是:

ON_通知消息码(nID,memberFun),nID参数是控件的ID,memberFun参数是消息处理函数名。

例如,ON_BN_CLICKED(IDC_BUTTON1,&CDlg:

:

OnBnClickedButton1)。

此消息映射宏应添加到BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间。

消息处理函数声明的语法形式为:

afx_msgvoidmemberFun()。

3.3.2各按钮功能

(1)处理“添加”按钮

点击“添加”按钮后,在voidCPhoneBookDlg:

:

OnAdd()函数中,在链表的结尾添加一条记录,并将默认将新记录的姓名置为“新名字”,其它项为空。

输入输出均为空,这只是一个过程。

之后,我们可以添加联系人的相关信息。

(2)处理“删除”按钮

点击“删除”按钮后,在voidCPhoneBookDlg:

:

OnDelete()函数中,通过m_NameList.GetCurSel()得到所选记录在列表框中的序列号,最后确认要删除后,通过m_NameList.DeleteString(sel)在列表框中删除记录。

删除完成后,并在结尾调用voidCPhoneBookDlg:

:

OnSelchangeNamelist()函数,移动指针到指定结点的位置。

(3)处理“更新信息”按钮

点击“更新信息”按钮后,在voidCPhoneBookDlg:

:

OnUpdate()函数中,完成修改当前记录的操作。

首先通过m_NameList.GetCurSel()得到所选择记录在列表框中的序号,然后调用strcpy(char*,constchar*)函数,将更新的数据从文本输入框复制到结点,最后完成信息更新的操作。

(4)处理“全部清除”按钮

点击“全部清除”按钮后,在voidCPhoneBookDlg:

:

OnClear()函数中,完成清除文本框中所有内容的操作。

(5)处理“按姓名查找”按钮

在“请输入查找内容”栏输入联系人姓名后,点击“按姓名查找”按钮,在voidCPhoneBookDlg:

:

OnSearchbyname()函数中,完成对联系人查找的操作。

直接调用FindString函数查找并得到序号,若查找不到,则提示找不到,最后调用SetCurSel(sel)函数选中查找到的记录。

(6)处理“按电话查找”按钮

在“请输入查找内容”栏输入联系人电话号码后,点击“按电话查找”按钮,在voidCPhoneBookDlg:

:

OnSearchbyphone()函数中,完成对联系人查找的操作。

通过m_NameList.GetCurSel()得到当前记录的序号,然后判断是否匹配成功,最后选中找到的记录。

(7)处理“×”按钮

当点击右上角的“×”按钮时,便退出系统。

调用voidCPhoneBookDlg:

:

OnClose()函数,在程序结束时,能够将数据保存到系统中。

通过fwrite(constvoid*,size_t,size_t,FILE*)函数将数据写入文件中,同时将指向节点的指针后移。

最后在退出时保存数据。

四、调试与测试

4.1调试分析与讨论

我们组做的是“电话薄管理系统”,在进行程序设计时,犯过一些错误。

刚开始,对MFC的界面不太熟悉,花了几天时间来学习MFC的相关知识。

刚开始犯的错误是建错了工程,以至于在建立类时总出错,浪费了几个小时才发现要建立基于对话框的程序。

最后在完成程序设计后,肯定是不可能一下子就成功的,程序会出现各种各样的错误,导致不能编译通过。

刚开始出现的第一个错误是:

后来通过查阅资料才知道,是因为计算机丢失补丁,去网上下载了相关补丁就好了,接下来就是调试代码了。

刚开始由于自己的粗心,代码中的类名敲错了,结果发现一直报错,找了好久才发现是自己不细心敲错了字母导致的。

刚开始我和曾鹏讨论系统的功能,要调用那些函数,曾鹏想用ACCess中的数据库来做,我后来想到我们之前学过的C语言知识,有fopen()、fread()等函数,可以实现文件和信息的管理。

经过讨论,我们决定用这种方式来建立数据库,省去了再弄Access的精力。

这个程序讲的是信息管理,我们要管理手机联系人的信息,能够实现多种功能,说起来简单,做起来时不容易。

在犯错误时,真的很后悔自己的编程功底不牢固,现在就需要付出更多的时间来弥补在做课程设计时,每一次的错误对我来说都是一次进步,只有把程序的错误解决了,才能理解程序的作用,自己动脑解决了每一个bug,都是很有成就感的事。

有些人可以随口说出常用的函数,走了一条捷径,而不知道的人就要花时间去找那个函数,或者说自己花时间来写代码实现那个函数的功能。

所以,在后面的调试过程中,我们都是认真分析思考每一个错误,直到成功编译通过为止。

4.2实际完成的情况说明

经过调试,最终能够实现对联系人信息的管理,可方便地进行建立、修改、删除,查找联系人;也可以根据需要修改联系人的基本信息,并实现系统的易维护性和易操作性。

4.3本设计改进建议

该系统可以实现预期的功能,但是为了体现智能化,可以在设计中加入打印、拨号等功能,当我们需要统计手机电话薄的信息时,点击“打印”按钮就可以将电话薄中的联系人信息打印出来。

同时,我们可以选中打印部分我们想要的联系人信息,实现多功能。

也可以在联系人信息中可以再详细一些,加入邮箱、公司等信息,还可以进行分组,方便日后管理。

在进行程序设计时,可以对重要部分代码进行注释,在对每一个控件添加响应函数时,可以对其命名更加规范,使用相应的英文代替,方便阅读。

另外,也要养成良好的代码风格,对重要部分代码进行注释。

 

五、源程序清单

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CPhoneBookDlgdialog

CPhoneBookDlg:

:

CPhoneBookDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CPhoneBookDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CPhoneBookDlg)

m_szAddress=_T("");

m_szCode=_T("");

m_szName=_T("");

m_szPhone=_T("");

m_szSearchContent=_T("");

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCPhoneBookDlg:

:

DoDataExchange(CDataExchange*pDX)对话框控件和成员变量交换的函数

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CPhoneBookDlg)

DDX_Control(pDX,IDC_ADD,m_Button_Add);

DDX_Control(pDX,IDC_NAME,m_IDC_Name);

DDX_Control(pDX,IDC_NAMELIST,m_NameList);

DDX_Text(pDX,IDC_ADDRESS,m_szAddress);

DDX_Text(pDX,IDC_CODE,m_szCode);

DDX_Text(pDX,IDC_NAME,m_szName);

DDX_Text(pDX,IDC_PHONE,m_szPhone);

DDX_Text(pDX,IDC_SEARCHCONTENT,m_szSearchContent);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CPhoneBookDlg,CDialog)

//{{AFX_MSG_MAP(CPhoneBookDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_UPDATE,OnUpdate)

ON_BN_CLICKED(IDC_ADD,OnAdd)

ON_LBN_SELCHANGE(IDC_NAMELIST,OnSelchangeNamelist)

ON_BN_CLICKED(IDC_DELETE,OnDelete)

ON_BN_CLICKED(IDC_CLEAR,OnClear)

ON_WM_CLOSE()

ON_BN_CLICKED(IDC_ABOUT,OnAbout)

ON_B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1