5.2 主控制平台的设计和实现
1.总体布局
系统主控平台才用简单、直观的布局,通过菜单实现对系统各个模块的调用和对各个窗体的显示。设置状态栏用来显示当前日期、时间和当前用户信息。 2.主控制平台的界面效果(如图5-1所示)
3.窗体和控件特殊属性(见表5-2)
表5-2 窗体和控件特殊属性 控件名称 frmMain Lb1 控件属性 StratUpPosition BoderStyle 设置 2 0 4.程序设计
(1)添加菜单和状态栏:根据总体设计中对各个模块的设计,使用菜单编辑器和StatusBar控件创建系统菜单和状态栏。菜单项目有: 1)系统管理→用户管理、修改密码。 2)基础数据管理。 3)部门信息管理。
4)职员信息管理→职员信息管理、报表→职员基本信息报表、职员就职信息报表、职员通讯录。 5)考勤信息查询。 6)考评信息管理。
23
7)帮助。 8)退出。
(2)窗体加载事件。 处理流程:调用初始化过程initial,设置系统权限:当用户不是系统管理员时,“用户管理”和“基础数据管理”菜单不可使用。
Private Sub Form_Load()
Call initial '调用初始化过程 Call purview '设置部分权限 End Sub
(3)初始化过程initial。
处理流程:加载背景图片,设置状态栏。
Private Sub initial() '加载背景图片 Dim strpath As String strpath = \
frmMain.Picture = LoadPicture(App.Path & strpath) '设置状态栏显示系统信息 StatusBarUser.Panels.Add (1)
StatusBarUser.Panels.Item(1).Width = 7201.13 StatusBarUser.Panels.Add (2) StatusBarUser.Panels.Add (3)
StatusBarUser.Panels.Item(1).Style = sbrText StatusBarUser.Panels.Item(2).Style = sbrDate StatusBarUser.Panels.Item(3).Style = sbrTime
StatusBarUser.Panels.Item(1).Text = \当前系统用户是\,您是\End Sub
(4)权限设置函数purview:
处理流程:判断当前用户类型,设置部分权限。
Private Sub purview()
Select Case gUserKind '设置系统权限 Case \系统管理员\
Me.subMenuClient.Enabled = True Me.menuDataMange.Enabled = True Case Else
Me.subMenuClient.Enabled = False Me.menuDataMange.Enabled = False End Select End Sub
(5)单击各个菜单或子菜单时显示相应的窗体。
24
基本语法是:From.Show。各个子菜单与窗体的对应关系如表5-3所示
表5-3 菜单编辑器
菜单名称 subMenuClient subMenuPassword menuDataMange menuDept menuEmloyee subMenuEmployee subRpt subRptBasic subPostion subRptRecord menuQuery menuValue help exit menuSystem 标题 用户管理 修改密码 基础数据管理 部门信息管理 职员信息管理 职员信息管理 报表 基本信息 入职信息 通讯录 考勤信息查询 考评信息查询 帮助 退出 系统管理 (6)退出系统。
处理流程:询问用户是否要以其他用户名登录,如果用户选择“确定”,卸载当前窗体并加载登录对话框;否则卸载全部窗体。
str = MsgBox(\是否要改变用户重新登录?\删除当前记录\ If str = vbOK Then Unload Me frmLogin.Show
frmLogin.txtPassword = \ frmLogin.txtUserName = \ Else End End If End Sub
5.3 用户登录模块
1.登录模块的IPO图 输入:用户名和密码 处理:
(1)登录窗体启动
25
(2)输入用户名和密码。
(3)如果用户名或密码为空,处理终止,并进行错误信息提示。
(4)以输入的用户名为关键字,检索用户信息表(tbUser)的用户名和密码字段。 (5)通过检索结果判断该用户名是否存在,如果用户名不存在,处理终止,并进行错误信息提示。
(6)如果用户名存在,比较检索到的密码字段与输入的密码是否相等。如果不相等则处理终止,并进行错误信息提示。 (7)如果输入的密码正确,将该用户名和用户类型分别保存在全局变量gUserName和gUserKind中。 (8)进入主控制台。 输出;主控制平台。
2.登录模块的窗体设计(如图5-2所示)
图5-2 用户登录模块的窗体效果
3.件的特殊属性设计(表5-4所示)
表5-4 窗体和控件特殊属性 控件名称 frmLogin
控件属性 类型 设置 登录对话框 3.程序设计
(1)用户身份验证 处理流程(这里允许职员设置自己的用户名,但考虑到使用者的习惯和系统安全,不牵制使用职员的姓名作为用户名,可以通过系统管理员进行这个个性化用户名设置,因此这里不使用ComboBox控件): 1) 开始用户身份验证。 2) 检索用户名是否为空
3) 若为空则给出错误信息提示,设置TextBox获得焦点,处理终止。 4) 以输入的用户名为关键字,检索用户信息表的用户名和秘密那字段。 5) 如果不存在该用户名,处理终止,并提示错误信息。
6) 比较输入的密码与从数据库中检索出的密码字段值是否相等,如果不相等,设置密码TextBox获得焦点,处理终止,并提示错误信息。
7) 进入主控制台并将用户名和用户类型赋给全局变量gUserName和gUserKind。
Private Sub cmdOK_Click() Dim txtSQL As String
Dim rstLogin As ADODB.Recordset
26
Dim flag As String gUserName = \gUserKind = \
If Trim(txtUserName.Text = \
MsgBox \用户名不能为空!\警告\ txtUserName.SetFocus Else
txtSQL = \& \
flag = ExecuteSQL(txtSQL, rstLogin, False) If rstLogin.EOF = True Then
MsgBox \没有这个用户,请重新输入!\vbOKOnly + vbExclamation, \警告\
txtUserName.SetFocus Else
If Trim(rstLogin.Fields(1)) = Trim(txtPassword.Text) Then gUserName = Trim(txtUserName.Text) gUserKind = Trim(rstLogin.Fields(2)) gLoginSucceeded = True rstLogin.Close Me.Hide
frmMain.Show Else
MsgBox \密码不正确,请重新输入!\vbOKOnly + vbExclamation, \警告\
txtPassword.SetFocus txtPassword.Text = \ End If End If End If
miCount = miCount + 1 If miCount = 3 Then Me.Hide Exit Sub End If End Sub (2)“取消”按钮:卸载当前窗体(Unload Me),退出此次登录。
5.4系统管理模块
系统管理模块包括用户管理和修改密码两个子模块。用户管理模块只有系统管理员可以使用,一般用户不能使用,修改密码模块面向任何用户,提供修改登录者密码的功能。
27