个人通讯录管理.docx

上传人:b****1 文档编号:2891912 上传时间:2023-05-04 格式:DOCX 页数:67 大小:27.68KB
下载 相关 举报
个人通讯录管理.docx_第1页
第1页 / 共67页
个人通讯录管理.docx_第2页
第2页 / 共67页
个人通讯录管理.docx_第3页
第3页 / 共67页
个人通讯录管理.docx_第4页
第4页 / 共67页
个人通讯录管理.docx_第5页
第5页 / 共67页
个人通讯录管理.docx_第6页
第6页 / 共67页
个人通讯录管理.docx_第7页
第7页 / 共67页
个人通讯录管理.docx_第8页
第8页 / 共67页
个人通讯录管理.docx_第9页
第9页 / 共67页
个人通讯录管理.docx_第10页
第10页 / 共67页
个人通讯录管理.docx_第11页
第11页 / 共67页
个人通讯录管理.docx_第12页
第12页 / 共67页
个人通讯录管理.docx_第13页
第13页 / 共67页
个人通讯录管理.docx_第14页
第14页 / 共67页
个人通讯录管理.docx_第15页
第15页 / 共67页
个人通讯录管理.docx_第16页
第16页 / 共67页
个人通讯录管理.docx_第17页
第17页 / 共67页
个人通讯录管理.docx_第18页
第18页 / 共67页
个人通讯录管理.docx_第19页
第19页 / 共67页
个人通讯录管理.docx_第20页
第20页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

个人通讯录管理.docx

《个人通讯录管理.docx》由会员分享,可在线阅读,更多相关《个人通讯录管理.docx(67页珍藏版)》请在冰点文库上搜索。

个人通讯录管理.docx

个人通讯录管理

班级:

041212

学号:

04121134

姓名:

李春红

个人通讯录管理系统

一、设计要求

对于同学、朋友、同事等会与自己有联系的人员,设计一个数据库管理系统辅助管理各位联系人的信息。

能够按联系人分类、姓名、所在地区等方式查询联系人的情况,实现对联系人的添加、修改、删除、查询、统计、报表打印等功能。

具体功能如下:

1、联系人的通讯信息管理:

录入、修改、删除、查询有关联系人的电话、邮箱、传真、通讯地址等信息。

2、单位信息管理:

对所有联系人所在的单位进行录入、修改、删除,并能按单位查询联系人信息。

3、联系人类别管理:

以与自己的关系作为分类方式,对类别进行录入、修改、删除;并能按类别查询联系人信息。

4、建立报表,按类别统计每一类联系人的情况。

二、知识点应用

1、建立数据库、数据表

2、用向导建立数据窗体,实现对数据表的记录进行定位、添加和删除操作

3、建立选择查询、参数查询、统计查询实现查询操作

4、用报表向导建立报表

三、设计步骤

1、建立数据库和数据表

1)建立数据库

在Access的窗口右侧的“新建文件”对话框中选择“新建/空数据库”,在弹出的“文件新建数据库”对话框中输入数据库的名称――“个人通讯录管理”,确定保存位置,并按下“创建”按钮。

2)建立数据表

在“个人通讯录管理”数据库中选择“表”,并单击“新建”。

在数据表视图中输入字段名、选择字段类型、确定字段宽度。

在本案例中需要建立如下三个数据表:

A、组信息表

字段名称

字段类型

字段大小

允许为空

备注

groupid

长整形

主键,自动编号

groupname

文本

50

组名

B、联系人通讯录表

字段名称

字段类型

字段大小

允许为空

备注

Peopleid

文本

主键

name

文本

30

sex

文本

groupid

长整形

所属组ID,外键

companyName

文本

50

companyDepartment

文本

20

email

文本

30

familyPhone

文本

20

MSN

文本

50

QQ

文本

50

homepage

文本

50

otherInfo

备注

C、相片表:

字段名称

字段类型

字段大小

允许为空

备注

photoID

长整型

主键

peopleID

长整型

外键

photoFile

文本

255

3)建立数据表间的关系

选择“工具/关系”菜单,为三张数据表建立关系。

三张表间的关系为:

联系人信息表和单位信息表通过“单位名称”字段关联;联系人信息表和联系人类别表通过类别字段关联。

2、建立数据窗体对数据表记录进行定位、编辑、添加和删除等操作

1)用向导建立输入联系人信息的窗体

