jsp86图书借阅管理系统(ssh)-qkrp_第1页
jsp86图书借阅管理系统(ssh)-qkrp_第2页
jsp86图书借阅管理系统(ssh)-qkrp_第3页
jsp86图书借阅管理系统(ssh)-qkrp_第4页
jsp86图书借阅管理系统(ssh)-qkrp_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE摘要随着电子信息技术的飞速发展,传统图书管理方式已经被现代化的图书管理方式所淘汰。为了跟上电子信息时代的步伐,电子管理的图书管理系统随之产生。电子图书管理系统主要用于对图书、读者、以及借阅者的管理。它不仅能够简化图书馆管理者的工作,系统化地对图书和读者进行管理,能够及时的统计出所有的借书记录;而且还有公告新闻等功能,让借阅者能够了解到图书馆的最新动态。其作用很广泛,可以用于各学校的图书馆,企业集团的藏书中心,以及提供借阅业务的大型书店等。系统的开发是在B/S结构之上,采用JSP程序设计语言及SQL2005数据库进行开发和研究的;主要完成了图书借阅系统的整体设计与规划、图书数据库的设计、系统页面的制作与完善、系统安全级别的定制和系统程序的编写、调试与修改等工作。本文首先对图书管理系统整体进行了需求分析;然后较详细的设计和实现了电子图书管理系统的数据库及各功能模块,包括图书检索、图书借阅、公告、留言和后台管理等功能模块;最后,通过检测与分析,说明该系统能够平稳的运行、记录准确,具有很好的使用价值。关键词:图书馆;JSP;SQL2005AbstractWiththerapiddevelopmentofinformationtechnology,thetraditionallibrarymanagementmethodscouldnothavefollowedthemodernlibrarymanagement.Inordertokeepupwiththepaceoftheinformationage,emergeasthetimesrequiredigitallibrarymanagementsystem.Digitallibrarymanagementsystemismainlyusedforbooks,readers,andlibrarymanagement.Itcannotonlysimplifypeople'swork,systemtomanagethebooksandreadersof,andtimelystatisticsallthelendingrecord;butalsotheannouncementnewsandotherfunctions,sothatreaderscanunderstandthenewesttendencyoflibrary.Itsuseisverybroad,canbeusedforvariousuniversities'library,thecollectioncenterofenterprise,aswellasprovidesborrows'serviceofthelarge-scalebookstore.SystemdevelopmentisbasedonB/Sstructure,usingJSPprogramminglanguageandMYSQLdatabasedevelopment;mainlycompletedthesystemdesignandplanning,thedatabasedesign,systempageproductionandlandscaping,systemsecuritylevelofcustomizationandsystemprogramming,debuggingandmodificationwork.Thispaperhascarriedonthedemandanalysistothebooksmanagementsystemmanagementsystem;andthenthedetaileddesignandRealizationofthedigitallibrarymanagementsystemdatabaseandthefunctionmodule,includingbooks,booklending,announcement,searchingmessageandbackstagemanagementfunctionmodule;finally,throughtestingandanalysis,itshowsthatthesystemisstable,reliable,hasacertaintheutilityvalue.Keywords:library;JSP;MYSQL目录摘要 IAbstract I第1章绪论 11.1课题背景及意义 11.2课题的研究与开发目的 11.3本文的主要工作 2第2章图书管理系统的需求分析 32.1系统需求分析 32.2系统流程分析 32.3系统功能分析 4第3章开发工具及相关技术 53.1MacromediaDreamweaver2008简介 53.2MicrosoftSQLServer2005简介 53.3JSP语言及相关技术介绍 53.5SQL语言介绍 6第4章图书馆的总体设计 74.1数据库设计 74.2数据库的E-R图 8第5章图书馆的详细设计 9第6章系统的测试与分析 236.1测试目的与目标 236.2测试方法 236.3测试结论 24结论 25致谢 26参考文献 27 第1章绪论1.1课题背景及意义随着网络技术的迅猛进步,无论是企事业单位,还是学校都在使用网络进行各种信息的管理。当前,网络学习平台日益强大,在网络管理的书籍给人们的学习和工作带来了不少的便捷,人们可以在网上可以快速找到自己想要阅览的书籍进行阅读、还可以进行图书的借阅和归还,这些都给人们带来了从未有过的快捷。因此,在网页上对数字图书馆的设计、研究和开发都有不容小觑的现实意义。知识经济在逐步向我们走来,“图书”这个词显得更为重要,它可以充实每一个人的心灵,大量的知识每天都在改变因此就会产生大量的图书来到我们的生活,图书馆的管理系统也构成了一定的难度,对图书馆管理系统进行修改和完善也是很有必要的。图书馆管理系统对图书信息,读者信息以及借阅信息进行的系统化、标准化信息管理可以有效提高图书馆信息处理的速度与效率。图书馆管理功能的日益强大对图书管理员的管理工作提供了便捷之路,这也是信息产业能够快速前进的重要体现之一。图书作为知识经济的重要传播者,数字图书馆也就成为了国家信息基础设施不可缺少的组成部分,目前已作为评价一个国家信息基础水平的重要标志和本世纪各个国家文化科技竞争的焦点之一。对于我国来说,数字图书馆的开发和实施的时间比较晚,因此,快速建设数字图书馆是非常有必要的,它的实现也是对我国信息基础有很大的帮助的。开发一个一个小型的数字图书馆信息管理系统使它的功能比较完善,能够锻炼本人的动手能力,还能让我对实际开发有更进一步的了解,为今后的工作能力奠定了一定的基础。1.2课题的研究与开发目的对于用户的需求,要对图书馆管理信息系统进行整体分析和研究。系统的可用性成为了首选,另外,系统的运行方面、可以扩充性、开放行、可以维护性、用户操作简单和保护用户投资等各个方面的需求都要进行研究和分析。数字图书馆则是采用现代化高新技术所支持的数字信息资源系统,它是Inter网上信息资源的管理模式,它的优点是可以把原来Inter网上信息分散不方便变得简洁。通俗地说,数字图书馆是不受时空限制的,它便于使用、是超大规模的知识中心。具有比较强的使用性、扩展性、管理简单等特点。解决数字资源创建、组织、管理、保存、发布、检索和利用整个过程的各个组件或模块组成了整体的解决方案,每个组件或模块是可以单独开发不需要共同完成。本系统的开发是基于B/S结构之上,它模拟现有的一些图书馆的管理信息系统进行分析和设计的。因此,这一次的毕业设计第一项要分析数字图书系统的有关功能,再与毕业设计相关要求做出需求分析;第二项是要综合大学三年所学的专业知识(包括计算机网络技术、编程技术等知识),选取一些比较常用的开发工具对这次设计进行开发;需求分析作为设计的最基础的部分,做出系统开发的计划、实现的过程和各类有关的实现方法;与此同时,在开发和实现过程中,要把有关的设计文档保留好,当作以后的毕业论文的材料;最后一项在系统开发过后,要进行全面的调试和运行并做好记录,这也将成为写毕业论文的材料。当前图书馆管理系统盛行,大家都有各自的特点,可是它们都有共同的一个特点就是数据一致性,操作简单、方便等特点。但是图书管理系统有一个弊端就是安全性比较差,借阅人要使用身份证号、姓名作为管理借阅书人的基本资料,如果一方的身份证号码被公开后很可能借阅者的利益就会收到威胁,现在很多图书馆会为借阅者办理借书卡,借书卡还会有自定义的密码这样也保证了借阅人的信息安全。北京创训未来软件技术有限公司自己开发的北邮图书馆管理系统(英文缩写MELINETS)和金蝶数码公司的金蝶图书馆管理系统在我国都是比较有名的。它们专门对藏书量10万册以下的中小学、中专和企事业单位小型图书借阅系统进行管理。它们还有在线帮助系统和多媒体功效,技术更进一步、功能也更加完善、更多的考虑了用户的需求、值得用户信赖、安全系数也很高、在各种环境都可操作,经济实惠性价比高等多种优点。系统还可以支持两种环境Client/Server和Internet,这样更能符合图书馆自动化的要求和网络化管理的要求。这个设计主要目的是可以将大学所学的编程知识和网络知识相结合,锻炼学以致用的能力,做出一个简易但功能比较完善的小型图书馆管理信息系统。1.3本文的主要工作图书馆管理系统是围绕图书借阅者和图书管理者两个方面需求进行开发的,本文的主要内容也是围绕这两个需求来编写的。论文的第1章是关于图书馆的开发背景、目的和意义进行分析和描述的;第2章是关于图书馆管理系统需求进行分析和对数据流程、完成功能进行分析;第3章是关于系统的开发工具,详细介绍了系统的开发工具和对一些开发系统中的一些特殊功能技术进行分析和介绍;第4章关于整体的系统设计,说明了系统各模块的设计和数据的设计;第5章则是介绍了图书馆管理系统的各个功能;第6章是对测试系统后还有哪个问题需要解决进行说明。第2章图书管理系统的需求分析2.1系统需求分析社会发展越来越快,信息量也会随着增加,图示是信息储存的主要方式之一,其数量也会比原来大很多,不论是图书管理部门也好个人也好都希望能有一个快捷的方式管理或借阅书籍,这样也会使图书馆的图书购买和管理工作效率更高。图书馆的借阅是否方便关键在于管理工作是否到位,借阅书籍时会有很多手续需要办理,首先要借阅者进行登记、然后需要对需要的书籍进行预约、还需要在还书日到来之前归还图书,如果因为其他原因不能按时归还图书还要续借、损坏图书要进行相应的罚款,图书管理员还需要对这些进行准确的记录并且保存。像这些琐碎的工作要是靠人手工完成也是给图书管理员出了很大的难题,有时也会因为这些原因会造成借阅者过多需要排队、耽误借阅者时间也对图书管理员的工作效率大大降低。因为想要解决这个困扰我们很多年的问题,就需要对这个问题的产生进行分析,所以我们就要一种新的手段替代这种传统的方法。现在网络在我们的生活中无处不在,网络的盛行发展也给我们的生活学习带来了不少的方便、也是我们的工作效率提高了、它的功能也是非常广泛的。网络也恰恰满足了图书馆的需求,用电脑代替了人脑,用自动化代替了手工,许多借阅者上网就可以最快速的找到所需要的信息,这样提高了书籍的利用率。借助电脑进行管理,给借阅者和图书管理者都带来了不少的好处。借阅者可以通过图书馆管理系统对图书馆的图书情况一目了然,图书借阅者用自己申请的借书证号码和密码即可登录图书借阅系统,还可以查询借书情况和个人信息。图书馆管理的图书信息量非常大,数据安全性和保密性也会要求非常高。本次设计可以实现图书信息、借阅者信息、所有借阅情况进行管理和统计分析,图书管理员还可以对信息进行查看和维护系统。图书管理员通过浏览、查询、增加、删除、修改图书的各种的信息;浏览、查询、统计、删除和修改借阅者的基本信息,浏览、查询、统计借书的信息,管理员还可以加入借书记录和还书记录。在删除借阅者记录时,要进行备份,误删还可回复,这样使系统更加安全。2.2系统流程分析为了将图书管理的信息化、网络化,本设计使用了JSP编写了在网页上运行的数字化管理系统,用SQL2005与之相结合。这个系统支持网络、多用户来对图书馆进行管理。可以将本系统放在服务器上进行管理。第一项,借阅者要将自己的身份信息给图书管理员,图书管理员为其办理一张只属于他自己的借阅卡,借阅者可以拿着卡进行借阅,此时系统会对借阅者信息进行保存并且记录。第二项,因为每一种类图书都有对应的借阅时间,系统会根据借阅图书的类型为借阅者规定时间进行归还,并记录下借阅信息。最后,借阅者归还图书时要查询出借阅者的借阅信息,如有未按时归还图书或损坏图书要进行一定的赔偿。借阅者可以登录系统后,了解自己借阅图书的情况,因此借阅者也能及时的归还图书,从而大大提高了管理员的工作效率。2.3系统功能分析本系统主要权限功能的详细说明如下:管理员具有所有的权限功能包括一般用户的管理,会员管理,图书管理,借阅管理。普通管理员可以添加会员,可以对图书进行管理,可以借阅,可以发布新闻,可以回复留言。会员可以进行借阅,查看自己的借阅信息。系统的可靠性分析:在一般图书馆管理系统中,图书借阅者与图书管理员之间交互以达到图书借阅的主要方法流程是:1.借阅者到前台注册办理借书卡;2.借阅者持借书卡到前台申请借书;3.图书管理员查看其有无逾期书籍未归还且未付罚款情况,如有则通知其缴付罚款,合格后查询该书籍是否有货并确定该借阅者借图书数量不超过其可借图书的上限,通过后将图书发给借阅者;4.借阅者在规定时间内阅读书籍后将书籍归还前台;5.图书管理员接收书籍并更新书籍信息与借阅者借阅信息;6.图书管理员对书籍逾期未归还的借阅者发出通知,告知其借阅情况与应缴罚款;综上所述,图书馆管理系统是否可靠,在于该系统能否使图书管理员正常并有序的执行相关图书借阅的校验工作,并保证系统在被使用或运行过程中,不产生任何由系统本身因素所导致的工作异常和错误。2.4系统可行性分析软件的经济可行性是指软件所能带来的经济效益与开发设计所需要的投资相比,是否相适宜,同时还要看此软件能否真正给用户带来足够的经济效益,我们开发的这套系统正是考虑为图书在线销售系统的使用者提高工作效率,节省工作时间,方便操作与管理而设计。本系统的开发在经济上是完全可行的。开发此软件不需要大量经费,而且是个人独立设计,可以节省许多费用,同时也可提高个人的实际动手能力。根据该系统目标来衡量所需的技术是否具备,一般可从硬软件的性能要求、环境条件、操作人员水平和数量等方面去考虑和分析。考虑到系统实施的可行性,在软件方面选择了如今较流行的MyEclipse工具来进行开发管理平台的设计,使用MySQL数据库存储数据。在硬件方面,则选择空间较大,硬件的配置越高,系统的开发与运行会更流畅。考虑到如今的家用或商用电脑硬件的整体配置水平,系统在硬件方面是可行的。在软件方面,由于MyEclipse和MySQL是两个非常成熟的开发工具,无论在安全性、可用性、可靠性方面都毫无置疑,因此软件方面是可行的。在当今社会,顺着Internet在中国的迅速发展,人们日常生活中越来越多地使用Web技术来为自己的工作和学习服务。许多企业为了扩大他们的规模,将他们的生意范围涉及到了出口生意,由于企业的客户很多,而且分布于各地,甚至还有国外,网上商城购物在线销售图书有着对顾客的地域无限制等诸多的优点,可以成功地解决企业所面临的难题。本图书系统操作简单易行,所以使用前的培训也比较容易,此系统网站的管理人员对开发此应用项目的态度确定而且管理方面的条件都比较成熟。经过以上分析,运行方面是可行的。第3章开发工具及相关技术根据图书管理员需求,和借阅者的页面看着美观;借阅者操作简单;网络化程序高;查询灵活快捷;运行稳定、安全;资源共享率高等特征。本系统是在windows7+tomcat之上进行的,使用JSP程序编写,以SQL2005作为主体数据库开发而成的。系统开发工具使用MacromediaDreamweaver2008和SQL2005。这两种工具相结合使开发速度变快,最后的成品与Windows操作系统结合运行更稳定,也使开发和维护花费比较低。首先把此次开发所使用的工具、环境和相关专业知识介绍一下,这样为后面主要功能介绍奠定了一定的基础。3.1MacromediaDreamweaver2008简介MacromediaDreamweaver2008是一个专业的可视化Web应用程序编辑器。对于以前的较低版本相比,功能更多,界面更符合用户的使用,使网页制作更简洁更完美。它可以跨平台、跨浏览器制作页面。3.2MicrosoftSQLServer2005简介MicrosoftSQLServer2005是一个高性能的客户端/服务器结构的关系数据库管理系统(RDBMS,RelationalDatabaseManagementSystem)。SQLServer2005是可以对大容量的信息进行处理和数据仓库和决策支持系统而设计的。它运行在MicrosoftWindowsNT4或MicrosoftWindows2005Server上——基于intel处理器的网络。可以把SQLServer2005作为一种个人桌面数据库系统安装在运行WindowNTWorkstation4、Windows2000Professional、Windows98和WindowsMillenniumEdition(Me)的机器上。3.3JSP语言及相关技术介绍SP是由SunMicrosystems公司支持、许多公司参与共同建立的一种动态技术标准。JSP网页由传统的静态网页HTML文件(*.htm,*.html)中加入JSP标签和Java程序片段(Scriptlet)组成。Java程序片段可以对数据库进行操作、对网页进行重定向等,能够做出动态网页所需要的功能。服务端执行程序操作,网络界面只是返回用户需要的结果,这样不需要限制用户的浏览器支持Java,也可以访问用户需要的JSP页面。JSP全称是javaserverpage,它是一个Servlet的简略化形式,它使Java语言以<%,%>形式在HTML中实现。在服务器端执行的不仅仅只有Servlet还有JSP,它是以一个HTML文本返回给客户端,当用户只有一个浏览器就能浏览页面。当JSP页面请求服务器Web时,服务器先要执行程序段,其次将结果和JSP文件的HTML代码共同传送给客户端。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP(JavaServerPages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。3.4MVC介绍本系统采用MVC框架,MVC(Model-View-Controller)是一种设计模式,它强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成3个核心:模型层、视图层和控制层,它们分别担负不同的任务。其中视图层向用户显示相关的数据,并能接受用户的输入数据,但是它并不进行任何实际的业务处理。模型层表示业务数据和业务逻辑。控制层接收用户输入并调用模型和视图去完成用户的需求。本系统需要用到的Java相关技术有jsp技术、servlet技术、jdbc技术、SSH框架。其中,关键的技术难点在于Struts技术的运用。Struts技术是基于MVC的Web应用框架。在Struts框架中,模型层由实现业务逻辑的JavaBean组件构成,控制层由ActionServlet和Action来实现,视图层由一组JSP文件构成。3.5SQL语言介绍SQL是一个完全标准化的语言。在SQL的发展过程中,国际标准化组织(ISO),美国国际标准居(ANSI)等机构为SQL制定了各种标准。但是对于不同的数据库系统,它们所支持的SQL功能也各有所不同,语法也有差异。SQL已经成为关系型数据库的标准语言。SQL按其功能分主要由以下几部分组成:数据定义语言(DDL):实现定义,删除,和修改数据库对象的功能数据查询语言(DQL):实现查询数据的功能数据操纵语言(DML):实现对数据库数据的增加,删除,修改功能数据控制语言(DCL):实现控制用户对数据库的操作权限的功能其中用得最多的是数据操纵语言(DML)。它包含了最常用的核心SQL语句,即SELECT,INSERT,UPDATE,DELETE。3.6MyEclipse介绍MyEclipse达到了企业工作台水平,是EclipseIDE扩展,用户可以用它来大大提高效率的数据库和JavaEE开发、释放、和应用程序服务器的集成。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。MyEclipse是适合用来开发Java,J2EE的Eclipse插件集合。MyEclipse的功能特别强大,支持面广泛,特别是对各种开放源产品的支持效果很是不错。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。在结构上,MyEclipse的特征可以被分为7类:1.J2EE模型2.WEB开发工具3.EJB开发工具4.应用程序服务器的连接器5.J2EE项目部署服务6.数据库服务7.MyEclipse整合帮助以上所有功能,在Eclipse中都可以找到对应功能部件。这些功能的实现是利用一系列的插件。MyEclipse的结构上是模块化的,这样可以在不影响其他模块在任何单个模块扩展和升级。简单来说,MyEclipse的是Eclipse插件,J2EE的集成,支持代码编写,配置,测试和调试功能强大的开发环境。[6]第4章图书馆的总体设计4.1数据库设计数据库简单的说其实就是长期存储的相关数据的集合,但它又不仅是局限于对信息的存储,通过建立数据库,我们可以对数据局更好的管理、存储以及查询,而且更为重要的是,我们还可以实现共享数据。数据库中的数据结构描述了具体事务之间的关系。而描述实体类型和实体之间关系的则称之为数据库模型。数据库系统有一下四种数据模型:层次模型。关系模型、网状模型和面向对象模型。所有的数据库系统都有其特有的数据模型,在本系统中,通过我们对系统数据库的功能特点和适应未来需求的分析,最终选择关系模型作为本系统的数据模型。通常数据库设计有五个步骤:首先是数据库的前期规划,其次是对数据库用户的需求进行分析,然后是对数据库的概念设计,最后则是数据库的逻辑设计和物理设计。数据字典(英文名称DATADICTIONARY简写为DD)是对数据流程图中包含的所有元素的定义的集合,存储了系统所有的数据信息。数据流程图和数据字典共同构成系统逻辑模型。数据流程图是对系统的动态描述。而数据字典是对系统的静态描述,数据字典能够更细致的说明和补充数据流程图的逻辑内容,并且能够供人查阅。数据字典由数据元素、数据流、数据储存以及处理过程组成。根据系统功能设计的要求以及功能模块的划分,对于公共图书馆管理信息系统一共涉及到四个数据表。它们分别是:管理员表(admins),图书表(book),图书借阅表(browinfo),学生表(student)。下面就介绍一下各表的设计结构及其功能。(1)图书表(book):主要用于存放图书的详细信息。其详细设计结构如表1所示。表1book结构表字段类型中文翻译idint主键标示nonvarchar(50)图书编号typenonvarchar(50)分类编号namesnvarchar(50)书名authernvarchar(50)作者cbsnvarchar(50)出版社moneynvarchar(50)价格statesint状态rkint入库numint数量(2)学生表(student):主要用于存放学生的详细信息。其详细设计结构如表2所示。表2users结构表字段类型中文翻译idint主键标示noint学生idrealnamenvarchar(50)学生姓名xynvarchar(50)学院bjnvarchar(50)班级telnvarchar(50)电话passwordnvarchar(50)密码(3)借阅信息表(browInfo):主要用于存放用户的详细信息。其详细设计结构如表3所示。表3brow结构表字段类型中文翻译idint主键标示sidnvarchar(50)学生idbidnvarchar(50)图书idbtimesdatetime开始时间etimesdatetime还书时间browtimesdatetime应还时间fkmoneysnvarchar(50)罚款信息aidint管理员id(4)留言表(admin):主要用于存放管理员信息。其详细设计结构如表4所示。表4admins结构表字段类型中文翻译idInt主键标示usernamenvarchar(50)管理员名称passwordnvarchar(50)管理员密码4.2数据库的E-R图概念设计是数据库实际设计过程中的第一个阶段,是将客观世界进行数字化的一个过程。通常我们在进行数据库设计的时候,首先会将客观世界当中的实际存在的对象进行分类、聚集以及概括步骤,之后将其转换为能够为计算机信息管理系统支持的相关模型,既是产生一个概念数据模型,他不依赖于具体及其而存在,而且他能够真实的、准确的反映客观世界信息情况和相互之间的关系。由于概念模型是独立且不依赖与计算机系统的,因此具有简单明了的特点,应用使该数据看的人员与设计人员方便交流,方便设计人员进一步的进行修改。各类的数据模型都很容易进行转换,能够快捷有效的导出与数据库管理系统相关的逻辑模型。一般来说,描述概念模型的方法有很多种,但是到目前为止,我们最为常用到一种方法就是用E-R图,他是用来描述某一组织的概念模型,既是“实体一联系模型”。所有的数据系统都是根据数据模型而创建的,所以建立数据库的过程中,最为关键的工作就是建立其数据模型,由于客观世界里的具体事务通常都很难将其转换成计算机可以理解的信息,这就要求我们先要将客观世界中的事务转换成可以独立于计算机存在的信息结构,于是就有了概念模型。E-R图能够直观的表示概念模型。所以E-R图尤为重要。E-R图能够形象直观地描述概念模型。E-R模型由四个基本要素构成:实体性用矩形框表示;联系型用菱形框表示;实体型和联系型的属性用椭圆形框表示;用直线将试题类型联系起来,并在直线部标上联系的种类。E-R模型的“联系”用于表述实体之间或者实体内部的联系。根据前期对用户的需求分析,可以对数据结构中任意两个实体间进行考察,判断他们之间是否有直接或间接的关系。如果这两个实体键确实存在某种关联,我们还需要对其之间关联进行判断。此外,我们还要确定两个或多个实体之间和实体内部是不是还存在相互关联。其类型确定之后,还要为其命名以及确定键,并且要防止无关的和多余重复的联系出现的情况。在E-R设计时,我们重点是要明确实体和关系,属性的值以及根据我们的实际情况,有效地划分各个子功能模块的结构范围。数据库的逻辑结构就是把概念模型转换成为某个具体的数据库管理系统所支持的数据模型。

