VC结合Access制作通讯录程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC结合Access制作通讯录程序

设计思路:

分层:界面层,数据访问层,数据库;数据访问层的作用是为界面层提供一个数据访问接口,隔离界面层和数据库;界面层不需要知道采用的哪种数据库,只需要调用数据访问层提供的接口来完成各种操作;

1.新建一个基于对话框的MFC程序,命名CallList

2.设计程序界面如下图:

图片看不清楚?请点击这里查看原图(大图)。

3.数据访问层的实现:

在StdAfx.h中添加#import "c:\Program Files\Common

Files\System\ADO\msado15.dll"no_namespace rename("EOF", "EndOfFile")

新建一个类CDataSource,作用是封装数据层,定义如下

该类对外提供的方法是一些基本数据库操作,用户可根据需要进行添加。

4.对各种方法的实现,本例中采用的是ADO访问,所以定义了m_pConn和m_pRecordset 两个对象。

实现InitData,作用是初始化数据库访问模块,包括数据库连接的初始化、记录集的初始化和当前数据库中最大ID的初始化,实现代码为:

和InitData方法对应的是FreeData方法,作用是关闭打开的记录集和数据库并释放到记录集和数据库指针,注意该函数在CDataSource的析构函数中调用,实现代码为:

接来下实现数据指针移动函数,这些函数是对ADO数据指针移动操作的封装:

下面实现的是当前记录指针位置的函数:

其中IsBOF和IsEOF函数是对ADO的直接封装,很容易理解,接来下实现设置和返回记录值的函数

最后要实现的是记录集的新建、更新和删除函数,代码如下:

至此,数据访问层类CDataSource已经实现了。整体上看,是对ADO操作的封装,更改数据库时,只需重写InitData函数即可。

5.界面层的实现

界面层是对界面显示控制的封装,本例模块比较简单,可将代码直接写入CCallList 类中,在CCallList类中定义一个CDataSource类对象: CDataSource m_ds;在对话框初始化函数OnIninDialog中初始化m_ds的数据,添加:m_ds.InitData();

为每个编辑框定义一个CEdit类型的对象,如图

图片看不清楚?请点击这里查看原图(大图)。

为CCaiiListDlg类添加函数void LoadData,作用是将当前记录的内容装载到界面中

为CCaiiListDlg类添加函数BOOL IsNeedUpdate(),作用是判断用户对界面上的数据是否进行了修改,判断的方法是使用记录中的字段和当前界面中数据比较,如有不同,说明用户修改了具体代码为:

为每个按钮定义一个CButton类型的对象,如上图2中为CCallListDlg类添加函数void RefreshUpdateBtn(),作用是刷新“更新”按钮的可用与否;添加void RefreshView(),作用是刷新界面各控件的可用性,两个函数的代码如下:

为每一个按钮定义一个 BN_CLICKED 事件,编辑代码如下:

为每个编辑框定义一个EN_CHARGE事件,编辑代码为:

至此基本信息和按钮部分已经设定完毕,对数据库的表格显示部分操作为:

在对话框编辑窗口右键单击,选择 Insert ActiveX Control ,插入 Microsoft ADO Data Control 6.0 (SP6) 控件,设置其属性选中Control页签——Use Connection String ,按Build按钮,本例中选择 Microsoft Jet 4.0 OLE DB Provider,点击下一步,写入

C:\\Demo.mdb ; 选中RecordSource页签,在Command Type中选择 2-adCmdTable ,在下面的表中选择储存通讯录的表名;

插入Microsoft Hierarchical FlexGrid Control控件

在其属性的ALL标签页中将DataSourcr属性设置为 IDC_ADODC1

编译运行该程序吧!

相关文档
最新文档