1.在数据库窗口中选择“窗体”项,双击“使用向导创建窗体”,启动“窗体向导”

2.单击“表/查询”下拉列表框右侧的箭头,列出所有有效的表或者查询数据源,从中选择“表/联系人基本信息表”。

在“可用字段”列表中会显示出数据表中的所有字段,从中选择需要在新建的窗体中显示的字段,使用中间的按钮将它们移动到“选定的字段”列表中。

单击“下一步”按钮。

3.进行“窗体布局”的设置,这里选择“纵栏表”,单击“下一步”按钮。

4.设置窗体的样式,在对话框右侧的列表框中列出了窗体的样式,选中的样式效果在对话框的左侧显示,这里选择“宣纸”。

5.在这一步中可为所创建的窗体设置一个标题,此处输入“录入联系人基本信息”,单击“完成”按钮。

“录入联系人信息”窗体可以对联系人信息进行定位、编辑、添加和删除等操作。

2)建立输入单位信息的窗体

用向导快速建立输入单位信息的窗体。

在数据库窗口中选择“窗体”项,单击“新建”按钮,在“新建窗体”对话框中选择“自动创建窗体:

纵栏式”,在下方的“请选择该对象的数据来源表或查询”中选择“单位信息表”,此时会打开一个输入单位信息窗体,关闭窗体时系统会提示保存窗体,用此方法可以快速创建一个输入单位信息的窗体。

3)建立输入联系人类别的窗体

用向导建立一个表格式的录入联系人类别的窗体,建立的方法同上,不同之处是在“新建窗体”对话框中选择“自动创建窗体:

表格式”。

3、查询设计

1)建立简单的选择查询

建立查询,显示所有类别为“同学”的联系人的主要联系信息(姓名、性别、电话、通讯地址、工作单位等)

1.在数据库窗口中选择“查询”,双击“在设计视图中新建查询”,从“显示表”对话框添加以下数据表:

联系人通讯录表、联系人类别表。

关闭“显示表”对话框。

2.从查询设计器窗口中的数据源表中双击需要的字段:

联系人通讯录中的姓名、性别、所在单位、电话,联系人类别表中的、类别名称。

3.在类别名称列的“条件”下输入“同学”。

4.保存查询为:

“同学通讯录”

以上就是简单的选择查询的设计步骤,用此方法可建立简单的选择查询,如查询所在地为云南的所有联系人信息等。

2)建立参数查询

参数查询是由用户输入查询条件,根据条件显示相应的记录信息。

如:

建立查询,由用户输入出联系人所在地,查询出该地所有联系人的信息。

1.在数据库窗口中选择“查询”,双击“在设计视图中新建查询”,从“显示表”对话框添加以下数据表:

联系人通讯录表、单位信息表、联系人类别表。

关闭“显示表”对话框。

2.从查询设计器窗口中的数据源表中双击需要的字段。

3.在“所在地”列下的“条件”中输入:

[请输入要查询的地区:

]

当运行此查询时,会弹出一个对话框,在此对话框中输入要查询的地区名称(例如“上海“)则可查询出所有上海的联系人的通讯信息。

3)建立统计查询

建立查询按类别统计出联系人的人数。

1.在数据库窗口中选择“查询”,双击“在设计视图中新建查询”,从“显示表”对话框添加以下数据表:

联系人通讯录表、联系人类别表。

关闭“显示表”对话框。

2.在数据源表中双击需要的字段,这里选择:

联系人类别表.类别名称,联系人通讯录表.编号。

3.选择“视图”菜单中的“总计”命令,将“类别名称”列下的总计设置为“GroupBy”,将“编号”列下的总计设置为“Count”。

运行此查询时,会按照类别名称分类统计出各类联系人的人数。

以上是各种查询的建立方法,可根据这些方法按照需要建立相关查询。

4、报表设计

用向导建立报表的步骤为:

1.在数据库窗口中选择“报表”,双击“使用向导创建报表”,弹出“报表向导”对话框。

2.在“表/查询”组合框中选择“表:

联系人通讯录表”,在“可用字段”列表中选择需要在报表中打印的字段,双击字段使之移动到“选定的字段”列表中;在“表/查询”组合框中选择“表:

联系人类别表”,选择“类别名称”字段。

单击“下一步”按钮。

3.“请确定数据的查看方式”,选择“通过联系人通讯录表”,单击“下一步”按钮。

4.“确定分组级别”,选择“联系人类别表.类别名称”,单击“下一步”按钮。

