《J2ee课程设计报告文档》由会员分享,可在线阅读,更多相关《J2ee课程设计报告文档(14页珍藏版)》请在金锄头文库上搜索。
1、-J2EE与中间件课程设计报告 课程设计题目: 图书馆管理系统 班级: 软件工程1班 小组成员: 信息科学与工程学院2014年06月目录一、图书馆管理系统现状2二、涉及的技术42.1 登陆页面采用cookie 技术42.2 JQuery技术42.3 数据库连接池42.4 MVC架构5三、设计任务53.1用例设计53.2界面设计53.3数据库设计53.4编码设计5四、功能描述54.1用例设计54.2界面设计64.3 数据库设计74.4 编码设计7五、功能实现85.1用例设计85.2 界面设计105.3数据库设计155.4编码设计15六、实验体会206.1遇到的困难206.2经历:20七、组内分工
2、21一、图书馆管理系统现状图书馆因客观需要产生,因其得到利用而不断开展。由于社会经济和科学技术的开展,出版物品种和数量的激增及计算机技术在图书馆的广泛应用,国内外图书馆事业都发生了很大的变化。这与图书馆管理水平是和图书馆事业的开展是分不开的。1.1、国内现状近十几年来我国图书馆的馆舍建筑、硬件设施、资源建立等各个方面的条件都有了很大的变化和开展。对人员队伍建立日益重视。从总体上看,图书馆管理水平有了较大的提高。主要表现在两方面,一是图书馆管理思想与效劳理念由传统图书馆向现代图书馆转变,二是受信息技术开展的影响,我国图书馆管理创新和管理现代化的进程同样呈现信息化的趋势,这主要表现为计算机等管理手
3、段在图书馆的应用。新技术的应用对传统图书馆的冲击 现代技术的应用对图书馆开展的影响是有目共睹的。信息技术革命为图书馆的开展提供了极为广阔的空间。推动了图书馆根底业务由手工方式向计算机化和网络化开展,推动了传统图书馆向自动化图书馆和数字图书馆开展。目前我国图书馆管理体制的根本特征是条块分割,各自为政,各图书馆的组织机构都是按主管机构的行政隶属关系建立起来的,各个图书馆依附于所在系统的行政管理部门而存在。缺乏宏观指导、调控的能力,阻碍了文献资源的共建、共知、共享,同时更不利于整体网络化建立。另外高素质管理人才短缺,全员素质有待提高。图书馆不仅罕见工商管理或公共管理学位的管理者,且不少人员缺乏职业图
4、书馆管理者的根本素质。同时,职工整体素质偏低,知识构造不尽合理,高素质、综合型人才缺乏,造成创新能力严重缺乏。1.2、国外现状国外尤其在西方国家由于科学技术和经济兴旺的原因,图书馆行业比拟受重视和兴旺,在英国和美国,以及澳大利亚等国的图书馆,图书馆先进的管理手段促进了其现代化管理水平的不断提高。特别是自动化和网络化的飞速开展,给图书馆事业开展带来了勃勃生机,特别是英国的大学,例如剑桥大学共有 90 个图书馆,牛津大学现有 100 多个规模不等、馆藏不一和效劳多样的图书馆。另外在英国,除了对图书馆工作人员有严格的要求外,图书馆本身还有专门的部门负责职工培训,一般与实际管理工作严密结合。英国全国图
5、书馆协会对全国*围内的各级各类图书馆职工管理培训起领导作用,国家级培训主要由这个协会负责并承当。它不仅对馆员资格有皇家特许认证权,更重要的是它有一系列的培训课程和专业指导。这种培训格局,使图书馆工作人员继续教育不断强化,专业素质不断提高。以美国为例,美国国土面积和我国相差不大,人口缺乏我国的 1/4,但其公共图书馆总数量却为我国的3 倍。美国各种不同类型的图书馆由不同的上级行政部门负责,如法律图书馆由法院管理等,另外美国图书馆相关法己成体系,各州、郡内又有自己的图书馆法律,这些法律明文规定图书馆的性质、每年的经费投入、每人每年需要的财政补助等,美国图书馆的所有工作都是围绕一切为了读者这个中心展
6、开的。因而处处表达出一种开放的效劳意识。图书馆的藏书布局没有固定格式,但有共同特点,那就是以方便读者使用为目的。大多按学科内容分类,采用全方位的开放式布局。在效劳方式上采用借书、阅览、咨询、检索一体化的效劳手段。在同一个地方,既开架借书,又可阅览和进展检索咨询,对图书馆管理而言,管理工作极其简便,减少了管理层次和中间环节。而澳大利亚大学图书馆现状是,其传统的工作岗位正在减少,同时也不再以读者对象或文献类型划分阅览室或书库,全馆只有一个出入口,通常是流通部门的管理终端设在图书馆进出口处,图书馆的工作重心已从信息处理向信息咨询效劳转移,配置较多的人员去做信息研究和咨询效劳,有助于网络作用的发挥和提
7、高文献的利用率。二、涉及的技术2.1 登陆页面采用cookie 技术 将用户名和密码保存在本地,每次登录时先检验cookie表中有无记录的的用户名和密码,如果cookie存在用户的登录信息,则用户无需再次输入即可登录本论坛。2.2 JQuery技术 本系统的javascript采用了技术比拟成熟的Jquery,包括界面元素的获取和赋值,动态菜单效果的实现等都采用了该技术,使得开发效率得以提高。2.3 数据库连接池为减轻数据库连接的负担,提高系统的性能,采用了pro*ool数据库连接池技术。因为系统比拟小,设定最小的连接数1,最*接数500,超时设定60000。2.4 MVC架构为提升系统的性能
8、,使开发思路更加清晰,采用了JSP+Servlet+bean的MVC架构。视图层采用JSP负责页面显示和呈现处理结果,控制层采用Servlet负责请求转发和业务逻辑的处理,bean+DAO属于模型层,负责数据库和持久化数据。三、设计任务3.1用例设计通过用例的分析获取并明确需求,细化每个用例的业务流程,由小组成员共同负责3.2界面设计设计交互良好地界面,获取用户输入,并呈现处理结果,由于小组成员是按照模块进展分工的,在同一的CSS下,每一个成员全权负责自己模块的界面设计。3.3数据库设计小组成员通过用例的分析,获取初始的实体,进而详细分析其属性等,最终生成数据库的物理构造和相应DBMS的数据库
9、构造,最后由*文雯负责设计。3.4编码设计根据前期的分析与设计,实施编码工作,按模块分工,小组成员共同完成。四、功能描述4.1用例设计在该设计阶段主要完善对需求的分析。4.2界面设计在该设计阶段,需要完成该图书馆管理系统所需的静态页面:A 登陆页面B 普通用户主界面 b1 馆藏图书查询界面b2已借图书查询界面b3 图书收藏查询界面b4 图书续借界面b5 用户指南界面b6 密码修改界面C 管理员主界面:c1 馆藏图书查询界面c2 已借图书查询界面c3 图书收藏查询界面c4 图书续借界面c5 用户指南界面c6 借书管理界面c7 还书管理界面c8 过期图书管理界面c9 图书采购管理界面c10添加普通
10、用户界面c11 添加图书馆管理员界面c12 用户信息管理界面c13 密码修改界面4.3 数据库设计确定需要持久化的实体:用户表:用户编号PK+*+密码+权限值图书表:图书编号PK+图书名称+名称+图书作者+图书出版日期+图书价格+图书分类编号FK+图书位置+图书数量+图书借出数目图书分类表:图书分类编号PK+图书分类名称图书借阅表:借阅时间+图书编号FK+用户编号FK+图书数量4.4 编码设计在此阶段主要进展架构设计:在本工程中采用比拟熟悉的MVC架构设计。主要包括:M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码别离,从而使同一个程序可以使用不同的表现形式视
11、图:作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型:被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器:首先控制器接收用户的请求,并决定应该调用哪个模型来进展处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。五、功能实现5.1用例设计图 1普通用户用例图图 2图书馆管理员用例图5.2 界面设计图 3 图书馆管理系统登录界面图 4普通用户首页图 5图书馆管理员首页图6密码修改页面图 7用户指南页
12、面图 8管理员添加普通用户界面图 9图书馆管理员添加图书馆管理员界面图 10借书管理界面图 11还书管理界面图 12图书注销管理界面图 13图书采购管理界面图 14馆藏图书查询界面5.3数据库设计图 物理数据库视图5.4编码设计程序设计的模块较多,下面为程序的核心代码:/数据层DAO的主要基类BaseDAOpublicabstractclass BaseDao protected Connection conn;protected PreparedStatement stmt;protected ResultSet rst;protected CallableStatement calltmt
13、;/* * 获取连接的方法 */protectedfinalvoid getConnection() throws SQLE*ception conn = DBConnection.getConnection();/* * 释放资源的方法 */protectedfinalvoid closeAll() if (rst != null) try rst.close(); catch (SQLE*ception e) / TODO Auto-generated catch blocke.printStackTrace(); finally rst = null;if (stmt != null)
14、try stmt.close(); catch (SQLE*ception e) / TODO Auto-generated catch blocke.printStackTrace(); finally stmt = null;if (stmt != null) try conn.close(); catch (SQLE*ception e) / TODO Auto-generated catch blocke.printStackTrace(); finally conn = null;/执行SQL语句的方法protectedfinalint e*ecuteSQL(String sql,List params)int count = 0;try this.getConnection();stmt = this.conn.prepareStatement(sql);setPreparedStatement(params);count = stmt.e*ecuteUpdate(); catch (SQLE*ception e) e.printStackTrac