图书管理系统设计

图书管理系统设计[java毕业论文下载]

目录

 

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毕业设计小结 20

5致谢 21

6参考文献 22


1 绪论

当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,计算机被广泛应用于B/S系统环境。计算机的好处在于它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了安全性。

对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书信息而设计的。 

1.1 开发背景

图书管理包括的图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书管理系统都是初步开始使用,甚至尚未使用计算机进行信息管理。以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是图书管理系统开发所要解决的问题。

基于这此问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的进行查询和修改图书情况等图书管理操作。

1.2 开发工具的选用及介绍

1.2.1 ASP简介

Active Server Pages:是一套微软开发的服务器端脚本环境,ASP内含于IIS之中 , 通过ASP我们可以结合 HTML 网页、ASP 指令和 ActiveX元件建立动态、交互且高效的WEB服务器应用程序。有了ASP你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通 HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。

 1.2.2 Dreamweaver简介

Dreamweaver是Macromedia公司最新推出的主页编辑工具。这是一个所见即所得主页编辑器,并带有站点管理功能,让你方便地设计和管理多个站点。而它最棒的地方就是支持最新的DHTML和CSS标准, 你可以用它设计出生动的DHTML动画、多层次的页面(layer)以及CSS样式表。

1.2.3 Microsoft SQL Server 2000简介

SQL是英文(Structured  Query Language)的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。

SQL语言有以下几个优点:

1 非过程化语言
   SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。

SQL不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。

2. 统一的语言

  SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。

3. 所有关系数据库的公共语言

  由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。

2总体分析与设计

2.1 系统分析

图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。 

在数据库应用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。考虑到使用的方便性,程序用ADO技术来操作数据库,免去了注册DSN步骤。

因此本人结合上述要求对MS SQL Server 2000数据库管理系统、SQL语言原理、ASP程序设计,ADO数据库技术进行了较深入的学习和应用。

2.2 系统目标

(1)用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己的借书情况和个人情况。

(2)用户在借书超期的情况下得到来自管理员的提醒。

(3)管理员可以方便进行图书管理,用户管理,管理员管理。图书管理包括图书信息以及图书分类的添加,修改,删除。用户管理包括用户信息的添加,删除,修改和锁定(限制用户的正常使用功能,使其无法登陆)。管理员管理包括管理员信息的添加,删除,修改等。

(4)用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。

(5)未注册用户(游客)也可以浏览所有的图书信息和分类信息,但是无法借阅。
    (6)实现模糊查询,使用户得到更多的相关记录。并且考虑使用的方便性,一些经常使用的输入无须用户输入,比如进行图书查询时图书分类只须用户做选择就可以。

(7)考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。

2.3总体需求

图书管理系统是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解需求。系统利用Asp与数据库结合的技术建立数据库管理系统,采用交互式的动态的Asp页面来实现。需求调查是为了研究系统设计的开发途径和方法。同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据。具体分析如下:

添加操作:在执行操作时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,如果存在会报错,程序返回上个页面,不执行添加操作。

删除操作:考虑到了字段在不同表中可能会同时存在的情况,比如:删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的所有图书查看或者是该用户的全部借书查看。直到这种关联取消掉之后才允许进行删除这样的危险操作。

查询操作:考虑到了模糊查询的实现, SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是name like ‘%’。组合查询的实现也是程序判断用户所做的选择或者输入,在SQL语句中实现的。

超期统计:假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了。由用户借书记录中的用户编号到用户表中查找该用户。

发送消息:往消息表中添加数据,该数据包含用户名,用户超期的图书,超期时间,罚金等相关警告信息。当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看。

数据库备份和还原操作:程序只要告诉SQL 服务器执行备份和还原SQL语句就可以实现,在还原时程序还在使用系统数据库,此时执行还原操作会因为没有排它使用权出现错误,所以应告诉SQL 服务器使用另外的一个数据库,程序中用的是:use master。还原操作时用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 用户登陆

代码:

<link href="style.css" type="text/css" rel="stylesheet">

<!--#include file="conn.asp"-->

<% if request("login")<>"" then

    if request("usertype")<>"" then '用户类型不空,核实数据真实

If Request("usertype")="user" Then

sql = "select * from u where name='"&request("name")&"' and pwd='"&request("pwd")&"'"

Else

sql = "SELECT * FROM admin WHERE name='"&Request("name")&"' and pwd='"&Request("pwd")&"'"

End If

Set rs=db.execute(sql)

If  not rs.EOF Or Not rs.BOF Then '输入数据存在

If Request("usertype")="user" Then

If rs("lock") Then

       response.Write"<script>alert('您已被锁定了!');window.location.href='login.asp'</script>"

else

Session("usertype")="user"

Session("userid")=rs("id")

Session("name")=rs("name")

Response.Redirect("index.asp")

end if

Else

Session("usertype")="admin"

Session("adminid")=rs("id")

Session("name")=rs("name")

Response.Redirect("index.asp")

End If

Else

response.Write"<script>alert('输入错误!');window.location.href='login.asp'</script>"

rs.close

    End if

    else'用户类型空

    response.Write"<script>alert('没有选择用户类型!');window.location.href='login.asp'</script>"

    end if

end if

%>

3.2图书查询页面

该页面用于用户的图书查询,利用查询语句的like %替代任意长度字符实现了模糊查询。所有查询的字段用户都可以不输入,如果输入了某个数据,程序执行时自己会判断,输入了就会加上相应的SQL语句。考虑到使用方便性,图书类型,价格范围,出版日期都无须用户输入,已经设定了合理的初始值。图书类型如果不做选择就默认在所有图书类型中查找。考虑到找到的记录可能会很多,引入了分页显示,在记录集循环显示的时候引入参数i来实现,设定i<10,初始值为0,这样每页显示的记录数为10条。

 