5.“记录的排序次序”,选择按“编号”排序。

6.“报表样式”,选择需要的报表样式,这里选择“正式”。

7.为报表确定报表标题:

通讯录报表。

单击“完成”按钮,完成报表的创建。

以上即是用向导建立报表的方法,可参照此方法完成所需的报表创建。

四、具体设计

1、界面设计

界面代码

'***********************************************************************

'*文件名:

MainForm.frm

'*说明:

主窗口

'***********************************************************************

OptionExplicit

'***********************************************************************

'模块级常量定义

ConstGROUPKEYPRE="GRROUP"'组KEY前缀

ConstPEOPLEKEYPRE="PEOPLE"'人员KEY前缀

'***********************************************************************

'模块级变量定义

PrivatephotoArray()AsPhotoInfo'像片信息动态数组

PrivatephotoIndexAsInteger'当前显示像片的对应数组下标

'***********************************************************************

'API声明

PrivateDeclareFunctionSafeArrayGetDimLib"oleaut32.dll"_

(ByRefsaArray()AsAny)AsLong

'***********************************************************************

'*函数名:

GetCurrentSelectedNode

'*功能:

取得TreeView中的当前选择节点信息

'*参数:

Integer(OUT)1:

组节点2:

人员节点

'*:

Long(OUT)组ID或人员ID

'*返回值:

Booleantrue有选择节点

'*:

false无选择节点

'***********************************************************************

PublicFunctionGetCurrentSelectedNode(ByRefnodeKindAsInteger,_

ByRefidAsLong)AsBoolean

'变量定义

DimkeyAsString'节点KEY

IftrvAll.SelectedItemIsNothingThen

'无选择的节点

GetCurrentSelectedNode=False

Else

'取得节点KEY

key=

'判断选择的节点类型

IfLeft(key,Len(PEOPLEKEYPRE))=PEOPLEKEYPREThen'人员

nodeKind=2

id=CLng(Mid(key,Len(PEOPLEKEYPRE)+1))

GetCurrentSelectedNode=True

ElseIfLeft(key,Len(GROUPKEYPRE))=GROUPKEYPREThen'组

nodeKind=1

id=CLng(Mid(key,Len(GROUPKEYPRE)+1))

GetCurrentSelectedNode=True

Else

GetCurrentSelectedNode=False

EndIf

EndIf

EndFunction

'***********************************************************************

'*函数名:

GetCurrentGroupId

'*功能:

取得TreeView中的当前选择节点所在组的ID

'*参数:

'*返回值:

Long组ID,失败时为-1

'***********************************************************************

PublicFunctionGetCurrentGroupId()AsLong

'变量定义

DimkeyAsString'节点KEY

IftrvAll.SelectedItemIsNothingThen

'无选择的节点

GetCurrentGroupId=-1

Else

'取得节点KEY

key=

'判断选择的节点类型

IfLeft(key,Len(PEOPLEKEYPRE))=PEOPLEKEYPREThen'人员

'取父节点KEY

key=

EndIf

'取得组节点ID

IfLeft(key,Len(GROUPKEYPRE))=GROUPKEYPREThen

GetCurrentGroupId=Mid(key,Len(GROUPKEYPRE)+1)

Else

GetCurrentGroupId=-1

EndIf

EndIf

EndFunction

'***********************************************************************

'*函数名:

GetNodeIndex

'*功能:

取得TreeView中指定节点的index

'*参数:

StringNODE节点KEY前缀

'*:

LongNODE节点后缀

'*返回值:

LongNODE的index,失败时为-1

'***********************************************************************

PrivateFunctionGetNodeIndex(ByValkeypreAsString,ByValidAsLong)

'初始化返回值

GetNodeIndex=-1

'参数检查

IfIsNull(keypre)OrIsEmpty(keypre)Orkeypre=""_

Orid<=0Then

ExitFunction

EndIf

'定义变量

DimnodeKeyAsString'NODEKEY

DimiLoopAsInteger'循环变量

'生成NODEKEY

nodeKey=keypre&CStr(id)

'查找节点

ForiLoop=1To

IftrvAll.Nodes(iLoop).key=nodeKeyThen

GetNodeIndex=iLoop

ExitFor

EndIf

Next

EndFunction

'***********************************************************************

'*过程名:

IniGroupInTreeView

'*功能:

初始化TreeView中的组信息

