图书租借系统.docx
- 文档编号:5984394
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:53
- 大小:436.89KB
图书租借系统.docx
《图书租借系统.docx》由会员分享,可在线阅读,更多相关《图书租借系统.docx(53页珍藏版)》请在冰豆网上搜索。
图书租借系统
附加实例2——图书租赁系统
目前租书社与读书社,每天都要处理图书、读书会员、借书、还书等信息,并且需要将这些记录保存在数据库中。
手动记录这些数据会耗费大量时间,如果做一个程序通过电脑来管理会更方便、省时。
本章将详细介绍一个关于图书租赁的信息管理系统,逐步向读者演示如何通过VisualBasic实现管理信息系统。
2.1系统分析
一个完善的的图书租赁系统应包括除借书、还书外还要对图书信息及会员信息进行管理。
对这些信息的处理操作有添加记录、删除记录、修改记录等。
2.1.1功能需求分析
根据与图书租赁系统有关操作发生交互对象入手,可以分析出系统的功能需求有图书租赁管理、图书管理、会员管理、操作员管理。
1.图书租赁管理
图书租赁管理是本软件最常用的操作,其功能如下。
(1)外借图书:
向外租赁图书给会员,此操作需要记录会员信息、所借图书信息、及借阅时间。
(2)归还图书:
会员来读书社还书,此操作需要记录会员信息、所还图书及还书时间。
(3)租赁记录查询:
对会员所借及所还图书进行查询,此操作需要联合查询会员信息、图书信息、会员租赁记录,可完成显示全部借阅记录,或未还记录。
(4)租赁数据设定
对每本每天需要的租金进行设定。
2.图书管理
图书是图书租赁系统管理的目标对象,图书管理应包括查找图书、添加图书、删除图书、修改图书、显示全部图书等。
3.会员管理
会员是图书租赁系统的服务对象,只有对已存在系统中的会员才能提供图书租赁服务。
会员管理功能包括添加会员、删除会员、修改会员、查找会员、会员充值及会员记录查询等。
4.操作员管理
操作员是本系统的使用者,操作员必须输入用户名与密码才能登录系统进行各种操作,本功能应包括添加、删除操作员及密码设置及修改等功能,本例只有修改管理员密码的功能,系统中只有一个管理员用户,如果读者对此感受兴趣可自行添加其它功能。
2.1.2数据需求分析
为了实现图书租赁系统所需要的所有功能,图书租赁系统由六个表组成。
图书表保存图书信息,会员表保存会员信息,借书记录保存租赁记录,vipaccount表保存会员的帐号信息及现借书数量,loginaccount保存操作员信息包括操作员用户名和密码,zujin保存每天每本书的租金,会员帐号最低余额。
2.2系统设计
根据前面对系统功能需求及数据需求的分析,本节对这些功能模块及数据库存设计进行介绍。
2.2.1系统功能模块设计
系统功能模块由一个公用模块和若干子模块组成,公用模块是在其它几个子模块都能用到的一些功能,放到一个公用的模块中。
1.系统公用模块
系统公用模块名为module1,其中opendate过程负责连接数据库。
2.系统各子模块
图18-1系统各子模块的组成
按照各子模块的逻辑组成关系如图18-1所示。
其中图书租赁管理模块包括借书管理、还书管理、租赁记录查询及租赁数据设定;图书管理包括图书信息的添加、删除、修改等操作;会员管理包括会员信息的添加、删除、修改等;操作员管理信息。
2.2.2系统数据库设计
根据系统数据库需要分析,下面对我们需要的数据库表的设计进行详细介绍,我们使用SQLSERVER数据库,首先在SQLSERVER中使用在前面章节中介绍的方法创建图书租赁系统数据库,然后建立6个表,每个表的属性分别如表18-1至18-6所示。
表18-1图书表属性
字段名
字段说明
数据类型
字段大小
是否允许为空
默认值
bookno
图书编号
Char
5
否
Bookname
图书名称
Char
30
是
Booktype
图书类型
Char
10
是
Bookpubdate
出版日期
Char
10
是
Writer
作者
Char
6
是
Price
单价
Money
8
是
Bookintor
图书简介
Text
16
是
lended
是否被借出
Char
1
是
0
表18-2会员表属性
字段名
字段说明
数据类型
字段大小
是否允许为空
默认值
Id
会员编号
Char
5
是
Name
会员姓名
Char
6
是
Age
年龄
Char
3
是
Sex
性别
Char
2
是
Addr
联系地址
Char
50
是
Mbphone
手机
Char
11
是
Tele
电话
Char
12
是
表18-3借书记录表属性
字段名
字段说明
数据类型
字段大小
是否允许为空
默认值
Vipid
会员编号
Char
5
否
Bookno
图书编号
Char
5
否
Lendeddate
借出日期
Char
10
是
Returned
是否归还
Char
1
是
0
returneddate
归还日期
Char
10
是
表18-4vipaccount表属性
字段名
字段说明
数据类型
字段大小
是否允许为空
默认值
Id
会员编号
Char
5
是
Pass
密码
Char
11
是
Account
帐户余额
Money
8
是
0
Bkamount
借书数量
Char
3
是
0
表18-5loginaccount表属性
字段名
字段说明
数据类型
字段大小
是否允许为空
默认值
Users
用户
Char
11
是
Pass
密码
Char
11
是
表18-6zujin表属性
字段名
字段说明
数据类型
字段大小
是否允许为空
默认值
Zujin
每本第天租金
Money
8
是
1
Mini
会员账户最低余额
Money
8
是
2.3系统实现
按照上面的需求分析我们创建了程序所需要的数据库和表,下面我们来看程序的实现部分,即如何通过VB编程访问上面那些表和实现上面所述的图书租赁系统所需要的功能。
2.3.1新建工程
打开VisualBasic出现VB新建工程向导如图18-2所示,选择标准EXE工程并打开。
进入IDE开发环境。
图18-2新建工程向导
2.3.2创建公用模块和登录模块
(1)将默认窗体“form1”改为“frmlogin”。
添加一个标准模块Module1添加步骤为:
选择【工程】→【添加模块】菜单命令,然后在打开的“添加模块”对话框中单击【打开】按钮,这时工程资源管理器如图18-3所示。
图18-3添加标准模导块
(2)添加标准模块代码如下:
PubliccnAsNewADODB.Connection
PublicrsAsNewADODB.Recordset
PublicSubopendata()
cn.Open"Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;pwd=;InitialCatalog=图书租赁系统;DataSource=(local)"
EndSub
标准模块中定义了cn(数据库连接)和rs(记录集)两个公用变量及opendata过程。
Opendata过程用来打开数据库连接。
(3)双击工程资源管理器窗体中的frmlogin,打开登录窗体,设计登录窗体界面如图18-4所示。
图18-4登录窗体界面
登录窗体的负责操作员使用本系统时的密码校验,必须输入正确密码才能使用本系统。
管理员帐号保存在loginaccount表中,建表时添加一条记录users和pass的值都为“admin”
(4)编写登录窗体代码:
确定按钮代码:
PrivateSubCommand1_Click()
IfLen(Text1.Text)>0Then
DimsqlstrAsString
sqlstr="select*fromloginaccountwhereusers='"&Text1.Text&"'"
rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic
Ifrs.RecordCount>0Then
IfText2.Text=Trim(rs.Fields
(1).Value)Then
frmmain.Show
UnloadMe
Else
MsgBox("密码错误")
EndIf
Else
MsgBox("没有此用户")
EndIf
rs.Close
Else
MsgBox("请输入用户")
EndIf
EndSub
Sql变量为字符串型变量,用来保存SQL语句。
“&”为字符串连接符。
rs的open方法返回一个记录集,这个记录集保存在rs中,open方法的用法请参考前面章节的内容介绍。
Frmmain.show调用主窗体。
unload语句可以将窗体或控件从内存中卸载,恢复内存空间,me是指自己也就是登录窗体。
取消按钮代码:
PrivateSubCommand2_Click()
End
EndSub
用户单击取消按钮时会结束程序运行。
窗体加载时代码:
PrivateSubForm_Load()
rs.CursorLocation=adUseClient
rs.CursorType=adOpenStatic
opendata
EndSub
窗体加载时打开数据连接,CursorLocation定义定义游标类型为客户端型,CursorType指示当从指定的查询中打开一个结果集时所使用的游标缺省类型adOpenStatic为只读。
2.3.3创建主窗体frmmain.frm
选择【工程】→【添加窗体】菜单命令,打开“添加窗体”对话框,如图18-5所示。
图18-5“添加窗体”对话框
直接单击对话框中的【打开】按钮,创建了一个窗白窗体,由于程序使用了SSTAB控件。
首先引入此控件,此控件的文件名为TABCTL32.OCX。
选择【工程】→【部件】菜单命令,打开“部件”对话框,如图18-6所示。
有时系统中找不到此文件,本例提供了此文件,位于“光盘\chap18\”文件夹中,单击图18-6中的【浏览】按钮,找到该文件夹选中“TABCTL32.OCX”,单击【打开】按钮,返回到“部件”对话框,单击【确定】按钮,此时工具箱中添加了SSTab控件,图标为“
”。
图18-6添加SStab控件到工具箱
在新建窗体中放置一个Sstab控件,如图18-7所示。
图18-7在窗体中添加SSTab控件
在此控件上单击右键将打开一个菜单,在打开的菜单上左键单击【属性】菜单命令后打开如图18-8所示的属性页
图18-8SSTab控件的属性页
将TabCount(页面个数)和TabsPerRow(每行页数)都设为4并单击【应用】按钮,然后单击CurrentTab后面的“<>”两个按钮,可在0至3之间前后翻页。
从第一个到第四个依次改变它们的TabCaption属性值为“图书租赁管理”、“图书管理”、“会员管理”、“操作员管理”设计完如图18-9所示。
图18-9SSTab控件设置完后界面
添加主窗体菜单,按Ctrl+E快捷键打开“菜单编辑器”对话框,如图18-10所示。
图18-10“菜单编辑器”对话框
主窗体菜单属性如表18-7所示。
表18-7主窗体菜单属性表
标题
名称
属性
图书租赁系统
Mzl
主菜单
借书管理
Mlend
一级子菜单
还书管理
Mreturn
一级子菜单
租赁记录查询
Mseek
一级子菜单
租赁数据设定
Minfo
一级子菜单
图书管理
Mbk
主菜单
查找图书
Mbkseek
一级子菜单
添加图书
Mbkadd
一级子菜单
删除图书
Mbkdel
一级子菜单
编辑图书
Mbkedit
一级子菜单
显示全部数据
Mshowallbk
一级子菜单
会员管理
Mvip
主菜单
添加
Mvipadd
一级子菜单
删除
Mvipdel
一级子菜单
编辑
Mvipedit
一级子菜单
查找会员
Mvipseek
一级子菜单
会员充值
Mvipincharge
一级子菜单
修改密码
Mchgpass
一级子菜单
显示全部
Mshowallvip
一级子菜单
操作员管理
Mop
主菜单
修改管理员密码
Mchgadminpass
一级子菜单
关于
Mabout
主菜单
2.3.4创建图书租赁模块
图书租赁模块是本系统中使用最频繁的模块,具体的创建步骤如下:
(1)在SSTab控件第一页添加四个命令按钮,分别命名为cmdlend、cmdreturn、cmdseek、cmdinfo,对应的caption属性分别为借书管理、还书管理、租赁记录查询、租赁数据设定,如图18-11所示。
图18-11图书租赁管理模块
(2)编写【辑借书管理】按钮代码如下:
PrivateSubcmdlend_Click()
frmlend.Show
EndSub
Frmlend.show命令可以打开借书管理窗体(frmlend.frm)。
(3)创建借书管理窗体。
选择【工程】→【添加窗体】菜单命令打开“添加窗体”对话框,单击该对话框中的【打开】按钮添加一个新窗体,将其名称改为“frmlend”。
在借书管理窗体中放置数个标签、文本框和按钮,设计的界面如图18-12所示。
图18-12借书管理窗体
借书管理窗体主要控件的属性设置如表18-8所示。
表18-8借书管理窗体主要控件属性
对象
属性
值
说明
Form
名称
Frmmain
窗体名称
Caption
借书管理系统
窗体标题
Text
名称
Txtvipid
会员编号
名称
Txtvipname
会员姓名
名称
Txtbkamount
已借图收量
名称
Txtbkno
图书编号
名称
Txtbkname
图书名称
名称
Txtbktype
图书类型
名称
Txtpubdate
出版日期
CommandButton
名称
Cmdlend
按钮名称
Caption
借出
按钮标题
名称
Cmdrelend
按钮名称
Caption
重借
按钮标题
名称
Cmdend
按钮名称
Caption
退出
按钮标题
(4)编写借书管理窗体代码:
借出命令按钮代码
PrivateSubcmdlend_Click()
Iftxtvipid.Text=""Ortxtbkno.Text=""Then
‘判断会员编号和图书编号是否为空
MsgBox("请填写完整信息")
txtvipid.SetFocus
Else
IfMsgBox("信息无误,同意借出吗?
",vbYesNo)=vbYesThen
Setrs=Nothing
rs.CursorLocation=adUseClient
rs.Open"select*from图书表wherebookno='"&txtbkno.Text&"'",cn,adOpenDynamic,adLockOptimistic
Ifrs.Fields!
lended="1"Then
txtbkno.Text=""
txtbkname.Text=""
txtbktype.Text=""
txtpubdate.Text=""
MsgBox("此书已借出!
!
!
")
txtbkno.SetFocus
ExitSub
EndIf
Setrs=Nothing
rs.Open"select*fromvipaccountwhereid='"&txtvipid.Text&"'",cn,adOpenDynamic,adLockOptimistic
IfTrim(rs.Fields!
pass)<>Trim(InputBox("请输入读者的会员密码:
"))Then
MsgBox("读者的密码有误,对不起不能借给读者书")
ExitSub
EndIf
Setrs=Nothing
sqlstr="updatevipaccountsetbkamount=bkamount+1whereid='"&txtvipid.Text&"'"
rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic
Setrs=Nothing
rs.Open"update图书表setlended='1'wherebookno='"&txtbkno.Text&"'",cn,adOpenDynamic,adLockOptimistic
Setrs=Nothing
sqlstr="insertinto借书记录(vipid,bookno,lendeddate)values('"&txtvipid.Text&"','"&txtbkno.Text&"','"&Date&"')"
rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic
MsgBox("借出成功!
")
UnloadMe
EndIf
EndIf
EndSub
Setfocus方法设定哪个控件具有焦点。
VbYesNo定义消息框显示的提示按钮为“是”和“否”。
Setrs=nothing语句将rs变量从内存中卸载,同时关闭以前打开的记录集。
rs.fields!
lended引用lended字段返回lended字段的值,若lended字段值为1时说明此书已借出,退出过程,停止借出,如果为0继续借出,借出前要求会员输入密码,会员密码保存在vipaccount表中,密码不正确时退出过程,如果密码校验成功则更新vipaccount表中的bkamount字段,即会员未还图书的数量加1,并将图书表中借出图书的lended字段的值更新为1,同时在借书记录表中插入一条借书记录。
重借按钮代码:
PrivateSubcmdrelend_Click()
txtvipid.Text=""
txtvipname.Text=""
txtbkamount.Text=""
txtbkno.Text=""
txtbkname.Text=""
txtbktype.Text=""
txtpubdate.Text=""
txtvipid.SetFocus
EndSub
此过程负责清空填写的所有信息,并使txtvip获得焦点。
退出按钮代码:
PrivateSubcmdend_Click()
UnloadMe
EndSub
此过程很简单调用unload语句卸载借书管理窗体,me代表当前窗体。
(5)编写图18-11中的【还书管理】按钮代码如下:
PrivateSubtxtreturn_Click()
frmreturn.Show
EndSub
Frmreturn.show命令可以打开还书管理窗体(frmreturn.frm)。
(6)创建归还图书窗体。
选择【工程】→【添加窗体】菜单命令将打开“添加窗体”对话框,直接单击该对话框中的【确定】按钮后,添加一个新窗体,将其名称改为“frmreturn”,在窗体中放置数个文本标签、文本框和按钮,如图18-13所示。
窗体中主要控件的属性设置如表18-9所示。
图18-13归还图书窗体
表18-9归还图书窗体的主要控件属性表
对象
属性
值
说明
Form
名称
Frmreturn
窗体名称
Caption
归还图书
窗体标题
Text
名称
Txtvipid
会员号
名称
Txtvipname
会员姓名
名称
Txtbkamount
已借图书量
名称
Txtbkno
图书编号
名称
Txtbkname
图书名称
名称
Txtbktype
图书类型
名称
Txtbkpubdate
出版日期
CommandButton
名称
Cmdreturn
按钮名称
Caption
归还
按钮标题
Name
Cmdrereturn
按钮名称
Caption
续还
按钮标题
Nam
Cmdexit
按钮名称
Caption
退出
按钮标题
(7)编写归还窗体代码:
归还按钮代码:
PrivateSubcmdreturn_Click()
DimdaysAsInteger
DimmoneyAsSingle
Iftxtvipid.Text=""Ortxtbkno.Text=""Then
MsgBox("请填写完整信息")
txtvipid.SetFocus
Else
Setrs=Nothing
rs.CursorLocation=adUseClient
sqlstr="select*from借书记录wherevipid='"&txtvipid.Text&"'andbookno='"&txtbkno.Text&"'andreturned='0'"
rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic
Ifrs.RecordCount>0Then
days=Date-CDate(rs.Fields!
lendeddate)
Ifdays=0Thendays=1
Setrs=Nothing
rs.Open"select*fromzujin",cn,adOpenDynamic,adLockOptimistic
money=days*rs.Fields(0).Value
IfMsgBox("信息无误,同意借出吗?
",vbYesNo)=vbYesThen
Setrs=Nothing
rs.Open"update图书表setlended='0'wherebookno='"&txtbkno.Text&"'",cn,adOpenDynamic,adLockOptimistic
Setrs=Nothing
rs.Open"updatevipaccountsetbkamount=bkamount-1,account=account-"&money&"whereid='"&txtvipid.Text&"'",cn,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 租借 系统