实 验 报 告
课程名称: 软件工程
实验项目: 网上图书销售系统 姓 名: 专 业: 班 级: 学 号: 指导教师:
XXX
计算机科学与技术 XXX XXX
XXX
计算机科学与技术学院
实验教学中心
XXXX年XX月XX日
- 1 -
图书管理系统
系统分析设计
系统功能分析
系统开发的总体任务是实现各种信息的系统化、规范化和自动化。
系统功能分析是在系统开发的总体任务的基础上完成。本设计中的图书馆管理信息系统需要完成功能主要有:
1.有关读者种类标准的制定、种类信息的输入,包括种类编号、种类名称、借书数量、借书期限等。
2.读者种类信息的修改、查询等。
3.读者基本信息的输入,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、办证日期等。
4.读者基本信息的查询、修改,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、办证日期等。
5.书籍信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期等。
6.书籍信息的查询、修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期等。
7.借书信息的输入,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。
8.借书信息的查询、修改,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。
9.还书信息的输入,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。
10.还书信息查询和修改,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。
系统功能模块设计
对上述各项功能进行集中、模块划分,按照结构化程序设计的要求,得到如图2.1所示的系统功能模块图。
- 2 -
图书馆管理信息系统 借阅信息管理 书籍信息管理 读者信息管理 系统管理 还书信息管理 借书信息管理 设置书籍信息 设置书籍种类 设置读者信息 设置读者种类 密码管理 用户管理 读还书信息查询 还书信息修改 还书信息添加 借书信息查询 借书信息修改 借书信息添加 书籍信息查询 书籍信息修改 书籍信息添加 书籍类别修改 书籍类别添加 读者信息查询 读者信息修改 读者信息添加 者种类修改 读者种类添加
图 系统功能模块图
- 3 -
数据库分析与设计
数据库需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后的具体设计打下基础。
针对一般图书馆管理信息系统的需求,通过对图书馆管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:
1.读者种类信息,包括的数据项有:种类编号、种类名称、借书数量、借书期限、有效期限等。
2.读者信息,包括的数据项有:读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、办证日期等。
3.书籍类别信息,包括的数据项有:类别编号、类别名称等。
4.书籍信息,包括的数据项有:包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期等。
5.借阅信息,包括的数据项有:借阅信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。
有了上面的数据结构、数据项和数据流程,就可以进行下面的数据库设计了。
数据库概念结构设计
得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
本实例根据上面的设计规划出的实体有:读者类别信息实体、读者信息实体、书籍类别信息实体、书籍信息实体、借阅信息实体。各个实体具体的描述E-R图如下。
读者类别信息实体E-R图如图3.1所示。
读者类别信息实体 种类编号 种类名称 借书期限 借书数量
图 读者类别信息实体E-R图
- 4 -
读者信息实体E-R图如图所示。
读者信息实体 读者编号 读者姓名 读者类别 办证日期
图 读者信息实体E-R图
书籍类别信息实体E-R图如图所示。
书籍类别信息实体 类别编号 类别名称 关键词 备注信息
图 书籍类别信息实体E-R图
书籍信息实体E-R图如图所示。
书籍信息实体 书籍编号 书籍名称 书籍类别 出版社
图 书籍信息实体E-R图
- 5 -
借阅信息实体E-R图如图所示。
借阅信息实体 借阅信息编号 读者信息 书籍信息 借书日期
图 借阅信息实体E-R图
实体之间相互关系的E-R图如图所示。
读者类别信息 书籍类别信息 读者信息登记 书籍信息登记 读者信息管理 书籍信息管理 借阅书籍 借阅信息管理
图 实体之间关系的E-R图
数据库逻辑结构设计
书籍信息表
由多个图书记录构成。
- 6 -
图书记录的数据结构如下:
图书编号(BookID) 图书书名(BookName) 图书作者(Author) 图书出版社(Publisher) 整数(唯一标示符) 变长字符串 变长字符串 变长字符串 读者信息表
由多个读者记录构成 读者记录的数据结构如下:
读者证号(ReaderID) 整数(唯一标示符) 读者姓名(ReaderName) 变长字符串 读者联系方法(Address) 变长字符串 借阅信息表
由若干个借书记录构成 借书记录的数据结构如下:
借阅图书(BookID) 整数(与图书库中的图书编号对应)(唯一标示符) 借阅者(ReaderID) 整数(与读者库中的图书编号对应) 借阅时间(BorrowDate) 日期 读者类别表
有单个系统设置记录构成
系统设置记录的数据结构如下:
记录号(id) 整数(系统自动生成,唯一标示符) 最多可借图书数(MaxBLNum) 整数 最多借书天数(MaxBLDays) 整数 用户表
由若干个系统操作员记录构成 系统操作员记录的数据结构如下:
记录序号(id) 账号(Addminister) 口令(Password) 权限级别(Level) 整数(系统自动生成,唯一标示符) 变长字符串 变长字符串 变长字符串 读者借书过程的数据流图和数据词典
数据流图
读者借书过程数据流程如图所示。
- 7 -
日历 检验 读者 选定图书 1 借书 检验 图书信息 2 借书 登记 读者库 图书库 图书是否被借出
图 读者借书过程
数据词典
1.数据源点及汇点描述: ⑴名称:读者
简要描述:借书、还书、查询及登记注册 有关数据流:借书证;所借书本 ⑵名称:日历 简要描述:当日日期 有关数据流:年月日 2.加工逻辑词条描述: ⑴加工名:借书检验 加工编号:1
简要描述:检验读者身份、图书是否入库、读者还能借多少书以此判定读者是否能借书
输入数据流:借书证;所借书本,读者信息,图书信息,图书访问记录,日期 输出数据流:借书错误信息,借书信息 加工逻辑:
IF 借书证未登记入库 THEN
发出“借书错误”
ELSE IF 图书未登记入库 THEN 发出“借书错误”
ELSE IF 读者已借图书和现借图书多于限制数N THEN
- 8 -
发出“借书错误”
ELSE IF 读者已借图书中有超期 THEN
发出“借书错误” ELSE 发出“借书信息” ENDIF ENDIF ENDIF ENDIF
⑵加工名:借书登记 加工编号:2
简要描述:将“借书信息”登记到“图书访问记录库图书访问记录”中,完成后将书本递交读者
输入数据流:借书信息,日期 输出数据流:图书访问记录,图书
加工逻辑:将借书信息及日期写入图书访问记录; 3.数据流名词条描述: ⑴数据流名:借书证
说明:用以携带读者的唯一识别标识 数据流来源:读者 数据流去向:借书检验
数据流组成:借书证=借书证号+姓名+联系方法 借书证号=“000000001”..“999999999” 姓名=2{字母}24 联系方法=4{字母}50
⑵数据流名:图书
说明:记录图书的主要相关信息 数据流来源:读者 数据流去向:借书检验
数据流组成:图书=书号+书名+作者+出版社 书号=“000000001”..“999999999” 书名=2{字母}24 作者=2{字母}24 出版社=2{字母}24
⑶数据流名:检验错误
说明:用于指示读者借书错误信息 数据流来源:借书检验 数据流去向:读者
- 9 -
数据流组成:检验错误=2{字母}40 ⑷数据流名:借书信息 说明:用于传递读者号和图书号 数据流来源:借书检验 数据流去向:借书登记
数据流组成:借书信息=借书证号+书号 ⑸数据流名:日期 说明:提供当前日期信息 数据流来源:日历
数据流去向:借书检验,借书登记 数据流组成:日期=年+月+日 年=“0000”..“9999” 月=“01”..“12” 日=“01”..“31”
⑹数据流名:图书访问记录 说明:用于记录读者借书信息
数据流来源:图书访问记录库,借书登记 数据流去向:借书检验
数据流组成:图书访问记录=书号+借阅证号+借书日期 借书日期=日期
⑺数据流名:读者信息
说明:用于记录登记入库的读者信息 数据流来源:读者库 数据流去向:借书检验
数据流组成:读者信息=借书证号+姓名+联系方法 ⑻数据流名:图书信息
说明:用于记录登记入库的图书信息 数据流来源:图书库 数据流去向:借书检验
数据流组成:图书信息=书号+书名+作者+出版社+价格+摘要+状态 4.数据文件词条描述: ⑴数据文件名:读者库 简述:存放读者信息 输入数据:无 输出数据:读者信息
数据文件组成:读者库由“读者信息”组成
- 10 -
⑵数据文件名:图书库 简述:存放图书信息 输入数据:无 输出数据:图书信息
数据文件组成:图书库由“图书信息”组成 ⑶数据文件名:图书访问记录库 简述:存放图书访问记录信息 输入数据:图书访问记录 输出数据:图书访问记录
数据文件组成:图书访问记录库由“图书访问记录”组成
读者还书过程的数据流图和数据词典
数据流图
读者还书过程数据流程如图3.8所示。
图书访问记录 检验错误 日历 读者 图书 3 还书 检验 还书信息 4 还书 登记 还书返回信息
图3.8 读者还书过程
数据词典
1.加工逻辑词条描述: ⑴加工名:还书检验 加工编号:3
简要描述:检验图书是否图书室外借图书 输入数据流:图书,图书访问记录
输出数据流:检验错误,还书信息
加工逻辑:IF 书号与数据库数据不符 THEN
- 11 -
发出“检验错误” ELSE 发出“还书信息” ENDIF ⑵加工名:还书登记 加工编号:4
简要描述:删除读者对该图书的借书信息,如果超期给出警告及天数 输入数据流:还书信息,日期 输出数据流:图书访问纪录,还书成功 加工逻辑:IF 所还图书超期 THEN 统计超期天数
生成含警告的返回信息
ELSE 删除图书访问记录库中相应的借书记录
生成成功信息 给出还书返回信息
2.数据流名词条描述: ⑴数据流名:还书信息 说明:用于传递图书书号 数据流来源:还书检验 数据流去向:还书登记 数据流组成:还书信息=书号 ⑵数据流名:还书成功 说明:用于通知还书成功 数据流来源:还书登记 数据流去向:读者
数据流组成:还书成功=2{字母}10 数据文件词条描述:(前面已描述) ENDIF
- 12 -
系统详细设计与实现
图书馆管理信息系统主窗体的创建
这个项目使用多文档界面,单击工具栏中的ADD MDI Form按钮,生成一个窗体。在这个窗体上添加所需的控件,窗体和控件的属性设置见表4-1所示。
表4-1 主窗体及其控件属性设置
控件 frmMain(Form) StartUpPositon WindowState SbStatusBar(StatusBar) Panels(2) Panels(3) Style Style SbrDate SbrTime Name Panels(1) Style 2-屏幕中心 Maximized SbStatusBar SbrText Name Caption 属性 FrmMain 王登伟毕业设计-图书馆管理系统 属性取值 在窗体中加入状态栏控件,可以实时反映系统中各个状态的变化。状态栏控件需要在通常的属性窗口中设置一般属性,还需要在其特有的弹出式菜单中进行设置。选中状态栏控件,单击鼠标右键,选中Property菜单,然后设置属性。创建好的主窗体如图4.1所示。
- 13 -
图 图书馆管理系统主窗体
在Visual Basic中使用公用模块来存放整个工程项目公用函数、过程和全局变量等。这样可以极大地提高代码的效率。
在录入有关信息时,需要回车来进入下一个文本框,这样对软件使用者非常方便。在所有的功能模块都需要这个函数,所以将它放在公用模块中,代码如下:
Public Sub EnterToTab(Keyasc As Integer) ‘判断是否为回车键 If Keyasc=13 Then ‘转换成Tab键 SendKeys”{TAB}” End If End Sub
Keyasc用来保存当前按键,SendKeys函数用来指定的按键。一旦单击回车键,将返回Tab键,下一个控件自动获得输入焦点。
添加全局变量,用来记录各个窗体的读写状态,代码如下: Pubic flagRTedit As Boolean
- 14 -
Pubic gintRTmode As Integer Pubic flag Redit As Boolean Pubic gintRmode As Integer Pubic flagBTedit As Boolean Pubic gintBTmode As Integer Pubic flagBedit As Boolean Pubic gintBmode As Integer Pubic flagBOedit As Boolean Pubic gintBOmode As Integer Pubic flagBBedit As Boolean Pubic gintBBmode As Integer
gintRTmode变量用来记录是添加状态还是修改状态,赋值1为添加,赋值2为修改。flagRTedit变量用来标示是否进入修改的窗体。其他全局变量同理。
由于图书馆管理信息系统启动后,需要对用户进行判断。如果登陆者是授权用户,将进入系统,否则将停止程序的执行。这个判断需要在系统运行的最初进行,因此将代码放在公用模块中。
4.2 系统用户管理模块的创建
点击确定后将出现登录窗体如图4.3所示,用户首先输入用户名,然后输入密码。如果用户3次输入的密码不正确,将退出程序。
图4.3 用户登录窗体
用户登录窗体中放置了两个文本框(TextBox),用来输入用户名和密码;两个按钮(CommandButton)用来确定或者取消登录;3个标签用来标志窗体的信息。这些控件的属性设置见表4-2所示。
- 15 -
表4-2 登录窗体中各个控件的属性设置
控件 frmLogin(Form) Name Caption StartUpPositon WindowState txtUserName txtPassword Name Name PasswordChar cmdOK Name Caption cmdCance1 Name Caption Label1 Label2 Label3 Caption Caption Caption 属性 frmLogin 身份验证 CenterScreen Nomal txtUserName txtPassword * cmdOK 确定 cmdCance1 取消 用户名 密码 注意:如果您的身份验证三次未正确,系统将自动关闭! 属性取值 文本框txtPassword的PasswordChar属性是用指定字符来掩盖用户名输入密码。 为窗体定义全局变量OK,用来判断登录是否成功;定义Cnt,用来记载输入密码的次数,并且在载入窗体时初始化这两个全局变量,代码如下:
‘强制变量声明 Option Explicit Pubic OK As Boolean ‘记录确定次数 Dim miscount As Integer Private Sub Form_Load() OK=False miscount=0 End Sub
Option Explicit是用来规定所有变量使用前必须定义。这样可以避免由于输入错误而产生的新变量。
当用户输入完用户名和用户密码,单击cmdOK按钮将对用户输入信息进行判断。用户单击该按钮,将触发按钮cmdOK的Click事件,连接数据库中用户表如图4.4所示。
- 16 -
图4.4 用户表
代码如下: Option Explicit
Dim cnt As Integer '记录确定次数 Private Sub cmdCancle_Click() Unload Me End Sub
Private Sub cmdOK_Click() Dim sql As String
Dim rs_login As New ADODB.Recordset Dim conn As New ADODB.Connection conn.Open \"provider=Microsoft.Jet.OLEDB.4.0; data source=\" & App.Path \"\\database.mdb\"
If Trim(Text1.Text) = \"\" Then
MsgBox \"用户名不能为空,请重新输入!\" Text1.SetFocus Else
sql = \"select * from 用户表 where user_ID='\" & Trim(Text1.Text) & \"'\" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then
MsgBox \"没有这个用户,请重输入!\ Text1.Text = \"\" Text1.SetFocus Else
username = Text1.Text
If Trim(rs_login.Fields(1)) = Trim(Text2.Text) Then
Unload Me frmMain.Show Else
MsgBox \"密码不正确,请重输入!\
- 17 -
&
Text2.SetFocus Text2.Text = \"\" End If End If End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If End Sub
Private Sub Form_Load() cnt = 0 End Sub
用户如果没有输入用户名和用户密码,将出现消息框给予提示。如果输入的用户名在用户表中没有找到,将提示重新输入用户名,文本框将重新获得输入焦点。例如在图4.3用户登录窗体中的用户名中输入“100”,将在数据库中用户表中的user_ID中进行匹配,如图4.4用户表所示,user_ID中没有“100”,这时系统将出示提示框“没有这个用户,请重新输入”。如果用户输入用户名正确而输入的密码不正确,文本框txtPassword将重新获得输入焦点。例如在图4.3用户登录窗体中的用户名中输入“110”,密码中输入“1234”,将先对数据库中用户表的user_ID中的项进行匹配,如图4.4用户表中所示,有“110”这一项,用户名匹配成功,接着将密码“1234”与user_ID中“110”想对应的mima中的项进行匹配,发现与“110”所对应的项是“3333”,密码匹配不成功,这时系统将出示提示框“密码不正确,请重新输入”。当所输入的用户名和密码都在数据库中的用户表中匹配成功,用户登陆成功,全局变量OK将被赋值为True;一旦三次输入密码均不正确,全局变量OK将被赋值False。公用模块中的Main过程将根据OK的值决定是退出,或者进入系统。如果用户取消登录,单击“取消”按钮,将触发按钮Click事件,代码如下: OK=False Me.Hide
Me是Visual Basic中一个常用对象,用来指代当前对象本身。
添加读者种类窗体的创建
添加读者种类窗体是在窗体上放置多个文本框,用来输入读者种类信息;两个按钮用来确定是否添加读者种类信息;多个标签用来提示文本框中需要输入的内容。
用户通过此窗体的使用可以很容易的添加读者的种类,如图4.5所示。
- 18 -
图4.5 添加读者类别窗体
在载入窗体时,将会连接数据库当中的读者类别表,如图4.6所示。
图4.6 读者类别表
程序代码如下:
Private Sub Command1_Click() Dim sql As String
Dim conn As New ADODB.Connection Dim rs_readerstyle As New ADODB.Recordset If Trim(Text1.Text) = \"\" Then
MsgBox \"读者种类不能为空 \ Text1.SetFocus Exit Sub
End If
If Trim(Text2.Text) = \"\" Then
MsgBox \"借书数量不能为空\ Text2.SetFocus Exit Sub End If
If Trim(Text3.Text) = \"\" Then
- 19 -
MsgBox \"借书期限不能为空\ Text3.SetFocus Exit Sub End If
If Trim(Text4.Text) = \"\" Then
MsgBox \"有限期限不能为空\ Text4.SetFocus Exit Sub End If
'Provider = \"Microsoft.Jet.OLEDB.3.5.1 ;Persist Security Info=false;data source=D:\\图书管理系统\\database.mdb\"
conn.Open \"\\database.mdb\"
sql = \"select * from 读者类别 where 种类名称='\" & Text1.Text & \"'\" rs_readerstyle.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_readerstyle.EOF Then rs_readerstyle.AddNew
rs_readerstyle.Fields(0) = Trim(Text1.Text) rs_readerstyle.Fields(1) = Trim(Text2.Text) rs_readerstyle.Fields(2) = Trim(Text3.Text) rs_readerstyle.Fields(3) = Trim(Text4.Text) rs_readerstyle.Update
MsgBox \"添加读者类别成功!\ rs_readerstyle.Close Else
MsgBox \"读者类别重复!\ Text1.SetFocus Text1.Text = \"\" rs_readerstyle.Close Exit Sub End If End Sub
- 20 -
\"provider=Microsoft.Jet.OLEDB.4.0; data source=\" & App.Path &
Private Sub Command2_Click() Unload Me End Sub
程序首先对是否输入内容进行判断,然后进行格式判断,接着添加数据到数据库。最后根据状态来显示相应的信息:如果是添加状态,将提示添加成功,然后重新显示并清空所有文本框,以便继续添加记录:如果处于修改状态,将提示修改成功,然后更新所有记录的列表。
查询图书信息与借书窗体的创建
查询图书信息窗体可以使用户方便快捷的得知书籍的基本信息,可以通过书名、编号、
图书类别、作者、出版社进行对图书的基本信息的查询,如图4.7所示。
图 查询书籍信息窗体
用户设置查询方式并输入查询内容后,单击“确定”按钮后,将会连接到数据库当中的书籍信息表,如图所示。
图4.8 书籍信息表
- 21 -
在如图查询书籍信息窗体中,用户可以选择单一条件进行查询,例如在复选框书名前单击鼠标左键,选定书名查询,然后在复选框书名中输入你所要查询的书籍名称,点击“确定”按钮,如果所输入的书籍名称与数据库中的“书籍信息表”中的书名项中相匹配,那么所有符合查询条件的书籍信息都将出现在如图4.7查询书籍信息窗体中的文本框中;如果所输入的书籍名称与数据库中的“书籍信息表”中的书名项中不匹配,系统将出示提示框“查询不到该图书信息”。用户也可以选择使用多项条件查询,多项条件查询可以更准确的查找到用户所需要的书籍信息。例如可以选定复选框中的“书名”、“编号”、“作者”,然后输入相应的查询内容,这时将对数据库中“书籍信息表”中的“图书编号”、“书名”、“作者”各项进行匹配,如果匹配成功,那么所有符合查询条件的书籍信息都将出现在如图4.7查询书籍信息窗体中的文本框中;如果所输入的书籍名称与数据库中的“书籍信息表”中的“图书编号”、“书名”、“作者”各项匹配不成功,系统将出示提示框“查询不到该图书信息”,注意,在使用多项条件查询时,在所选复选框中有一项没有和数据库中“书籍信息表”中对应项匹配失败,系统都将出示提示框“查询不到该图书信息”。
程序代码如下: Option Explicit Dim panduan As String
Private Sub Command1_Click()
Dim rs_findbook As New ADODB.Recordset Dim conn As New ADODB.Connection Dim sql As String
If Check1.Value = vbChecked Then
sql = \"书名='\" & Trim(Text1.Text & \"\") & \"'\" End If
If Check2.Value = vbChecked Then If Trim(sql) = \"\" Then
sql = \"类别='\" & Trim(Combo1.Text & \" \") & \"'\" Else
sql = sql & \"and 类别='\" & Trim(Combo1.Text & \" \") & \"'\" End If End If
If Check3.Value = vbChecked Then If Trim(sql) = \"\" Then
sql = \"作者='\" & Trim(Text2.Text & \" \") & \"'\" Else
sql = sql & \"and 作者='\" & Trim(Text2.Text & \" \") & \"'\"
- 22 -
End If End If
If Check4.Value = vbChecked Then If Trim(sql) = \"\" Then
sql = \"图书编号='\" & Trim(Text3.Text & \" \") & \"'\" Else
sql = sql & \"and 图书编号='\" & Trim(Text3.Text & \" \") & \"'\" End If End If
If Check5.Value = vbChecked Then If Trim(sql) = \"\" Then
sql = \"出版社='\" & Trim(Text4.Text & \" \") & \"'\" Else
sql = sql & \"and 出版社='\" & Trim(Text4.Text & \" \") & \"'\" End If End If
conn.Open
\"provider=Microsoft.Jet.OLEDB.4.0;
data
source=\"
\"\\database.mdb\" If Trim(sql) = \"\" Then
MsgBox \"请选择查询方式!\ Exit Sub End If
sql = \"select * from 书籍信息 where \" & sql rs_findbook.CursorLocation = adUseClient
rs_findbook.Open sql, conn, adOpenKeyset, adLockPessimistic DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False If rs_findbook.RecordCount = 0 Then
MsgBox \"查询不到该图书信息!\Else
Set DataGrid1.DataSource = rs_findbook End If End Sub
- 23 -
&
App.Path
&
Private Sub Command2_Click() Unload Me End Sub
如果用户对所查询到的图书满意,决定借阅该书,那么在如图4.7查询书籍信息窗体中显示图书信息的文本框中该书位置单击鼠标左键,选定该书,然后单击“借这本书”按钮,这时将与数据库中的“书籍信息表”中的“是否被借出”项进行核对,如果所借图书相对应的“是否被借出”项为“是”,那么系统将出示提示框“此书以被借出”;如果所借图书相对应的“是否被借出”项为“否”,那么将会打开借书窗体,如图4.9所示。
图4.9 借书窗体
实现程序代码如下: Private Sub Command3_Click() If Trim(book_num) = \"\" Then
MsgBox \"请选择要借阅的图书!\ Exit Sub End If
If panduan = \"是\" Then
MsgBox \"此书已被借出!\ Exit Sub End If Unload Me
- 24 -
frmborrowbook.Show End Sub
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) book_num = DataGrid1.Columns(0).CellValue(DataGrid1.Bookmark) panduan = DataGrid1.Columns(7).CellValue(DataGrid1.Bookmark) End Sub
Private Sub Form_Load()
Dim rs_find As New ADODB.Recordset Dim conn As New ADODB.Connection Dim sql As String
sql = \"select * from 图书类别\" conn.Open \"\\database.mdb\"
rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic rs_find.MoveFirst If Not rs_find.EOF Then Do While Not rs_find.EOF
Combo1.AddItem rs_find.Fields(0) rs_find.MoveNext Loop
Combo1.ListIndex = 0 End If rs_find.Close End Sub
用户需要选择正确的“读者编号”和“读者姓名”,然后单击“确定”按钮,系统将出示提示框“借阅成功”, 数据库中的“书籍信息:表”中的“是否被借出”项将被改写为“是”;如果用户不想借阅此书,那么单击“取消”按钮,将退出借书窗体。
\"provider=Microsoft.Jet.OLEDB.4.0;
data
source=\"
&
App.Path
&
- 25 -
结果与讨论
由于时间的关系本文初步的完成了图书馆管理信息系统中的主窗体创建、用户管理模块的创建、添加读者类别窗体的创建和查询书籍信息窗体的创建。实现了对借阅信息的管理、书籍信息的管理、读者信息的管理、系统管理。本毕业设计论文对系统的需求分析、模型分析、设计和实现作了较详细地叙述,表明了面向对象的思想在系统开发中的优越性。也正因此使该原型系统在可扩展性、可移植性、代码重用性、系统维护上有明显的优势。
工作成果
针对各图书馆信息管理的特点,开发了图书馆管理信息系统,具备了图书馆管理中所需要的各种基本功能:
1.可以进行读者信息的存储; 2.书籍信息的录入和调整; 3.借阅信息的管理; 4.较为容易的操作
问题与不足
本文中所开发的图书馆管理信息系统还有很多不足之处: 1.功能还比较简单;
2.没有经过大量用户的实践检验,无法保证完全满足用户各方面的要求; 3.功能有待在使用过程中完善提高。
学习心得
1.在程序的设计过程中,通过各种资料的阅读,更深一步的了解了图书馆管理信息系统、数据库系统的的概念,它们的发展史、技术要点和设计思路。为今后开发和设计信息系统和数据库系统打下了深厚的基础。
2.在开发软件的过程中,对编程工具 Visual Basic从一无所知到较熟练的应用,不仅新学会了一种功能强大的编程语言,而且提高了独立自学的能力。在学习过程中,遇到了许多的问题,经过努力,我终于冲破了这些难点。由于每个软件的自身设计思路是不一样的,在各种功能的实现上多存在着差异,这使我走了许多的弯路。但同时使我了解了一种新的思路,使我获益匪浅。
总之,这次设计是我受益匪浅。对我以后的工作、学习打下了坚实的基础。尤其是软件的设计过程和思路的开拓益处更多。
- 26 -
因篇幅问题不能全部显示,请点此查看更多更全内容