J2ee课程设计文档.docx

上传人:b****1 文档编号:13369029 上传时间:2023-06-13 格式:DOCX 页数:22 大小:1.35MB
下载 相关 举报
J2ee课程设计文档.docx_第1页
第1页 / 共22页
J2ee课程设计文档.docx_第2页
第2页 / 共22页
J2ee课程设计文档.docx_第3页
第3页 / 共22页
J2ee课程设计文档.docx_第4页
第4页 / 共22页
J2ee课程设计文档.docx_第5页
第5页 / 共22页
J2ee课程设计文档.docx_第6页
第6页 / 共22页
J2ee课程设计文档.docx_第7页
第7页 / 共22页
J2ee课程设计文档.docx_第8页
第8页 / 共22页
J2ee课程设计文档.docx_第9页
第9页 / 共22页
J2ee课程设计文档.docx_第10页
第10页 / 共22页
J2ee课程设计文档.docx_第11页
第11页 / 共22页
J2ee课程设计文档.docx_第12页
第12页 / 共22页
J2ee课程设计文档.docx_第13页
第13页 / 共22页
J2ee课程设计文档.docx_第14页
第14页 / 共22页
J2ee课程设计文档.docx_第15页
第15页 / 共22页
J2ee课程设计文档.docx_第16页
第16页 / 共22页
J2ee课程设计文档.docx_第17页
第17页 / 共22页
J2ee课程设计文档.docx_第18页
第18页 / 共22页
J2ee课程设计文档.docx_第19页
第19页 / 共22页
J2ee课程设计文档.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

J2ee课程设计文档.docx

《J2ee课程设计文档.docx》由会员分享,可在线阅读,更多相关《J2ee课程设计文档.docx(22页珍藏版)》请在冰点文库上搜索。

J2ee课程设计文档.docx

J2ee课程设计文档

 

J2EE与中间件

课程设计报告

 

课程设计题目:

图书馆管理系统

班级:

软件工程2011级1班

小组成员:

 

信息科学与工程学院

2014年06月

目录

一、图书馆管理系统现状2

二、涉及的技术4

2.1登陆页面采用cookie技术4

2.2JQuery技术4

2.3数据库连接池4

2.4MVC架构5

三、设计任务5

3.1用例设计5

3.2界面设计5

3.3数据库设计5

3.4编码设计5

四、功能描述5

4.1用例设计5

4.2界面设计6

4.3数据库设计7

4.4编码设计7

五、功能实现8

5.1用例设计8

5.2界面设计10

5.3数据库设计15

5.4编码设计15

六、实验体会20

6.1遇到的困难20

6.2经验:

20

七、组内分工21

一、图书馆管理系统现状

图书馆因客观需要产生,因其得到利用而不断发展。

由于社会经济和科学技术的发展,出版物品种和数量的激增及计算机技术在图书馆的广泛应用,国内外图书馆事业都发生了很大的变化。

这与图书馆管理水平是和图书馆事业的发展是分不开的。

1.1、国内现状

近十几年来我国图书馆的馆舍建筑、硬件设施、资源建设等各个方面的条件都有了很大的变化和发展。

对人员队伍建设日益重视。

从总体上看,图书馆管理水平有了较大的提高。

主要表现在两方面,一是图书馆管理思想与服务理念由传统图书馆向现代图书馆转变,二是受信息技术发展的影响,我国图书馆管理创新和管理现代化的进程同样呈现信息化的趋势,这主要表现为计算机等管理手段在图书馆的应用。

新技术的应用对传统图书馆的冲击现代技术的应用对图书馆发展的影响是有目共睹的。

信息技术革命为图书馆的发展提供了极为广阔的空间。

推动了图书馆基础业务由手工方式向计算机化和网络化发展,推动了传统图书馆向自动化图书馆和数字图书馆发展。

目前我国图书馆管理体制的基本特征是条块分割,各自为政,各图书馆的组织机构都是按主管机构的行政隶属关系建立起来的,各个图书馆依附于所在系统的行政管理部门而存在。

