通讯录管理系统实现与设计.docx
- 文档编号:25484111
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:35
- 大小:929.58KB
通讯录管理系统实现与设计.docx
《通讯录管理系统实现与设计.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统实现与设计.docx(35页珍藏版)》请在冰豆网上搜索。
通讯录管理系统实现与设计
武汉理工大学
毕业设计(论文)
通讯录管理系统实现与设计
学院(系):
专业班级:
学生姓名:
指导教师:
第一章绪论
1.1课题简介
通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。
随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。
1.2开发的意义
计算机已经成为我们学习和工作的得力助手,使用其可方便的管理通讯录
今天,计算机的价格已经十分低廉,性能却有了长足的进步。
它已经被应用于许多领域。
现在我国的通讯录管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
我作为一个计算机应用专业的毕业生,希望可以在这方面有所贡献。
改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我所学的知识编制出一个实用的程序来帮助用户进行财务管理。
开发这一系统的好处大约有以下几点:
第一、可以存储大量的通讯录信息,安全、高效;
第二、只需一档案录入员即可操作系统,节省人力;
第三、可以迅速查到所需通讯录信息。
为将来用户上网做好准备
跟据2003年中国电信的调查报告显示我国的上网人数已达到1870万,互联网已经十分普及,况且现在网上通讯已经出现,本系统为用户将来的上网作了先期工作。
1.3团队构成
指导教师:
****
成员:
******
第二章开发环境及实现技术
2.1开发环境
硬件系统:
奔腾100以上CPU、64M以上内存、1G以上硬盘、光驱。
软件系统:
Windows9x或更高版本、VisualBasic6.0中文版、Access数据库。
2.2开发工具简介
微软公司的VisualBasic6.0是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。
VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。
故而,实现本系统VB是一个相对较好的选择。
Access2000就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。
Access的优点在于它能使用数据表示图或自定义窗体收集信息。
数据表示图提供了一种类似于Excel的电子表格,可以使数据库一目了然。
另外,Access允许创建自定义报表用于打印或输出数据库中的信息。
Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。
Access是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。
如上所述,Access作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。
微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及VisualBasic来访问数据库并对其进行各种操作。
VisualBasic、Access以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。
DATA控件在数据库中的信息与将信息显示给用户看的VisualBasic程序之间架起了一座桥梁。
我们可以设置DATA控件的各个属性,告诉它要调用那个数据库的哪个部分。
缺省情况下,DATA控件根据数据库中的一个或多个数据表建立一个dynaset-type(动态集合)类型的记录集合。
一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变。
DATA控件还提供了用来浏览不同记录的各种跳转按钮。
将DATA控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系。
第三章系统设计
3.1概要设计
3.1.1概要设计阶段的主要任务
①系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供指导教师审定,审定后进入设计。
②确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。
确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。
③编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。
选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。
3.1.2概要设计的过程
概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。
3.1.3概要设计的原则
①将软件划分成若干独立成分的依据。
②如何表示不同的成分内的功能细节和数据结构。
③如何统一衡量软件设计的技术质量。
3.1.4系统功能分析
根据学校的教务人员提供的学生档案管理的信息,预测开发的管理系统的达到的功能如下:
1、用户登录
2、单人资料管理
3、模糊查询
4、多人资料浏览
5、数据备份
6、退出系统
根据以上分析,该系统考虑将整个系统分解成如图3-1模块结构图:
图3-1模块结构图
并且在系统的开发过程中,我尽量注意模块的高内聚、低耦合,使得系统的整体性能提高,并且也有利于投入使用后的系统维护。
3.2详细设计
3.2.1详细设计的任务
详细设计就是要在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。
主要任务如下:
①为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;②确定每一模块使用的数据结构;③确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
④要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。
3.2.2详细设计的方法
程序流程图、N-S图、PAD图、IPO图
本系统在开发过程中所采用的详细设计方法为IPO图:
1、
信息维护模块IPO图:
2、查询模块IPO图:
3、
用户管理模块IPO图:
第四章数据库设计
4.1数据库Access简介
数据库的概念
数据库是一种存储数据并对数据进行操作的工具。
数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。
计算机的数据库可以分为两类:
非关系数据库(flat-file)和关系数据库(relational)。
关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,象记录、域等。
新建一个数据库
创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。
创建一个数据库结构的过程被认为是数据模型设计。
1.标识需要的数据;
2.收集被标识的字段到表中;
3.标识主关键字字段;
4.绘制一个简单的数据图表;
5.规范数据;
6.标识指定字段的信息;
7.创建物理表。
修改已建的数据库
数据库的修改分为:
添加、编辑和删除记录。
这三种操作均可由VisualBasic创建的程序来完成,下面的章节将详细描述实现的具体方法。
实现数据库之间的联系
数据库之间的关系指明两个库之间共享一个共同的关键字值。
一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。
一个更高级的连接形式称为自连接。
这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中由重复数据的组合字段。
数据库中有三种不同类型的关键字:
主关键字、组合关键字和外关键字。
在表中使用的关键字类型用于描述库表示什么以及在数据库中如何与其它的库建立关系。
4.2数据库需求分析
根据本人通讯录管理的实际情况,分析得到如下的E-R图。
passwordtable表:
table3表:
4.3数据库需求分析
详细数据库结构如下。
passwordtable表:
table3表:
测试用例详见表
第五章详细设计
5.1系统登录模块的设计与实现
1.流程图
2.界面:
界面包括的控件有标签、文本框、组合框、命令按钮等控件。
3.实现过程:
第一步将所需的控件放到窗体的相应位置;方法:
首先在“工具箱”中选中所需的控件图标,然后在表单的恰当位置上单击鼠标并拖动鼠标,即可把由所选取的控件生成的对象添加到窗体上。
如下图:
第二步,选择窗体或控件进行属性设置,如图为“确定”按钮的属性设置界面:
标题
位置
第三步双击相应的控件,在控件的相应过程中编写代码:
如此窗体上“确定”与“取消”按钮的代码如下:
PrivateSubcmdOK_Click()
'检查正确的密码
Dimpa,pt,pa1,pt1AsString
DimiAsInteger
ret.MoveFirst
ret.Find"name='"&Combo1.Text&"'"
pt=ret("password")
pa=pt
IftxtPassword=paThen
'frmSplash.show
LoginSucceeded=True
Me.Hide
frmMain.Show
UnloadMe
Else
MsgBox"无效的密码,请重试!
",,"登录"
LOGINNO=LOGINNO+1
IfLOGINNO>2Then
MsgBox"对不起,您不能使用该系统!
",64,"登录失败"
UnloadMe
UnloadfrmLogin
ExitSub
EndIf
txtPassword.SetFocus
SendKeys"{Home}+{End}"
EndIf
EndSub
PrivateSubcmdCancel_Click()
'设置全局变量为false
'不提示失败的登录
LoginSucceeded=False
Me.Hide
UnloadMe
EndSub
此程序段中,“IF”语句的作用是判断用户输入的用户名与密码和数据库的是否相同,如果相同,则执行Me.Hide(隐藏当前的窗体)和frmMain.Show(调出系统主界面),如果密码输入错误,则提示:
使用户重新输入密码。
Unloadme语句的作用是下载窗体。
此窗体上combo控件的主要作用是从用户表中获得用户名,其列表项主要通过窗体加载时获得。
程序如下:
PrivateSubForm_Load()
'固定窗体在屏幕中央
left=(Screen.Width-Width)\2
top=(Screen.Height-Height)\2
OnErrorResumeNext
ret.MoveFirst
DoWhileNotret.EOF
Combo1.AddItemret("name")
ret.MoveNext
Loop
ret.MoveFirst
Combo1.ListIndex=0
EndSub
其中数据库的连接是通过模块moudel1.bas实现的,代码如下:
DeclareSubRtlMoveMemoryLib"kernel32"(lpvDestAsAny,lpvSourceAsAny,ByValcbCopyAsLong)
PublicconAsNewADODB.Connection
PublicretAsNewADODB.Recordset
DeclareFunctionGetComputerNameLib"kernel32"Alias"GetComputerNameA"(ByVallpBufferAsString,nSizeAsLong)AsLong
FunctionsGetComputerName()AsString
DimsBufferAsString
DimlBufSizeAsLong
DimlStatusAsLong
lBufSize=255
sBuffer=String$(lBufSize,"")
lStatus=GetComputerName(sBuffer,lBufSize)
sGetComputerName=""
IflStatus<>0Then
sGetComputerName=left(sBuffer,lBufSize)
EndIf
EndFunction
Submain()
Dimsql1AsString
sql1=App.Path
Ifright(sql1,1)<>"/"Then
sql1=sql1+"/"
EndIf
sql1="Provider=Microsoft.Jet.OLEDB.3.51;PersistSecurityInfo=False;DataSource="&sql1&"\userdatabase\tsl.mdb"
con.Opensql1
sql1="select*frompasswordtable"
ret.Opensql1,con,adOpenStatic,adLockOptimistic
Ifret.RecordCount=0Then
frmLogin1.Show
Else
frmLogin.Show
EndIf
EndSub
5.2主界面的设计与实现
主界面是用菜单形式和框架表现的,如图:
菜单的制作过程如下:
首先通过“工具”菜单中的“菜单编辑器”调出菜单编辑器,然后进行菜单的设置,如下图:
调节菜单的级别
设置菜单的快捷键
此过程中要注意各菜单的名称唯一,另外还要注意菜单的级别。
最后设置如下的代码(只要单击菜单即可设置各菜单代码),部分代码如下图:
PrivateSubmnuall_Click()
SSTab1.Tab=2
EndSub
PrivateSubmnuBack_Click()
Data1.Recordset.Close
Data2.Recordset.Close
UnloadfrmAbout
UnloadfrmHelp
UnloadfrmLogin
UnloadfrmLogin1
UnloadfrmTip
UnloadfrmMain
frmBack.Show
EndSub
PrivateSubmnunote_Click()
frmTip.Show
EndSub
PrivateSubmnusigle_Click()
SSTab1.Tab=0
EndSub
PrivateSubmnusup_Click()
SSTab1.Tab=1
EndSub
PrivateSubmnuwf_Click()
frmwf.Show
EndSub
主要是通过Show方法调用相应的窗体及sstab的tab属性调用相应的页框。
Sstab的创建方法如下:
第一步将所需的控件放到窗体的相应位置;方法:
首先在“工具箱”中选中所需的控件图标,然后在表单的恰当位置上单击鼠标并拖动鼠标,即可把由所选取的控件生成的对象添加到窗体上。
如下图:
第二步,选择窗体或控件进行属性设置,如图为“SSTAB”的属性设置界面:
活动选项卡、选择卡的个数的设定
标题
位置
5.3单人资料模块的设计与实现
1、流程图:
2、运行界面:
1.实现过程:
界面的构造方法同5.2,主要代码如下:
的代码如下:
PrivateSubcmdAdd_Click()
Data1.Recordset.AddNew
EndSub
主要通过addnew方法实现记录的增加。
的代码如下:
PrivateSubcmdDelete_Click()
'如果删除记录集的最后一条记录
'记录或记录集中唯一的记录
DimMsgAsString
Msg="是否确定要删除记录"&Chr$(10)
Msg=Msg
IfMsgBox(Msg,17,"删除记录?
")<>1ThenExitSub
Data1.Recordset.Delete
Data1.Recordset.MoveNext
Data2.Refresh
Data1.Refresh
EndSub
主要通过delete方法实现记录的删除。
的主要代码如下:
PrivateSubcmdRefresh_Click()
'这仅对多用户应用程序才是需要的
Data1.Refresh
Data2.Refresh
Data1.recordset.update
Data2.recordset.update
MsgBox"保存成功!
",,"提示"
EndSub
的代码如下:
PrivateSubcmdPrevious_Click()
Data1.Recordset.MovePrevious
IfData1.Recordset.BOFThen
MsgBox"已到第一条!
",,"提示"
Data1.Recordset.MoveFirst
EndIf
EndSub
主要通过MovePrevious方法实现记录的移动,并通过IfData1.Recordset.BOFThen语句判断有没有到文件头,如正确,则通过Data1.Recordset.MoveFirst语句将指针指向第一条记录。
“下一条记录”的实现方法与此相同。
另外数据库的连接主要通过data控件实现,连接方法如下:
实现与表的相连
实现与库的相连相连
窗体上各文本框的属性如下(以姓名为例,其他同):
对应的字段
数据来源
5.4模糊查询模块的设计与实现
1.流程图:
2.运行界面:
3.实现过程:
涉及的控件有:
单选按钮、标签、命令按钮、文本框。
界面的设计过程与5.3模块类似,这边不再重复。
下面把此界面的主要代码作一介绍:
按钮的代码如下:
PrivateSubCommand1_Click()
DimiAsInteger
IfCombo1.Text<>""Then
SelectCaseopt
Case1
sql="select*fromtable3where编号like'"&Combo1.Text&"'"
Case2
sql="select*fromtable3where姓名like'*"&Combo1.Text&"*'"
Case3
sql="select*fromtable3where电话like'"&Combo1.Text&"'"
Case4
sql="select*fromtable3where手机like'"&Combo1.Text&"'"
Case5
sql="select*fromtable3whereQQlike'"&Combo1.Text&"'"
Case6
sql="select*fromtable3where电子邮件like'*"&Combo1.Text&"*'"
Case7
sql="select*fromtable3where联系地址like'*"&Combo1.Text&"*'"
EndSelect
EndIf
Ifsql<>""Then
Data2.RecordSource=sql
Else
Data2.RecordSource="select*fromtable3orderby编号"
EndIf
Data2.Refresh
IfData2.Recordset.RecordCount=0Then
i=MsgBox("没有符合条件的记录哦",vbOKOnly+vbInformation,"出错啦!
")
EndIf
EndSub
主要实现思想:
先通过变量OPT判断用户选择了哪一种查询方式,然后根据OPT的值执行不同的语句。
查询的方法主要是借助于SQL(结构化查询语言)语句来进行查询,并通过Option按钮组判断用户选择的查询方式。
然后通过Data2.Refresh来进行数据源更新。
如果找不到要找数据,则提示"没有符合条件的记录哦"。
5.5全体资料模块的设计与实现
1.流程图:
2.运行界面:
3.实现过程:
界面的设计方法同上,在这不再重复。
此界面主要有一个精确查询的应用,如“按姓名”精确查询的代码如下:
PrivateSubcmdSearch0_Click()
DimstrFindAsString
strFind=InputBox("请输入要查询的姓名")
Data1.Recordset.FindFirst"姓名='"&strFind&"'"
IfData1.Recordset.NoMatchThen
MsgBox"没有这个名字啊!
"
Else
DBGrid1.SelBookmarks.AddDBGrid1.Bookmark
EndIf
EndSub
主要通过inputbox让用户输入要查询的姓名。
如果通过findfirst查询,如果找不到则提示,如果找到则选中找到的记录。
5.6用户注册模块的设计与实现
界面如下图:
数据库的连接方法同上5.1。
“确定”主要代码如下:
PrivateSubcmdOK_Click()
OnErrorResumeNext
'检查正确的密码
IftxtUserName.Text=""Then
MsgBox"请输入初始用户名",vbInformation+vbOKOnly,"提示"
txtUserName.Set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统 实现 设计