还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
铜陵职业技术学院毕业设计班级名称 07计算机应用技术1专业名称 计算机应用技术所属系部信息工程系课题名称 图书信息管理系统学生姓名 赵云丽指导教师 查艳铜陵职业技术学院教务处印制目录TOC\o1-3\h\z\u1绪论
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参考文献22关键词ASP2总体分析与设计
2.1系统分析图书管理系统是典型的信息管理系统其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库而对于后者则要求应用程序功能完备易使用等特点在数据库应用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识数据库应用系统开发的目标是建立一个满足用户长期需求的产品开发的主要过程为理解用户的需求,然后,把它们转变为有效的数据库设计把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用考虑到使用的方便性,程序用ADO技术来操作数据库,免去了注册DSN步骤因此本人结合上述要求对MSSQLServer2000数据库管理系统、SQL语言原理、ASP程序设计,ADO数据库技术进行了较深入的学习和应用
2.2系统目标
(1)用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己的借书情况和个人情况
(2)用户在借书超期的情况下得到来自管理员的提醒
(3)管理员可以方便进行图书管理,用户管理,管理员管理图书管理包括图书信息以及图书分类的添加,修改,删除用户管理包括用户信息的添加,删除,修改和锁定(限制用户的正常使用功能,使其无法登陆)管理员管理包括管理员信息的添加,删除,修改等
(4)用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码
(5)未注册用户(游客)也可以浏览所有的图书信息和分类信息,但是无法借阅
(6)实现模糊查询,使用户得到更多的相关记录并且考虑使用的方便性,一些经常使用的输入无须用户输入,比如进行图书查询时图书分类只须用户做选择就可以
(7)考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息
2.3总体需求图书管理系统是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解需求系统利用Asp与数据库结合的技术建立数据库管理系统,采用交互式的动态的Asp页面来实现需求调查是为了研究系统设计的开发途径和方法同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据具体分析如下添加操作在执行操作时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,如果存在会报错,程序返回上个页面,不执行添加操作删除操作考虑到了字段在不同表中可能会同时存在的情况,比如删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的所有图书查看或者是该用户的全部借书查看直到这种关联取消掉之后才允许进行删除这样的危险操作查询操作考虑到了模糊查询的实现,SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是namelike‘%’组合查询的实现也是程序判断用户所做的选择或者输入,在SQL语句中实现的超期统计假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了由用户借书记录中的用户编号到用户表中查找该用户发送消息往消息表中添加数据,该数据包含用户名,用户超期的图书,超期时间,罚金等相关警告信息当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看数据库备份和还原操作程序只要告诉SQL服务器执行备份和还原SQL语句就可以实现,在还原时程序还在使用系统数据库,此时执行还原操作会因为没有排它使用权出现错误,所以应告诉SQL服务器使用另外的一个数据库,程序中用的是usemaster还原操作时用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用户登陆代码linkhref=style.csstype=text/cssrel=stylesheet!--#includefile=conn.asp--%ifrequestloginthenifrequestusertypethen用户类型不空,核实数据真实IfRequestusertype=userThensql=select*fromuwherename=requestnameandpwd=requestpwdElsesql=SELECT*FROMadminWHEREname=Requestnameandpwd=RequestpwdEndIfSetrs=db.executesqlIfnotrs.EOFOrNotrs.BOFThen输入数据存在IfRequestusertype=userThenIfrslockThenresponse.Writescriptalert您已被锁定了!;window.location.href=login.asp/scriptelseSessionusertype=userSessionuserid=rsidSessionname=rsnameResponse.Redirectindex.aspendifElseSessionusertype=adminSessionadminid=rsidSessionname=rsnameResponse.Redirectindex.aspEndIfElseresponse.Writescriptalert输入错误!;window.location.href=login.asp/scriptrs.closeEndifelse用户类型空response.Writescriptalert没有选择用户类型!;window.location.href=login.asp/scriptendifendif%
3.2图书查询页面该页面用于用户的图书查询,利用查询语句的like%替代任意长度字符实现了模糊查询所有查询的字段用户都可以不输入,如果输入了某个数据,程序执行时自己会判断,输入了就会加上相应的SQL语句考虑到使用方便性,图书类型,价格范围,出版日期都无须用户输入,已经设定了合理的初始值图书类型如果不做选择就默认在所有图书类型中查找考虑到找到的记录可能会很多,引入了分页显示在记录集循环显示的时候引入参数i来实现,设定i10,初始值为0这样每页显示的记录数为10条图
3.
2.1图书查询代码linkhref=style.csstype=text/cssrel=stylesheet!--#includefile=conn.asp--%定义记录集和变量setrs=server.createobjectadodb.recordsetbookname=trimrequestbooknamebooktype=requestbooktypepublishing=trimrequestpublishingmoney1=trimrequestmoney1money2=trimrequestmoney2date1=trimrequestdate1date11=trimrequestdate11date2=trimrequestdate2date22=trimrequestdate22date3=trimrequestdate3date33=trimrequestdate33date111=date1-date2-date3date222=date11-date22-date33查询的实现sql=select*frombookwhere1ifbooktypethensql=sql+andbooktypelike%booktype%elseifbooknamethensql=sql+andbooknamelike%bookname%elseifpublishingthensql=sql+andpublishinglike%publishing%endifendifendifsql=sql+andbookmoney=money1andbookmoney=money2andpdatebetweendate111anddate222orderbyiddescrs.opensqldb13ifrs.eoforrs.bofthenresponse.write对不起没有搜索到记录response.endelse页面显示dimpagenumirs.pagesize=10pagecount1=rs.pagecountifrequest.querystringpagenum=0orrequest.querystringpagenum=thenpagenum=1elsepagenum=trimrequestpagenumrs.absolutepage=trimrequestpagenumendif%%’分页实现response.write总共pagecount1页当前pagenum/pagecount1ahref=search.asppagenum=1bookname=booknamebooktype=booktypepublishing=publishingmoney1=money1money2=money2date1=date1date2=date2date3=date3date11=date11date22=date22date33=date33首页/a%nbsp;%ifpagenum1thenresponse.writeahref=search.asppagenum=pagenum-1bookname=booknamebooktype=booktypepublishing=publishingmoney1=money1money2=money2date1=date1date2=date2date3=date3date11=date11date22=date22date33=date33上一页/anbsp;elseresponse.write上一页nbsp;endififpagenumtrimpagecount1thenresponse.writeahref=search.asppagenum=pagenum+1bookname=booknamebooktype=booktypepublishing=publishingmoney1=money1money2=money2date1=date1date2=date2date3=date3date11=date11date22=date22date33=date33下一页/anbsp;elseresponse.write下一页endif%nbsp;%response.writeahref=search.asppagenum=pagecount1bookname=booknamebooktype=booktypepublishing=publishingmoney1=money1money2=money2date1=date1date2=date2date3=date3date11=date11date22=date22date33=date33尾页/a%/p
3.3统计超期方便管理员清楚图书借出后的归还情况,并可以给超期的用户发送消息提醒,或者锁定该用户,使其无法登陆系统超期判定用dateserial()函数来实现将当前系统时间的格式转化为YY-MM-DD,这样方便后面的日期比较操作设置一个变量来代表当前系统时间减去三十天,如果用户借书的时间不在这两个时间之间那么就是超期页面开始首先进行管理员身份核实,用到了前面登陆页面说的session点击左边菜单的统计超期后系统自动完成统计,并将结果显示在右边,管理员可以进行的操作有锁定,给单个用户发消息,群发消息截图如下图
3.
3.1统计超期代码%从loans表导出时间超期的数据更改系统时间来实现超期~管理员验证分页显示管理员发消息提醒还书ifsessionusertypeadminthenresponse.writescriptalert不是管理员请先登陆!;window.location.href=go.asp/scriptendifdimloan_time现在时间和借书时间相差三十天则超期loan_time=dateserialyeardatemonthdatedaydate-30转换日期格式2007-3-31,函数参考topic.csdn.netsql1=select*fromloanssetrs1=db.executesql1sql2=selectbook.booknameasb_namebook.booktypeasbooktype*fromloansubookwhereloans.timenotbetween#loan_time#and#date#andu.id=loans.uidandbook.id=loans.bidsetrs2=db.executesql2sql3=select*fromuwhereid=rs2uidsetrs3=db.executesql3%
3.4数据库备份和还原为了防止因意外对系统数据库造成的破坏,设置了数据库的备份和还原操作,其实现是用SQL本身的备份和还原功能,程序只要告诉SQL服务器执行就可以了,还原还首先检查是否存在备份文件,如果没有则报错并终止还原操作,执行还原操作时因为当前系统的数据库正在使用,无法被还原,所以要先选择SQL服务器上的其他数据库为当前活动数据库,系统用usemaster来实现将当前正在使用的数据库更改为master数据库系统设定备份文件存放在IIS主目录下,后缀是.BAK,方便管理员查看截图图
3.
4.1数据库备份和还原代码!--#includefile=conn.asp--%ifrequestdo=bakthendimpathpath=server.MapPath./response.Writepathsql=backupdatabase谢贵文todisk=path\\谢贵文.bakwithinitdb.executesqlresponse.Writescriptalert备份成功.备份文件在目录下;history.go-1/scriptendif%%ifrequestdo=restorethen判断备份文件是否存在setiFso=server.CreateObjectScripting.FileSystemObjectFSO组件dimbak_pathbak_path=server.MapPath./谢贵文.bakifnotiFso.FileExistsbak_paththenresponse.Writescriptalert备份文件不存在;history.go-1/scriptelsesql1=usemaster获得排它访问权断开与当前系统数据的连接sql=restoredatabase谢贵文fromdisk=server.MapPath./\\谢贵文.bakdb.executesql1db.executesqlresponse.Writescriptalert还原成功.;history.go-1/scriptendifendif页面history.go-1时自己会重新连接数据库%
3.5图书添加实现图书添加功能当管理员需要添加图书时,通过管理菜单点击“添加图书”就进入这个页面,考虑到输入的方便性图书分类和出版时间都可以进行选择,无须手工输入图书添加操作要求全部数据都必须输入,否则报错添加操作实际上是将数据写入数据库,写入新图书信息之前首先检查图书名是否重复,重复则报错返回上个页面,输入正确而且数据库中原本没有这样的数据则执行写入操作截图如下:图
3.
5.1图书添加代码%图书增加ifrequestquery=book_addthensql=select*frombooktypesetrs=db.executesql%%ifrequestactive=thenelseifrequestname=orrequestmoney=orrequestnum=orrequestpublishing=orrequestselect=thenresponse.writescriptalert输入错误;history.go-1/scriptelsesetrs2=server.createobjectadodb.recordsetdate1=requestdate1date2=requestdate2date3=requestdate3qdate=date1-date2-date3sql=select*frombookrs
2.opensqldb13rs
2.addnewrs2bookname=trimrequestnamers2bookmoney=trimrequestmoneyrs2num=trimrequestnumrs2publishing=trimrequestpublishingrs2pdate=date1-date2-date3rs2booktype=trimrequestselectrs
2.updateresponse.writescriptalert添加图书成功;window.location.hrefbook.aspquery=all_book/scriptendifendif%
3.6用户管理实现用户管理全部功能,包括查看全部用户,添加,修改,删除,锁定,查看其借书记录其中锁定针对于借书超期用户,管理员可以在超期统计页面知道哪些用户借书超期添加用户时程序首先判断是否已经存在这个用户名,存在则终止操作,返回上个页面;删除用户时如果该用户存在借书记录则不允许删除,程序跳转到该用户的借书记录页面更改操作同样考虑到了用户名重复的问题,避免混淆截图如下图
3.
6.1用户管理代码如下%’从数据库导出所有用户数据ifrequestaction=thensql=select*fromusetrs=server.CreateObjectadodb.recordsetrs.opensqldb13实现用户查看,添加,删除,修改等...%%添加新的用户ifrequestaction=addthenifrequestaddthen检查是否重名setchk=db.executeselect*fromuwherename=trimrequestnameifchk.eoforchk.bofthen插入u表rs.addnewrsname=requestnamerspwd=requestpwdrs.updateresponse.writescriptalert添加成功咯;window.location.href=user.asp/scriptelseresponse.writescriptalert用户名重复;history.go-1/scriptendifelse%%删除用户ifrequestaction=delthenifrequestidthenqq=selectcount*asxxfromloanswhereuid=requestidsetq=db.executeqqifqxx0thenresponse.writescriptalert存在借书记录,不能删除;window.location.href=my_borrow.aspid=requestid/scriptelsesql=delete*fromuwhereid=requestiddb.executesqlresponse.writescriptalert删除成功;window.location.href=user.asp/scriptendifelse%%更改用户过程:如果有更改请求如果有ID导出数据如果确认更改执行检查过程;检查成功则更新否则返回错误该功能已经包含用户锁定功能的实现ifrequestquery=type_modthenifrequestidthensql=select*fromuwhereid=requestidsetrs1=server.CreateObjectadodb.recordsetrs
1.opensqldb13ifrequestmod=yesthen确认请求setchk=db.executeselect*fromuwherename=requestnameandidrequestidifnotchk.eofthenresponse.writescriptalert已经存在的名咯;history.go-1/scriptresponse.Endelseifrequestislock=Truethenqq=updateusetname=requestnamepwd=requestpwdlock=1whereid=requestidelseqq=updateusetname=requestnamepwd=requestpwdlock=0whereid=requestidendifdb.executeqqresponse.writescriptalert更改成功;window.location.href=user.asp/scriptendifelse%
3.7最新添加的图书放在index.asp框架的右边,主要是向所有人展现最新增加的图书信息方便所有人的使用其实现是从数据库book表中导出top10个数据截图如下图
3.
7.1最新添加的图书代码%最新图书数据导出sql=selecttop10*frombookorderbyiddescsetrs=server.CreateObjectadodb.recordsetrs.opensqldb13%
3.8图书分类浏览放在首页的右边,起着导航作用,实现所有图书分类的查看,使得所有人都可以方便的浏览自己感兴趣的图书分类下的书,点击图书分类名就进入了该分类下的所有图书浏览截图如下图
3.
8.1图书分类浏览代码%图书类型到处sql1=select*frombooktypeorderbyiddescsetrs1=server.CreateObjectadodb.recordsetrs
1.opensql1db13%
3.9给超期用户发消息提醒主要功能是实现管理员可以对借书超期的用户进行提醒,其操作是往msg表里添加数据,当用户正常登陆后系统会检查msg表内是否有该用户的消息数据,如果有则会自动给出提醒,提醒用户查看消息截图如下图
3.
9.1给超期用户发消息代码!--#includefile=conn.asp--%ifrequestact=all_send_msgthendimloan_time现在时间和借书时间相差三十天则超期loan_time=dateserialyeardatemonthdatedaydate-30转换日期格式2007-3-31sql2=selectbook.booknameasb_namebook.booktypeasbooktype*fromloansubookwhereloans.timenotbetween#loan_time#and#date#andu.id=loans.uidandbook.id=loans.bidsetrs2=db.executesql2dimuidcontentuid=rs2uidresponse.Write提交的数据(测试是否设置好)brdowhilenotrs
2.eofuid=rs2uidcontent=rs2name你借的{rs2b_name}一书已经超期datediffdrs2timedate-30天了,快点还咯brresponse.Writeuid:content测试是否设置好了sql=insertintomsgcontentuidvaluescontentuiddb.executesqlrs
2.movenextloopresponse.writescriptalert群发消息成功!;window.location.href=lock.asp/scriptelseresponse.Write提交的数据(测试是否设置好)brrequestcontentsql=insertintomsguidcontentvaluesrequestuidrequestcontentdb.executesqlresponse.writescriptalert发消息成功!;window.location.href=lock.asp/scriptendif%图
3.
9.2用户登陆后的消息提醒代码%ifsessionusertype=userthenuid=sessionuseridmsg导出数据,如果有的话sql=selectcount*asmsg_numfrommsgwhereuid=uidsetrs=db.executesqlifrsmsg_num=1thenresponse.Writeahref=readmsg.aspuid=uidtarget=right有rsmsg_num个消息,查看?/aelseresponse.Write我的信箱endif%6参考文献
[1]王珊.数据库系统原理教程[M].北京清华大学出版社
200356.
[2]求是科技.ASP数据库开发技术与工程实践[M].北京人民邮电出版社
2004131.
[3]刘意成.SQL实战演练[M].北京西安电子科技大学出版社
200479.
[4]周绪.SQLServer2000中文版入门与提高[M].北京清华大学出版社
200136.
[5]李存斌.数据库应用技术[M].北京中国水利水电出版社
200173.
[6]罗运模.SQLServer2000数据仓库应用与开发[M].北京人民邮电出版社
2001179.还书查看借书详情用户,管理员相关添加,删除图书添加,删除分类统计超期图书查询所有图书及分类查看备份还原数据库修改密码管理员操作页面全部图书图书查询分类查看退出登陆修改密码消息查看用户操作页面管理员操作页面用户操作页面游客操作页面登陆页面PAGE2。