图书管理系统论文电子版本.doc

上传人:1595****071 文档编号:52353495 上传时间:2022-10-22 格式:DOC 页数:44 大小:448KB
返回 下载 相关 举报
图书管理系统论文电子版本.doc_第1页
第1页 / 共44页
图书管理系统论文电子版本.doc_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《图书管理系统论文电子版本.doc》由会员分享,可在线阅读,更多相关《图书管理系统论文电子版本.doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Good is good, but better carries it.精益求精,善益求善。图书管理系统论文-铜陵职业技术学院毕业设计班级名称07计算机应用技术1专业名称计算机应用技术所属系部信息工程系课题名称图书信息管理系统学生姓名赵云丽指导教师查艳铜陵职业技术学院教务处印制目录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.

2、8图书分类浏览173.9给超期用户发消息提醒184参考文献22关键词ASP2总体分析与设计2.1系统分析图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。在数据库应用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据

3、库,并且这些数据库带有功能完备、高效能的应用。考虑到使用的方便性,程序用ADO技术来操作数据库,免去了注册DSN步骤。因此本人结合上述要求对MSSQLServer2000数据库管理系统、SQL语言原理、ASP程序设计,ADO数据库技术进行了较深入的学习和应用。2.2系统目标(1)用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己的借书情况和个人情况。(2)用户在借书超期的情况下得到来自管理员的提醒。(3)管理员可以方便进行图书管理,用户管理,管理员管理。图书管理包括图书信息以及图书分类的添加,修改,删除。用户管理包括用户信息的添加,删除,修改和锁定(限制用户的正常使用功能,使

4、其无法登陆)。管理员管理包括管理员信息的添加,删除,修改等。(4)用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。(5)未注册用户(游客)也可以浏览所有的图书信息和分类信息,但是无法借阅。(6)实现模糊查询,使用户得到更多的相关记录。并且考虑使用的方便性,一些经常使用的输入无须用户输入,比如进行图书查询时图书分类只须用户做选择就可以。(7)考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。2.3总体需

5、求图书管理系统是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解需求。系统利用Asp与数据库结合的技术建立数据库管理系统,采用交互式的动态的Asp页面来实现。需求调查是为了研究系统设计的开发途径和方法。同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据。具体分析如下:添加操作:在执行操作时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,如果存在会报错,程序返回上个页面,不执行添加操作。删除操作:考虑到了字段在不同表中可能会同时存在的情况,比如:删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的

6、所有图书查看或者是该用户的全部借书查看。直到这种关联取消掉之后才允许进行删除这样的危险操作。查询操作:考虑到了模糊查询的实现,SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是namelike%。组合查询的实现也是程序判断用户所做的选择或者输入,在SQL语句中实现的。超期统计:假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了。由用户借书记录中的用户编号到用户表中查找该用

7、户。发送消息:往消息表中添加数据,该数据包含用户名,用户超期的图书,超期时间,罚金等相关警告信息。当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看。数据库备份和还原操作:程序只要告诉SQL服务器执行备份和还原SQL语句就可以实现,在还原时程序还在使用系统数据库,此时执行还原操作会因为没有排它使用权出现错误,所以应告诉SQL服务器使用另外的一个数据库,程序中用的是:usemaster。还原操作时用FSO组件首先检查备份数据库文件是否存在,如果不存在则给出提示回到上个页面。所有条件都允许后则执行还原操作,如果数据库数据比较多,备份和还原的时

8、间都可能会比较长。登陆页面游客操作页面用户操作页面管理员操作页面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文本5

9、0是否出版社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是否

10、名字pwd文本50是否密码lock是/否是否锁定loan_num数字20是否借书数量3详细设计3.1用户登陆页面该页面用于用户登陆,包括游客,用户和管理员。成功登陆则取得用户的session用于以后的操作权限认定。程序执行时首先判断用户类型,如果是游客则对session赋值为游客类型,然后直接进入主页;如果不是游客则执行查询语句,看数据库中是否存在这样的用户名和密码,根据选择用户类型的不同在不同的表中进行操作,成功则进入主页,否则提示输入错误。截图如下:图3.1.1用户登陆代码:%ifrequest(login)thenifrequest(usertype)then用户类型不空,核实数据真实I

11、fRequest(usertype)=userThensql=select*fromuwherename=&request(name)&andpwd=&request(pwd)&Elsesql=SELECT*FROMadminWHEREname=&Request(name)&andpwd=&Request(pwd)&EndIfSetrs=db.execute(sql)Ifnotrs.EOFOrNotrs.BOFThen输入数据存在IfRequest(usertype)=userThenIfrs(lock)Thenresponse.Writealert(您已被锁定了!);window.locat

12、ion.href=login.aspelseSession(usertype)=userSession(userid)=rs(id)Session(name)=rs(name)Response.Redirect(index.asp)endifElseSession(usertype)=adminSession(adminid)=rs(id)Session(name)=rs(name)Response.Redirect(index.asp)EndIfElseresponse.Writealert(输入错误!);window.location.href=login.asprs.closeEndif

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