图3.2.1图书查询

代码:

<link href="style.css" type="text/css" rel="stylesheet">

<!--#include file="conn.asp"-->

<%'定义记录集和变量

set rs=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 * from book where 1 "

if booktype<>"" then

sql=sql+"and booktype like '%"&booktype&"%'"

else if bookname<>"" then

sql=sql+"and bookname like  '%"&bookname&"%'"

else if publishing<>"" then

sql=sql+"and publishing like '%"&publishing&"%' "

end if

end if

end if

sql=sql+"and bookmoney>='"&money1&"' and bookmoney<='"&money2&"' and pdate between '"&date111&"' and '"&date222&"' order by id desc"rs.open sql,db,1,3

if rs.eof or rs.bof then

response.write "对不起没有搜索到记录"

response.end

else

'页面显示

dim pagenum,i

rs.pagesize=10

pagecount1=rs.pagecount

if request.querystring("pagenum")=0 or request.querystring("pagenum")="" then

pagenum=1

else

pagenum=trim(request("pagenum"))

rs.absolutepage=trim(request("pagenum"))

end if

%>

<%’分页实现

response.write "总共"&pagecount1&"页,当前"&pagenum&"/"&pagecount1&", <a href=search.asp?pagenum=1&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">首页</a>"

%> 

<%

if pagenum>1 then

response.write "<a href=search.asp?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&">上一页</a> "

else

response.write "上一页 "

end if

if pagenum < trim(pagecount1) then

response.write "<a href=search.asp?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&">下一页</a> "

else

response.write "下一页"

end if

%> 

<%

response.write "<a href=search.asp?pagenum="&pagecount1&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">尾页</a>"

%>

</p>

3.3统计超期

方便管理员清楚图书借出后的归还情况,并可以给超期的用户发送消息提醒,或者锁定该用户,使其无法登陆系统。超期判定用dateserial()函数来实现将当前系统时间的格式转化为YY-MM-DD,这样方便后面的日期比较操作。设置一个变量来代表当前系统时间减去三十天,如果用户借书的时间不在这两个时间之间那么就是超期。页面开始首先进行管理员身份核实,用到了前面登陆页面说的session。点击左边菜单的统计超期后系统自动完成统计,并将结果显示在右边,管理员可以进行的操作有:锁定,给单个用户发消息,群发消息。截图如下:

 

图3.3.1 统计超期

代码:

<%':从loans表导出时间超期的数据 更改系统时间来实现超期~ 管理员验证 分页显示 管理员发消息提醒还书

if session("usertype")<>"admin" then

response.write "<script>alert('不是管理员,请先登陆! ');window.location.href='go.asp'</script>"

end if

dim loan_time '现在时间和借书时间相差三十天则超期

loan_time = dateserial(year(date),month(date),day(date)-30)'转换日期格式2007-3-31,函数参考topic.csdn.net

sql1="select * from loans"

set rs1=db.execute(sql1)

sql2="select book.bookname as b_name,book.booktype as booktype,* from loans,u ,book where loans.time not between #"&loan_time&"# and #"&date&"#  and u.id=loans.uid and book.id=loans.bid "

set rs2=db.execute(sql2)

'sql3="select * from u where id='"&(rs2("uid"))&"'"

'set rs3=db.execute(sql3)

%>

3.4数据库备份和还原

为了防止因意外对系统数据库造成的破坏,设置了数据库的备份和还原操作,其实现是用SQL本身的备份和还原功能,程序只要告诉SQL服务器执行就可以了,还原还首先检查是否存在备份文件,如果没有则报错并终止还原操作,执行还原操作时因为当前系统的数据库正在使用,无法被还原,所以要先选择SQL服务器上的其他数据库为当前活动数据库,系统用use master来实现将当前正在使用的数据库更改为master数据库。系统设定备份文件存放在IIS主目录下,后缀是.BAK,方便管理员查看。

截图:

 

图3.4.1数据库备份和还原

代码:

<!--#include file="conn.asp"-->

<%

if request("do")="bak" then

dim path

path=server.MapPath("./")

'response.Write""&path&""

 

sql="backup database 谢贵文 to disk='"&path&"\\谢贵文.bak' with init"

db.execute(sql)

response.Write"<script>alert('备份成功. 备份文件在目录下');history.go(-1)</script>"

end if

%>

 

<%if request("do")="restore" then

'判断备份文件是否存在

set iFso=server.CreateObject("Scripting.FileSystemObject")'FSO组件

dim bak_path

bak_path=server.MapPath("./谢贵文.bak")

if not iFso.FileExists(bak_path) then

response.Write"<script>alert('备份文件不存在');history.go(-1)</script>"

else

sql1="use master"'获得排它访问权 断开与当前系统数据的连接

sql="restore database 谢贵文 from disk='"&server.MapPath("./")&"\\谢贵文.bak' "

db.execute(sql1)

db.execute(sql)

response.Write"<script>alert('还原成功.');history.go(-1)</script>"

end if

end if'页面history.go(-1)时自己会重新连接数据库

 

%>

3.5图书添加

实现图书添加功能。当管理员需要添加图书时,通过管理菜单点击“添加图书”就进入这个页面,考虑到输入的方便性图书分类和出版时间都可以进行选择,无须手工输入。图书添加操作要求全部数据都必须输入,否则报错。添加操作实际上是将数据写入数据库,写入新图书信息之前首先检查图书名是否重复,重复则报错返回上个页面,输入正确而且数据库中原本没有这样的数据则执行写入操作。截图如下:

 

图3.5.1 图书添加

代码:

图书管理系统设计[点击下载]

如需要全部源码,联系QQ:2812491287如需要全部源码,联系QQ:2812491287

评论