Oracle课程设计.docx

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

Oracle课程设计.docx

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

Oracle课程设计.docx

Oracle课程设计

湖南工业大学

课程设计

资料袋

计算机与通信学院学院(系、部)2014~2015学年第一学期

课程名称大型数据库应用指导教师满君丰职称教授

学生姓名刘超专业班级计算机1102班学号***********

题目图书馆书籍管理系统

成绩起止日期2014年12月1日~2014年12月7日

目录清单

序号

材料名称

资料数量

备注

1

课程设计任务书

1

2

课程设计说明书

1

3

源程序(电子文档)

1

4

5

湖南工业大学

课程设计任务书

2014—20155学年第一学期

计算机与通信学院(系、部)计算机科学与技术专业1102班级

课程名称:

大型数据库应用

设计题目:

图书馆书籍管理系统

完成期限:

自2014年12月1日至2014年12月7日共1周

一、设计的主要技术参数

Oracle数据库,JSP,JavaScript,Struts2,Servlet,JDBC,Java

二、设计任务

实现对图书馆中图书的添加,删除,修改,查询;以及通过触发器,存储过程等,对图书状态表中的信息进行查询,添加,修改,和删除;图书信息表中的书籍编号字段,通过索引和触发器,让其以自动增长的方式进行生成,方便图书的添加;

三、设计工作量

数据的建模;

数据库中表的设计;

触发器和存储过程的设计;

JDBC连接Oracle数据库

前台数据逻辑的设计;

前台界面的设计;

起止日期

工作内容

2014.12.1~2014.12.2

系统的规划

2014.12.3~2014.12.4

数据库的设计和建模

2014.12.5~2014.12.6

系统的概要设计以及系统前台的设计,编码与测试

2014.12.7~2014.12.7

系统文档的整理

《Oracle数据库应用》电子出版社出版

《Oracle11g从入门到精通》钱慎一(编者),张素智(编者)

《OracleDatabase9i/10g/11g编程艺术:

深入数据库体系结构(第2版)》~凯特(ThomasKyte)(作者),苏金国(译者),王小振(译者),等(译者)

指导教师(签字):

年月日

系(教研室)主任(签字):

年月日

大型数据库应用课程设计

课程设计说明书

图书馆书籍管理系统

起止日期:

2014年12月1日至2014年12月7日

 

学生姓名

刘超

班级

计算机1102班

学号

11408100223

成绩

指导教师(签字)

 

计算机与通信学院

2012年12月7日

图书馆书籍管理系统

一、课题的介绍和课题的任务

图书馆书籍管理系统主要对图书馆中书籍进行管理,包括对书籍的添加,删除,修改,各种方式的查询等操作,用于管理员对图书馆书籍库的管理;采用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.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

Character(256)

Notnull

publish

Character(256)

Notnull

page

Number

Notnull

place

Character(256)

Notnull

表4-2bookstate表的设计

bnum

Number

Notnull外键,主键

state

Character(256)

Notnulldefault‘wait’

cardid

Character(256)

null

borrow

Date

null

1.2.管理员验证信息的设计

如图4.2所示

CreatetableManager(

Usernamevarchar2(20),

Pwdvarchar2(20)

);

图4.2

表4-3manage表的设计

username

Character(256)

Notnull主键

pwd

Character(256)

Notnull

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','liusi','湖工大',842,'二楼库');

 

1.3.2.添加书籍状态信息触发器trigger_state

每创建一项书籍记录后,自动在图书状态信息表中,添加一条对应的图书状态信息;

创初始触发器

createorreplacetrigger_state

afterinsertbook

foreachrow

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

say='no';

endif;

end;

1.3.4.更新书籍存储过程的创建pro_update

---更新书籍存储过程

Createorreplaceprocedurepro_update(

bnum1INnumber(11),

bname1INvarchar2(20),

writer1INvarchar2(20),

publish1INvarchar2(50),

page1INnumber(11),

place1INvarchar2(20),

)as

Begin

updatebooksetbname=bname1,writer=writer1,publish=publish1,page=page1,place=place1wherebnum=bnum1;

end;

1.3.5.用户登录存储过程的创建pro_login

--------登录

Createorreplaceprocedurepro_login(

mnameINvarchar2(20),

mpwdINvarchar2(20),

sayoutvarchar2(20)

)as

countnumber=0;

Begin

selectcount(*)intocountfromManagewhereusername=mname&&pwd=mpwd;

ifsta=0then

say='yes';

else

say='no';

endif;

end;

五、系统的实现及调试

1.实现数据库的连接

publicDBoracle(){

try{

Class.forName("oracle.jdbc.driver.OracleDriver");//oracle名称还需填写

ct=DriverManager.getConnection("jdbc:

oracle:

thin:

@10.0.0.248:

1521:

orcl","orcl","orcl");

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

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">

main.jsp

main.jsp

BookManage.jsp

BookManage.jsp

BookManage.jsp

updatebook.jsp

BookManage.jsp

BookManage.jsp

BookManage.jsp

BookManage.jsp

main.jsp

main.jsp

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;

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnfalse;

}

2.4.图书的删除

publicbooleandeleteBook(Bookb){

try{

//pstmt=ct.prepareStatement("deletefrombookstatewherebnum=?

");

pstmt=ct.prepareCall("{callpro_del(?

)}");

pstmt.setInt(1,b.getBnum());

//pstmt.executeUpdate();

//pstmt=ct.prepareStatement("deletefrombookwherebnum=?

");

//pstmt.setInt(1,b.getBnum());

pstmt.execute();

returntrue;

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

returnfalse;

}

}

2.5.图书的查询

系统中提供了图书索引号,图书名称,作者,出版社,等多种方式的查询,并且为了方便起见,还设立通过所有字段进行模糊查询的功能;

publicArrayListgetLibBooks(Bookb,intchoice){

ArrayListal=newArrayList();

Stringsql="select*frombookwhere";

Stringstr=null;

try{

//按照各种查询

if(choice==1){

sql="select*frombookwherebnum=?

";

pstmt=ct.prepareStatement(sql);

pstmt.setInt(1,b.getBnum());

}elseif(choi

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

当前位置:首页 > 求职职场 > 简历

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

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