E-R模型向关系模型的转换

1.每一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的关键字就是关系的关键字。

2.联系的转换。

(1)一般1:1,1:m联系不产生新的关系模式,而是将一方实体的关键字加入到多方

实体对应的关系模式中,联系的属性也一并加入。

(2)m:n联系要产生一个新的关系模式,该关系模式由联系涉及实体的关键字加上联系的属性组成。4.3系统分析系统分析是一种解决实际问题的技术,是把一个系统分解为若干个相互独立的部分主要的目的就是研究各个部分是怎么实现其功能的,以及各个部分是如何相互配合实现最终的系统目标的。在整个系统的开发过程中,对系统的需求分析是保障系统顺利开发至关重要的一步,所谓的系统需求分析,就是指在系统开发前对系统制作的目的、所要实现的功能进行总体分析与规划。但总体上,首先我们需要的是了解用户需求,并以此为依据做好系统整体的规划,然后才能逐步对各个模块进行开发并实现其功能。为了实现系统某些具体而又实在的功能,所以对系统模块设计时,首先需要确定系统的功能需求和性能需求,最大程度的掌握用户对系统提出的功能要求和性能要求,在建立系统模型和需求之后,就要确定系统设计的约束,同事我们也要对系统的环境元素也要就行有效分析,最后才能准确的做出系统需求分析。我们所涉及学生公寓管理系统。也是从其从需完成的功能和结构出发进行分析,并提出系统的需求。管理员具有所有的权限功能:包括一般用户的管理,会员管理,图书管理,借阅管理,发布新闻,回复留言的功能。普通管理员可以添加会员,可以对图书进行管理,可以借阅,可以发布新闻,可以回复留言。会员可以进行借阅,查看自己的借阅信息。第5章图书馆的详细设计系统首页:代码:<html><head><title>图书管理系统</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"><style> body { scrollbar-base-color:#C0D586; scrollbar-arrow-color:#FFFFFF; scrollbar-shadow-color:DEEFC6; } </style></head><framesetrows="61,*,24"cols="*"framespacing="0"frameborder="no"border="0"><framesrc="<%=path%>/admin/top.jsp"name="topFrame"scrolling="No"noresize="noresize"id="topFrame"/><framesrc="<%=path%>/admin/center.jsp"name="mainFrame"id="mainFrame"/><framesrc="<%=path%>/admin/down.jsp"name="bottomFrame"scrolling="No"noresize="noresize"id="bottomFrame"/></frameset>登录模块:代码: Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); HttpSessionsession=request.getSession(); Stringsql="select*fromadminswhereusername='"+username +"'andpassword='"+password+"'"; System.out.println(sql); DBUtilutil=newDBUtil(); Connectionconn=util.openConnection(); try{ PreparedStatementpstmt=conn.prepareStatement(sql); ResultSetrs=pstmt.executeQuery(); intindex=0; while(rs.next()){ session.setAttribute("id",rs.getInt("id")); session.setAttribute("name",rs.getString("username")); session.setAttribute("type",1); index++; break; } if(index>0){ response.sendRedirect("loginSuccess.jsp"); }else{ Stringsql2="select*fromstudentwhereno='" +username+"'andpassword='"+password+"'"; PreparedStatementpstmt2=conn.prepareStatement(sql2); ResultSetrs2=pstmt2.executeQuery(); intindex2=0; while(rs2.next()){ session.setAttribute("id",rs2.getInt("id")); session.setAttribute("name",rs2.getString("no")); session.setAttribute("type",2); index2++; break; } if(index2>0){ response.sendRedirect("loginSuccess.jsp"); }else{ response.sendRedirect("login.jsp"); } } }catch(SQLExceptione){ e.printStackTrace(); }finally{ util.closeConn(conn); }图书管理模块:代码:if(mode!=null&&mode.equals("list")){ Stringsql="SELECTTOP" +n +"*FROM(" +"SELECTROW_NUMBER()OVER(ORDERBYid)ASRowNumber,*FROMbook)A" +"WHERERowNumber>"+m; Stringsql2="selectcount(*)frombook"; PreparedStatementpstmt1=conn.prepareStatement(sql); PreparedStatementpstmt2=conn.prepareStatement(sql2); ResultSetrs=pstmt1.executeQuery(); ResultSetrs2=pstmt2.executeQuery(); rs2.next(); totle=rs2.getInt(1); inttotlePage=totle/n; inttotlePageY=totle%n; if(totlePageY!=0){ totlePage=totlePage+1; } List<Book>list=newArrayList<Book>(); while(rs.next()){ Bookbean=newBook(); bean.setId(rs.getInt("id")); bean.setNo(rs.getString("no")); bean.setAuther(rs.getString("auther")); bean.setCbs(rs.getString("cbs")); bean.setMoneys(rs.getString("moneys")); bean.setNames(rs.getString("names")); bean.setRk(rs.getInt("rk")); bean.setStates(rs.getInt("states")); bean.setTimes(rs.getString("times")); bean.setTypeno(rs.getString("typeno")); bean.setNum(rs.getInt("num")); list.add(bean); } Pagepage=newPage(); page.setPageNo(pageNo); page.setTotlePage(totlePage); page.setTotle(totle); page.setList(list); request.setAttribute("page",page); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!"); request.getRequestDispatcher("admin/bookList.jsp").forward( request,response); }借阅者添加模块:代码:Stringno=request.getParameter("no"); Stringpassword=request.getParameter("password"); Stringrealname=request.getParameter("realname"); Stringxy=request.getParameter("xy"); Stringbj=request.getParameter("bj"); Stringtel=request.getParameter("tel"); StringsqlAdd="insertintostudent(no,password,realname,xy,bj,tel)values('" +no+"','"+password+"','"+realname+"','"+xy+"','"+bj+"','"+tel+"')"; Statementstmt=conn.createStatement(); stmt.executeUpdate(sqlAdd); Stringsql="SELECTTOP" +n +"*FROM(" +"SELECTROW_NUMBER()OVER(ORDERBYid)ASRowNumber,*FROMstudent)A" +"WHERERowNumber>"+m; Stringsql2="selectcount(*)fromstudent"; PreparedStatementpstmt1=conn.prepareStatement(sql); PreparedStatementpstmt2=conn.prepareStatement(sql2); ResultSetrs=pstmt1.executeQuery(); ResultSetrs2=pstmt2.executeQuery(); rs2.next(); totle=rs2.getInt(1); inttotlePage=totle/n; inttotlePageY=totle%n; if(totlePageY!=0){ totlePage=totlePage+1; } List<Student>list=newArrayList<Student>(); while(rs.next()){ Studentbean=newStudent(); bean.setId(rs.getInt("id")); bean.setPassword(rs.getString("password")); bean.setRealName(rs.getString("realname")); bean.setBj(rs.getString("bj")); bean.setNo(rs.getString("no")); bean.setTel(rs.getString("tel")); bean.setXy(rs.getString("xy")); list.add(bean); } Pagepage=newPage(); page.setPageNo(pageNo); page.setTotlePage(totlePage); page.setTotle(totle); page.setList(list); request.setAttribute("page",page); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!"); request.getRequestDispatcher("admin/userList.jsp").forward( request,response);借阅者管理模块:代码:if(mode!=null&&mode.equals("list")){ Stringsql="SELECTTOP" +n +"*FROM(" +"SELECTROW_NUMBER()OVER(ORDERBYid)ASRowNumber,*FROMstudent)A" +"WHERERowNumber>"+m; Stringsql2="selectcount(*)fromstudent"; PreparedStatementpstmt1=conn.prepareStatement(sql); PreparedStatementpstmt2=conn.prepareStatement(sql2); ResultSetrs=pstmt1.executeQuery(); ResultSetrs2=pstmt2.executeQuery(); rs2.next(); totle=rs2.getInt(1); inttotlePage=totle/n; inttotlePageY=totle%n; if(totlePageY!=0){ totlePage=totlePage+1; } List<Student>list=newArrayList<Student>(); while(rs.next()){ Studentbean=newStudent(); bean.setId(rs.getInt("id")); bean.setPassword(rs.getString("password")); bean.setRealName(rs.getString("realname")); bean.setBj(rs.getString("bj")); bean.setNo(rs.getString("no")); bean.setTel(rs.getString("tel")); bean.setXy(rs.getString("xy")); list.add(bean); } Pagepage=newPage(); page.setPageNo(pageNo); page.setTotlePage(totlePage); page.setTotle(totle); page.setList(list); request.setAttribute("page",page); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!"); request.getRequestDispatcher("admin/userList.jsp").forward( request,response); }借书添加模块:代码:String[]selectFlag=request.getParameterValues("selectFlag"); DatecurrentTime=newDate(); SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd"); Stringbtimes=formatter.format(currentTime); CalendarrightNow=Calendar.getInstance(); rightNow.add(Calendar.DAY_OF_MONTH,+n); Stringetimes=formatter.format(rightNow.getTime()); for(inti=0;i<selectFlag.length;i++){ Stringsql="updatebooksetnum=num-1whereid=" +selectFlag[i]; Statementstmt=conn.createStatement(); stmt.executeUpdate(sql); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8******8"+sql); //添加借阅信息 Stringsqladd="insertintobrowinfo(bid,sid,btimes,etimes,browtimes,fkmoneys)" +"values("+selectFlag[i]+","+sid+",'"+btimes+"','"+etimes+"','',0)"; Statementstmtadd=conn.createStatement(); stmtadd.executeUpdate(sqladd); } Stringsql="SELECTTOP" +n +"*FROM(" +"SELECTROW_NUMBER()OVER(ORDERBYid)ASRowNumber,*FROMbrowinfowhere1=1andsid="+sid+"andbrowtimes='')A" +"WHERERowNumber>"+m; Stringsql2="selectcount(*)frombrowinfowhere1=1andsid="+sid+"andbrowtimes=''"; PreparedStatementpstmt1=conn.prepareStatement(sql); PreparedStatementpstmt2=conn.prepareStatement(sql2); ResultSetrs=pstmt1.executeQuery(); ResultSetrs2=pstmt2.executeQuery(); rs2.next(); totle=rs2.getInt(1); inttotlePage=totle/n; inttotlePageY=totle%n; if(totlePageY!=0){ totlePage=totlePage+1; } List<BrowInfo>list=newArrayList<BrowInfo>(); while(rs.next()){ BrowInfobean=newBrowInfo(); bean.setId(rs.getInt("id")); bean.setBid(rs.getInt("bid")); bean.setBrowtimes(rs.getString("browtimes")); bean.setBtimes(rs.getString("btimes")); bean.setEtimes(rs.getString("etimes")); bean.setFkmoneys(rs.getString("fkmoneys")); bean.setSid(rs.getInt("sid")); list.add(bean); } Pagepage=newPage(); page.setPageNo(pageNo); page.setTotlePage(totlePage); page.setTotle(totle); page.setList(list); request.setAttribute("page",page); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!"); request.getRequestDispatcher("admin/myBrowList.jsp").forward( request,response);借阅管理模块:代码:Stringsql="SELECTTOP" +n +"*FROM(" +"SELECTROW_NUMBER()OVER(ORDERBYid)ASRowNumber,*FROMbrowinfowhere1=1)A" +"WHERERowNumber>"+m; Stringsql2="selectcount(*)frombrowinfowhere1=1"; PreparedStatementpstmt1=conn.prepareStatement(sql); PreparedStatementpstmt2=conn.prepareStatement(sql2); ResultSetrs=pstmt1.executeQuery(); ResultSetrs2=pstmt2.executeQuery(); rs2.next(); totle=rs2.getInt(1); inttotlePage=totle/n; inttotlePageY=totle%n; if(totlePageY!=0){ totlePage=totlePage+1; } List<BrowInfo>list=newArrayList<BrowInfo>(); while(rs.next()){ BrowInfobean=newBrowInfo(); bean.setId(rs.getInt("id")); bean.setBid(rs.getInt("bid")); bean.setBrowtimes(rs.getString("browtimes")); bean.setBtimes(rs.getString("btimes")); bean.setEtimes(rs.getString("etimes")); bean.setFkmoneys(rs.getString("fkmoneys")); bean.setSid(rs.getInt("sid")); list.add(bean); } Pagepage=newPage(); page.setPageNo(pageNo); page.setTotlePage(totlePage); page.setTotle(totle); page.setList(list); request.setAttribute("page",page); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!"); request.getRequestDispatcher("admin/allBrowList.jsp").forward( request,response);第6章系统的测试与分析6.1测试目的与目标系统测试,英文是SystemTesting。是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。系统测试是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。主要内容包括:功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如《产品需求规格说明书》。由于正确性是软件最重要的质量因素,所以功能测试必不可少。健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。比较常见的、典型的系统测试包括恢复测试、安全测试、压力测试。下面对这几种测试进行一一介绍:1.恢复测试恢复测试作为一种系统测试,主要关注导致软件运行失败的各种条件,并验证其恢复过程能否正确执行。在特定情况下,系统需具备容错能力。另外,系统失效必须在规定时间段内被更正,否则将会导致严重的经济损失。2.安全测试安全测试用来验证系统内部的保护机制,以防止非法侵入。在安全测试中,测试人员扮演试图侵入系统的角色,采用各种办法试图突破防线。因此系统安全设计的准则是要想方设法使侵入系统所需的代价更加昂贵。3.压力测试压力测试是指在正常资源下使用异常的访问量、频率或数据量来执行系统。在压力测试中可执行以下测试:(1)如果平均中断数量是每秒一到两次,那么设计特殊的测试用例产生每秒十次中断。(2)输入数据量增加一个量级,确定输入功能将如何响应。(3)在虚拟操作系统下,产生需要最大内存量或其它资源的测试用例,或产生需要过量磁盘存储的数据。在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,通过测试,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。测试后的软件各模块基本功能能顺利进行,尽可能的提高软件的健壮性。6.2测试方法系统的测试有两种方法分别为黑盒测试和白盒测试。黑盒测试又称为功能测试,在程序接口进行,只检查程序功能是否能够按照规格说明书的规定正确使用,程序是否能适当地接收输入数据并发生正确的输出信息,而且要能够保持外部信息的完整性。白盒测试又叫结构测试,完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中每条通路是否都能按照预定要求正确工作。本系统开发过程进行的测试步骤如下:模块测试:也叫单元测试,目的是保证每一个模块作为一个单元能正确运行,本测试所发现的往往是编码和详细设计的错误,主要评价模块的下述五个特点:模块接口,局部数据结构,重要的执行路径,出错处理通路,影响上述各方面特性的边界条件。模块测试主要由代码审查和软件测试两部分组成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论