《图书管理系统论文》word版.docx
- 文档编号:3855868
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:21
- 大小:216.48KB
《图书管理系统论文》word版.docx
《《图书管理系统论文》word版.docx》由会员分享,可在线阅读,更多相关《《图书管理系统论文》word版.docx(21页珍藏版)》请在冰豆网上搜索。
《图书管理系统论文》word版
铜陵职业技术学院
毕业设计
班级名称 07计算机应用技术1
专业名称 计算机应用技术
所属系部信息工程系
课题名称 图书信息管理系统
学生姓名 赵云丽
指导教师 查艳
铜陵职业技术学院教务处印制
1绪论1
1.1开发背景1
1.2开发工具的选用及介绍1
2总体分析与设计3
2.1系统分析3
2.2系统目标3
2.3总体需求4
2.4系统模块流程图5
2.5数据库设计6
3详细设计8
3.1用户登陆页面8
3.2图书查询页面9
3.3统计超期11
3.4数据库备份和还原12
3.5图书添加13
3.6用户管理15
3.7最新添加的图书16
3.8图书分类浏览17
3.9给超期用户发消息提醒18
4参考文献22
关键词
ASP
2总体分析与设计
2.1系统分析
图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。
而对于后者则要求应用程序功能完备,易使用等特点。
在数据库应用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。
数据库应用系统开发的目标是建立一个满足用户长期需求的产品。
开发的主要过程为:
理解用户的需求,然后,把它们转变为有效的数据库设计。
把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
考虑到使用的方便性,程序用ADO技术来操作数据库,免去了注册DSN步骤。
因此本人结合上述要求对MSSQLServer2000数据库管理系统、SQL语言原理、ASP程序设计,ADO数据库技术进行了较深入的学习和应用。
2.2系统目标
(1)用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己的借书情况和个人情况。
(2)用户在借书超期的情况下得到来自管理员的提醒。
(3)管理员可以方便进行图书管理,用户管理,管理员管理。
图书管理包括图书信息以及图书分类的添加,修改,删除。
用户管理包括用户信息的添加,删除,修改和锁定(限制用户的正常使用功能,使其无法登陆)。
管理员管理包括管理员信息的添加,删除,修改等。
(4)用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。
(5)未注册用户(游客)也可以浏览所有的图书信息和分类信息,但是无法借阅。
(6)实现模糊查询,使用户得到更多的相关记录。
并且考虑使用的方便性,一些经常使用的输入无须用户输入,比如进行图书查询时图书分类只须用户做选择就可以。
(7)考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。
删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。
等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。
2.3总体需求
图书管理系统是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解需求。
系统利用Asp与数据库结合的技术建立数据库管理系统,采用交互式的动态的Asp页面来实现。
需求调查是为了研究系统设计的开发途径和方法。
同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据。
具体分析如下:
添加操作:
在执行操作时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,如果存在会报错,程序返回上个页面,不执行添加操作。
删除操作:
考虑到了字段在不同表中可能会同时存在的情况,比如:
删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的所有图书查看或者是该用户的全部借书查看。
直到这种关联取消掉之后才允许进行删除这样的危险操作。
查询操作:
考虑到了模糊查询的实现,SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是namelike‘%’。
组合查询的实现也是程序判断用户所做的选择或者输入,在SQL语句中实现的。
超期统计:
假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了。
由用户借书记录中的用户编号到用户表中查找该用户。
发送消息:
往消息表中添加数据,该数据包含用户名,用户超期的图书,超期时间,罚金等相关警告信息。
当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看。
数据库备份和还原操作:
程序只要告诉SQL服务器执行备份和还原SQL语句就可以实现,在还原时程序还在使用系统数据库,此时执行还原操作会因为没有排它使用权出现错误,所以应告诉SQL服务器使用另外的一个数据库,程序中用的是:
usemaster。
还原操作时用FSO组件首先检查备份数据库文件是否存在,如果不存在则给出提示回到上个页面。
所有条件都允许后则执行还原操作,如果数据库数据比较多,备份和还原的时间都可能会比较长。
2.4系统模块流程图
2.4.1系统登陆流程图
2.4.2用户流程图
2.4.3管理员流程图
2.5数据库设计
表2.5.1管理员
字段
类型
长度
必填字段
允许空格
备注
ID
数字
id主键
name
文本
50
是
否
名字
pwd
文本
50
是
否
密码
表2.5.2图书信息
字段
类型
长度
必填字段
允许空值
备注
id
数字
否
id主键
booktype
文本
50
是
否
图书类别
publishing
文本
50
是
否
出版社
bookmoney
数字
20
是
否
货币
pdate
日期时间
是
否
出版时间
bookname
文本
50
是
否
图书名称
num
数字
8
是
否
图书数量
表2.5.3图书类别
字段
类型
长度
必填字段
允许空值
备注
id
id主键
booktype
文本
50
是
否
图书类别
表2.5.4借出信息
字段
类型
长度
必填字段
允许空值
备注
id
数字
否
id主键
bid
数字
50
是
否
图书编号
time
日期时间
借书时间
uid
数字
20
是
否
用户编号
表2.5.5消息表
字段
类型
长度
必填字段
允许空值
备注
id
数字
否
id主键
content
文本
500
是
否
消息内容
uid
数字
20
是
否
用户编号
表2.5.6用户表
字段
类型
长度
必填字段
允许空值
备注
id
数字
否
id主键
name
文本
50
是
否
名字
pwd
文本
50
是
否
密码
lock
是/否
是否锁定
loan_num
数字
20
是
否
借书数量
3详细设计
3.1用户登陆页面
该页面用于用户登陆,包括游客,用户和管理员。
成功登陆则取得用户的session用于以后的操作权限认定。
程序执行时首先判断用户类型,如果是游客则对session赋值为游客类型,然后直接进入主页;如果不是游客则执行查询语句,看数据库中是否存在这样的用户名和密码,根据选择用户类型的不同在不同的表中进行操作,成功则进入主页,否则提示输入错误。
截图如下:
图3.1.1用户登陆
代码:
--#includefile="conn.asp"-->
<%ifrequest("login")<>""then
ifrequest("usertype")<>""then'用户类型不空,核实数据真实
IfRequest("usertype")="user"Then
sql="select*fromuwherename='"&request("name")&"'andpwd='"&request("pwd")&"'"
Else
sql="SELECT*FROMadminWHEREname='"&Request("name")&"'andpwd='"&Request("pwd")&"'"
EndIf
Setrs=db.execute(sql)
Ifnotrs.EOFOrNotrs.BOFThen'输入数据存在
IfRequest("usertype")="user"Then
Ifrs("lock")Then
response.Write""
else
Session("usertype")="user"
Session("userid")=rs("id")
Session("name")=rs("name")
Response.Redirect("index.asp")
endif
Else
Session("usertype")="admin"
Session("adminid")=rs("id")
Session("name")=rs("name")
Response.Redirect("index.asp")
EndIf
Else
response.Write""
rs.close
Endif
else'用户类型空
response.Write""
endif
endif
%>
3.2图书查询页面
该页面用于用户的图书查询,利用查询语句的like%替代任意长度字符实现了模糊查询。
所有查询的字段用户都可以不输入,如果输入了某个数据,程序执行时自己会判断,输入了就会加上相应的SQL语句。
考虑到使用方便性,图书类型,价格范围,出版日期都无须用户输入,已经设定了合理的初始值。
图书类型如果不做选择就默认在所有图书类型中查找。
考虑到找到的记录可能会很多,引入了分页显示,在记录集循环显示的时候引入参数i来实现,设定i<10,初始值为0,这样每页显示的记录数为10条。
图3.2.1图书查询
代码:
--#includefile="conn.asp"-->
<%'定义记录集和变量
setrs=server.createobject("adodb.recordset")
bookname=trim(request("bookname"))
booktype=request("booktype")
publishing=trim(request("publishing"))
money1=trim(request("money1"))
money2=trim(request("money2"))
date1=trim(request("date1"))
date11=trim(request("date11"))
date2=trim(request("date2"))
date22=trim(request("date22"))
date3=trim(request("date3"))
date33=trim(request("date33"))
date111=date1&"-"&date2&"-"&date3
date222=date11&"-"&date22&"-"&date33
'查询的实现
sql="select*frombookwhere1"
ifbooktype<>""then
sql=sql+"andbooktypelike'%"&booktype&"%'"
elseifbookname<>""then
sql=sql+"andbooknamelike'%"&bookname&"%'"
elseifpublishing<>""then
sql=sql+"andpublishinglike'%"&publishing&"%'"
endif
endif
endif
sql=sql+"andbookmoney>='"&money1&"'andbookmoney<='"&money2&"'andpdatebetween'"&date111&"'and'"&date222&"'orderbyiddesc"rs.opensql,db,1,3
ifrs.eoforrs.bofthen
response.write"对不起没有搜索到记录"
response.end
else
'页面显示
dimpagenum,i
rs.pagesize=10
pagecount1=rs.pagecount
ifrequest.querystring("pagenum")=0orrequest.querystring("pagenum")=""then
pagenum=1
else
pagenum=trim(request("pagenum"))
rs.absolutepage=trim(request("pagenum"))
endif
%>
<%’分页实现
response.write"总共"&pagecount1&"页,当前"&pagenum&"/"&pagecount1&", pagenum=1&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">首页" %> <% ifpagenum>1then response.write" pagenum="&(pagenum-1)&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">上一页 " else response.write"上一页 " endif ifpagenum response.write" pagenum="&(pagenum+1)&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">下一页 " else response.write"下一页" endif %> <% response.write" pagenum="&pagecount1&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">尾页" %> 3.3统计超期 方便管理员清楚图书借出后的归还情况,并可以给超期的用户发送消息提醒,或者锁定该用户,使其无法登陆系统。 超期判定用dateserial()函数来实现将当前系统时间的格式转化为YY-MM-DD,这样方便后面的日期比较操作。 设置一个变量来代表当前系统时间减去三十天,如果用户借书的时间不在这两个时间之间那么就是超期。 页面开始首先进行管理员身份核实,用到了前面登陆页面说的session。 点击左边菜单的统计超期后系统自动完成统计,并将结果显示在右边,管理员可以进行的操作有: 锁定,给单个用户发消息,群发消息。 截图如下: 图3.3.1统计超期 代码: <%': 从loans表导出时间超期的数据更改系统时间来实现超期~管理员验证分页显示管理员发消息提醒还书 ifsession("usertype")<>"admin"then response.write"" endif dimloan_time'现在时间和借书时间相差三十天则超期 loan_time=dateserial(year(date),month(date),day(date)-30)'转换日期格式2007-3-31,函数参考 sql1="select*fromloans" setrs1=db.execute(sql1) sql2="selectbook.booknameasb_name,book.booktypeasbooktype,*fromloans,u,bookwhereloans.timenotbetween#"&loan_time&"#and#"&date&"#andu.id=loans.uidandbook.id=loans.bid" setrs2=db.execute(sql2) 'sql3="select*fromuwhereid='"&(rs2("uid"))&"'" 'setrs3=db.execute(sql3) %> 3.4数据库备份和还原 为了防止因意外对系统数据库造成的破坏,设置了数据库的备份和还原操作,其实现是用SQL本身的备份和还原功能,程序只要告诉SQL服务器执行就可以了,还原还首先检查是否存在备份文件,如果没有则报错并终止还原操作,执行还原操作时因为当前系统的数据库正在使用,无法被还原,所以要先选择SQL服务器上的其他数据库为当前活动数据库,系统用usemaster来实现将当前正在使用的数据库更改为master数据库。 系统设定备份文件存放在IIS主目录下,后缀是 .BAK,方便管理员查看。 截图: 图3.4.1数据库备份和还原 代码: --#includefile="conn.asp"--> <% ifrequest("do")="bak"then dimpath path=server.MapPath("./") 'response.Write""&path&"" sql="backupdatabase谢贵文todisk='"&path&"\\谢贵文.bak'withinit" db.execute(sql) response.Write"" endif %> <%ifrequest("do")="restore"then '判断备份文件是否存在 setiFso=server.CreateObject("Scripting.FileSystemObject")'FSO组件 dimbak_path bak_path=server.MapPath("./谢贵文.bak") ifnotiFso.FileExists(bak_path)then response.Write"" else sql1="usemaster"'获得排它访问权断开与当前系统数据的连接 sql="restoredatabase谢贵文fromdisk='"&server.MapPath("./")&"\\谢贵文.bak'" db.execute(sql1) db.execute(sql) response.Write"" endif endif'页面history.go(-1)时自己会重新连接数据库 %> 3.5图书添加 实现图书添加功能。 当管理员需要添加图书时,通过管理菜单点击“添加图书”就进入这个页面,考虑到输入的方便性图书分类和出版时间都可以进行选择,无须手工输入。 图书添加操作要求全部数据都必须输入,否则报错。 添加操作实际上是将数据写入数据库,写入新图书信息之前首先检查图书名是否重复,重复则报错返回上个页面,输入正确而且数据库中原本没有这样的数据则执行写入操作。 截图如下: 图3.5.1图书添加 代码: <%'图书增加 ifrequest("query")="book_add"then sql="select*frombooktype" setrs=db.execute(sql) %> <% ifrequest("active")=""
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书管理系统论文 图书 管理 系统 论文 word
![提示](https://static.bdocx.com/images/bang_tan.gif)