JavaWeb专业课程设计图书馆标准管理系统_第1页
JavaWeb专业课程设计图书馆标准管理系统_第2页
JavaWeb专业课程设计图书馆标准管理系统_第3页
JavaWeb专业课程设计图书馆标准管理系统_第4页
JavaWeb专业课程设计图书馆标准管理系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

JavaWeb课程设计

试验汇报

班级:计算机09-2

试验内容:图书馆管理系统

组员:赵伯涛44号(组长)

张宝红42号

黄海清22号

试验时间:从12月3日

至12月9日

指导老师:李启锐

一、试验目标。

1、在实践中巩固本学习所学Java呢b技术。

2、在实践中初步使用设计模式(GoF),体验设计模式带来好处。

3、配合数据库使用,实现一个功效完善小型系统。

二、试验内容。

开发一个图书管理系统,实现图书馆多种管理操作。图书入库、作废,

借书证提供、挂失处理,图书借出、归还、续借、丢失和超期处理。s

三、业务逻辑。

END

权限与操作

理斌管M另

四、数据库设计。

依据业务逻辑设计出数据库。表结构及关系以下图:

vy

采取了类似和MVC框架框架结构,页面端使用了ExtJS技术(包含AJAX),

增加了业务层和,数据库操作层。控制器层调用业务层,业务层调用数据

库操作层。将控制,业务,数据库操作分别分层。

六、技术性代码。

(本试验代码在Library,zip中)

1、tomcat数据库连接池技术。在tomcat中配置文件server,xml文件

中配置项目Context标签,再加入Resource标签:

<Contextpath二〃LibraryOA”

docBase=/z/home/sea/MyEclipse/LibraryOA/WebRoot,/

debug=〃0〃>

<Resource

name="jdbc/webdb”

auth=*Container*

type="javax.sql.DataSource”

driverClassName=z,org.gjt.mm.mysql.Driver*

url=*jdbc:mysql://localhost:3306/LibraryOA*

username="root"

password="root"

maxActive="50"

maxIdie="20"

maxWait=”10000”/>

</Context>

以上代码配置了数裾库驱动,数据库地址,数据库用户名、密码,默认

提供连接数,最大提供连接数,最长等候时间等参数。

2、Java中从连接池获取连接类,使用了单例模式(来自GoF提出设计

模式):

//DataBaseConnectionPond.java

packagelibrary,util;

importjava.sql.Connection;

importjavax.sql.DataSource;

〃作者:赵伯涛

publicclassDataBaseConnectionPond(

privatestaticDataBaseConnectionPonddbcp=null;

privateDataSourceds=null;

privateDataBaseConnectionPond()throwsException(

javax.naming.Contextctx=newjavax.naming.TnitialContext();

ds=(DataSource)ctx.lookup(/zjava:/corop/env/jdbc/webdb,/);

}

publicConnectionGetConnettion()throwsException(

returnds.getConnection();

}

publicstaticConnectiongetConnection()throwsException(

Connectionconn=null;

if(dbcp==null){

Thread.sleep((long)(Math,random()*200));

synchronized(DataBaseConnectionPond.class){

if(dbcp==null){

dbcp=newDataBaseConnectionPond();

)

}

)

try(

conn=dbcp.GetConnettion();

}catch(Exceptione){

)

returnconn;

)

}

该类在整个项目布署过程中只实例化了一个对象,故称单例。能够经过

该类static函数getConnectionO获取连接。

3、Dao(DataAccessObject)模板化实现,使用了模板方法模式(来自

GoF提出设计模式):

//SqlExecute.java

packcige1ibrary.execute;

importjava.sql.Connection;

import1ibrary.util.*;

〃作者:赵伯涛

