Web的图书管理系统的设计与开发Word文档下载推荐.docx
《Web的图书管理系统的设计与开发Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Web的图书管理系统的设计与开发Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
表2.1图书类目信息表
列名(英文)
数据类型
宽度
小数位数
允许空
列描述
book_type
varchar
50
No
图书的类别代码
book_kind
图书的类别名称
book_memo
Yes
类别的备注说明
7
表2.2图书基本信息表
ISBN
图书的索引号
book_no
图书的编号,具有唯一性
book_name
图书名称
Publishing
图书出版社
book_author
图书的编著者
book_price
float
8
2
图书单价
sale_date
20
图书出版日期
图书的备注说明
book_state
10
图书的状态标志(0-正常,1-逾期未还,2-已遗失)
Isloan
图书的借阅状态(0-未借出,1-已借出)
Loaner
图书的借阅者
Loandate
图书借阅日期
表2.3读者基本信息表
reader_no
读者证号
reader_name
读者姓名
reader_sex
2
读者性别
reader_id
读者工号
reader_place
读者所在部门
reader_zhicheng
读者职称
reader_state
int
读者状态(0-正常,1-有过期示还的书,2-该读者证已遗失)
reader_memo
读者备注
lost_date
读者证遗失日期
表2.4系统用户信息表
Username
245
管理员名称
Userpassword
管理员密码
Userclass
管理员级别(1-一般管理,2-最高管理)
图书借阅系统的具体实现
1.借书、还书功能的实现
借书和还书是图书借阅管理系统的一个最重要也是最基本功能。
它在图书
管工作人员的操作下,对本公司(企业)员工的借还书情况进行录入、修改、查询等一系列的过程。
在程序中,利用vbscript脚本语言实现画面的控制,利用asp语言来实现对库的操作和算法流程的控制。
3.1.1借书功能的具体实现
借书是图书管工作人员根据借阅者所借书籍的图书编号(当然这个编号于每一本图书是唯一的)将该图书登入借书表单,并对其借阅时间和借阅数量进行控制的过程。
因为该系统是针对公司(企业)的图书馆进行管理的,所以图书借阅也仅对公司内部人员进行开放,所以借阅者必须根据自己的工号(工作证编号)和其它一些在公司的相关信息办理读者证后,工作人员根据借阅者所持读者证的读者证号(该读者的唯一标识)进行查询,如果该读者在读者信息数据库中有记录,则调出该读者个人信息和他(她)已借书籍的信息,如果读者信息数据库中无该读者信息,则此人不能借阅书籍。
具体的流程如下:
图3.1借书程序流程图(a)
图3.2借书程序流程图(b)
算法描述如下:
首先导入数据库连接,以便对读者信息表和图书基本信息表进行查询和修改:
<
!
--#includefile="
data_conn.inc"
-->
因为借书只能是拥有图书馆工作人员以上的权限的人才能进行的操作,所以
在程序开始部份还应先判断一下用户的权限,如果没有工作人员的权限,则要先
进行管理员登陆,即转向登陆界面:
(此处用到“session“这个物件来[4]存取一个变量记录登陆的用户名,它可以在同一个客户端多个打开的浏览器之间传递变量值,如果用户能过了管理员登陆,则变量值不会为空,相反则为空:
ifsession("
user_name"
)="
"
then
导向管理员登陆界面
endif
接下来就是借书操作了:
//变量说明部分
//readerno为读者证号
//borrowno为借书编号
//number为是否标志是否查询的读者信息是否存在,初始为1,表示有信息,如果输入读者证号后,没有查到读者信息,则更新为0。
//clickselect为是否查询过读者信息,即是否点击过读者信息的“查询“按扭
//booknumber统计已借书籍的数据量,初始化设为0,如果查到已借书籍大于或等于3时,该变量设为3。
//count统计过期第个读者过期未还的书籍数目
先查询读者证号,如果读者证号为空,提示要求输入。
这里可以放在读者证“查询”的单击事件中:
subreaderno_onclick//读者证“查询”的单击事件
ifreaderno="
then//如果读者证号为空,提示要求输入
显示"
请输入读者证号!
将光标定位于读者证号的输入框
endif
clickselect="
1"
//已查询读者信息
booknumber="
0//借阅书目初始化为0
提交当前表单的信息
endsub
查询了读者信息后,如果该读者在数据库中有记录,而且已借书籍没有超过去3本,则可以借书,如果没有记录,则屏蔽“借书”的功能,要求用户输入正确的读者证号:
Ifreaderno<
>
then
根据readerno查询读者信息数据库readerinformation
if查询的记录数=0then
提示用户“无相应记录”
number="
0"
将光标定位于读者证号输入框
结束后面的ASP程序的运行,即不再查询已借书目信息
else
显示读者的个人信息
ifreaderno<
orborrowno<
根据readerno将book_input与reaerinformation关联起来
查询book_input中loaner(借阅者)为readerno的所有图书信息
if查询的记录数=0then
显示“没有借书记录”
else
if已借书记录>
=3then
显示"
你的书已借满"
booknumber="
3"
endif
If已借书记录<
=3and已借书记录>
0then
ForI=1to已借书记录数
显示已借的书目信息
dd=读取数据库中“借阅日期”字段
ifdd<
if当前日期-当前读取的借阅日期>
60then
count=count+1
endif
Next
ifcount<
提示"
你有过期未还的书!
更新book_input中刚查到的过期未还的书的book_state为1
更新readerinfomation中该读者的reader_state为1
Endif
ifbooknumber>
=3orcount<
0then
屏蔽“借书“功能,即不显示借书按扭
若未屏蔽借书功能,则可以借书
先输入借书编号,按下借书按扭,如果编号为空,要求输入,如果未查询读者证号就点击借书按扭,则提示用户先查询读者证号后,此段程序可放入借书按扭单击事件中:
subborrowbook
ifreaderno="
显示"
请先查询借书者的读者证号!
elseifborrowno="
请输入借书编号"
提交当前表单信息
提交信息后,除运行上面的程序外,还要执行提交状态后的程序:
ifborrowno<
查询book_input中的book_no为borrowno记录
if查询记录数<
if是否已借字段内容=1then
显示"
该书已借出!
else
是否已借字段内容=1
借阅日期字段=今天的日期
借阅者字段=当前输入的读者证号
endif
显示"
没有这本书!
在借书这个程序中,我们利用读者证号这个关键字,把读者信息表和图书基本信息表联系起来,多方面考虑问题,把借书过程中可能出现的状况,都要一一考虑进来,方便能工作人员和读者。
3.1.2还书功能的具体实现
还书是在借书的基础上来操作的过程,总的原则是,没有借书,就没有还书,还书所要实现的功能,在某种程度上和借书是相似的,同样要提示读者是否有过期未还的书,此时也需要对库中的信息进行更改。
还书以后,也要即时的反溃当前的借书状况,以便读者和工作人员知道“还书”是否操作成功。
与借书相比,借书是通过读者证号和图书编号来登记,而还书只需要且必须要图书编号来登记还书。
当查到该编号的图书,而且确实是未还图书,则将显示还书者的读者信息和所有他(她)的已借书目信息.我们要实现的目标是尽可能方便能的操作和尽可能直观的反溃!
所以我们采用输入图书编号来还书的同时,查阅出借该书的读者的所有借书记录,只要点击所列出的该读者借书记录中的某一条,就可以还这本书.还有一点是还书需要处理的,那就是续借,如果读者想要续借,应该很方便的进行,与还书一样,只要点击要续借的书按“续借”即可,但是要考虑如果该书已过期,则不能续借。
具体程序流程图如下:
return_book.asp
图3.3还书程序流程图
算法描述如下:
--#includefile="
data_cnn.inc"
因为还书只能是拥有图书馆工作人员以上的权限的人才能进行的操作,所以在程序开始部份还应先判断一下用户的权限,如果没有工作人员的权限,则要先进行管理员登陆,即转向登陆界面,这部分的操作和借书是一样的:
接下来是还书的操作:
//变量说明部分
//returnno为还书编号
//state表示当前有无可还书的记录
//reloan表示是否要续借
//step表示是否提交过表单,1-初始状态,2-已经提交
//reader_no表示还书者读者编号
//book_no表示当前要还的或要续借的图书编号
//count表示当前有没有过期未还的书
subreturn//还书按扭单击事件
ifreturnno="
请输入还书编号!
光标定位到输入还书编号栏
else
step=1
带上还书编号提交表单
接下是查询该还书编号的书
Ifrequest("
returnno"
)<
在数据库中查询该编号的图书
if查询的记录数=0andreader_no="
提示“可能输入了无效的图书编号或该书没有借出,请重输!
”
结束程序的继续执行
对将要显示的当前所要还的书籍的表格中的借阅者,书籍编号,书名,作者,借阅日期单元格的内容填值
if当前日期-借阅日期>
更改读者信息表中的reader_state为1
提示用户“你的书已过期!
//根据借阅者的读者证号查询该读者的相关信息
sqlstr2="
select*frombook_readerinfowherereader_no='
&
loaner&
'
对要显示读者信息的栏位赋值
如果找到了要还的书,便可以还书或续借了
显示"
请先输入还书编号"
光标定位于还书编号
exitsub
ifstate="
no"
exitsub
ifbook_no="
请选择要还的书!
return_book.submit//提交当前表单
*****以上这段程序可以放在借书按的单击事件中
*****以下是续借按扭的单击事件的算法
subcontiborrow//续借按扭单击事件
ifbook_no="
请选择要续借的书!
exitsub
reloan="
yes"
提交表单
endsub
提交表单后,要对库中的数据表进行还书和续借的操作了
从提交的表单中提取所有的读者信息和当前所要还的图书编号
count=0//设当前无过期书籍
ifbook_no<
andreader_no<
if当前日期-借阅日期>
ifreloan="
提示"
书已过期,不能续借!
不再做任何更改库中记录的操作,所回续借前的状态
结束ASP程序的运行
ifreloan="
将当前书籍的借阅日期减一个月,因为续借只能是一个月
还原当前所还书籍的借阅者,借阅日期,是否借阅为初始状态。
//再一次查找当前还书者的所有借书情况
sqlstr3="
select*frombook_inputwhereisloan=1andloaner='
reader_no&
if查询记录数>
0then
fori=1to查询记录数
//查找在还了当前所要还的书以后是否还有过期未还的书
if当前-借阅日期>
count=count+1
next
ifcount=0then
将当前的还书者的状态reader_state还原为0
endif
else//如果已经没有要还的书籍
将当前的还书者的状态reader_state还原为0
endif
2.异常处理
2.1遗失书籍处理的具体实现
在图书管理系统中,读者遗失书籍的状况是极有可能发生的,所以系统一定要有相应的处理措施,方便工作人员对书籍的管理。
在这个处理过程中,我们根据要办理遗失处理的读者的读者证号来查找该读者所借阅的所有书籍,如果该读者没有借阅的书籍,或该读者根本不存在,也就无需也不能进行书籍遗失处理。
如果经过查询,有借阅记录,则在选择要办理遗失的书籍后(在每条借书记录后有checkbox多选框),点击“挂失“即可。
而取消挂失只需要选中罗列出来的所有遗失的书籍记录的某一条或多条,点击“取消遗失”即可。
这块功能的实现总共由三个程序共同来完成,分别为lostbook.asp,set_lost_book.asp,select_input_book.asp。
当用户需要办理遗失时,首先运行lostbook.asp,进入该模块的主界面,在这个界面中,我们会把所有已办理遗失的书籍列出来,如果要对书籍办理遗失,则点击“遗失办理”,此时会调用另一个程序set_lost_book.asp来处理,如果是要取消遗失,就直接在第一个主界面列出的
已遗失书籍的记录中查找,可以点击“查找”按扭来确定用户要对哪一本遗失的书“取消遗失”,然后选取中它,进行取消。
3.2.2读者证挂失处理的具体实现
因为有读者证的办理,所以读者遗失读者证也就必须有挂失处理,在本系统中读者证的挂失也是异常处理的一个项目。
当读者发现读者证丢失后,要及时进行挂失,但是如果该读者有书未还,那么应该先把书还掉才可以挂失。
读者可以通过像遗失书籍处理中一样,点选需要挂失或需要取消挂失的读者信息,来完成操作。
整个功能也由三个程序构成:
lostreaders.asp,set_lost_reader.asp,select_readerinfo.asp,首先执行的是lostreaders.asp,如果要办理挂失,则点击页面的“挂失办理”,调用set_lost_reader.asp,进入挂失的界面,此时,会显示所有未办理挂失的读者信息,为了避免误操作,必须定位需要挂失的读者方可进行挂失,工作人员可以通过界面的“查找”按扭,此时会调用select_readerinfo.asp,在所有未办理挂失的读者证信息中定们需要记录,然后选中它,“挂失”即可。
如果要取消挂失,则只要在首页面查找要进行取消的读者信息,此时也会调用select_readerinfo.asp,进入查找界面,查找完毕后,在主界面显示出查找结果,然后点选要办理取消的读者,取消挂失。
变量说明:
//value存放查询中查找记录的SQL语名
//reconum当前显示的记录数
//sqlstr当前运行的SQL语句
在读者证挂出失这个部分,关于办理挂失,特别是取消挂失的处理过程和书籍遗失的处理过程相似,只是在读者证挂失这个部分加入了对读者是否有书未还的判断,因此在显示读者信息后,在点击挂失,取得当前的读者证号,判断在book_input这个库中有没有该读者的借书记录,如果有,则要求先还书再挂失。
在查询过程中,为了方便在转页时仍显示的是当前查询的结果,而不是开始显示的记录页面,在程序员中用到了value这个变量来存储当前查询的SQL语句。
而同时sqlstr这个变量又表示当前运行的SQL语句。
当执行查询以后,判断value值是否为空,如果不为空,则把它的值放入sqlstr,在翻页的过程中传递的sqlstr值便能始终
会是最近查询的值,这一点在lostbook.asp中也用到了。
其它关于取消挂失和正常办理挂失的过程与前面的书籍遗失处理大同小异,这里不再繁述.。
3.系统维护模块的具体实现
2.1数据备份与恢复的具体实现
在图书管理这样的系统中,基本上是对图书资料的管理,因此图书资料和读者资料的正确性也就尤为重要,更不能丢失,所以我们在系统中加入了数据据备份与恢复的功能。
管理员要定期的对图书和读者的资料进行备份,在备份后,即始有信息丢失或损坏,也可以把损失降到最低。
在本系统中,数据的备份与恢复只能是最高权限的管理员才能进行的操作,备份的路径由管理员指定,但是文件名由系统定义,备份是全数据库的备份,文件名是数据库名加“.bak”的后缀,而且备份的文件是存储在数据库所在的机子上,而不是用户随机操作的机子上。
恢复则针对备份的文件进行。
如果没有备份文件是不能进行恢复的,恢复时一定要在数据库没有被使用时才能运行。
具体算法流程如下:
图3.6数据库备与恢复程序流程图
变量描述:
//sqlserver指定数据库链接的SERVER
//sqlname指定数据库链接的UID
//sqlpassword指定数据库链接的PWD
//sqlLoginTimeout指定SQL登录超时限定
//databasename当前要备份的数据库的名称
//bak_file指定数据库备份文件的路径
//act指定当前操作是备份还是恢复
3.2管理员口令维护具体实现
由于图书管理系统中的借书、还书还有备份、恢复等功能,都是