JavaWeb课程设计图书馆管理系统Word文件下载.doc
- 文档编号:13161340
- 上传时间:2022-10-07
- 格式:DOC
- 页数:33
- 大小:1.60MB
JavaWeb课程设计图书馆管理系统Word文件下载.doc
《JavaWeb课程设计图书馆管理系统Word文件下载.doc》由会员分享,可在线阅读,更多相关《JavaWeb课程设计图书馆管理系统Word文件下载.doc(33页珍藏版)》请在冰豆网上搜索。
开发一个图书管理系统,实现图书馆的各种管理操作。
如图书入库、作废,借书证提供、挂失处理,图书的借出、归还、续借、丢失以及超期处理。
s
三、业务逻辑。
四、数据库设计。
根据业务逻辑设计出数据库。
表结构及关系如下图:
数据库导入文本保存在DataBaseSQL.txt文档中,数据库数据保存在Data.txt文档中。
五、框架结构。
采用了类似与MVC框架的框架结构,页面端使用了ExtJS技术(包含AJAX),增加了业务层和,数据库操作层。
控制器层调用业务层,业务层调用数据库操作层。
将控制,业务,数据库操作分别分层。
六、技术性代码。
(本实验的代码在Library.zip中)
1、tomcat数据库连接池技术。
在tomcat中的配置文件server.xml文件中配置项目Context标签,再加入Resource标签:
<
Contextpath="
LibraryOA"
docBase="
/home/sea/MyEclipse/LibraryOA/WebRoot"
debug="
0"
>
<
Resource
name="
jdbc/webdb"
auth="
Container"
type="
javax.sql.DataSource"
driverClassName="
org.gjt.mm.mysql.Driver"
url="
jdbc:
mysql:
//localhost:
3306/LibraryOA"
username="
root"
password="
maxActive="
50"
maxIdle="
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.InitialContext();
ds=(DataSource)ctx.lookup("
java:
/comp/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函数getConnection()获取连接。
3、Dao(DataAccessObject)的模板化实现,使用了模板方法模式(来自GoF提出的设计模式):
//SqlExecute.java
packagelibrary.execute;
importlibrary.util.*;
publicabstractclassSqlExecute{
publicConnectionconn;
publicObjectresult;
publicabstractvoidsetExecute()throwsException;
publicObjectexecute(){
conn=DataBaseConnectionPond.getConnection();
conn.setAutoCommit(false);
setExecute();
mit();
try{
conn.rollback();
}catch(Exceptionee){
e.printStackTrace();
}finally{
conn.close();
}catch(Exceptione){
returnresult;
该类是一个抽象类,必须通过继承该类来实现具体的功能,其中的execute()函数是一个模板方法,将try-catch-finaly、获取connection及connection的事务处理提取出来,具体Dao的功能应该写在setExecute()函数中,在具体实现Dao的功能的时候可以不用重复这些代码,方便程序员编码,也方便程序员维护程序。
下面举例使用这个模板类:
//ReaderChangePasswordDao.java
packagelibrary.dao;
importjava.sql.PreparedStatement;
importlibrary.execute.SqlExecute;
importlibrary.model.ReaderModel;
publicclassReaderChangePasswordDaoextendsSqlExecute{
privateReaderModelrm;
//传入readerID,password,password2(旧密码)
//返回影响行数
publicReaderChangePasswordDao(ReaderModelrm){
this.rm=rm;
@Override
publicvoidsetExecute()throwsException{
Stringsql="
updateReaderssetpassword=?
wherereaderID=?
andpassword=?
"
;
PreparedStatementps=conn.prepareStatement(sql);
ps.setString(1,rm.getPassword());
ps.setInt(2,rm.getReaderID());
ps.setString(3,rm.getPassword2());
this.result=ps.executeUpdate();
上面的类继承了SqlExecute类,重写了它的setExecute()函数,通过构造函数传入操作时需要的参数,在写代码的时候可以更加专注于数据库的操作,因为其它操作由模板类做好了。
这对写一个数据库操作或许没什么大不了的,但是一个项目里边数据库操作肯定是几十个,几百个,甚至几千个,使用模板类减少的编码量是非常客观的。
下面举例使用ReaderChangePasswordDao类:
//来自UserCommonService.java的部分代码
//读者修改密码
publicbooleanreaderChangePassword(intreaderID,StringnewPassword,
StringoldPassword){
ReaderModelrm=newReaderModel();
rm.setReaderID(readerID);
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.getFullYear();
//年
varmyMonth=cTime.getMonth()+1;
//月
varmyDate=cTime.getDate();
//日
//获得时分秒
varmyHour=cTime.getHours();
//时
varmyMinute=cTime.getMinutes();
//分
varmySecond=cTime.getSeconds();
//秒
if(myHour<
10){//判断如果时钟小于10就显示两位,前一位用0代替
myHour='
0'
+myHour;
}
if(myMinute<
10){//判断如果分钟小于10就显示两位,前一位用0代替
myMinute='
+myMinute;
if(mySecond<
10){//判断如果分秒钟小于10就显示两位,前一位用0代替
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaWeb 课程设计 图书馆 管理 系统