图书馆书籍管理系统课程设计Word格式文档下载.docx
- 文档编号:17039282
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:32
- 大小:261.07KB
图书馆书籍管理系统课程设计Word格式文档下载.docx
《图书馆书籍管理系统课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书馆书籍管理系统课程设计Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。
数据库的设计和建模
2012-12-02~2012-12-12
系统的概要设计以及系统前台的设计,编码与测试
2012-12-13~2012-12-22
系统文档的整理
主
要
参
考
资
料
《Oracle数据库应用》电子出版社出版
《Oracle11g从入门到精通》钱慎一(编者),张素智(编者)
《OracleDatabase9i/10g/11g编程艺术:
深入数据库体系结构(第2版)》~凯特(ThomasKyte)(作者),苏金国(译者),王小振(译者),等(译者)
指导教师(签字):
年月日
系(教研室)主任(签字):
图书馆书籍管理系统
一、课题的介绍和课题的任务
图书馆书籍管理系统主要对图书馆中书籍进行管理,包括对书籍的添加,删除,修改,各种方式的查询等操作,用于管理员对图书馆书籍库的管理;
采用Oracle作为数据库,应用了Java,Jsp,JavaScript,SQL等编程语言以及Struts2,JDBC等等技术,另外系统采用B/S结构,MVC的设计模式进行设计,在数据库方面,多处应用了存储过程和触发器;
二、课程设计的要求
1、书籍的添加:
通过触发器和索引,使图书的编号按照自动增长的方式进行添加,其他字段还有:
书籍名称,作者,出版社,页数,藏书地址等;
并且通过定义触发器,使每增加一条图书信息,在图书状态表中给其增加对应的图书状态信息;
2、书籍的删除:
通过存储过程来实现,如果该书的状态为已借出,就不能删除书籍,并发出提示信息;
书籍的删除,通过定义before触发器,假如该书籍能够删除,就在其删除之前,删掉该书籍的状态信息;
3、书籍的修改:
修改除了书籍主键外的其他信息,管理员先通过查询找到需要修改的图书,点击修改,附带该书籍原有的信息,跳转到书籍修改界面,修改相应的字段,提交,系统返回修改成功或失败的信息;
4、书籍的查询:
可根据图书的索引号进行精确查询,可以根据图书的书名,作者,出版社,藏书地址等进行模糊查询,基于系统的需求,还提供系统中以所有字段作为关键字的模糊查询;
管理员在书籍管理主界面中选择查询方式,然后输入关键字,提交检索请求,系统根据所输入的信息,返回相应的图书信息;
图书按照书名,作者,出版社,藏书地址的查询都属于模糊查询,只要相应字段满足条件,都可以查询出来;
图书按照索书号搜索,为精确查询,能精确地找到某一本书,适合于管理员通过扫描仪等电子设备获取书籍的索书号进行准确的查询;
图书按照所有字段查询,属于模糊查询,只要上序字段中的某一个满足条件,都能将书籍查询出来;
5、用户身份验证,管理员通过用户登录,输入验证信息,若经过系统验证后,若正确,则进入图书管理主页,若出现错误,则跳到登录界面,并返回相应的友好的错误提示信息;
三、系统的分析和系统中数据库的分析(ER图等)
1.系统设计
1.1.系统概要设计-流程图
系统总体设计如图1.1所示
系统主要对图书馆中书籍进行管理,包括对书籍的添加,删除,修改,各种方式的查询等操作,用于管理员对图书馆书籍库的管理;
图1-1
实现用户的登录,管理员登录后对图书进行书籍的添加,书籍各种方式的查询,书籍的修改,书籍的删除;
1.2.系统的详细设计
1.2.1.用户的登录
管理员通过用户登录,输入验证信息,若经过系统验证后,若正确,则进入图书管理主页,若出现错误,则跳到登录界面,并返回相应的友好的错误提示信息,具体流程如图1.2所示;
图1.2
1.2.2.书籍的添加
书籍的添加,用户在表单中输入书籍的信息,点击录入,数据通过Struts2的过滤器,自动提交数据,在Struts的Action类中进行获取数据,然后进行检测,如果检测输入信息有误,则跳转到添加页面,并返回相应的错误提示;
如果信息正确,则调用添加数据存储过程进行数据的持久化;
具体流程如图1-3所示;
图1.3
1.2.3.书籍的修改
书籍的修改,首先查询出需要修改的书籍,点击修改,跳转到书籍修改页面,顺便通过session对象,将原有的书籍对象带过去;
在书籍修改页面表单中修改相应属性,提交到Struts2的Action类中,首先进行数据的校验,校验失败,跳转到修改页面,返回相应的出错信息,校验成功,则进行书籍的更新处理;
具体流程如图1.4所示;
图1.4
1.2.4.书籍的删除
书籍的删除,首先查询出需要修改的书籍,点击删除,提交到Struts2中的Action类,顺便传入书籍编号这个值(主键,唯一),首先访问书籍库进行查询该书籍的状态是否是“在馆”,是则返回true,进入书籍的删除环节;
调用数据库中的存储过程和触发器,进行书籍的删除,确保系统数据的一致性;
具体流程如图1.5所示
图1.5
1.2.5.书籍的查询
书籍的查询,本系统中书籍的查询设定了多种方式,包括按索书号查询,按书名查询,按书籍作者查询,按出版社查询,还有按所有字段进行查询;
先选择查询的方式,输入关键字,然后进行数据的提交,经数据过滤校验后,进入控制层,通过判断其查询类型,进行数据的查询,将符合条件的数据查询出来,装入集合框架ArrayList中,传入显示层进行数据的显示,具体流程如图1.6所示;
图1.6
2.数据库的设计
2.1.数据库建模
2.1.1.E-R图
2.1.1.1.图书信息建模
系统中书籍信息建模如E-R图2.1所示:
系统中书籍信息分为两张表进行数据的处理,分别为图书表和图书状态表
图书表主要用来存储图书的基本信息,包括书籍编号,书籍名称,书籍作者,出版社,页数,藏书地址等信息,图书状态表主要存放系统中图书的状态信息,是借出去了还是在馆,是谁什么时候借的,等信息;
图2.1
2.1.1.2用户信息的建模
用户信息的建模如图2.2所示:
图2.2
3系统前台的设计
3.1、系统的结构
本系统使用MVC模式作为系统的设计结构,以JSP作为视图层;
采用struts2框架,以其Acation类作为其控制层,以各种JavaBean,FormBean作为模型层;
3.2、界面的设计和布局
3.2.1登录界面
如图3.1所示
图3.1
3.2.2图书管理界面
图书管理主页中提供了集书籍添加,书籍修改,书籍删除,书籍详情查询及多功能的图书检索功能,使用方便,操作简单,并设有完善友好的错误提示功能,具体展示如图3.2所示;
图3.2
3.2.3图书修改界面
书籍修改界面如图3.3所示;
图3.3
3.2.4.图书详情界面
由于数据量比较大,在查询主页中不便显示,通过图书详情界面,将对应图书信息进行显示;
其界面及运行结果如图3.4所示;
图3.4
四、系统的数据库实现
1.1.书籍信息表和书籍状态表的设计
书籍信息表中包括书籍编号,书籍名称,作者,出版社,页数,藏书地址等字段,书籍编号通过触发器的方式,以自动增长的方式进行添加;
页数为Number类型,其他的都为字符串行;
图书馆中书籍的各个字段的设计如图4.1所示分为图书表(book)和图书状态表(bookstate);
图4.1
表4-1book表的设计
bnum
Number
Notnull,自动生成,主键
bname
Character(256)
Notnull
writer
publish
page
place
表4-2bookstate表的设计
Notnull外键,主键
state
Notnulldefault‘wait’
cardid
null
borrow
Date
1.2.管理员验证信息的设计
如图4.2所示
CreatetableManager(
Usernamevarchar2(20),
Pwdvarchar2(20)
);
图4.2
表4-3manage表的设计
username
Notnull主键
pwd
1.3.触发器,存储过程的设计
1.3.1.图书信息添加触发器的设计
先创建一个索引,计算出前一个字段的最大值,然后创建before触发器,每增加一项书籍记录,给书籍编号这一字段赋值;
图书的管理--创建图书表:
Createtablebook(
bnumnumber(11),
bnamevarchar2(20),
writervarchar2(20),
publishvarchar2(50),
pagenumber(11),
placevarchar2(20),
--创建序列:
createsequencebook_seq
incrementby1
startwith1
maxvalue1.0E28
minvalue1
nocache
----创建触发器
createorreplacetriggertr_book
beforeinsertbook
foreachrow
begin
selectbook_seq.nextvalinto:
new.bnumfromdual;
endtr_book;
--测试,插入数据
Insertintobook(bname,writer,publish,page,place)values('
compute'
'
liusi'
China'
342,'
一楼库'
insertintobook(bname,writer,publish,page,place)values('
computerr'
湖工大'
842,'
二楼库'
1.3.2.添加书籍状态信息触发器trigger_state
每创建一项书籍记录后,自动在图书状态信息表中,添加一条对应的图书状态信息;
创初始触发器
createorreplacetrigger_state
afterinsertbook
begin--如何用到bnum的值----->
insertintobookstate(bnum)values()
end;
1.3.3.删除存储过程的创建pro_del
先判断图书状态State是否为”已借出”,如果是,则不能进行删除操作,与此同时,发出提示信息;
如果不是,则先删除bookstate表中对应的那条记录,再将相应的图书信息记录删除。
--------删除,过程
Createorreplaceprocedurepro_del(
bnumberINnumber(11),
sayoutvarchar2(20)
)as
Num1number
stavarchar2
date1=date
Begin
selectstateintostafrombookstatewherebnum=bnumber;
ifsta='
wait'
then
deletefrombookstatewherebnum=bnumber;
deletefrombookwherebnum=bnumber;
say='
yes'
;
else
no'
endif;
end;
1.3.4.更新书籍存储过程的创建pro_update
---更新书籍存储过程
Createorreplaceprocedurepro_update(
bnum1INnumber(11),
bname1INvarchar2(20),
writer1INvarchar2(20),
publish1INvarchar2(50),
page1INnumber(11),
place1INvarchar2(20),
updatebooksetbname=bname1,writer=writer1,publish=publish1,page=page1,place=place1wherebnum=bnum1;
1.3.5.用户登录存储过程的创建pro_login
--------登录
Createorreplaceprocedurepro_login(
mnameINvarchar2(20),
mpwdINvarchar2(20),
)as
countnumber=0;
selectcount(*)intocountfromManagewhereusername=mname&
&
pwd=mpwd;
ifsta=0then
五、系统的实现及调试
1.实现数据库的连接
利用JDBC实现数据库的连接
publicDBoracle(){
try{
Class.forName("
oracle.jdbc.driver.OracleDriver"
//oracle名称还需填写
ct=DriverManager.getConnection("
jdbc:
oracle:
thin:
@10.0.0.248:
1521:
orcl"
"
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SQLExceptione){
}
}
2.系统功能的实现
2.1通过在前台JSP页面中书籍信息,由Struts2的过滤器,将其数据自动封装成对应的JavaBean,在对应的Action中进行处理;
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
!
DOCTYPEstrutsPUBLIC
"
-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
http:
//struts.apache.org/dtds/struts-2.0.dtd"
struts>
<
packagename="
user"
extends="
struts-default"
actionname="
userlogin"
class="
lib.action.UserLoginAction"
method="
execute"
<
resultname="
success"
main.jsp<
/result>
failure"
/action>
addbook"
lib.action.AddBookAction"
BookManage.jsp<
updatebook"
lib.action.UpdateBookAction"
updatebook.jsp<
deletebook"
lib.action.DeleteBookAction"
cbookselect"
lib.action.ChangeBookSelectAction"
/package>
sel"
select"
lib.action.SelectAction"
error"
/struts>
2.2.图书的添加
在图书管理主界面中,录入各项图书信息,通过Struts2过滤器,在Action中进行数据的校验,若出现数据格式等方面的错误,将错误信息写入一个HashMap集合中,并将所有出错信息的集合返回到图书管理主界面;
如果数据符合要求,则向数据库图书表中增加一条记录,同时往图书状态表中也写入相应的记录;
publicbooleanaddBook(Bookb){
…..
}
2.3.图书的修改
先通过查询,找到要修改的记录,点击进入图书信息修改界面,完成后,输入新的值,进行数据的修改;
publicbooleanupdateBook(Bookb){
try{
CallableStatementcstmt=null;
Stringprocedure="
{callpro_update(?
?
)}"
cstmt.setString(1,b.getBname());
cstmt.setString(2,b.getWriter());
cstmt.setString(3,b.getPublish());
cstmt.setInt(4,b.getPage());
cstmt.setString(5,b.getPlace());
cstmt.setInt(6,b.getBnum());
cstmt=ct.prepareCall(procedure);
cstmt.executeUpdate();
returntrue;
returnfalse;
2.4.图书的删除
publicbooleandeleteBook(Bookb){
//pstmt=ct.prepareStatement("
deletefrombookstatewherebnum=?
pstmt=ct.prepareCall("
{callpro_del(?
)}"
pstmt.setInt(1,b.getBnum());
//pstmt.executeUpdate();
deletefrombookwherebnum=?
"
//pstmt.setInt(1,b.getBnum());
pstmt.execute();
returntrue;
returnfalse;
2.5.图书的查询
系统中提供了图书索引号,图书名称,作者,出版社,等多种方式的查询,并且为了方便起见,还设立通过所有字段进行模糊查询的功能;
publicArrayListgetLibBooks(Bookb,intchoice){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 书籍 管理 系统 课程设计