基于Ajax图书馆管理系统结课论文.docx
《基于Ajax图书馆管理系统结课论文.docx》由会员分享,可在线阅读,更多相关《基于Ajax图书馆管理系统结课论文.docx(17页珍藏版)》请在冰点文库上搜索。
基于Ajax图书馆管理系统结课论文
Ajax结课论文
题目:
图书馆管理系统
设计者:
赵硕
专业班级:
计应14--4
学号:
411420010029
2016年01月09日
河南理工大学计算机学院
第1章前言
1.1选题的背景
1.2系统的开发环境
第2章相关技术介绍
2.1Java语言简介
2.2AJax简介
2.3MVC的优点
2.4MVC的缺点
第3章总体设计
3.1功能模块分析设计
3.1.1MVC(Model-View-Controller)设计模式
3.2数据库设计
3.2.1数据库分析
3.2.2数据库概念结构设计
3.3实现DAO组件
第4章详细设计
4.1书籍检索模块设计
4.2管理员模块的实现
4.3读者管理功能模块的实现
第5章系统测试
第6章系统安全
第7章总结与展望
第1章前言
1.1选题背景:
随着计算机和网络技术的飞速发展,许多学校都拥有了自己的校园网,以实现信息交流和资源共享。
图书馆作担任着为教学和科研服务的重任,图书馆的信息化水平是一个学校总体水平的重要标志。
在科学技术不断发展的今天,如何使用计算机进行自动化管理,如何为读者提供方便便捷的服务,提高图书的利用率成为了我们面前的一项重要课题。
因此图书馆管理系统就以计算机和网络技术为依托,利用计算机进行自动化管理,使图书馆的功能最大化、管理规范化、效率最高化。
本文根据某高校图书馆管理的实际需要,比较了国内外高校图书馆管理系统,针对目前国内外高校图书馆管理系统的特点和运行中出现的问题进行了初步分析,并结合管理系统目前的发展状况、技术水平及图书馆管理实际,对图书馆管理系统进行了设计、开发与实现。
论文以某高校图书馆管理为背景,详细分析了高校图书馆管理的组织结构、业务流程和数据流程等,选用了符合高校图书馆实际的关系数据库理论和设计方法,进行了数据库结构设计,利用AJAX和.net技术实现图书馆管理应用上的具体过程,并利用新的技术平台、技术特点,开发出适合该高校图书馆管理的信息系统。
系统采用Web界面,界面友好,操作简便,维护方便,具有跨平台、松耦合的特点,不需要改变现有的软、硬件环境,即可实现功能,该系统在实用性、简便性等方面均达到了预期目标,由于效果显著,受到用户部门的广泛欢迎,并展现良好的应用前景。
目前,随着Web技术的发展、图书文献数量的增长以及用户需求模式的改变,仅凭手工或某部门孤立地
使用单个计算机处理各类信息和数据已远远不能满足要求;因此,只有将计算机网络技术和数据库技术应用
于图书管理中,实现各类信息的网上传输和共享,才能减少图书管理工作中的重复劳动,提高图书管理工作
的效率和水平.本文采用在适当功能上选择使用MVC设计模式和Ajax技术相结合的方法,在中间层上采
用MVC设计模式,其目的是提高系统底层业务逻辑的可重用性,增加系统的可扩展性,降低系统维护成本.
引进Ajax技术,促使页面局部刷新,减少用户心理和实际的等待时间.设计范式查询算法,通过参数传递,能
进行多种不同的高级条件组合查询操作,提升了系统的查询效率.采用了分层安全控制模式,保证系统安全.
1.2系统开发环境:
1.2.1AJAX技术简介
AJAX全称为“AsynchronousJavaScriptandXML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
主要包含了以下几种技术Ajax(AsynchronousJavaScript+XML)的定义基于web标准(standards-basedpresentation)XHTML+CSS的表示;使用DOM(DocumentObjectModel)进行动态显示及交互;使用XML和XSLT进行数据交换及相关操作;使用XMLHttpRequest进行异步数据查询、检索;使用JavaScript将所有的东西绑定在一起。
英文参见Ajax的提出者JesseJamesGarrett的原文。
类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。
事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。
AJAX的应用使用支持以上技术的web浏览器作为运行平台。
这些浏览器目前包括:
Mozilla、Firefox、InternetExplorer、Opera、Konqueror及Safari。
但是Opera不支持XSL格式对象,也不支持XSLT
1.2.2jQuery实现请求的发送和页面局部刷新;
window.location.reload()刷新当前页面.
parent.location.reload()刷新父亲对象(用于框架)
opener.location.reload()刷新父窗口对象(用于单开窗口)
top.location.reload()刷新最顶端对象(用于多开窗口)
$.get方法,$.post方法,$.getJson方法,$.ajax方法如下
前两种使用方法基本上一样
复制代码代码如下:
$.get(”Default.php教程”,{id:
”1″,page:
“2″},
function(data){ //这里是回调方法。
返回data数据。
这里想怎么处理就怎么处理了。
});
jQuery.post(url,[data],[callback],[type]):
使用POST方式来进行异步请求
第2章相关技术介绍
2.1Java语言简介
Java技术是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。
Java是典型的强类型语言,即必须声明变量的类型,Java中有8种类型,6种数值类型(4个整数型和2个浮点型)、一个字符类型和一个boolean类型。
2.2Servlet技术简介
Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的WEB服务器端编程技术,主要用于在WEB服务器端获得客户端的访问请求信息和动态生成对客户端的响应消息。
Servlet技术也是JSP技术(另外一种动态网页开发技术)的基础。
一个Servlet程序就是一个实现了特殊接口的Java类,用于被支持Servlet的WEB服务器调用和运行,即只能运行于具有Servlet引擎的WEB服务器端。
一个Servlet程序负责处理它所对应的一个或一组URL地址的访问请求,接收访问请求信息和产生响应内容。
2.2AJax简介
AJAX=异步JavaScript和XML。
AJAX是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。
这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用AJAX)如果需要更新内容,必需重载整个网页面。
2.3MVC的优点
1:
耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。
因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2:
重用性高
随着技术的不断进步,需要用越来越多的方式来访问应用程序。
MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。
由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。
MVC使开发和维护用户接口的技术含量降低。
3:
部署快
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
4:
可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
5:
有利软件工程化管理
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
控制器也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。
给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。
2.4MVC的缺点
1:
没有明确的定义
完全理解MVC并不是很容易。
使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。
每个构件在使用之前都需要经过彻底的测试。
2:
不适合小型,中等规模的应用程序
花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
3:
增加系统结构和实现的复杂性
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
4:
视图与控制器间的过于紧密的连接
视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
5:
视图对模型数据的低效率访问
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。
对未变化数据的不必要的频繁访问,也将损害操作性能。
6:
一般高级的界面工具或构造器不支持模式
改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,会造成MVC使用的困难。
第3章总体设计
3.1功能模块设计
3.1.1图书管理模块分析:
系统的用户有三种用户的角色,包括读者,图书馆工作人员和管理员,分别拥有如下工作模块:
1:
读者功能模块
(1)图书管理信息方面
图书馆公告信息
读者功能说明:
查看读者的操作说明和功能的使用说明
新书推荐:
查阅管理员每个月公布的新书信息
(2)图书检索
图书信息检索:
范围可按著者,书名,主题,出版社的一个或多个检索款目,进行任意条件的模糊查询,迅速找出目标书籍。
找到后可查询并且可预订该图书。
(3)个人图书馆
借阅情况:
包括当前的借阅信息,图书预约信息,提供网上续借功能,取消预约该图书。
个人信息设置:
修改个人的联系方式和登录密码。
(4)读者服务
新书推荐:
读者可以对图书管理员推荐图书,发出推荐购买该图书请求。
留言功能:
对该图书馆管理存在的情况和图书馆未来的发展提供相关意见和建议给管理员,同时可以查阅自己后者他人的意见和建议以及相关回复。
MVC(Model-View-Controller)设计模式
Struts是建立基于JSP模式2体系结构的完全开放源代码的Web框架。
包含一系列相互合作的类、Servlet和JSP标记,它们共同组成了可重用的模式模板。
在这些组件中,模型中的逻辑Bean由Struts提供的org.apache.struts.action.Action类来实现,开发者要扩展此类,并且覆盖类中定义的一个perform()方法以适应特定请求的业务逻辑。
数据Bean由Struts中的org.apache.struts.action.ActionForm类来实现,开发者通过扩展此类,用来存储来自客户端的请求参数。
在视图的实现中,Struts使用一组可扩展的自定义标签库(TagLib)来实现页面设计与应用逻辑实现的分离。
用Struts标记建立表单,生成动态页面,通过Struts标记可以读取ActionForm中的数据。
在Struts体系结构中,基本的控制器组件是其提供的ActionServlet类中的Servlet。
它在处理一个请求时会完成:
(1)把来自客户端的请求服务转到相应Action去执行相关的业务逻辑。
如果这是特定Action类收到的第一个请求,它将初始化这个实例并且进行缓存。
请求的URI与特定Action类的映射由Action-Mapping类进行描述。
(2)把来自客户端的请求参数移植到相应的ActionFormbean。
如果没有相应的ActionFormbean实例,将创建它再移植参数。
此特定ActionFormbean也在ActionMapping中声明与上面Action相关联。
相应Action能更新此ActionFormbean中的数据,JSP页可读取ActionFormbean中的数据。
(3)调用相应的Action类实例中的perform()方法,并将相关联的ActionFormbean、ActionMapping对象、request和response对象传送给此Action。
(4)根据Action返回的ActionForward对象,将响应转发到ActionForward对象中所指定的JSP页。
3.1.2基于MVC模式的图书管理总体设计
论文工作主要开发目的是方便图书管理人员进行图书信息管理,增加工作效率,面向的客户群体是各级图书馆的工作人员。
根据本系统的需求,结合实际管理情况,系统应用有如下功能模块:
(1)基本信息设置:
如操作人员的编辑,操作人员密码的修改。
(2)用户的管理:
可以增加(给用户办卡)、修改、删除用户信息。
(3)图书信息管理:
可以增加、删除、修改图书信息。
(4)查询图书信息。
(5)添加图书借阅信息。
(6)借阅还书功能。
(7)根据借阅日期自动计算借阅费用。
3.2数据库设计
3.2.1数据库分析如下:
1:
读者种类信息,包括的数据项有:
种类编号,种类名称,借书数量,借书期限,续借次数,超日日罚金。
2:
读者信息,包括的数据项有:
读者编号,读者姓名,读者种类,读者性别,读者单位,登录密码,电话号码,电子邮件地址,有效开始日期,有效结束日期,违约积分,状态,备注。
3:
书籍类别信息,包括的数据项有:
类别编号,类别名称。
4:
书籍信息:
包括数据项有:
书籍编号,检索号。
书籍名称,书籍类别,作者姓名,出版社信息,出版时间,馆藏量,馆藏地点,关键词,登记日期,书籍价钱,内容简介,备注信息等。
5:
书籍状态信息:
包括的数据项有:
书籍编号,书籍登录号,书籍状态借阅信息,包括的数据项有:
借阅信息编号,读者编号,书籍登录号,借书日期,还书日期,续借次数,是否归还,罚金等。
6:
预约信息:
包括的数据项有:
预约编号,书籍编号,预约日期,预约保留时间,是否有效,是否借出。
7:
操作用户信息,包括数据项有:
用户编号,登录密码,姓名,部门,性别,出生日期,联系地址,联系电话,学历,状态。
3.2.2数据库概念结构设计
借阅实体关系模型如下:
解释如下:
一个借阅者只能具有一种读者类型,而一种读者类型可被多个借阅者所具有:
一本图书只能一种图书类型,而一种图书类别可包含多本图书;一个用户可借阅多本不同的书,而一本书也可被多个不同用户所借阅。
系统全局ER模式:
3.3DAO组件
整个系统采用三层结构的设计,即表示层、业务逻辑层、数据访问层,被分成3个相对独立的单元.很多
地方巧妙地使用了AJAX技术,比如用户登录界面中使用AJAX实现用户检验功能,检验用户的合法性,并按
代码功能的不同采用MVC结构.
Action方法(控制层代码):
PublicVoid(httpservletRequest request,httpservletresponseresponse)
ThrowsservletException.IOEexception{
∥从Request中获取登陆类型radio、登陆名parm、密码pwd.
Reader reader=this.login(radio,parm,pwd);
if(reader==null){∥登陆错误
∥让jsp页面跳转到登陆失败页面.
}else{∥登出成功
∥将reader放入session中,并跳转到系统操作主页面
}
}
Service方法(业务层代码):
public Vector<Reader>findReader(QueryRestriction q)throws FindException{
Vector<Reader>v=null;
try{
v=rdao.select(q);
}catch(SelectException e){
e.printStackTrace();
throw new FindException();
}
return v;
}
DAO方法(持久层代码):
public Vector<Reader>select(QueryRestriction qr)throws SelectException{
Session s=null;
s=HbnUtil.openSession();
s.beginTransaction();
String hql="from Reader param where"+qr.toString();
Vector<Reader>reader=new Vector<Reader>();
reader.addAll((List<Reader>)s.createQuery(hql).list());
∥ s.close();
return reader;
第4章详细设计
4.1书籍检索模块设计
功能简介:
图书通过输入书籍的检索项可以进行图书查询,对查询得到的图书信息可以进一步查看该书籍的状态以及归回时间,同时可以对书籍进行预约,但要满足预约的条件:
当前还有在图书馆的情况不支持预约功能,只有当前书籍外借情况下才支持外借。
数据流程图:
4.2管理员模块的实现
书籍管理模块的实现
功能模块简介:
该功能模块:
新书入库:
书籍查询和书籍基础数据维护。
4.3读者管理功能模块的实现
功能模块简介:
读者管理模块包括:
新建读者,查询修改,删除读者信息以及读者管理模块的基础数据维护。
数据流图如下:
第5章系统测试
5.1客户端测试
主要包括代码测试,页面测试,导航测试,和功能测试。
窗体代码的测试主要进行逻辑覆盖,路径覆盖等事件代码的静态测试。
页面测试除了事件代码测试之外,还有页面布局和视觉方面的测试。
导航测试主要进行窗体和页面切换或参数传递之间的测试。
功能测试是对窗体和页面进行功能需求方面的测试。
经过仔细测试,客户端操作界面完全满足业务需要。
(1)应用服务器测试
(2)数据库测试
(3)连接测试
(4)系统功能测试
5.2测试方法
(1)功能是否符合需求;
(2)功能是否完整;
(3)功能是否有作用;
(4)功能是否无错误;
5.3测试结论
在测试原则和本系统测试策略的指导下,采用白盒测试和黑盒测试方法对本系统进行了测试。
第6章系统安全
一个系统的安全性应该包括操作系统安全性,网络数据安全性及应用程序安全性三个层次。
如果程序设计不当,很可能面临数据库被非法控制的危险。
下面有几种服务器安全性的事项。
(1)始终对所有用户输入执行验证,且验证必须在一个可靠的平台上进行,应当在应有的多个层次上进行。
(2)除了输入输出功能必须数据之外,不允许其他任何内容。
(3)建立信任代码基地,允许数据进入信任环境之前执行彻底的验证。
(4)登录数据时先检查数据类型。
(5)严格定义合法的用户请求,拒绝其他所有请求。
(6)测试数据是否满足合法条件,而不是测试不合法的条件。
这是因为数据不合法的情况很多。
第7章总结与展望
经过一个学期的学习已经接近尾声,回想起以前上过的课程,感触颇深。
这次我的结课论文是<<基于AJAX图书馆管理系统设计与实现>>,自己动手实际操作了,才知道理论与实践相结合的重要性,大学里的每一门课程都是紧密联系的,作为一个软件编程方向的专业,我们应该把理论与实践紧密结合,才能使代码编写能力上一个等级。
系统从需求分析到数据库的建立,再到功能模块的实现,我学到了很多东西。
从中我认识到做一个系统软件除了能够熟练地应用开发软件工具以外,还需要严密的逻辑思维和良好的软件工程知识,在开发中起着重要的作用。
总之这次结课设计,是对我所学的专业知识的巩固和应用,而且还是一个强化的过程,是对大学知识的一个综合运用,也是一次知识的增长和积累的过程,通过这次我更加深刻的体会到所学知识的强大。
由于经验不足,还需老师多加指点,作为学生才会有更大的发展。