缺乏宏观指导、调控的能力,阻碍了文献资源的共建、共知、共享,同时更不利于整体网络化建设。

另外高素质管理人才短缺,全员素质有待提高。

图书馆不仅罕见工商管理或公共管理学位的管理者,且不少人员缺乏职业图书馆管理者的基本素质。

同时,职工整体素质偏低,知识结构不尽合理,高素质、综合型人才缺乏,造成创新能力严重不足。

1.2、国外现状

国外尤其在西方国家由于科学技术和经济发达的原因,图书馆行业比较受重视和发达,在英国和美国,以及澳大利亚等国的图书馆,图书馆先进的管理手段促进了其现代化管理水平的不断提高。

特别是自动化和网络化的飞速发展,给图书馆事业发展带来了勃勃生机,特别是英国的大学,例如剑桥大学共有90个图书馆,牛津大学现有100多个规模不等、馆藏不一和服务多样的图书馆。

另外在英国,除了对图书馆工作人员有严格的要求外,图书馆本身还有专门的部门负责职工培训,一般与实际管理工作紧密结合。

英国全国图书馆协会对全国范围内的各级各类图书馆职工管理培训起领导作用,国家级培训主要由这个协会负责并承担。

它不仅对馆员资格有皇家特许认证权,更重要的是它有一系列的培训课程和专业指导。

这种培训格局,使图书馆工作人员继续教育不断强化,专业素质不断提高。

以美国为例,美国国土面积和我国相差不大,人口不足我国的1/4,但其公共图书馆总数量却为我国的3倍。

美国各种不同类型的图书馆由不同的上级行政部门负责,如法律图书馆由法院管理等,另外美国图书馆相关法己成体系,各州、郡内又有自己的图书馆法律,这些法律明文规定图书馆的性质、每年的经费投入、每人每年需要的财政补助等,美国图书馆的所有工作都是围绕"一切为了读者"这个中心展开的。

因而处处体现出一种开放的服务意识。

图书馆的藏书布局没有固定格式,但有共同特点,那就是以方便读者使用为目的。

大多按学科内容分类,采用全方位的开放式布局。

在服务方式上采用借书、阅览、咨询、检索一体化的服务手段。

在同一个地方,既开架借书,又可阅览和进行检索咨询,对图书馆管理而言,管理工作极其简便,减少了管理层次和中间环节。

而澳大利亚大学图书馆现状是,其传统的工作岗位正在减少,同时也不再以读者对象或文献类型划分阅览室或书库,全馆只有一个出入口,通常是流通部门的管理终端设在图书馆进出口处,图书馆的工作重心已从信息处理向信息咨询服务转移,配置较多的人员去做信息研究和咨询服务,有助于网络作用的发挥和提高文献的利用率。

二、涉及的技术

2.1登陆页面采用cookie技术

将用户名和密码保存在本地,每次登录时先检验cookie表中有无记录的的用户名和密码,如果cookie存在用户的登录信息,则用户无需再次输入即可登录本论坛。

2.2JQuery技术

本系统的javascript采用了技术比较成熟的Jquery,包括界面元素的获取和赋值,动态菜单效果的实现等都采用了该技术,使得开发效率得以提高。

2.3数据库连接池

为减轻数据库连接的负担,提高系统的性能,采用了proxool数据库连接池技术。

因为系统比较小,设定最小的连接数1,最大连接数500,超时设定60000。

2.4MVC架构

为提升系统的性能,使开发思路更加清晰,采用了JSP+Servlet+bean的MVC架构。

视图层采用JSP负责页面显示和呈现处理结果,控制层采用Servlet负责请求转发和业务逻辑的处理,bean+DAO属于模型层,负责访问数据库和持久化数据。

三、设计任务

3.1用例设计

通过用例的分析获取并明确需求,细化每个用例的业务流程,由小组成员共同负责

3.2界面设计

