资源描述
访客管理系统的开发
摘 要
本文首先对访客管理系统作了简要的分析,包括需求分析和可行性分析;其次对系统的设计思路作了详尽的说明,介绍了系统的具体实施过程,各个模块的创建与设计,并提供了所需的各代码段。
通过对访客管理系统实施过程的详细介绍和说明,基本描述了该系统的设计和开发过程,最后针对系统调试和测试要注意的问题作了说明,并简单介绍了该系统的运行环境以及如何使用系统。
【关键字】系统流程,系统设计,数据库,
1.1系统概述
应用背景与系统功能
随着计算机技术的不断发展,公司、企业和机关的计算机化管理已经逐渐普及,计算机技术已经深入到企业管理的各个方面。例如本章中所要设计的访客管理系统、利用它就可以安全、可靠的管理公司、企业的访客记录,不仅可以保障公司安全更可以提高公司的管理水平和形象。本系统是一个小型访客管理系统,Visual Basic开发来进行数据库操作、系统开发的,总体任务是实现访客的登记、查询和本管理系统的用户权限维护和使用记录。本系统主要完成的功能有:
记录访客的基本资料,包括访客姓名、性别、来访时间、访问理由等,井将访客的资料存入访客资料数据表中。用户数据的维护,即维护用户数据表,完成各种对用户的操作,如用户登录、添加用户、更改密码和查看用户资料等。
用户使用.如查看访客资料,查看用户资料(依用户权限杳着,可以按姓名、性别、来访时间、来访原因查看)等。
用户操作记录,记录每个用户的访问时间,以及用户进行的操作。
用户权限管理,按照数据表里记录的权限,允许其执行相应的功能。
1.2 系统预览
用户成功登陆成功后进入系统的主界面,如图1-1所示
图1-1 系统主界面-访客登记
系统的主界面主要包括以下几部分:1)菜单2)工具栏3)当前用户状态说明4)程序主窗口
1.2 系统设计
1.2.1系统设计思想
本系统主要完成访客资料的记录和查询,为此,系统必须能够维护一个记录访客洋细资料的数据表,对该表进行写入和读出数据的操作。与此同时本系统还要给护用户权限,这样系统必须维护用户资料数据表,管理用户ID,密码和用户权限类型。系统还要能够记录和查询用户的一个操作。记录用户操作的数据表。记录用户lD 、所进行的操作类型.以及该操作的具体时间等
首先用户登录系统时,程序要从己有的用户资料数据表中读出用户名和密码。检验该密码和用户输入的密码是否匹配,只有用户名在数据库中存在,且密码庄确时,用户才能进入系统。当有访客来访需要登记时,程序就将用户填写的访客资料写入访客资料数据表中。管理员查询访客资料时,程序又从数据库中读出访客记录。修改密码和添加新用户资料时,也能完成数据库的写入操作,另外,用户和管理员的某个操作会记录到用户操作记录数据表中。当管理员查询这些记录时,再从该表中按照管理员的查询要求读出。
1.2.2 系统功能模块划分
根据上述的系统总体设计思想的分析,将系统分为以下几部分:
.访客管理模块:用于实现访客资料记录和访客资料查询功能。
.用户管理模块;用实现用登录管理,用户资料管理和用户权限管理等功能
.记录管理模块:用于实现自动添加用户操作记录和查询操作记录功能
系统功能图3 一7 所示的系统功能模块图
图1-2系统功能模块图
1.2.3 系统流程分析
本系统流程比较简单,用户登录检验成功后,就进入系统。用户选择不同的操作,有些操作需要判断权限,然后对数据库进行相应的操作。系统流程图如图3-8所示。
图3-8 系统流程图.
3.3 数据库设计
对于开发数据库应用系统而言,大致可分为数据库分析、设计和应用程序分析、设计两部分。 数据库的合理设计在系统设计中占有非常重要的她位,它可以提高数据存储效率,保证数据的完整致。要设计出一个性能良好的数据库应用系统并不是一件简中的工作。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的及将来可能增加的需求。本系统以下几个步骤来设计数据库:
(1)数据库需求分析。
(2)数据库概念结构设计。
(3)数据库逻辑结构设计。
1.3.1 数据库需求分析
现在要设计的数据库系统要应用于访客登记管理,所以必须充分满足访客登记管理的各种要求。此系统要求登记每一位访客的资料,并允许有权限的用户查询这些资料,也因为这样.系统必须同时维护用户数据,对每个操作都要判断用户权限是否符合要求,系统还记录每个用户的每次操作,以便系统管理员能查看所有用户的操作历史记录、通过上述分析,数据库设计必须满足以下几点:
.用户可记录访客资料。
.高级用户和系统管理员可查询访客资料。为了查询访客资料.可查询字段在访客登记时必须设为必填字段,以供杳询:如访客妙名、性别、来访时间、来访原因及记录用户的ID
.系统管理员可查询用户操作记求:为了查询操作记求,可查询字段在每次记录操作时必须设为必填字段:如用户ID 、操作时间和操作类型(登记访客资料、查询访客资料、更改密码、添加新用户、查看用户资料、查看操作记录)
.用户ID 必须唯一.
每个用户ID 必须对应一个用户类型(普通用户、高级用户、系统管理员),以便在进仃某些操作时判断权限。
.用户记录可以添加和修改。
.系统管理员可以查看用户资料。
访客登记和用户操作记录中的用户字段必须和用户表中的用户ID 相关联。
1.3.2 数据库概念结构设计
通过对此系统的总体分析,我们可以得到大概的实体一关系模型
图3-10 访客管理系统的E-R 模型
1.3.3 数据库逻辑结构设计
数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
访客管理系统数据库中各个表的设计结果如表1-1、表1-2、表1-3所示。每个表格表示在数据库中的一个表,数据库由三个数据表组成;一个是访客登记表(guestinfo),第二个是用户信息数据表(userinfo),第三个是用户操作记录数据表(userrecord)。
表1-1 访客登记数据表(guestinfo)
表1-2用户信息数据表
表1-3用户操作记录数据表
1.4 数据库的生成与配置
1.4.1 建立数据库
首先使用Access 新建一个数据库。命名为Guest.mdb该数据库包含3 个数据表:
.储存访客信息的表Guestlnfo 。
.储存用户信息的表Userinfo。
.储存用户操作信息的表UserRecord
1.4.2 设计数据表
以上各表建立完成后,分别将1.3.3 中设计的字段信息填入表的设计视图中
图3 。12 用户信息表Userlnfo 的设计现图
对于各个数据表中某些取值固定的字段,为了避免错误和简化输入,可以设置字段的取值范围。具体方法是:首先单击字段属性中的”查阅”选项卡.然后将”显示控件’‘属性改为“列表框”,行来源类型属性改为值列表,在行来源中输入字段的取值,各个取值之间用;分开。
按上述步骤建好这3 个数据表的结构后.接着建立表之间的关系,在Access 系统中建立表之间的关系也非常容易。选择菜单【工具】 · 【关系】 命令,者单由工具栏上的【关系】 图标,打开Access 关系视图首先在“显示表” 对话框中将需要建立关系的表添加到“关系”窗口中,然后直接拖动鼠标,将要建立又系的字段连接起来.便会有一条实线连接在两字段之间,这样就建立好表之间的关系了。在建立了数据表之间的关系后,建立关系的字段属性将不能再更改,要更改则必须先取消关系,更改字段属性后再重新建立连接.因此通常在各数据表都建立得比较完善后才建立数据表之间的关系
1.5 公共模块
启动Visual Basic 6.0 后,新建一个标准EXE 工程,然后将该工程保存,选择保存路径,并命名为访客管理系统工程。
接着给该工程添加一个模块。选择菜单【工程】-【添加模块】命令,命名为Mdipublic。此模块的主要功能是定义公共变最和公共类型。
1.5.1添加全局变量
首先我们加入两个全局变量,它们的名称和功能如下 : 定义数据类型
1.5.2下面用到的Usertype数据类型定义如下:
1.5.3 定义公共函数
AddRec函数用于记录所有的用户操作,需要应用于各个窗体,因此在此模块中定义为公共函数,具体定义和功能参见程序3-1 。
至此,本程序中需要用到的公共变量和公共函数已经添加完毕.接下来添加各个操作界向窗口。
3.6 用户登录界面设计
首先设计的是用户登录界面。此界面主要有两个功能;
.连接数据库。
.检验用户登录。
1.6.1设计用户登录窗体控件布局
选择菜单【工程】-【 添加窗体】命令,或者在工程资源管理器中用鼠标右键单击工程,在弹出的快捷菜单中选择【添加】-【 添加窗体】 命令,在工程中添加个窗体,命名为frm_login。
1.6.2用户登陆界面编辑状态预览
添加各个控件及设置的属性后.适当地调整各控件的人小和位置.得到如图3-4所示的登录界面设计视图。
1.6.3
用户登录界面设计完成后,接着就需要编写代码来实现该界面的相应功能。首先给出该界面的流程图.然后分别讲述各部分的实现代码.1 .登录界面代码流程
图3 一16 登录界面代码实现流程
2.Form_Load 过程
这是系统启动界面,因此首先在FormLoad 过程连接数据库,以便检验需要登录用户ID和密码。另外本过程也检验本程序是否已经启动过,以避免程序重复运行。具体代码如例程3 一2 所示。
例程32 Forme 劫ad 过程
3 .【登录】和【取消】 按钮的实现代码
在用户登录界面,我们主要实现【登录】和【取消】两个按钮的功能,当用户单击【登录】按钮后,程序应该检验用户输入的ID 是否存在,密码是否正确,正确则将用户资料存入内存并进入系统。如果单击【取消】按钮则退出程序。下面的例程3 一3 就是这部分的具体实现代码。
3.7 用户管理界面设计
用户登录界面完成后,接着设计几个需要用到的功能界面,首先是用户管理界面,此界面主要有以下几个功能;
.修改用户密码。
.添加新用户。
.查看用户资料。
1.7.1设计用户管理界面控件布局
在工程中添加一个窗体,命名为frm_user。接着按表3-5 所示的设置为用户管理窗体添加控件(己有控件只需设置属性即可)。
表1-5 用户管理窗体及其控件属性的设置
listView 控件LvQuery的设置如下:
建立ListView 控件并按照表1-3所示命名设置属性后,用鼠标右键单击该控件.在弹出的快捷菜单中选择【属性】命令,然后在弹出的对话框中选择列首选项卡,单击【插入列】按钮,依次给日listview 控件添加4个列,用户ID 、用户名、用户类型和备注,再调整各个列的列宽到合适的大小
1.7.2 用户管理界面编辑状态预览
正确按照上述内容设置各个控件的属性后.
然后适当地调整各神件的大小和位置.可得到如图3 一17 所示的用户管理界面设计视图。其中和LvQuery 列表框在设计视图中是重叠在一起的‘
3.7.3 用户管理界面的实现代码
界面设计完成后,接着编写代码实现用户管理界面的相应功能。
1.Form_Load 过程
因为进入用户管理界面的默认框架是修改密码框架framemodify,所以首先在Form_load过程中将当前用户的用户名显示在框架标题中,代码如下:
2.下面添加几个简单的框架切换的函数
后面将要用到。代码如例程3 一4 所示J
例程3 一4 自定义几个框架切换函数的代码
显示修改密码框架
P 不iv 己te SubH 浏立妙vle 讨()
He . rr 确e 州odi 即.visible 二True He , Fra 阅eAddne 讨.VISible 二Fa1Se 摊e , L 试加ery . Visible 二F 已l 岛已End Sub
‘显示添加用户框架
Pr iv 己tes 公b Addne 认勺ie 切{)
阿e . Fu 口me 加。月主f 丫.V 生sible 二尸alse H 亡,FrameAddne 切.V 主Sible 0 True 材e . L 几弋拍。守.V 主日ible 二Fal 分e End SUb
‘显示查询结果框架
护r j vate Sub QueryV3 四(}
林e . Frdme 枷dify . V 主5 丘ble 二F 良lse 林e . F 厂已出,eAdd 功e 讨』 Visible 二False " e . L 几哎u 它ry . vlsible 二True End Sub
3 .修改密码的实现代码:cmdmodify0k_Click()事件
接着添加修改密码的实现代码。当用户单击修改密码框架FrameModify 中的【修改】 按钮CmdModifyok时,程序将检验该框架中各项内容的填写是否正确,若正确则将这条记录写入访客登记数据表Guestinfo 中,并且将本操作记录到用户操作记录数据表UserRecord 中,以便查询。例程3 一5 是该部分实现代码。
例程3 一5 修改密码的实现代码
Pr 注va 。它subCI 叱囚odify ( ) k 一c 工i 亡k ' ) ‘修改密码Dl 功chgUser As New 八刃心DB . Recordset Di 翻D 泊日匕r As String
· 检验输入内容
工f 州e . T 以tHadlf 丫二ld . T 郎L = ' ‘角en
Msg 它。x ‘请输入原密码!
Exit Sub
Rl 自仑工f Len 〔 竹im (淤.Tex 七封。』 ifyold . Text ) ) , 8 Then 州s 。加x ”原密码过长!
EXit SUb
E 月口丁f
1 f He . 1 ,户xt 州odifyN 洲1 . Text 二”‘口he 几
· 72 ,
.。二。理,二黔获讼蒸戴
取gBDxl 请轴入新密码l
Ex 1 t gub
EI 名e 工fL 教l { Tll 印{抓eT 日入t Mod 屯七yNcw 渔丁日x 七)) ) S 丁月念n 从写g 习ox ‘新密码过长】
Rx 注ts 吐』
E 几d If
工f ”亡.Te 义t 封韶if 尹Je 树ZText 二”" Then
取gBox · 请输入新密码确认:
Exit Sub
Elself Len 喂Trim 《 M 色.Text 助d 工fyN 它wZ . rext ) ) > 8 厄l ] e 己HogB0x ”新密码确认过长】
E 义i 七弓ub
End If
If 州e . TextHOiify 加e 诃1 . Te 火七<> Me . T 以tModifyN 曰刀ZText The 月淞g 它。二”两次轴入新密码不一致I
Exit Sub
End If
‘写数据库
DBs 匕丁二’s 晚lect 去f 工Om U3erlnfO 材h 色re 甘息仑rID 二‘.
阳s 匕r 二D 扫8 七r & Rep 正日口e 叮User ,句悴.ID , ' ' ' , " ”〕 &' ' '
1 打J 于数据集
chgtjser .咋吧n DB 日L 工.DBC 朋,己dopenstatic . adLock 沁Li 印i $匕ic
‘致据集指针指向第一个记录.这里资找到的记录是惟一的
C 殉Uger .助,. Fir 日七
‘检验旧密码
工f Trim ( He .飞xt 吻difyo 飞d . T 以t )二C 沟User . Fi 仑lds ( ' User 功呀d " ) . v 口luo Then 叮hg 血er . Fields ( ' userl 、d ' ! .粗1 住e 二鞭.犯xc 脚difyNewl .怜x 之EI 弓它
HsgBox · 原密码错误,修改密码失败,
End If
,更新
Chgus 仑r , UPdate
,关闭数据集
ChgUser . C10se
· 弹出提示框提示用户州ggBox · 修改成功犷·
‘记录该操作AddR 色亡(3 )
End 3Ub
4.添加用户的实现代码cmdAddok_click()事件
然后编写添加用户的实现代码。当用户单击修改密码框架FrameAddnew 中的【添加】按钮cmdAddok 时,程序即检验各项内容填写是否正确,若正确则将这条记录添加到访客登记数据表Guestinfo中,并且将本操作记录到用户操作记录数据表UserRecord中。以便查询。例程3 一6 是该部分的实现代码。
例程3 一6 添加用户的实现代码privote sub 。忧认d 如kjiick 《 )· 添加新用户
口主皿AddUgerA 卜New ADO 力它.neoord 日et
Di 角sqlstr Asg 匕工ing
白主m DB 吕tr AsS 屯ring
r ) im UsrID A3S 七ring
· 73 ·
i ' u 司日。、。
口1 功日手犷N 己I 「户
口飞详口与11 呀月
入叹S 七丁乙门g 八55 (卜止rl 自
检验输入内容
二三Me :、x 七Add 工L ) . ] ?犬r 二’‘丁h 阿1
MsgB 。、· 谕瀚入需要创建的用户丁叫
巨次it 写七b
E 二‘牛el ,乙e , { Tr 」爪(月e Tx 仁AddID . rext 飞1 ) 16 Then
N ; ; g 只。x ,用户ID 长度超出范围!、
FX 上Rl 飞dl 仁U 绍[【 」)
S 以匕
二Repl 日ce ( TI lm ( M 日.你tAddl 乞于,Text 少
If 从u ' lextAd 由叼印下亡』 口e 义t 二厅The 民州。gBc 拼,脚喻入需要创建的用户名l 霓x 1 t gub
只]日elf le 户(T 厂主用(Me , TeXtAd 由Jame .丁ex 七)》 ”、g 移。x · 用户妙名长度超出范围!民义l 匕Sub
End If
usrNa 扣e 二只eplaoe ( Tri 翻fMe . TextAd 由口白介e
) 4 『 竹旧刀
甲e 父t )
1 f Me . c 加止均Add 巧下e .飞x 七=" Then 阿59 已ox · 请透择需要创建的用户类型l ZxiL gub
End [「
二fM 户甲。xtAdd 外了dl 。Text 二‘, Then
" ,。Box ,礴输入需要创建的用户密码!,
日xi 之gub
它二self :」e 八L ? rlm 〔 对eText 八dd 汽司1 . T 它xt 、), 8 The 价
End
只、gBox ,密码长度超出范围!E 沉1 七SUb
l 七
If Me . TeX 仁八dd 众祖2 . TeXt 。‘’丁hen
从,q soxU 确轴入藉要创建的用户密码确认1 ·
匕Xi 匕Sub
Elsolf Len 哎Tri 限硬He 。Tex 仁入ddP " d2 .丁ex 七}) ) 9 Then Mog3 。洲· 密码长度相出范围:·
Ex 工仁Sub
E 们d 之盯
1 f He . Tex 仁Add 协夕dl . Text 《 )州e .甲ex 七入dd 户帆〕 2 . Te 荞欲Then 从sgBox · 两次轴入密码不r 致1
Exi 匕SUb
屁ndt {
口sr 、阳d 二Reploce ( Trim 兀Me . T 啥盆tAddP 钟dl , Text )。’" ' r "
OBb 七r 二”select . frQ 职Userlnfo 讨here User 土D 二”权U 岛rl ,凡
· 们开数据集
八ddUser .印en DBst 厂r
DB (朋,己d 卯enF0r 呢r 改劝]犷,ad 乙ockopt 工讯之5 七i 口
上f Not AddUS 已r . BOF Th 巳n MsgB 似· 该用户已存在1 翔」dUser . CI 。吕e 它xit Sub
EnJ If
· 关闭数据集
AddU 月er . Clo 弓e
· 操作数据库添加记录
Sglst 厂二”工NsERT 工奎打劝Us 啥rlnfo " _ · ‘〔 User 二D . user 呵~。口与e 工乃乍e ,口sor 卜心}目&_ · 74 ·
. 3 .访。。理系坎‘夏
二i 簇:2 ; " 印几、月,、人、抓
IV 八J .习『 SL ' ,肠口,tT 户扮”“肠_
反U 出丫权d 叶户反‘卜乓_反几宁。几(Me ,了吸曲oAdd 几pe . Text )及' r & ‘卜r 挤晚“) ; "
L 〕 BC 丁〕 [: ,弓xc 心以t 仓昌q ] S 飞工
提叮、月{户
M : , B 。二”添加成功{
· 清空界!断
材户卫父七几ddID . TeX 七二
Me Tex 亡Ad 由Ja 厂el 仓xt = .片
州e .护ext 八dd 自、dl .丁ex 〔 旨.'
He . Tex 匕入dd 认‘dZ 、T 心xt 二
· 记录该操作八ddR 巳〔 可4 加
E 几d 互口b
5.用户查询的实现代码CmdQuery_Click() 事件
然后添加用户查询的实现代码。当用户单击窗体中的【用户查询】 按钮CmdQuery 时,程序先检验用户权限类型是否符合要求.因为本系统中只有系统管理员才能查询用户资料。检验符合后将所有用户资料显示在Listview列表框中,并且将本操作记录到用户操作记录数据表UserRecord 中,以便查询。例程3 一7 是该部分的实现代码。
例程3 一7 用户查询的实现代码
Pr 主v 日t 05 、Jb 。彼心uen 乞cl 主ck 〔 )‘查询用户Di 扣甘s 它fQue 即再5 New 八乃〕 LIB .只ecor 已吕et D 二和i 八闷I 户七eqer
I 〕 i 扣弓匕丫八9 gtring
Di 即l , tl 匕m AsL 工Stlte 厂
Dj 阳DBsL 石As gLring
· 检验用户权限
1 f LJse 水。w .马,白<> 0 Then
" , gBox · 对不起。您不是系统管理员.不能查询用户!尽xi 匕Sub
End If
Que 妇产V 工e 加
‘渭空列表
距.七代扣ew . List 丁t 树gcl 息ar
‘读用户资料
OE 弓tr 二‘日e lect ' frQmU 感官rlnto
。serQue 珊· Op 色n DBs 七r . DBCnn . ado ,仑nstatic 。adLock 启eddon 工y 口SerQ 二el 、r . Me 甘eFlr 弓t
‘逐个读取用户记录
Fori = 1 TQ 口se 了以理了y . R 亡cordCo 七nt
se 王ect CaoeU 白e 式加e 即.Fields 《 ‘User 乃甲e ' ) .饰lue
Ca 弓eo 日七r , Cdse 飞月tr 二口d 弓户2
· 系统管理员‘
”普通用户‘
, 75 ,
l
i 三u 白l 日。:' :
* L :一”高级用户,Ca 只白巴l 弓e , t 二二11 类型错误11 Er 、jg 户le 〔 t
setb 匕工t 爪二Me . b 叨加仑tY ,孔i 引Tte 厂s 』 Add ( )
I 」乞T ' m 』 Text 二口ser 伽e 口.Fi 色lds ( " U 昌e 丁下r 。‘) , Vd 上:e L 七It 爪.5 议blt 白”$ ( 1 ) =口gerQueW . Fieldg 叮“us 仑了囚日川丹‘L 七ltm . s 啦bl 仁emstZ )二弓t 了
丁f 口se 工和。卿.Fields { ' R 曰伯rk .少.value 、奋“' Thon btl 七爪.gublt 即s ( 3 }二userQueIY . Fields 〔 ‘获伫帕a 厂k Er 心If
Va 二习e
V 日lue
U 凡erQue 即.MCv 目寸。x 匕
Ne 洲匕1
甘弓erQUe 犷犷.C108e
· 记录该操作AddRec CS
End Sub
6.添加窗口中其他按钮的代码
最后添加用户管理窗口中其他按钮的实现代码,用于框架之间的切换和退出本窗体。当切换到添加用户框架之前必须先检验用户权限类型。因为本系统中只有系统管理员才能添加新用户。代码如例程3 一8 所示。
例程3 一8 添加窗口中其他按钮的实现代码
,显示添加新用户框架
priv 。七e Sub 自彼认ddne 脚一CI 立ck ( )
· 判断用户权限
1 f UserN 叫.勺不e < > 0 Th 仑n
冷gB 以· 对不起.您不是系统管理员,不撰浏建新用户l ExiL Sub
End If
几d 由飞e 脚View
Fnd SUb
‘修改密码
Priv 己七e Sub 臼叱加odif 丫_Cl 主ck 晓)讨。dif 协吐e 讨
End gub
· 取消
户r 人v 己仁.Sub 自闷C 日月cel 一Click { ) Un1Oad He
End gub
3.8 用户操作记录界面设计
此界面的主要功能就是查询用户操作记录。
3.8.1设计用户操作记录界面控件布局
在工程中添加一个窗体,命名为Frm_opeRec。接着按表 3 一6 所示的设置为用户操作记录窗体添加控件(已有控件只需设置属性即可 )。
表3 一6 用户操作记录窗体及其控件属性的设计
3.8.2 用户操作记录查询界面编辑状态预览
正确按照上述内容设置各个控件的属性后,适当地调整各控件的大小和位置,可得到
3 . 8 . 3 用户操作记录查询界面的实现代码
界面设计完成后,接着编写代码来实现操作记录查询界面的相应功能。1 .定义私有函救oetoperate
首先添加一个函数.用于得到操作类型字符串.实现代码如例程3 一9 所示:例程3 一9 得到操作类型字符串的函数实现代码
御到橄行类甲字符半的函数· 沁以飞旧,。:。
· 功能:从用致字阮泳的捅作类型‘卜得到橄作类型字符串愉入.摊作类尽卜,
愉由;冷作类甲字符印里二任记访客资料2 二台询访客资朝怡史改带码4 二添加肠川户屯二青愉件l 户谈科6 ,杳后操作吧录
P :人vote 和nct 几on Cetr 扣eL - 3L 廿.即Va 土OpeTy 匹冷八5 In 七eg . l ,八,应tr 上叩ge 10 已r 亡。se 飞垮竹沐
(场R 曰}
Get ( :丫旧ral - e 二”登记访客资料·
C 口月口2
G 尸r ‘冲。f 叭., ”丹询访客资料”
’日‘e 纽
.沁牛叩er 献e = ’电曳密码·
C 。,巴雌
( ; e 卜乍。rote 二”净加舫ftl 户’
犷a 肠es
。成伪巴d : e 二”杏石用户资相’
Cd " es
决:印era : e 二”食看.作初摊”
C 诊够心R 二臼扣
能七钾咱ra 七e 二,类甲错误l ·
匕ld geleC 忆
芭邝」l . ' ut ' Ct 土On
2 . Fo 洲_LO " d 过程
这.杜.进入操作记录查询界面前同样先显示用户状态,而能进入木界而的用户已经纤过检验.因此川声’‘类型一定是系统管理员一进入本窗日默认显下所有操作记录.实现代码· 78 ,
。3 。。-一。.莎三澎;
如例程3-10 所示。
例程3 一10 Fonl ] _ Load 过程实现代码
3.查询操作记录的实现代码CmdQueryok_click()事件接下来添加查询操作记录的实现代码。当用户单击查询操作记录框架frameRecQuery中的【确定】按钮CmdQueryok按钮时,程序将按查询类型检验查询内容填写是否正确,检验通过后将查询结果显示在Listview 列表框LvUSrRec中,并且将本操作记录到用户操作记录数据表UserRecord中。例程3 一11 是该部分的实现代码。
80
4.添加窗口中其他按钮的实现代码
最后添加操作记录查询窗口中其他按钮的实现代码,包括退出按钮和查询框架的按钮。
3.9 关于界面设计
本界面主要功能是显示软件版本、版权等。
如图3 一19 所示,
‘权衡t :
. ‘飞长件奋, _泛到
图3 一19 关于界面设计
3.10 系统主界面设计
各个子界面完成后,接着设计访客管理系统的主界面。主界面包括菜单、工具栏、用户状态显示栏和程序主窗口几部分。此界面主要有以下几个功能:
.登记访客资料.
.访客资料杳询、
.连接到用户管理界面。
.连接到用户操作记录界面
.退出系统
3.10.1设计系统主窗体控件布局
在工程中添加一个窗体.命名为Frm_ Main。然后按表3 一7 所示的设置为系统主窗体添加控件(已有控件只需设置属性即可)。
表3 一7 系统主窗体及其控件属性的设置
除上述设置外,还要给Listview控件LvResult添加6个列,列首文本分别为:姓名、性别、来访时间、来访理由、记录用户和备注,然后适当调整各个列的列宽。
另外,主窗体中的图片枢是为了美观,可以添加喜欢的图片,也可以换成程序图标或者公司的logo。
3.10.2 系统主界面菜单编辑
设计好控件后,接着编辑系统主界面的菜单。首先选【工具】-【菜单编辑器】命令,或者单击工具栏中的【菜单编辑器】图标,打开“菜单编辑器”对话框。然后按照表3 一8 所示的设置为主界面添加菜单。
裹3 一8 主界面菜单设置
3.10.3 系统主界面工具栏编辑
菜单编辑完成后,接着编辑工具栏。要编辑工具栏,必须先导入需要的图标首先在工具栏中添加一个图片列表框imagelist,命名为toolimage。然后用鼠标右键单单击该控件;在弹出的快捷菜单中选择【属性】命令,打开图像列表的属性页,再选择“图像”选项卡,然后单击【插入图片】按钮,并选择需要插入的图标。导入图标后,接着设置工具栏。用鼠标右键单击工具栏,在弹出的快捷菜单中选择【属性】命令,打开图像列表的属性页。在“通用”选项卡中的“图像列表”下拉框中选择toolimage 。再选择“按钮”选项卡给工具条添加按钮。
3.10.5 系统主界面的实现代码
接下来编写代码来实现系统主界面的相应功能。
1、form_load过程和Form_Unload过程
2、访客登记的实现代码cmdrecord_click()事件
首先是访客登记功能的代码。当用户单击访客登记框架FrmRecord中的【确定】按钮CmdRecord 时,程序将检验该框架中各项内容填写是否正确,必填字段是否已经填写,检验通过后将这条记录写入访客登记数据表Guestinfo中,并且将本操作记录到用户操作记录数据表UserRecord 中,以便查询。例程3 一13 是该部分的实现代码。
例程3 一13 访客登记功能的实现代码
3.查询访客资料的实现代码cmdquery_click()事件
当用户单击访客资料查询框架framequery中的【确
定】按钮CmdQuery时,程序将首先检验用户权限是否满足要求,然后检验该框架中填写查询内容是否正确,检验通过后按照查询要求在访客登记资料数据表guestinfo中查询记录。查询结果显示在查询结果框架的列表框LvResult 中,同时将本操作记录到用户操作记录数据表UserRecord 中.以便查询。 例程3 一14 是该部分的实现代码。
例程3 . 14
· 88 ·
4.添加菜单响应函数
接下来为每个菜单添加响应函数,实现系统主窗体的各
项功能,依次是退出、访客登记、访客查询、用户管理、操
作记录和关于菜单,操作记录菜单在调用窗体之前先检验用
户权限J 例对., 3 一15 是该部分的实现代码。
例程3 .巧菜单响应的实现代码
5 .添加工具栏响应函数
因为丁具档各按钮都和菜单功能一一对应,所以可以直
接调用菜单函数。例程3 一16 是
该部分的实现代码。
. 89 "
至此,所有代码都已经添加完毕。简略的小结。
3.11 难点与技巧
3.11.1 数据库设计步骤
虽然本系统的数据库比较简单,但仍然需要学习如何规划和设计系统结果和数据库。对于开发数据库应用系统而言,大致可分为两部分:数据库分析设计和应用程序分析设计。而数据库的合理设计和建设是数据库应用系统成功的关键。数据库设计是一项涉及多学科的综合性技术,要设计出一个性能良好的数据库应用系统并不是一件简单的工作,但却是实现系统的重要环节。数据库的设计方法包括科学的数据库设计理论和具体的设计原则。目前常用的各种数据库设计方法都属于规范设计法,包括基于E-R模型的数据库设计方法、基于3NF(第二范式)的设计方法、基于抽象语法规范的设计方法等,它们都是在数据库设计的不同阶段上支持实现的具体技术和方法。在规范设计方法中,数据库设计的核心是逻辑数据库设讨和物理数据库设计。
3.11.3 ADO 数据访问技术
若要在Visual Basic中使用ADO 数据访问技术操作数据库,必须设置对合适的Ado类型库的访问。有两种ADO类型库:一种叫做Adodb。另一种类型库ador。第一种类型功能更多。
3.11.4 sQL 语言的使用技巧
1 .字符串操作中的单引号处理
在SQL 语言中对字符串的操作如果遇到单引号经常会导致程序出错。因为在执行SQL 语句时,对字符串的引用都要用左右两个单引号来分隔,而程序会把字符串中的单引号看做是SQL 语句中的分隔符来处理,这样就经常会引起程序报错。在SQL 语句中要在字符串中包含单引号,要使用两个单引号来代替。所以为了避免上述问题的出现,通常用Replace()函数来将字符串中的单引号替换为两个单引号。
2、实现对信息的模糊查询
在SQL 语言中实现对信息的模糊查询需要用到“Like”运算符。如 like ‘张%’
则查询返回所有张开头的记录。
3.12 系统的调试
程序开发过界中难免会遇到各种错误,这就需要调试。调试是解决程序错误的主要手段,同时是程序开发中必不可少的阶段。在程序开发的早期显得尤为重要,每个组件调试正确,整个应用程序的调试工作就会十分简单。系统调试应该注意以下几点:
1、在每个文件开始处加上optionexplicit语句,强制变量声明.以减少编译错误.
2、适当设
展开阅读全文