14、始值为0,这样每页显示的记录数为10条。图3.2.1图书查询代码:%定义记录集和变量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

15、(date2)date22=trim(request(date22)date3=trim(request(date3)date33=trim(request(date33)date111=date1&-&date2&-&date3date222=date11&-&date22&-&date33查询的实现sql=select*frombookwhere1ifbooktypethensql=sql+andbooktypelike%&booktype&%elseifbooknamethensql=sql+andbooknamelike%&bookname&%elseifpublishingthens

16、ql=sql+andpublishinglike%&publishing&%endifendifendifsql=sql+andbookmoney=&money1&andbookmoney%分页实现response.write总共&pagecount1&页,当前&pagenum&/&pagecount1&,首页% 1thenresponse.write上一页 elseresponse.write上一页 endififpagenumtrim(pagecount1)thenresponse.write下一页 elseresponse.write下一页endi

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

18、:%:从loans表导出时间超期的数据更改系统时间来实现超期管理员验证分页显示管理员发消息提醒还书ifsession(usertype)adminthenresponse.writealert(不是管理员,请先登陆!);window.location.href=go.aspendifdimloan_time现在时间和借书时间相差三十天则超期loan_time=dateserial(year(date),month(date),day(date)-30)转换日期格式2007-3-31,函数参考sql1=select*fromloanssetrs1=db.execute(sql1)sql2=sel

19、ectbook.booknameasb_name,book.booktypeasbooktype,*fromloans,u,bookwhereloans.timenotbetween#&loan_time&#and#&date&#andu.id=loans.uidandbook.id=loans.bidsetrs2=db.execute(sql2)sql3=select*fromuwhereid=&(rs2(uid)&setrs3=db.execute(sql3)%3.4数据库备份和还原为了防止因意外对系统数据库造成的破坏,设置了数据库的备份和还原操作,其实现是用SQL本身的备份和还原功能,程

20、序只要告诉SQL服务器执行就可以了,还原还首先检查是否存在备份文件,如果没有则报错并终止还原操作,执行还原操作时因为当前系统的数据库正在使用,无法被还原,所以要先选择SQL服务器上的其他数据库为当前活动数据库,系统用usemaster来实现将当前正在使用的数据库更改为master数据库。系统设定备份文件存放在IIS主目录下,后缀是.BAK,方便管理员查看。截图:图3.4.1数据库备份和还原代码:%ifrequest(do)=bakthendimpathpath=server.MapPath(./)response.Write&path&sql=backupdatabase谢贵文todisk=&

21、path&谢贵文.bakwithinitdb.execute(sql)response.Writealert(备份成功.备份文件在目录下);history.go(-1)endif%ifrequest(do)=restorethen判断备份文件是否存在setiFso=server.CreateObject(Scripting.FileSystemObject)FSO组件dimbak_pathbak_path=server.MapPath(./谢贵文.bak)ifnotiFso.FileExists(bak_path)thenresponse.Writealert(备份文件不存在);history

22、.go(-1)elsesql1=usemaster获得排它访问权断开与当前系统数据的连接sql=restoredatabase谢贵文fromdisk=&server.MapPath(./)&谢贵文.bakdb.execute(sql1)db.execute(sql)response.Writealert(还原成功.);history.go(-1)endifendif页面history.go(-1)时自己会重新连接数据库%3.5图书添加实现图书添加功能。当管理员需要添加图书时,通过管理菜单点击“添加图书”就进入这个页面,考虑到输入的方便性图书分类和出版时间都可以进行选择,无须手工输入。图书添加操

23、作要求全部数据都必须输入,否则报错。添加操作实际上是将数据写入数据库,写入新图书信息之前首先检查图书名是否重复,重复则报错返回上个页面,输入正确而且数据库中原本没有这样的数据则执行写入操作。截图如下:图3.5.1图书添加代码:%ifrequest(active)=thenelseifrequest(name)=orrequest(money)=orrequest(num)=orrequest(publishing)=orrequest(select)=thenresponse.writealert(输入错误);history.go(-1)elsesetrs2=server.createobje

24、ct(adodb.recordset)date1=request(date1)date2=request(date2)date3=request(date3)qdate=date1&-&date2&-&date3sql=select*frombookrs2.opensql,db,1,3rs2.addnewrs2(bookname)=trim(request(name)rs2(bookmoney)=trim(request(money)rs2(num)=trim(request(num)rs2(publishing)=trim(request(publishing)rs2(pdate)=date

25、1&-&date2&-&date3rs2(booktype)=trim(request(select)rs2.updateresponse.writealert(添加图书成功);window.location.href(book.asp?query=all_book)endifendif%3.6用户管理实现用户管理全部功能,包括查看全部用户,添加,修改,删除,锁定,查看其借书记录。其中锁定针对于借书超期用户,管理员可以在超期统计页面知道哪些用户借书超期。添加用户时程序首先判断是否已经存在这个用户名,存在则终止操作,返回上个页面;删除用户时如果该用户存在借书记录则不允许删除,程序跳转到该用户的借

26、书记录页面。更改操作同样考虑到了用户名重复的问题,避免混淆。截图如下:图3.6.1用户管理代码如下:%添加新的用户ifrequest(action)=addthenifrequest(add)then检查是否重名setchk=db.execute(select*fromuwherename=&trim(request(name)&)ifchk.eoforchk.bofthen插入u表rs.addnewrs(name)=request(name)rs(pwd)=request(pwd)rs.updateresponse.writealert(添加成功咯);window.location.href

27、=user.aspelseresponse.writealert(用户名重复);history.go(-1)endifelse%删除用户ifrequest(action)=delthenifrequest(id)thenqq=selectcount(*)asxxfromloanswhereuid=&request(id)setq=db.execute(qq)ifq(xx)0thenresponse.writealert(存在借书记录,不能删除。);window.location.href=my_borrow.asp?id=&request(id)&elsesql=delete*fromuwhe

28、reid=&request(id)db.execute(sql)response.writealert(删除成功);window.location.href=user.aspendifelse%更改用户过程:如果有更改请求,如果有ID,导出数据,如果确认更改,执行检查过程;检查成功则更新否则返回错误。该功能已经包含用户锁定功能的实现。ifrequest(query)=type_modthenifrequest(id)thensql=select*fromuwhereid=&request(id)setrs1=server.CreateObject(adodb.recordset)rs1.ope

29、nsql,db,1,3ifrequest(mod)=yesthen确认请求setchk=db.execute(select*fromuwherename=&request(name)&andid&request(id)ifnotchk.eofthenresponse.writealert(已经存在的名咯);history.go(-1)response.End()elseifrequest(islock)=Truethenqq=updateusetname=&request(name)&,pwd=&request(pwd)&,lock=1whereid=&request(id)elseqq=up

30、dateusetname=&request(name)&,pwd=&request(pwd)&,lock=0whereid=&request(id)endifdb.execute(qq)response.writealert(更改成功);window.location.href=user.aspendifelse%3.7最新添加的图书放在index.asp框架的右边,主要是向所有人展现最新增加的图书信息,方便所有人的使用。其实现是从数据库book表中导出top10个数据。截图如下:图3.7.1最新添加的图书代码:3.8图书分类浏览放在首页的右边,起着导航作用,实现所有图书分类的查看,使得所有人

31、都可以方便的浏览自己感兴趣的图书分类下的书,点击图书分类名就进入了该分类下的所有图书浏览。截图如下:图3.8.1图书分类浏览代码:3.9给超期用户发消息提醒主要功能是实现管理员可以对借书超期的用户进行提醒,其操作是往msg表里添加数据,当用户正常登陆后系统会检查msg表内是否有该用户的消息数据,如果有则会自动给出提醒,提醒用户查看消息。截图如下:图3.9.1给超期用户发消息代码:%ifrequest(act)=all_send_msgthendimloan_time现在时间和借书时间相差三十天则超期loan_time=dateserial(year(date),month(date),day(

32、date)-30)转换日期格式2007-3-31sql2=selectbook.booknameasb_name,book.booktypeasbooktype,*fromloans,u,bookwhereloans.timenotbetween#&loan_time&#and#&date&#andu.id=loans.uidandbook.id=loans.bidsetrs2=db.execute(sql2)dimuid,contentuid=rs2(uid)response.Write(提交的数据(测试是否设置好))dowhilenotrs2.eofuid=rs2(uid)content=

33、&rs2(name)&,你借的&rs2(b_name)&一书已经超期&datediff(d,rs2(time),date()-30&天了,快点还咯response.Write(uid&:&content)测试是否设置好了sql=insertintomsg(content,uid)values(&content&,&uid&)db.execute(sql)rs2.movenextloopresponse.writealert(群发消息成功!);window.location.href=lock.aspelseresponse.Write提交的数据(测试是否设置好)&request(content

34、)&sql=insertintomsg(uid,content)values(&request(uid)&,&request(content)&)db.execute(sql)response.writealert(发消息成功!);window.location.href=lock.aspendif%图3.9.2用户登陆后的消息提醒代码:=1thenresponse.Write有&rs(msg_num)&个消息,查看?elseresponse.Write(我的信箱)endif%6参考文献1王珊.数据库系统原理教程M.北京:清华大学出版社,2003,56.2求是科技.ASP数据库开发技术与工程实践M.北京:人民邮电出版社,2004,131.3刘意成.SQL实战演练M.北京:西安电子科技大学出版社,2004,79.4周绪.SQLServer2000中文版入门与提高M.北京:清华大学出版社,2001,36.5李存斌.数据库应用技术M.北京:中国水利水电出版社,2001,73.6罗运模.SQLServer2000数据仓库应用与开发M.北京:人民邮电出版社,2001,179.-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