设计交互良好地界面,获取用户输入,并呈现处理结果,由于小组成员是按照模块进行分工的,在同一的CSS下,每一个成员全权负责自己模块的界面设计。

3.3数据库设计

小组成员通过用例的分析,获取初始的实体,进而详细分析其属性等,最终生成数据库的物理结构和相应DBMS的数据库结构,最后由徐文雯负责设计。

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添加普通用户界面

c11添加图书馆管理员界面

c12用户信息管理界面

c13密码修改界面

4.3数据库设计

确定需要持久化的实体:

用户表:

用户编号(PK)+姓名+密码+邮箱+权限值

图书表:

图书编号(PK)+图书名称+出版社名称+图书作者+图书出版日期+图书价格+图书分类编号(FK)+图书位置+图书数量+图书借出数目

图书分类表:

图书分类编号(PK)+图书分类名称

图书借阅表:

借阅时间+图书编号(FK)+用户编号(FK)+图书数量

4.4编码设计

在此阶段主要进行架构设计:

在本项目中采用比较熟悉的MVC架构设计。

主要包括:

M是指数据模型,V是指用户界面,C则是控制器。

使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

视图:

作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型:

被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。

由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器:

首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

五、功能实现

5.1用例设计

图1普通用户用例图

图2图书馆管理员用例图

5.2界面设计

图3图书馆管理系统登录界面

图4普通用户首页

图5图书馆管理员首页

图6密码修改页面

图7用户指南页面

图8管理员添加普通用户界面

图9图书馆管理员添加图书馆管理员界面

图10借书管理界面

图11还书管理界面

图12图书注销管理界面

图13图书采购管理界面

图14馆藏图书查询界面

 

5.3数据库设计

图物理数据库视图

5.4编码设计

程序设计的模块较多,下面为程序的核心代码:

//数据访问层DAO的主要基类BaseDAO