publicabstractclassSqlExecute{

publicConnectionconn;

publicObjectresult;

publicabstractvoidsetExecute()throwsException;

publicObjectexecute(){

try{

conn=DataBaseConnectionPond.getConnectionO;

conn.setAutoCommit(false);

setExecute();

conn,commit();

}catch(Exceptione){

try(

conn,rollback();

}catch(Exceptionee){

)

e.printStackTrace();

}finally{

try(

conn.close0:

}catch(Exceptione){

}

)

returnresult;

)

2

该类是一个抽象类,必需经过继承该类来实现具体功效,其中execute()

函数是一个模板方法,将try-catch-finaly、获取connection及

connection事务处理提取出来,具体Dao功效应该写在setExecuteO函数

中,在具体实现Dao功效时候能够不用反复这些代码,方便程序员编码,

也方便程序员维护程序。下面举例使用这个模板类:

//ReaderChangePasswordDao.java

packcige1ibrary.dao;

importjava.sql.PreparedStatement;

importlibrary,execute.SqlExecute;

importlibrary,model.ReaderModel;

〃作者:赵伯涛

publicclassReaderChangePasswordDaoextendsSqlExecute{

privateReaderModelrm;

//传入readerlD,password,password2(旧密码)

//返回影响行数

publicReaderChangePasswordDao(ReaderModelrm){

this,rm=rm;

©Override

publicvoidsetExecuteOthrowsException{

Stringsql="updateReaderssetpassword=?wherereaderlD=?

andpassword=?〃;

PreparedStatementps=conn.prepareStatement(sql);

ps.setString(Lrm.getPassword0):

ps.setlnt(2,rm.getReaderlDO);

ps.setString(3,rm.getPassword2());

this,result=ps.executeUpdate();

)

}

上面类继承了SqlExecute类,重写了它setExecute()函数,经过结构

函数传入操作时需要参数,在写代码时候能够愈加专注于数据库操作,因

为其它操作由模板类做好了。这对写一个数据库操作或许没什么大不了,

不过一个项目里边数据库操作肯定是几十个,儿百个,甚至几千个,使用

模板类降低编码量是很客观。下面举例使用ReaderChangePasswordDao类:

〃来自UserCommonService.java部分代码

//读者修改密码

publicbooleanreaderChangePassword(intreaderlD,String

newPassword,

StringoldPassword){

ReaderModelrm=newReaderModel();

rm.setReaderlD(readerlD);

rm.setPassword(newPassword);

rm.setPassword2(oldPassword);

ReaderChangePasswordDaorcpd=newReaderChangePasswordDao(rm):

intcount=(integer)rcpd.execute();

if(count>0)(

returntrue;

}else{

returnfalse;

}

}

注意:使用Dao时候调用应该是它execute。方法(在抽象类中)。

4、时间显示

varcTime=newDate。;〃初始化日期

varmyYear=cTime.getl'ullYear()://^p

varmyMonlh=cTime.gelMonlh()+l;〃月

varmyDate=cTime.getDateO://H

//取得时分秒

varmyHour=cTime.getHours();〃时

varmyMinutc=cTimc.gctMinutesO;〃分

varmySecond=cTime.getSecondsO;〃秒

if(myHour<10){〃判定假如时钟小于10就显示两位,前一位用0替换

myHour='0'+myllour;

)

if(myMinute<10){〃判定假如分钟小于10就显示两位,前一位用0替换

myinute='0'+myMinute;

)

ifGnySecond<10){〃判定假如分秒钟小于10就显示两位,前一位用0替换

mySecond='0'+mySecond;

)

vartime=time=myYear+*/'+myMonth+,/'+myDate+,

+myHour+,+myMinute+,:'+mySecond;〃格式化时间

vartinier=setinterval(function(){//定义,个时钟,周期为1秒

varcTimc=ncwDatcO;

varmyYear=cTimc.getFullYearO;//支持火狐

varmyMonth=cTime.getMonth()+l;//外国全部是以0开头为一月

varmyDate=cTime.getDateO;

〃取得时分秒

varmyHour=cTime.getHours();

varmyMinute=cTime.getMinutesO;

varmySecond=cTime.getSecondsO;

if(myHour<10){

myllour='O'+myHour;

}

if(myMinute<10){

myMinute='O'+myMinute:

}

if(mySecond<10){

mySecond='O'+mySccond;

}

varcmp=Ext.getCmp(*timer*);

time=myYear+,/'+myMonth+*/'+myDate+,

'+myHour+*:'+myMinute+,:'+mySecond:

cmp.setValuc(tinic);

},1000);

5、登录控制

〃登录界面

Ext.onReady(function(){

Ext.QuickTips.init();

varform-newExt.Panel({〃登录脸证form

autoTabs:true,

activeTab:0.

deferredRender:false,

border:false,

bodyStyle:*background-color:RGB(193,223,232):padding:OpxOpxOpxOpx:*,

items:[(

xtype:,box,,

width:385,

height;80,

autoEi:{

tag:*img*,

sre:'icons/borrowbooks.jpg'

}

},(

xtype:*panel,,

bodyStyle;Jbackground-color:RGB(193,223,232),

layout:'hbox,,

items:LI

xtype:'panel,,

bodyStyle:'background-color:RGB(193,223,232),

border:faIse,

width:120,

height:150,

iterns:[{

xtype/panel,,

layout:'hbox",

border:false,

bodyStyle:'background-color:j?GB(193,223,232)jpadding:lOpxOpxOpx

lOpx*,

items:[{

xtype:'box',

width:*30',

height:'30',

autoEi:{

tag/img',

src:'icons/0.png'

)

),(

xtype:*panel,,

border:false,

bodyStyle:*background-color:RGB(193,223,232);padding:5pxOpx

OpxOpx',

iterns:[{

xtype/displayfield,,

value:*<ahref=>javascript::*

onclick=vicwWindow(,*+l.names[0]+w,)Xfontsize=2>查阅书目</font></a>"

}]

}]

},{

xtype:'panel,,

layout:*hbox,,

border:false,

bodyStyle:'background-color:RGB(193,223,232);padding:lOpxOpxOpx

lOpx,,

items:[{

xtype:*box>,

width:*30',

height/30',

autoEi:{

tag:'img',

src:"icons/6.png'

)

},{

xtype:*panel',

border:false,

bodyStyle:,background-color:RGB(193,223,232);padding:5pxOpx

OpxOpx',

items:[{

xtypc/displayficld't

value:"<ahref=,javascript:onclickriewWindowC"+"找回密

码)><fontsize=2>找回密码</fontX/a>"

}]

}]

}]

},{

xtype:,panel,,

border:false,

width:320,

height:150,

bodyStyle:Jbackground-color:RGB(193,223,232),

iterns:[(

xtype/panel',

layout?form',

border:false,

items:[{

xtype:,form,,

layout:*form',

id:'loginno,,

labclWidth:30,

bodyStyle:*background-color:RGB(193,223,232):padding:

15pxOpxOpxOpx',

border:false,

defaults:{

width:200

},

items:[{

xtype?textfield,,

fieldLabel:,编号',

allowBlank:false

}]

},{

xtype:*form*,

layout:'form',

id/loginpassword*,

labelWidlh:30,

bodyStyle:1bac<ground-color:RGB(193,223,232):padding:

lOpxOpxOpxOpx',

border:faIse,

defaults:{

width:200

),

items:[{

xtype:*textfield',

fieldLabel/密码',

inputType:'password",

allowBlank:false

}]

}]

}]

}]

}]

!);

functionloginO{〃登录验证函数

varformNo=Ext.getCmpf^loginno*);

varformPassword=Ext.getCmp(,,loginpassword/,);

varusername=formNo.items,iterns[0];

varpassword=formPassword.items.iterns[0]:

if(username.getValue().trim()!=""&&password.getValueO.trim()!=""){

Ext.Ajax,request({

urlservlet/LoginServlet,,

success:function(response){

varresult=Ext.decode(response.rcsponscTcxt);

if(result,success){

location,href="index,hlml”;

loginWindow.closeO;

}else{

Wxt.Msg.alert('提醒

,result,msg,function()(

formPassword.getFormO.rcsctO;

I);

};

},

params:{

emd:'login,,

username:username.getValueO.

password:passwoi'd.getValueO.trim()

},

scope:this

}):

}else{

Ext,Msg.alert('提醒','编号和密码全部不能为空!');

)

}

varloginWindow=newExt.Window((〃登录窗口

title:‘用户登录

layout:*fit',

width:400,

height:240,

shadow:true,

shadowOffset:5,

□lain:true,

naximizable:false,

draggable:false,

closable:false,

resizable:false,

animateTarget:document,body,

iterns:[form],

<eys:[{〃给登录按钮添加事件

key:Ext.EventObject.ENTER,

fn:fundion(){

1oginO;

),

scope:this

I],

buttons:[{

icon:'icons/accept.png',

text:'登录',

handler:functionO{

1oginO;

)

I,(

icon:'icons/rss_go.png',

text:'重置',

hand1er:funclion(){

varformNo=Ext.getCmp("loginno");

varformPassword=Ext.getCmp(Mloginpassword*);

formNo.getEormO.reset():

formPassword.getFormO.reset();

)

I]

});

loginWindow.show。;〃显示登录窗口

}):

七、效果截图。

查阅书目

个人资料

6注满

图书金作X

借书三三*/修

3优:I过MW吉I信QQP

借书证号:09000001|◎于定姓名:张一字号:0901010101

I,.............%

图书编号:A300001学院:学院A专北:专业11

班级:专1H109-1Email:skylove@QQ.com

联系电话:666004性别:里

UJIH

编号:A300001

名称:列宁1111己借图书

是否借出:否美号名称作者

计算机俎或原理

图书类型:马克思主义、列宁主义、毛A300006zbh

泽东思想、邓小平理论A300005JAVAWEB李启钱

作者:作者mi

出版时间:20054)2-25

单价:32.5

出版社:人民日报出版科

G笈吾读僭◎借书

o

图书操作

个人览料

°

明书管厚:x

?知行

如*

图书编Q用书名罄SB书兵工是杳僭出作业出收片阊Mffr出政世d

A300001列宁1111马三毛主义.苑亍主.至住考11112005-02-2532.5人三日吸==?.三d

A300001曲小平人艮曰根比云松d

A300001邓小军马克耳ARa»*«e

◎份

A300006子算机至茨京这一人要出版社u©

A300005JAVAWI8社会以人决出版行©

A300007单片机W会注人艮出版z◎

A000002高敢哲学.清y出版社/◎

AD0009军事智学..入艮出校七◎

A8单月机1杜翎人吴出版社©

10策片机2旱克m清y出粒松0◎

10港书哲学、ERE

图书管理□X

◎方加£?别新

圣书片号国书名程为三类型是否管出作考出版时可单侠出版社

A300001列十1111胃立区主义、列十主.舌作看11112005-02-2532.5人民日杰出我行

A300001大小平马竞.巴主义、列于主.否作拿11112005-02-2532.5人民日缴出吸牡

A300001R小干马三思主乂、列亍主.否作¥11112005-02-2532.5人民已嗖出税七

A300006"算叽维戌?窿芍手、关教是zbh2011-12-091002人民出版行

A300005JAVAWEB社会科多总论是李弓皖2011-12-1012.6人民出债法

A300007成片机行含科竽总论否zbh2011-12-1516,3人民出板世

A000002斐数号学'袤蚊否zbh2011-12-1712.62清多出粒七

A00009军事自学、奈鼓否zbh201M2-0913.5人民出校社

A8里片凯1社会科学息论否生至红2011-12-09100人民出版社

10w片机2马”思主义、列宁主.否黄W音2011-12-09120清冬出版莅

10借书首季*?5e否ZBH2011-12-09100ERE

目理员甘一

W号名甘或别^

AOOOOOQ8圣之越运管灌员A

AOOOOOOS老四理薮言理曼&

|A0000002赵一芸近管理员A

A0000004A

A0000001A

•'.

A0000003

⑥清定。在消

管理员管理X

维号名称级别操w作&

A0000008

温馨提示

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

最新文档

评论

0/150

提交评论