'*参数:

'***********************************************************************

PrivateSubIniGroupInTreeView()

'变量定义

DimrsAsADODB.Recordset'记录集

DimcurrentNodeAsNode'当前组节点

'取得组信息记录集

Setrs=GetGroupRecordset()

'添加组

IfIsObject(rs)Then

WhileNotrs.EOF

SetcurrentNode=,tvwLast,_

GROUPKEYPRE&rs("groupid"),rs("groupname"))

'添加组成员

IniPeopleInGrouprs("groupid"),currentNode.index

rs.MoveNext

Wend

rs.Close

Setrs=Nothing

EndIf

EndSub

'***********************************************************************

'*过程名:

IniPeopleInGroup

'*功能:

初始化组成员信息

'*参数:

Long组ID

'*:

Integer组节点index

'***********************************************************************

PrivateSubIniPeopleInGroup(ByValgroupkeyAsLong,_

ByValindexAsInteger)

'变量定义

DimrsAsADODB.Recordset'记录集

'取得指定组成员信息

Setrs=GetGroupMember(groupkey)

'添加组成员

IfIsObject(rs)Then

WhileNotrs.EOF

index,tvwChild,PEOPLEKEYPRE&_

CStr(rs("peopleId")),rs("peopleName")

rs.MoveNext

Wend

rs.Close

Setrs=Nothing

EndIf

EndSub

'***********************************************************************

'*过程名:

IniTreeView

'*功能:

初始化TreeView

'***********************************************************************

PrivateSubIniTreeView()

IniGroupInTreeView

EndSub

'***********************************************************************

'*过程名:

RefreshGroupInTreeView

'*功能:

刷新TreeView中的组信息

'*参数:

'***********************************************************************

PrivateSubRefreshGroupInTreeView()

'变量定义

DimrsAsADODB.Recordset'记录集

DimcurrentNodeAsNode'当前组节点

DimnodeKeyAsString'节点KEY

DimiLoopAsInteger'循环变量

DimexistFlagAsBoolean'已存在标志

DimnodeindexAsInteger'节点index

'取得组信息记录集

Setrs=GetGroupRecordset()

'添加组

IfIsObject(rs)Then

WhileNotrs.EOF

'查找节点是否已存在

nodeKey=GROUPKEYPRE&rs("groupid")

existFlag=False

ForiLoop=1To

If=nodeKeyThen

nodeindex=iLoop

existFlag=True

ExitFor

EndIf

Next

IfexistFlagThen'组已存在,刷新组成员

RefreshPeopleInGrouprs("groupid"),nodeindex

Else'组不存在,追加新组

SetcurrentNode=,tvwLast,_

GROUPKEYPRE&rs("groupid"),rs("groupname"))

currentNode.Selected=True

'添加组成员

IniPeopleInGrouprs("groupid"),currentNode.index

EndIf

rs.MoveNext

Wend

rs.Close

Setrs=Nothing

EndIf

EndSub

'***********************************************************************

'*过程名:

RefreshPeopleInGroup

'*功能:

初始化组成员信息

'*参数:

Long组ID

'*:

Integer组节点index

'***********************************************************************

PrivateSubRefreshPeopleInGroup(ByValgroupkeyAsLong,_

ByValindexAsInteger)

'变量定义

DimrsAsADODB.Recordset'记录集

DimiLoopAsInteger'循环变量

DimexistFlagAsBoolean'存在标志

DimcurNodeAsNode'节点

DimnodeKeyAsString'节点KEY

'取得指定组成员信息

Setrs=GetGroupMember(groupkey)

'添加组成员

IfIsObject(rs)Then

WhileNotrs.EOF

'查找是否已存在

nodeKey=PEOPLEKEYPRE&CStr(rs("peopleId"))

existFlag=False

IfThen

SetcurNode=

DoWhileNotcurNodeIsNothing

IfcurNode.key=nodeKeyThen

existFlag=True

ExitDo

EndIf

SetcurNode=curNode.Next

Loop

EndIf

IfNotexistFlagThen

SetcurNode=,tvwChild,PEOPLEKEYPRE&_

CStr(rs("peopleId")),rs("peopleName"))

curNode.Selected=True

EndIf

rs.MoveNext

Wend

rs.Close

Setrs=Nothing

EndIf

EndSub

'***********************************************************************

'*过程名:

Refres

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

当前位置:首页 > 工程科技 > 信息与通信

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

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