一、需求分析
在进行一个项目的设计之前,先要进行必要的需求分析。
现某图书馆需要管理其各种人员和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书。其完成的功能如下:
(1) 可以实现图书的登记、借阅和赔偿的管理。
(2) 可以实现对图书的各种信息的查询,包括逐个浏览,以及对图书信息的增加、删除和编辑操作。另外,可以根据输入的信息来检索某个图书的信息。
(3) 可以实现对管理人员的投诉管理。
(4) 可以实现对值班人员的管理。
系统的功能模块图如图1所示。
本实例根据上面的设计规划出的实体有图书登记实体、图书借阅实体、图书赔偿实体、查询输出实体、值班管理实体、投诉管理实体。各个实体具体的描述E-R图如下。
图书登记实体E-R图如图2所示。
图书借阅实体E-R图如图3所示。
图1 系统的功能模块图
图2 图书登记实体E-R图
图3 图书借阅实体E-R图
图书赔偿实体E-R图如图4所示。
图4 图书赔偿实体E-R图
投诉管理实体E-R图如图5所示。
图5 投诉管理实体E-R图
值班管理实体E-R图如图6所示。
图6 值班管理实体E-R图
查询输出实体E-R图如图7所示。
图7 查询输出实体E-R图 二、结构设计
根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体的系统,每一个窗体实现不同的功能,可以设计下面的几个模块。
● 图书管理模块:用来实现图书的登记、借阅、赔偿。
● 图书资料模块:用来实现图书的查询输出。
● 值班管理模块:用来实现管理人员的值班浏览。
● 投诉管理模块:用来实现对管理人员的投诉管理。
● 系统管理模块:用来实现用户的增加、删除和修改等操作。
三、数据库设计
这里的数据库采用Access,用ADO作为连接数据对象。
1、建立Access 数据库
启动Access,建立一个空的数据库book.mdb,如图8所示。
使用程序设计器建立系统需要的表格如下。
图书登记表,如图9所示。
图8 建立数据库book.mdb 图9 图书登记表
图书借阅表,如图10所示。图书赔偿表,如图11所示。
图10 图书借阅表 图11 图书赔偿表
图书资料表,如图12所示。系统管理表,如图13所示。
图12 图书资料表 图13 系统管理表
投诉管理表,如图14所示。
图14 投诉管理表
值班管理表,如图15所示。
图15 值班管理表
2、连接数据
在Visual Basic环境下,选择“工程”→“引用”命令,在随后出现的对话框中选择“Microsoft ActiveX Data Objects 2.0 Library”,然后单击“确定”按钮,如图16所示。
图16 引用ADO连接数据库
在程序设计的公共模块中,先定义ADO连接对象。语句如下:
Public conn As New ADODB.Connection ' 标记连接对象
然后在子程序中,用如下的语句即可打开数据库:
Dim connectionstring As String
connectionstring = "provider=Microsoft.Jet.oledb.4.0;" &_
"data source=book.mdb"
conn.Open connectionstring
3、设置ODBC
VB的ADO对象是通过ODBC来访问数据库,所以还要建立ODBC数据引擎接口。
打开控制面板中的“管理工具”→“数据源”(ODBC),出现如图17所示的对话框。
图17 ODBC对话框
单击“添加”按钮,出现“创建新数据源”对话框,如图18所示。
图18 “创建新数据源”对话框
选择Microsoft Access Driver(*.mdb),单击“完成”按钮,出现如图19所示对话框。
图19 设置连接数据源
在“数据源名”文本框中添加一个名字,单击“确定”按钮完成系统默认连接设置。然后在ODBC对话框中单击“确定”按钮完成ODBC设置。
界面设计
设计好的界面如图20所示。
图20 图书管理系统界面
这是一个多文档界面(MDI)应用程序,可以同时显示多个文档,每个文档显示在各自的窗体中。MDI 应用程序中常有包含子菜单的“窗体”选项,用于在窗体或文档之间进行切换
在进行一个项目的设计之前,先要进行必要的需求分析。
现某图书馆需要管理其各种人员和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书。其完成的功能如下:
(1) 可以实现图书的登记、借阅和赔偿的管理。
(2) 可以实现对图书的各种信息的查询,包括逐个浏览,以及对图书信息的增加、删除和编辑操作。另外,可以根据输入的信息来检索某个图书的信息。
(3) 可以实现对管理人员的投诉管理。
(4) 可以实现对值班人员的管理。
系统的功能模块图如图1所示。
本实例根据上面的设计规划出的实体有图书登记实体、图书借阅实体、图书赔偿实体、查询输出实体、值班管理实体、投诉管理实体。各个实体具体的描述E-R图如下。
图书登记实体E-R图如图2所示。
图书借阅实体E-R图如图3所示。

图1 系统的功能模块图

图2 图书登记实体E-R图

图3 图书借阅实体E-R图
图书赔偿实体E-R图如图4所示。

图4 图书赔偿实体E-R图
投诉管理实体E-R图如图5所示。

图5 投诉管理实体E-R图
值班管理实体E-R图如图6所示。

图6 值班管理实体E-R图
查询输出实体E-R图如图7所示。

图7 查询输出实体E-R图 二、结构设计
根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体的系统,每一个窗体实现不同的功能,可以设计下面的几个模块。
● 图书管理模块:用来实现图书的登记、借阅、赔偿。
● 图书资料模块:用来实现图书的查询输出。
● 值班管理模块:用来实现管理人员的值班浏览。
● 投诉管理模块:用来实现对管理人员的投诉管理。
● 系统管理模块:用来实现用户的增加、删除和修改等操作。
三、数据库设计
这里的数据库采用Access,用ADO作为连接数据对象。
1、建立Access 数据库
启动Access,建立一个空的数据库book.mdb,如图8所示。
使用程序设计器建立系统需要的表格如下。
图书登记表,如图9所示。


图8 建立数据库book.mdb 图9 图书登记表
图书借阅表,如图10所示。图书赔偿表,如图11所示。


图10 图书借阅表 图11 图书赔偿表
图书资料表,如图12所示。系统管理表,如图13所示。


图12 图书资料表 图13 系统管理表
投诉管理表,如图14所示。

图14 投诉管理表
值班管理表,如图15所示。

图15 值班管理表
2、连接数据
在Visual Basic环境下,选择“工程”→“引用”命令,在随后出现的对话框中选择“Microsoft ActiveX Data Objects 2.0 Library”,然后单击“确定”按钮,如图16所示。

图16 引用ADO连接数据库
在程序设计的公共模块中,先定义ADO连接对象。语句如下:
Public conn As New ADODB.Connection ' 标记连接对象
然后在子程序中,用如下的语句即可打开数据库:
Dim connectionstring As String
connectionstring = "provider=Microsoft.Jet.oledb.4.0;" &_
"data source=book.mdb"
conn.Open connectionstring
3、设置ODBC
VB的ADO对象是通过ODBC来访问数据库,所以还要建立ODBC数据引擎接口。
打开控制面板中的“管理工具”→“数据源”(ODBC),出现如图17所示的对话框。

图17 ODBC对话框
单击“添加”按钮,出现“创建新数据源”对话框,如图18所示。

图18 “创建新数据源”对话框
选择Microsoft Access Driver(*.mdb),单击“完成”按钮,出现如图19所示对话框。

图19 设置连接数据源
在“数据源名”文本框中添加一个名字,单击“确定”按钮完成系统默认连接设置。然后在ODBC对话框中单击“确定”按钮完成ODBC设置。
界面设计
设计好的界面如图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 图书登记子窗体控件
控 件 类 别
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 图书登记子窗体控件
控 件 类 别