《图书管理系统论文》word版.docx

上传人:b****5 文档编号:3855868 上传时间:2022-11-25 格式:DOCX 页数:21 大小:216.48KB
下载 相关 举报
《图书管理系统论文》word版.docx_第1页
第1页 / 共21页
《图书管理系统论文》word版.docx_第2页
第2页 / 共21页
《图书管理系统论文》word版.docx_第3页
第3页 / 共21页
《图书管理系统论文》word版.docx_第4页
第4页 / 共21页
《图书管理系统论文》word版.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

《图书管理系统论文》word版.docx

《《图书管理系统论文》word版.docx》由会员分享,可在线阅读,更多相关《《图书管理系统论文》word版.docx(21页珍藏版)》请在冰豆网上搜索。

《图书管理系统论文》word版.docx

《图书管理系统论文》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")=""

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1