




免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图书管理系统摘 要随着Internet技术的发展,互联网在中国逐步普及,人们对网络的需求也日益增长,利用计算机实现事务的管理势在必行。本系统从初步调查开始,详细介绍了需求分析、流程和数据分析,并进行了系统总体结构设计和数据库设计. 系统采用Dreamweaver编写ASP脚本,SQL SERVER 2000建立数据库,从界面简洁、实用的要求出发,完成了图书管理工作的主要部分,包括图书和用户的信息浏览,添加,修改,删除,查询,并且实现了超期统计和用于提醒超期用户的站内发消息功能。关键字: Dreamweaver; SQL Server 2000; ASPABSTRACTWith the development of Internet technology, the Internet in China has gradually become popular, Peoples demand of network growing too, its imperative to use computer for the implementation of works management .The system started from the preliminary investigation, a detailed needs analysis, process and data flow analysis, and the overall structure of the system design and database design. The System Use Dreamweaver to develop the ASP feet, SQL SERVER 2000 to create database, with simple interface and practical requirements. The System completed a major part of books management, including books and users information browse, add, modify, delete, search and the implementation of the extended statistics and message sending. Keyword: Dreamweaver; SQL Server 2000; ASP目录1 绪论11.1 开发背景11.2 开发工具的选用及介绍12总体分析与设计32.1系统分析32.2 系统目标32.3总体需求42.4系统模块流程图52.5数据库设计63 详细设计83.1 用户登陆页面83.2图书查询页面93.3统计超期113.4数据库备份和还原123.5图书添加133.6用户管理153.7最新添加的图书163.8图书分类浏览173.9给超期用户发消息提醒184毕业设计小结205致谢216参考文献221 绪论当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,计算机被广泛应用于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 图书类别字段类型长度必填字段允许空值备注idid主键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 用户登陆代码:% if request(login) then if request(usertype) then 用户类型不空,核实数据真实If Request(usertype)=user Thensql = 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 IfSet rs=db.execute(sql)If not rs.EOF Or Not rs.BOF Then 输入数据存在If Request(usertype)=user ThenIf rs(lock) Then response.Writealert(您已被锁定了!);window.location.href=login.aspelseSession(usertype)=userSession(userid)=rs(id)Session(name)=rs(name)Response.Redirect(index.asp)end ifElseSession(usertype)=adminSession(adminid)=rs(id)Session(name)=rs(name)Response.Redirect(index.asp)End IfElse response.Writealert(输入错误!);window.location.href=login.asprs.close End if else用户类型空 response.Writealert(没有选择用户类型!);window.location.href=login.asp end ifend if%3.2图书查询页面该页面用于用户的图书查询,利用查询语句的like %替代任意长度字符实现了模糊查询。所有查询的字段用户都可以不输入,如果输入了某个数据,程序执行时自己会判断,输入了就会加上相应的SQL语句。考虑到使用方便性,图书类型,价格范围,出版日期都无须用户输入,已经设定了合理的初始值。图书类型如果不做选择就默认在所有图书类型中查找。考虑到找到的记录可能会很多,引入了分页显示,在记录集循环显示的时候引入参数i来实现,设定i10,初始值为0,这样每页显示的记录数为10条。 图3.2.1图书查询代码:%定义记录集和变量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&-&date3date222=date11&-&date22&-&date33查询的实现sql=select * from book where 1 if booktype thensql=sql+and booktype like %&booktype&%else if bookname thensql=sql+and bookname like %&bookname&%else if publishing thensql=sql+and publishing like %&publishing&% end ifend ifend ifsql=sql+and bookmoney=&money1& and bookmoney%分页实现response.write 总共&pagecount1&页,当前&pagenum&/&pagecount1&, 首页% 1 thenresponse.write 上一页 elseresponse.write 上一页 end ifif pagenum trim(pagecount1) thenresponse.write 下一页 elseresponse.write 下一页end if% %response.write 尾页%3.3统计超期方便管理员清楚图书借出后的归还情况,并可以给超期的用户发送消息提醒,或者锁定该用户,使其无法登陆系统。超期判定用dateserial()函数来实现将当前系统时间的格式转化为YY-MM-DD,这样方便后面的日期比较操作。设置一个变量来代表当前系统时间减去三十天,如果用户借书的时间不在这两个时间之间那么就是超期。页面开始首先进行管理员身份核实,用到了前面登陆页面说的session。点击左边菜单的统计超期后系统自动完成统计,并将结果显示在右边,管理员可以进行的操作有:锁定,给单个用户发消息,群发消息。截图如下:图3.3.1 统计超期代码:%:从loans表导出时间超期的数据 更改系统时间来实现超期 管理员验证 分页显示 管理员发消息提醒还书if session(usertype)admin then response.write alert(不是管理员,请先登陆! );window.location.href=go.aspend ifdim loan_time 现在时间和借书时间相差三十天则超期loan_time = dateserial(year(date),month(date),day(date)-30)转换日期格式2007-3-31,函数参考 sql1=select * from loansset 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数据库备份和还原代码:%if request(do)=bak thendim pathpath=server.MapPath(./)response.Write&path&sql=backup database 谢贵文 to disk=&path&谢贵文.bak with initdb.execute(sql)response.Writealert(备份成功. 备份文件在目录下);history.go(-1)end if%if request(do)=restore then判断备份文件是否存在set iFso=server.CreateObject(Scripting.FileSystemObject)FSO组件dim bak_pathbak_path=server.MapPath(./谢贵文.bak)if not iFso.FileExists(bak_path) thenresponse.Writealert(备份文件不存在);history.go(-1)elsesql1=use master获得排它访问权 断开与当前系统数据的连接sql=restore database 谢贵文 from disk=&server.MapPath(./)&谢贵文.bak db.execute(sql1)db.execute(sql)response.Writealert(还原成功.);history.go(-1)end ifend if页面history.go(-1)时自己会重新连接数据库 %3.5图书添加实现图书添加功能。当管理员需要添加图书时,通过管理菜单点击“添加图书”就进入这个页面,考虑到输入的方便性图书分类和出版时间都可以进行选择,无须手工输入。图书添加操作要求全部数据都必须输入,否则报错。添加操作实际上是将数据写入数据库,写入新图书信息之前首先检查图书名是否重复,重复则报错返回上个页面,输入正确而且数据库中原本没有这样的数据则执行写入操作。截图如下:图3.5.1 图书添加代码:% if request(active)= then else if request(name)= or request(money)= or request(num)= or request(publishing)= or request(select)= then response.write alert(输入错误);history.go(-1) 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 alert(添加图书成功);window.location.href(book.asp?query=all_book) end if end if %3.6用户管理实现用户管理全部功能,包括查看全部用户,添加,修改,删除,锁定,查看其借书记录。其中锁定针对于借书超期用户,管理员可以在超期统计页面知道哪些用户借书超期。添加用户时程序首先判断是否已经存在这个用户名,存在则终止操作,返回上个页面;删除用户时如果该用户存在借书记录则不允许删除,程序跳转到该用户的借书记录页面。更改操作同样考虑到了用户名重复的问题,避免混淆。截图如下:图3.6.1 用户管理代码如下:%添加新的用户if request(action)=add thenif request(add) then检查是否重名set chk=db.execute(select * from u where name=&trim(request(name)&)if chk.eof or chk.bof then 插入u表rs.addnewrs(name)=request(name)rs(pwd)=request(pwd)rs.updateresponse.write alert(添加成功咯);window.location.href=user.aspelse response.write alert(用户名重复);history.go(-1)end ifelse%删除用户if request(action)=del thenif request(id) thenqq=select count(*) as xx from loans where uid=&request(id)set q=db.execute(qq)if q(xx)0 thenresponse.write alert(存在借书记录,不能删除。);window.location.href=my_borrow.asp?id=&request(id)&elsesql=delete * from u where id=&request(id)db.execute(sql)response.write alert(删除成功);window.location.href=user.aspend ifelse%更改用户 过程:如果有更改请求,如果有ID,导出数据,如果确认更改,执行检查过程;检查成功则更新 否则返回错误。该功能已经包含用户锁定功能的实现。if request(query)=type_mod thenif request(id) thensql=select * from u where id=&request(id)set rs1=server.CreateObject(adodb.recordset)rs1.open sql,db,1,3if request(mod)=yes then确认请求set chk=db.execute(select * from u where name=&request(name)&and id&request(id)if not chk.eof thenresponse.write alert(已经存在的名咯);history.go(-1)response.End()elseif request(islock)=True then qq=update u set name=&request(name)&,pwd=&request(pwd)&,lock=1 where id=&request(id)elseqq=update u set name=&request(name)&,pwd=&request(pwd)&,lock=0 where id=&request(id)end ifdb.execute(qq)response.write alert(更改成功);window.location.href=user.aspend ifelse%3.7最新添加的图书放在index.asp框架的右边,主要是向所有人展现最新增加的图书信息,方便所有人的使用。其实现是从数据库book表中导出top 10个数据。截图如下:图3.7.1 最新添加的图书代码:3.8图书分类浏览放在首页的右边,起着导航作用,实现所有图书分类的查看,使得所有人都可以方便的浏览自己感兴趣的图书分类下的书,点击图书分类名就进入了该分类下的所有图书浏览。截图如下:图3.8.1 图书分类浏览代码:3.9给超期用户发消息提醒主要功能是实现管理员可以对借书超期的用户进行提醒,其操作是往msg表里添加数据,当用户正常登陆后系统会检查msg表内是否有该用户的消息数据,如果有则会自动给出提醒,提醒用户查看消息。截图如下:图3.9.1 给超期用户发消息代码:%if request(act)=all_send_msg thendim loan_time 现在时间和借书时间相差三十天则超期loan_time = dateserial(year(date),month(date),day(date)-30)转换日期格式2007-3-31 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)dim uid,contentuid=rs2(uid)response.Write(提交的数据(测试是否设置好))do while not rs2.eof uid=rs2(uid)content=&rs2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 7251.10-2025低压成套开关设备和控制设备第10部分:规定成套设备的指南
- 森林防灭火知识培训材料课件
- 森林防火员知识培训总结
- 森林草园防火知识培训课件
- 森林治安及防火知识培训课件
- Unit 5 Here and Now基础知识复习课件 新人教版七年级英语下册
- 2025年文化机构出版社编辑岗位笔试试题
- 《机械员》考试题库含答案【研优卷】
- 2025年建筑设计师招聘笔试模拟卷及答案详解
- 2025年注册验船师资格考试(A级船舶检验专业案例分析)能力提高训练题及答案二
- 2025年六安市裕安区石婆店镇公开招考村级后备干部8名笔试备考试题及答案解析
- 公司领导财务知识培训课件
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 六年级口算题大全800题
- 印尼劳动法中文版
- 中式烹调师高级技师试题与答案
- GB/T 3622-1999钛及钛合金带、箔材
- GB/T 20160-2006旋转电机绝缘电阻测试
- 组织工程及再生医学基本课件
- 旅游相册:宁夏旅游课件
- 药物化学(全套课件)
评论
0/150
提交评论