界面设计 设计好的界面如图20所示。

图20 图书管理系统界面
这是一个多文档界面(MDI)应用程序,可以同时显示多个文档,每个文档显示在各自的窗体中。MDI 应用程序中常有包含子菜单的“窗体”选项,用于在窗体或文档之间进行切换。
菜单应用程序中,有5个菜单选项,每个选项对应着E-R图的一个子项目。
1、创建主窗体
首先创建一个工程,命名为图书管理系统,选择“工程”→“添加MDI窗体”命令,则在项目中添加了主窗体。该窗体的一些属性如表1所示。
表1 主窗体的属性
| 属 |
性值 |
| Caption |
图书管理系统 |
| Name |
Main |
| Menu |
Mainmenu1 |
| Windowstate |
Maxsize |
Windowstate的值为Maxsize,即程序启动之后自动最大化。
将“菜单”组件从“工具箱”拖到窗体上。创建一个 Text 属性设置为“文件”的顶级菜单项,且带有名为“关闭”的子菜单项。类似地创建一些菜单项,如表2所示。
表2 菜 单 项 表
| 菜 单 名 称 |
Text属性 |
功 能 描 述 |
| MenuItem1 |
图书管理 |
顶级菜单,包含子菜单 |
| MenuItem2 |
图书登记 |
调出图书登记窗体 |
| MenuItem3 |
图书借阅 |
调出图书借阅窗体 |
| MenuItem4 |
图书赔偿 |
调出图书赔偿窗体 |
| MenuItem5 |
图书资料 |
顶级菜单,包含子菜单 |
| MenuItem6 |
查询输出 |
调出查询输出窗体 |
| MenuItem7 |
值班管理 |
顶级菜单,没有子菜单 |
| MenuItem8 |
投诉管理 |
顶级菜单,没有子菜单 |
| MenuItem9 |
系统管理 |
顶级菜单,包含子菜单 |
| MenuItem10 |
增加用户 |
调出用户窗体 |
| MenuItem11 |
修改密码 |
调出密码窗体 |
| MenuItem12 |
退出 |
系统退出 |
主窗体如图21所示。

图21 主窗体
2、创建各子窗体
选择“工程”→“添加窗体”命令,添加子窗体。
在新建Visual Basic工程时自带的窗体中,将其属性MIDChild改成True,则这个窗体成为MID窗体的子窗体。
在这个项目中,要创建的子窗体如表3所示。
表3 所有子窗体
| 子 窗 体 名 |
Text |
| 图书登记 |
frmdengji |
| 图书借阅 |
frmjieyue |
| 图书赔偿 |
frmpeichang |
| 增加新用户 |
frmadduser |
| 查询输出 |
frmfind |
| 登录系统 |
frmlogin |
| 修改密码 |
frmchangepwd |
下面分别给出这些子窗体,以及它们所使用的控件。
(1) 图书登记子窗体如图22所示,其控件如表4所示。

图22 图书登记子窗体
表4 图书登记子窗体控件
| 控 件 类 别 |
控件Name |
控件Text |
| Label |
Label1 |
编号 |
| Label2 |
书名 |
| Label3 |
类型 |
| Label4 |
购买日期 |
| Label5 |
定价 |
| TextBox |
Text1 |
(空) |
| Text2 |
(空) |
| Text3 |
(空) |
| Text4 |
(空) |
| Text5 |
(空) |
| CommandButton |
Command1 |
增加记录 |
| Command2 |
删除记录 |
| Command3 |
下一条 |
| Command4 |
上一条 |
| Command5 |
第一条 |
| Command6 |
最后一条 |
| Command7 |
退出 |
| ADO |
DataAdodc1 |
(空) |
| DataGrid |
DataGrid1 |
(空) |
图书借阅和图书赔偿子窗体分别如图23和图24所示,因为它们的控件与图书登记子窗体的雷同,在此不作介绍。

图23 图书借阅子窗体

图24 图书赔偿子窗体
(2) 增加用户子窗体如图25所示,其控件如表5所示。

图25 增加用户子窗体
表5 增加用户子窗体控件
| 控 件 类 别 |
控件Name |
控件Text |
| Label |
Label1 |
输入用户名 |
| Label2 |
输入密码 |
| Label3 |
确认密码 |
| Label4 |
选择权限 |
| TextBox |
Text1 |
(空) |
| Text2 |
(空) |
| Text3 |
(空) |
| ComboBox |
Comb1 |
(空) |
| CommandButton |
Commandl |
确定 |
| Command2 |
取消 |
(3) 修改密码子窗体如图26所示。

图26 修改密码子窗体
(4) 库房管理子窗体如图27所示。

图27 库房管理子窗体
其控件如表6所示。
表6 库房管理子窗体控件
| 控 件 类 别 |
控件Name |
控件Text |
| TextBox |
Text1 |
(空) |
| ComboBox |
Combo1 |
|
| MSFlexGrid |
MSFlexGrid1 |
|
(5) 查询子窗体如图28所示,其控件如表7所示。

图28 查询子窗体
表7 查询子窗体控件
| 控 件 类 别 |
控件Name |
控件Text |
| OptionButton |
Option1 |
按编号查询 |
| |
Option2 |
按购买日期查询 |
| Label |
Label1 |
从 |
| Label2 |
到 |
| Label3 |
从 |
| Label4 |
年 |
| Label5 |
月 |
| Label6 |
日 |
| Label7 |
到 |
| Label8 |
年 |
| Label9 |
月 |
| Label10 |
日 |
| Combo(0) ComboBox |
Combo1 |
(空) |
| Combo(1) ComboBox |
Combo1 |
(空) |
| Comboy(0) ComboBox |
Comboy |
(空) |
| Comboy(1) ComboBox |
Comboy |
(空) |
| Combom(0) ComboBox |
Combom |
(空) |
| Combom(1) ComboBox |
Combom |
(空) |
| Combod(0) ComboBox |
Combod |
(空) |
| Combod(1) ComboBox |
Combod |
(空) |
| CommandButton |
Command1 |
查询 |
| Command2 |
取消 |
(6) 用户登录子窗体如图29所示。
(7) 值班管理子窗体如图30所示,其控件如表8所示。

图29 用户登录子窗体 图30 值班管理子窗体
(8) 投诉管理子窗体如图31所示,其控件如表9所示。

图31 投诉管理子窗体
建立公共模块 1、显示目录
建立公共模块可以提高代码的效率,同时使得修改和维护代码都很方便。
创建公共模块的步骤如下:
(1) 在菜单中选择“工程”→“添加模块”命令,则出现模块对话框,如图32所示。
(2) 选择模块图标后,单击“打开”按钮,则模块已经添加到项目中了。默认情况下名为Module1。

图32 模块对话框
(3) 在模块中定义整个项目的公共变量。
Public conn As New ADODB.Connection ' 标记连接对象
Public userID As String ' 标记当前用户ID
Public userpow As String ' 标记用户权限
Public find As Boolean ' 标记查询
Public sqlfind As String ' 查询语句
Public rs_data1 As New ADODB.Recordset
Public findok As Boolean
Public frmdata As Boolean
Public Const keyenter = 13 ' enter键的ASCII码
在主窗体添加完菜单之后,就要为各个子菜单创建事件处理程序。