publicabstractclassBaseDao{

protectedConnectionconn;

protectedPreparedStatementstmt;

protectedResultSetrst;

protectedCallableStatementcalltmt;

/**

*获取连接的方法

*/

protectedfinalvoidgetConnection()throwsSQLException{

conn=DBConnection.getConnection();

}

/**

*释放资源的方法

*/

protectedfinalvoidcloseAll(){

if(rst!

=null){

try{

rst.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

rst=null;

}

}

if(stmt!

=null){

try{

stmt.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

stmt=null;

}

}

if(stmt!

=null){

try{

conn.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

conn=null;

}

}

}

//执行SQL语句的方法

protectedfinalintexecuteSQL(Stringsql,Listparams){

intcount=0;

try{

this.getConnection();

stmt=this.conn.prepareStatement(sql);

setPreparedStatement(params);

count=stmt.executeUpdate();

}catch(SQLExceptione){

e.printStackTrace();

}finally{

this.closeAll();

}

returncount;

}

//设置SQL的各个参数

publicvoidsetPreparedStatement(Listparams)throwsSQLException{

if(params!

=null&¶ms.size()>0){

for(inti=0;i

stmt.setObject(i+1,params.get(i));

}

}

}

//查询所有满足条件的数据

publicListfindAll(Stringsql){

Listpslist=null;

try{

this.getConnection();

stmt=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

ResultSetrs=stmt.executeQuery();

pslist=fetchMultiResults(rs);

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

finally{

this.closeAll();

}

returnpslist;

}

/*检查图书是否存在

*@seecom.dao.LoanBookDao#checkBookNoFromLoanBook(com.entity.LoanBook)

*/

@Override

publicLoanBookcheckBookNoFromLoanBook(LoanBookloanBook){

Stringsql="SELECT*FROMLoanBookWHEREBookNo=?

";

Listparams=newArrayList();

params.add(loanBook.getBookNo());

//System.out.println("LoanBook"+params);

Listlist=super.executeQuery(sql,params,LoanBook.class);

if(list!

=null&&list.size()>0)

{

return(LoanBook)list.get(0);

}

//图书不存在

else

{

returnnull;

}

}

/*图书数目加一

*@seecom.dao.LoanBookDao#UpDateAdd(com.entity.LoanBook)

*/

@Override

publicintUpDateAdd(LoanBookloanBook){

Stringsql="UPDATELoanBookSETBookNum=BookNum+1WHEREBookNo=?

";

Listparams=newArrayList();

params.add(loanBook.getBookNo());

System.out.println("BookNo"+params);

inti=super.executeUpdate(sql,params);

returni;

}

/*图书数目减一

*@seecom.dao.LoanBookDao#UpDateSub(com.entity.LoanBook)

*/

@Override

publicintUpDateSub(LoanBookloanBook){

Stringsql="UPDATELoanBookSETBookNum=BookNum-1WHEREBookNo=?

";

Listparams=newArrayList();

params.add(loanBook.getBookNo());

System.out.println("BookNo"+params);

inti=super.executeUpdate(sql,params);

returni;

}

/*删除借书表信息

*@seecom.dao.OverdueBookDao#delete(com.entity.Books)

*/

@Override

publicintdeleteFromLoanBook(OverdueBookoverdueBook){

Stringsql="DELETEFROMLoanBookWHEREBookNo='"

+overdueBook.getBookNo();

inti=super.executeUpdate(sql,null);

returni;

}

/*删除图书表信息

*@seecom.dao.OverdueBookDao#deleteFromBooks(com.entity.OverdueBook)

*/

@Override

publicintdeleteFromBooks(OverdueBookoverdueBook){

Stringsql="DELETEFROMBooksWHEREBookNo='"

+overdueBook.getBookNo();

inti=super.executeUpdate(sql,null);

returni;

}

六、实验体会

6.1遇到的困难

1.路径跳转问题:

404错误是在项目中遇到次数最多的错误。

2.删除不成功

数据库设计中,各表格之间通过外键关联,有时候不能进行级联删除。

3乱码问题

好多页面出现中文乱码问题,前台后台转码相对复杂

4.页面的布局问题

许多页面布局复杂,实施起来相对困难

5.空指针问题

在项目中问题仅次于404错误的就是500错误这一问题,出现这一问题的绝大部分原因是自己编码部分处理数据不对。

6.2经验:

1.小组内合作非常重要,要让每个人发挥最大的潜能,尽力完成小组的总任务,项目后期的协调和整合也十分重要;

2.学习并熟练掌握了MVC的开发框架,深刻体会到了MVC对WEB项目带来的好处,分层思想初步建立,为后期的实训打好了基础;

3.锻炼了动手能力,对以往学习的知识进行了重新的检验和梳理,包括数据结构、设计模式、JAVA基础的知识;

4.遇到困难及时找资料或者讨论解决,提高了自己解决问题的能力。

5.小组内的信息交流非常重要,后期合并的时候出现问题就是因为小组内信息交流不畅引起的。

6.编码之前一定设计好数据库,在后期编码中尽量不要轻易改变数据库。

7.编程是一门需要逻辑的工作,也是一门需要耐心与细致的工作,有一些粗心的错误需要极其大的耐性和不断的调试才能解决

8.有些功能看上去高大上实现起来却很简单,有些功能看上去很基础而实现起来却很难。

9.对于语言的话,个人是觉得在合适的地方用合适的语言是很重要的。

如何选择即符合自己的审美要求,又能适合开发的场景,还能考虑语言自身的特性,其实这要根据个人的经验以及喜好来决定的。

10.良好的沟通。

项目开发也不例外,很好的沟通能够加快项目的进度,这就要求我们每一个开发人员要学会和善于沟通。

在一个项目的开发过程中,小组成员是一个不断交流和沟通的过程。

在开发到一定的阶段,我们就需要队内沟通,尽量的去避免一些隐藏的问题,及时的发现问题,解决问题,从而按时或者提前完成项目的开发

七、组内分工

本组共四名成员,我们的分工如下表所示:

表1组内成员分工表

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2