《图书管理系统—免费毕业设计论文.docx》由会员分享,可在线阅读,更多相关《图书管理系统—免费毕业设计论文.docx(67页珍藏版)》请在课桌文档上搜索。
1、图书管理系统一免费毕业设计论文图书管理系统摘要随着Internet技术的发展,互联网在中国逐步普及,人们对网络的需求也日益增长,利用计算机实现事务的管理势在必行。本系统从初步调查开始,详细介绍了需求分析、流程和数据分析,并进行了系统总体结构设计和数据库设计.系统采用DreajnWeaVer编写ASP脚本,SQLSERVER2000建立数据库,从界面简洁、实用的要求出发,完成了图书管理工作的主要部分,包括图书和用户的信息浏览,添加,修改,删除,查询,并且实现了超期统计和用于提醒超期用户的站内发消息功能。关键字:Dreamweaver;SQLServer2000;ASPABSTRACTWithth
2、edevelopmentofInternettechnology,theInternetinChinahasgraduallybecomepopular,People,sdemandofnetworkgrowingtoo,itSimperativetousecomputerfortheimplementationofworksmanagement.Thesystemstartedfromthepreliminaryinvestigation,adetailedneedsanalysis,processanddataflowanalysis,andtheoverallstructureofthe
3、systemdesignanddatabasedesign.TheSystemUseDreamweavertodeveloptheASPfeet,SQLSERVER2000tocreatedatabase,withsimpleinterfaceandpracticalrequirements.TheSystemcompletedamajorpartofbooksmanagement,includingbooksandusers,informationbrowse,add,modify,delete,searchandtheimplementationoftheextendedstatistic
4、sandmessagesending.Keyword:Dreamweaver;SQLServer2000;ASP目录1绪论41.1开发背景41.2开发工具的选用及介绍42总体分析与设计62.1系统分析62.2系统目标62.3总体需求72.4系统模块流程图82.5数据库设计93详细设计113.1用户登陆页面113.2图书查询页面123.3统计超期143.4数据库备份和还原153.5图书添加163.6用户管理183.7最新添加的图书203.8图书分类浏览203.9给超期用户发消息提醒214毕业设计小结235致谢246参考文献251绪论当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,计算机
5、被广泛应用于B/S系统环境。计算机的好处在于它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了安全性。对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书信息而设计的。1.1开发背景图书管理包括的图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书管理系统都是初步开始使用,甚至尚未使用计算机进行信息管理。以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对
6、借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是图书管理系统开发所要解决的问题。基于这此问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的进行查询和修改图书情况等图书管理操作。1.2开发工具的选用及介绍1.2.1ASP简介ActiveServerPages:是一套微软开发的服务器端脚本环境,ASP内含于
7、IlS之中,通过ASP我们可以结合HTML网页、ASP指令和ACtiVeX元件建立动态、交互且高效的WEB服务器应用程序。有了ASP你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。1.2.2DreamWeaVer简介Dreamweaver是Macromedia公司最新推出的主页编辑工具。这是一个所见即所得主页编辑器,并带有站点管理功能,让你方便地设计和管理多个站点。而它最棒的地方就是支持最新的DHTML和CSS
8、标准,你可以用它设计出生动的DHTML动画、多层次的页面(Iayer)以及CSS样式表。1 .2.3MicrosoftSQLServer2000简介SQL是英文(StrUCtUredQueryLangUage)的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,$11Oracle,Sybase,MicrosoftSQLServer,ACCeSS等都采用了SQL语言标准。SQL语言有以下几个优点
9、:1非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。2 .统一的语言SQL可用于所有用户的DB活
10、动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL命令只需很少时间就能学会,最高级的命令在几天内便可掌握。3 .所有关系数据库的公共语言由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。2总体分析与设计2.1系统分析图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。在数据
11、库应用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。考虑到使用的方便性,程序用ADO技术来操作数据库,免去了注册DSN步骤。因此本人结合上述要求对MSSQLServer2000数据库管理系统、SQL语言原理、ASP程序设计,ADO数据库技术进行了较深入的学习和应用。2.2系统目标(1)用户方便进行图书查询,图书浏览和图书分类浏
12、览,进行图书借阅并了解自己的借书情况和个人情况。(2)用户在借书超期的情况下得到来自管理员的提醒。(3)管理员可以方便进行图书管理,用户管理,管理员管理。图书管理包括图书信息以及图书分类的添加,修改,删除。用户管理包括用户信息的添加,删除,修改和锁定(限制用户的正常使用功能,使其无法登陆)。管理员管理包括管理员信息的添加,删除,修改等。(4)用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。(5)未注册用户(游客)也可以浏览所有的图书信息和分类信息,但是无法借阅。(6)实现模糊查询,使用户得到更多的相关记录。并且考虑使用的方便性,一些经常使用的输入无须用户输入,比如进行图书查询时图
13、书分类只须用户做选择就可以。(7)考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。2.3总体需求图书管理系统是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解需求。系统利用ASP与数据库结合的技术建立数据库管理系统,采用交互式的动态的Asp页面来实现。需求调查是为了研究系统设计的开发途径和方法。同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据。具体分析如下:添加操作:在执行操作
14、时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,如果存在会报错,程序返回上个页面,不执行添加操作。删除操作:考虑到了字段在不同表中可能会同时存在的情况,比如:删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的所有图书查看或者是该用户的全部借书查看。直到这种关联取消掉之后才允许进行删除这样的危险操作。查询操作:考虑到了模糊查询的实现,SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是namelik
15、e。组合查询的实现也是程序判断用户所做的选择或者输入,在SQL语句中实现的。超期统计:假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了。由用户借书记录中的用户编号到用户表中查找该用户。发送消息:往消息表中添加数据,该数据包含用户名,用户超期的图书,超期时间,罚金等相关警告信息。当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看。服务器执行备份和还原SQL语数据库备份和还原操作:程序只要告诉SQL句就可以实现,在还原时程序还在使用系统数据库,此时
16、执行还原操作会因为没有排它使用权出现错误,所以应告诉SQL服务器使用另外的一个数据库,程序中用的是:USemastero还原操作时用FSO组件首先检查备份数据库文件是否存在,如果不存在则给出提示回到上个页面。所有条件都允许后则执行还原操作,如果数据库数据比较多,备份和还原的时间都可能会比较长。2.4系统模块流程图2.4.1系统登陆流程图登陆页面游客操作页面用户操作页面管理员操作页面2.4.2用户流程图用户操作页面消息修改退出分类图书全部查看借还书查看密码登陆查看查询图书书详情2.4.3管理员流程图管理员操作页面修改备份还所有图图书统计添加,添加,用户,原数据书及分删除删除图管理员密码查询超期类
17、库分类书相关查看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是否
18、图书编号time日期时间借书时间Uid数字20是否用户编号表2.5.5消息表字段类型长度必填字段允许空值备注id数字否id主键content文本500是否消息内容Uid数字20是否用户编号表2.5.6用户表字段类型长度必填字段允许空值备注id数字否id主键name文本50是否名字pwd文本50是否密码IOCk是/否是否锁定loan_num数字20是否借书数量3详细设计3.1 用户登陆页面该页面用于用户登陆,包括游客,用户和管理员。成功登陆则取得用户的SeSSiOn用于以后的操作权限认定。程序执行时首先判断用户类型,如果是游客则对session赋值为游客类型,然后直接进入主页;如果不是游客则执行
19、查询语句,看数据库中是否存在这样的用户名和密码,根据选择用户类型的不同在不同的表中进行操作,成功则进入主页,否则提示输入错误。截图如下:图3.Ll用户登陆代码:%ifrequest(login)thenifrequest(usertype)then用户类型不空,核实数据真实IfRequest(zzUsertype7z)=,zuserz,Thensql=select*fromuwherename=&request(name)&andPwd=&request(pwd)Elsesql=zzSELECT*FROMadminWHEREname=&Request(name)&andpwd=,&Rcques
20、t(pwd)&EndIfSetrs=db.execute(sql)Ifnotrs.EOFOrNotrs.BOFThen输入数据存在IfReqUeSt(usertype)=userThenIfrs(lock)Thenresponse.Write/Zalert(您已被锁定了!);window,location,href,login,asp,/script”elseSession(usertype)二USerSession(userid)=rs(id)Session(name)=rs(name)Response.Redirect(index,asp)endifElseSession(usertype
21、)=admin”Session(,zadminid,z)-rs(id)Sessionsname)=rs(name)Response.Redirect(index,asp,z)EndIfElseresponse.Writezzalert(,输入错误,);window.location,href-,login,asp,zrs.closeEndifelse用户类型空response.Write,zalert(没有选择用户类型,)jwindow.location,href=login,asp,endifendif%3.2图书查询页面该页面用于用户的图书查询,利用查询语句的Iike%替代任意长度字符实现
22、了模糊查询。所有查询的字段用户都可以不输入,如果输入了某个数据,程序执行时自己会判断,输入了就会加上相应的SQL语句。考虑到使用方便性,图书类型,价格范围,出版日期都无须用户输入,已经设定了合理的初始值。图书类型如果不做选择就默认在所有图书类型中杳找。考虑到找到的记录可能会很多,引入了分页显示,在记录集循环显示的时候引入参数i来实现,设定KlO,初始值为0,这样每页图3.2.1图书查询代码:%,定义记录集和变量setrs=server.Createobject(zzadodb.recordset)bookname=trim(request(bookname)booktype-request(b
23、ooktype)publishing=trim(request(publishing)moneyl=trim(request(mOney1)money2=trim(request(money2)datel=trim(request(datel)datell=trim(request(datel1)date2=trim(request(date2)date22=trim(request(date22)date3=trim(request(date3)date33=trim(request(date33)datelll=datelft,z-,date2,z-,date3date222=datell
24、-zdate22-date33查询的实现SqI二SeIeCt*frombookwhere1”ifbooktypethensql=sql+,zandbooktypelike%&booktype&对“elseifbookname”thenSql=Sql+“andbooknamelike%&bookname&%elseifPUbliShingthensql=sql+,zandpublishing1ike,%z,&pubIishingfezz%,endifendifendifsql=sql+z,andbookmoney=&moneyl&andbookmoney%,分页实现response,write总
25、共&pagecountl&页,当前&pagenum&/&pagecountl&,首页% lthenresponse,write”土一页 elseresponse,write”上一页 endififpagenumtrim(pagecountl)thenresponse,write下一页 elseresponse,write”下一页endif%nbsp;%response,writeahref=search.asp?PagenUm=Gpagecountl&bookname=&booknanie&booktype二&booktype&pub1ishing=&p
26、ublishing&money1=&moneyWGmoney2=Gmoney2&datel=&datel&date2=&date2&date3=&date3&datell=&datell&d1。22=&11322&1血33=&11。33&尾页%. 3统计超期方便管理员清楚图书借出后的归还情况,并可以给超期的用户发送消息提醒,或者锁定该用户,使其无法登陆系统。超期判定用dateserial()函数来实现将当前系统时间的格式转化为YY-MM-DD,这样方便后面的日期比较操作。设置一个变量来代表当前系统时间减去三十天,如果用户借书的时间不在这两个时间之间那么就是超期。页面开始首先进行管理员身份核实,
27、用到了前面登陆页面说的SeSSiOn。点击左边菜单的统计超期后系统自动完成统计,并将结果显示在右边,管理员可以进行的操作有:锁定,给单个用户发消息,群发消息。截图如下:图3.3.1统计超期代码:%:从IoanS表导出时间超期的数据更改系统时间来实现超期、管理员验证分页显示管理员发消息提醒还书ifSeSSiOn(usertype)adminthenresponse,writezzalert(,不是管理员,请先登陆!);window,location,href=go.asp,/script”endifdimIoan_time现在时间和借书时间相差三十天则超期loan_time=dateserial
28、(year(date),month(date),day(date)-30)转换日期格式2007-3-31,函数参考topic,sqll=SeIeCt*fromloans”setrsl=db.execute(sqll)sql2=SeIeCtbook,booknameasb_name,book,booktypeasbooktype,*fromloans,u,bookwhereloans,timenotbetweenandand. id=loans.uidandbook,id=loans.bidsetrs2=db.execute(sql2),sq13=z,select*fromuwhereid=&(
29、rs2(uid),setrs3=db.execute(sql3)%3. 4数据库备份和还原为了防止因意外对系统数据库造成的破坏,设置了数据库的备份和还原操作,其实现是用SQL本身的备份和还原功能,程序只要告诉SQL服务器执行就可以了,还原还首先检查是否存在备份文件,如果没有则报错并终止还原操作,执行还原操作时因为当前系统的数据库正在使用,无法被还原,所以要先选择SQL服务器上的其他数据库为当前活动数据库,系统用USeOIaSter来实现将当前正在使用的数据库更改为master数据库。系统设定备份文件存放在IIS主目录下,后缀是.BAK,方便管理员查看。截图:数将库管避图3.4.1数据库备份和还
30、原代码:!- %ifrequest(do)=bakthendimpathpath=server.MapPath(,z./),response.Write&path&sql=*backupdatabase谢贵文todisk=&path&谢贵文.bakwithinitz,db.execute(sql)response.Writezalert(备份成功.备份文件在目录下);history,go(-1)endif% %ifrequest(do)/restorethen判断备份文件是否存在setiFso=server.CreatcObject(zzScripting.FilcSystemObjcct)F
31、SO组件dimbak_pathbak_path=SCrVer.MapPath(./谢贵文.bak)ifnotiFso.FiIeExists(bak_path)thenresponse.Write,alert(,备份文件不存在);history,go(-1)elsesqll=,usemaster获得排它访问权断开与当前系统数据的连接SqI=restoredatabase谢贵文fromdisk=&server.MapPath谢贵文.bakdb.execute(sqll)db.execute(sql)response.Write,zalert(,还原成功.);history,go(T)/script
32、)”endifendif页面history,go(T)时自己会重新连接数据库%3.5图书添加实现图书添加功能。当管理员需要添加图书时,通过管理菜单点击“添加图就进入这个页面,考虑到输入的方便性图书分类和出版时间都可以进行选择,无须手工输入。图书添加操作要求全部数据都必须输入,否则报错。添加操作实际上是将数据写入数据库,写入新图书信息之前首先检查图书名是否重复,重复则报错返回上个页面,输入正确而且数据库中原本没有这样的数据则执行写入操图3.5.1图书添加代码:%ifrequest(active)=thenelseifrequest(name)=orrequest(money)=orrequest
33、(num)=orrequest(publishing)=orrequest(select)=thenresponse,write,alert(,输入错误);history.go(-l)zzelsesetrs2=server.Createobject(zadodb.recordset)datel=request(datel)date2=request(date2)date3=request(date3)qdate=datel&-&date2&-&date3sql=,zselect*frombook”rs2.opensql,db,1,3rs2.addnewrs2(bookname)=trim(re
34、quest(name)rs2(/zbookmoney7z)=trim(request(money)rs2(z,numzz)=trim(request(num)rs2(,zpublishing,)=trim(request(publishing)rs2(pdate)=datel&-&date2&-&date3rs2(booktype)=trim(request(select)rs2.updateresponse,writez,alert(,添加图书成功,)jwindow.location,href(,book,asp2query=all-book,),zendifendif%3.6用户管理实现用
35、户管理全部功能,包括查看全部用户,添加,修改,删除,锁定,查看其借书记录。其中锁定针对于借书超期用户,管理员可以在超期统计页面知道哪些用户借书超期。添加用户时程序首先判断是否已经存在这个用户名,存在则终止操作,返回上个页面;删除用户时如果该用户存在借书记录则不允许删除,程序跳转到该用户的借书记录页面。更改操作同样考虑到了用户名重复的问题,避免混淆。截图如下:手】IMh窜尹it名字:c1:核琳*IJ改MS:X车M定LtJe段修定图3.6.1用户管理代码如下:%,添加新的用户ifrequest(action)=addthenifrequest(add)then检查是否重名setchk=db.exe
36、cute(select*fromuwherename=&trim(request(name)&)ifchk.eoforchk.bofthen插入u表rs.addnewrs(name)=request(name)rs(pvd)=request(pwd)rs.updateresponse,write,/alert(,添加成功咯);window,location,href=user,asp,/script)”elseresponse,write”alert(用户名重复);history.go(一1)z,endifelse%对删除用户ifrequest(actior)=delthenifrequest
37、(id)thenqq=z,selectcount(*)asxxfromloanswhereUid=&request(id)setq=db.execute(qq)ifq(xx)0thenresponse.write”alert(存在借书记录,不能删除。,)jwindow.location,href=my_borrow.asp?id=&requestelsesql=zdelete*fromuwhereid=&request(id)db.execute(sql)response,writezzalert(,删除成功1);window,location,href,user,asp,z,endifels
38、e%,更改用户过程:如果有更改请求,如果有ID,导出数据,如果确认更改,执行检查过程;检查成功则更新否则返回错误。该功能已经包含用户锁定功能的实现。ifrequest(query)=type_modthenifrequest(id)thensql=z,select*fromuwhereid=&request(id)setrsl=server.CreateObject(adodb.recordsetzz)rsl.opensql,db,1,3ifrequest(mod)=yesthen确认请求setchk=db.execute(zzselect*fromuwherename,zrequest(na
39、me)&andid*request(id)ifnotchk.eofthenresponse,writezzalert(,已经存在的名咯);history,go(-1)z,response.EndOelseifrequest(islock)=Truethenqq=updateusetname=&rcqucst(name)&,PWd二z,request(pwd)&,lock=1whereid=/,&request(zzidz,)elseqq=updateusetname=request(name)&”,PWd二,z&request(pwd)&,lock=0,whereid=&request(id)endifdb.execute(qq)response,write*alert(,更改成功,);window,location.href=,user,asp,z,endifelse%3.7最新添加的图书放在index,asp框架的右边,主要是向所有人