数据库课程设计_图书馆管理系统

更新时间:2023-09-04 13:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

课程设计说明书

题目: 图书馆管理系统

院 系: 专业班级: 学 号: 学生姓名: 指导教师:

2008年 12 月 29日

目录

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

1 绪论 ............................................................................................................................. 2 1.1 开发背景 ................................................................................................................... 2 1.2 开发工具的选用及介绍 .............................................................................................. 2 1.2.1 ASP简介 ................................................................................................................ 2 1.2.2 Dreamweaver简介 .................................................................................................. 3 1.2.3 Microsoft SQL Server 2000简介 ......................................................................... 3 2 需求分析 ...................................................................................................................... 4 2.1 系统分析 ................................................................................................................... 4 2.2 系统目标 ................................................................................................................... 4 2.3总体需求 .................................................................................................................... 5 2.4系统模块流程图 .......................................................................................................... 6 2.4.1 系统登陆流程图..................................................................................................... 6 2.4.2 用户流程图............................................................................................................ 6 2.4.3 管理员流程图 ........................................................................................................ 6 3 数据库设计................................................................................................................... 7 3.1概念结构设计 ............................................................................................................. 7 3.2 逻辑结构设计 ............................................................................................................ 8 3.3创建表的脚本文件 ...................................................................................................... 9 4 详细设计 .....................................................................................................................11 4.1 用户登陆页面 .......................................................................................................... 11 4.2图书查询页面 ........................................................................................................... 12 4.3统计超期 .................................................................................................................. 15 4.4数据库备份和还原 .................................................................................................... 16 4.5图书添加 .................................................................................................................. 17 4.6用户管理 .................................................................................................................. 18 4.7最新添加的图书 ........................................................................................................ 20 4.8图书分类浏览 ........................................................................................................... 21 4.9给超期用户发消息提醒 ............................................................................................. 21 5课程设计小结 .............................................................................................................. 23 6参考文献 ..................................................................................................................... 23

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

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 管理员流程图

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

3 数据库设计

3.1概念结构设计

图书馆管理系统,总共含有三个实体:管理员,图书,读者,之间的关系如下图的E-R图如下:

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

3.2 逻辑结构设计

表3.2.1 管理员

表 3.2.2 图书信息

表 3.2.3 图书类别

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

表 3.2.4 借出信息

表3.2.6 用户表

3.3创建表的脚本文件

关于创建数据库部分,可以通过SQL Server企业管理器来创建,也可以通过查询分析器来创建,对应的SQL语句如下

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

create DATABASE zhengchengting on

primary (name=zhengchengting_data,

filename='E:\SQL server\数据文件\MSSQL\zhengchengting_data.mdf', size=200MB, maxsize=200, filegrowth=20) log on

(name=zhengchengting_log,

filename='E:\SQL server\数据文件\MSSQL\zhengchengting_log.ldf', size=200MB, maxsize=200, filegrowth=20) GO

create table admin (ID int primary key, name nvarchar(50), pwd nvarchar(50));

create table book (id int primary key,

booktype nvarchar(50), publishing nvarchar(50), bookmoney nvarchar(50), pdate datetime,

bookname nvarchar(50), num int);

create table booktype (id int primary key,

booktype nvarchar(50));

create table loans (uid int, bid int,

time datetime,

loan_ bit not null);

create table msg (content char(50), uid int,

id int primary key);

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

create table u

(id int primary key, name char(50), pwd char(50), lock bit,

loan_num int);

4 详细设计

4.1 用户登陆页面

该页面用于用户登陆,包括游客,用户和管理员。成功登陆则取得用户的session用于以后的操作权限认定。程序执行时首先判断用户类型,如果是游客则对session赋值为游客类型,然后直接进入主页;如果不是游客则执行查询语句,看数据库中是否存在这样的用户名和密码,根据选择用户类型的不同在不同的表中进行操作,成功则进入主页,否则提示输入错误。

截图如下:

图4.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 %>

已被锁定

错误!

用户类型!

4.2图书查询页面

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

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

图4.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>"

%>&nbsp; <%

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>&nbsp;"

else

response.write "上一页&nbsp;" 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>&nbsp;"

else

response.write "下一页" end if

%>&nbsp;

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

<%

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>

4.3统计超期

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

图4.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,函数参考http://www.77cn.com.cn

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) %>

4.4数据库备份和还原

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

截图:

图4.4.1数据库备份和还原

代码:

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

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

path=server.MapPath("./") 'response.Write""&path&""

sql="backup database zhengchengting to disk='"&path&"\\zhengchengting.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("./zhengchengting.bak") if not iFso.FileExists(bak_path) then

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

sql1="use master"'获得排它访问权 断开与当前系统数据的连接 sql="restore database zhengchengting disk='"&server.MapPath("./")&"\\zhengchengting.bak' " db.execute(sql1) db.execute(sql)

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

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

from

4.5图书添加

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

:

图4.5.1 图书添加

代码:

<%'图书增加

if request("query")="book_add" then sql="select * from booktype" set rs=db.execute(sql) %>

图书馆管理系统,数据库课程设计,有详细步骤和代码实例。

<%

if request("active")="" then else

if request("name")="" or request("money")="" or request("num")="" or request("publishing")="" or request("select")="" then

response.write "<script>alert('输入错误');history.go(-1)</script>" else

set rs2=server.createobject("adodb.recordset") date1=request("date1") date2=request("date2") date3=request("date3")

qdate=date1&"-"&date2&"-"&date3 sql="select * from book" rs2.open sql,db,1,3 rs2.addnew

rs2("bookname")=trim(request("name")) rs2("bookmoney")=trim(request("money")) rs2("num")=trim(request("num"))

rs2("publishing")=trim(request("publishing")) rs2("pdate")=date1&"-"&date2&"-"&date3 rs2("booktype")=trim(request("select")) rs2.update response.write "<script>alert('添加图书成功');window.location.href('book.asp?query=all_book')</script>" end if end if %>

4.6用户管理

实现用户管理全部功能,包括查看全部用户,添加,修改,删除,锁定,查看其借书记录。其中锁定针对于借书超期用户,管理员可以在超期统计页面知道哪些用户借书超期。添加用户时程序首先判断是否已经存在这个用户名,存在则终止操作,返回上个页面;删除用户时如果该用户存在借书记录则不允许删除,程序跳转到该用户的借书记录页面。更改操作同样考虑到了用户名重复的问题,避免混淆。截图如下:

本文来源:https://www.bwwdw.com/article/ul7i.html

Top