图书馆管理系统是一种典型的信息管理系统,其开发主要包括后台的数据库的建立、维护以及前端的相应应用程序的开发。在图书馆管理系统中,对读者来说,他们关心的问题其实是如何方便的查询到图书馆中的书籍以及自己正在借阅或是已经借阅过些什么书,所借的书是否到期等,对管理员来说,他所关心的问题是图书馆中有些什么书,它们都存放在那里,是不是可以被借阅,发放的的读者证有那些,如何管理这些读者证等。因此本系统主要实现了五个模块的功能:图书查询、借阅管理、图书管理、借阅证管理、读者规则管理。
本文介绍了图书馆管理系统的设计与实现过程,包括数据库、应用服务器、Web服务器的设计与实现。本系统是基于B/S结构下开发的,采用的是WindowsXP操作系统用Java、JSP、Dreamweaver+Mysql Server开发。系统前台开发页面用Dreamweaver设计,当网页页面元素需要调用数据库的数据时,通过JSP服务器调用JavaBean组件提取数据库数据返回前台显示。
关键字:图书馆、数据库、B/S、JSP、JavaBean
【Abstract】
The administrative system of the library is a kind of typical information management system ,which mail development includ setting-up and database in backstage, and the development application program in front stage. In the administrative system of the library, to the reader how to inquiry the books in the library in convenient and what books they are inquriying or have borrowed already,and the have borrowed is expire. These issues are most cared about to them.For administrator, what issues he care about includeing what books library have, where are they deposit in, if they can be borrowed, is there any reader card have granted, how to manage these reader cards ,etc.So this system has realized the function of five pieces of module mainly: Books inquire , borrow management , taking care of books , borrow card management , reader's rule manage.
This text has introduced the design and of realize the administrative system of the library , including the design and realize of the database , the application server, , Web server and realizing. This system is developed under B/S structure, and using Java,JSP,Dreamweaver and Mysql server in windowsXP operating system. We used Dreamweaver to design the systematic front dest develops pages,and We used JSP server to callback the JavaBean package to get data in the library and return to front desk.When the page element of the webpage needs to transfer the data of the database.
Key word: Library , database , B/S , JSP , JavaBean
目 录
一、前言
随着社会的发展,人们对知识的需求也不断地增长。在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置,如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的发展,因此,开发一套完善的图书馆管理系统就必不可少了,本文介绍了在WindowsXP及Java、JSP、Dreamweaver+Mysql Server环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发本系统的详细过程,提出实现图书馆信息管理、资源共享的基本目标,从而推动迈向数字化图书馆的步伐,并阐述系统结构设计和功能设计,从图书的入库登记到查询浏览,从借书证发放到图书的借阅,形成了一个整体自动化管理模式,从软件工程的角度进行了科学而严谨的阐述。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是图书馆管理系统的开发的基本环境。[1]
数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。[2]
基于这一问题,我认为有必要建立一个图书馆管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
二、关键技术
(一)、JSP技术
JavaServer Pages 技术是一个纯Java平台的技术,它主要用来产生动态网页内容。在传统的网页HTML文件中加入Java程序片段和JSP标记,就构成了JSP网页。Web服务器接收到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。JSP是基于Java Servlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全、快速和跨平台的动态网页。
JSP在多个方面加速了动态的Web页面的开发:
程序写一次,到处可以运行。JSP在设计时,充分考虑到应用平台的无关性。依赖于Java的可移植性,JSP得到目前许多流行操作平台的支持,可在Apache、NetScape、IIS等服务器上执行。
执行速度快。JSP页面只需编译一次转化为Java字节代码,其后一直驻留于服务器内存中,加快了对JSP页面的响应速度。若不考虑JSP页面第一次编译所花的时间,则JSP的响应速度要比ASP快得多。
Java的优势。JSP技术是用Java语言作为脚本语言的。跨平台、成熟、健壮、易扩充的Java技术使得开发人员的工作在其他方面也变得容易和简单。Java语言通过提供防止内存泄漏的方法,在内存管理方面大显身手。加之,JSP为应用程序提供了更为健壮的意外事件处理机制,充分发挥了Java的优势。
JSP标签可扩充性和跨平台的可重用性。JSP技术能够使开发者扩展JSP标签得以应用,JSP开发者能定制标签库,大大减少对脚本语言的依赖。由于定制标签技术,使网页制作者降低了制作网页和向多个网页扩充关键功能的复杂程度。JSP组件(企业Javabeans,JavaBeans或定制的JSP标签)都是跨平台可重用的。Javabeans和企业Javabeans组件可以访问传统的数据库,并能以分布式系统模式工作于UNIX和WINDOWS平台。[9]
(二)、JavaBean
JSP网站吸引人的地方之一就是能结合JavaBean技术来扩充网站中程序的功能。JavaBean 是一个可重复使用、且跨平台的软件组件。
JSP搭配JavaBean来使用,有以下优点:
可将HTML和Java程序分离,为了日后维护的方便,如果把所有的程序代码(Html和Java)写到JSP网页中,则会使整个程序代码又多又繁杂,造成日后维护上的困难。
我们可以将常用到的程序写成JavaBean组件,JSP网页只要调用JavaBean组件来执行我们所要的功能,不用再重复写相同的程序,这样一来,可以节省开发所需的时间。[7]
(三)、JDBC
JDBC由一组Java语言编写的类和接口组成,使用内嵌式的SQL,主要实现三方面的功能:建立与数据库的连接,执行SQL声明以及处理SQL执行结果。JDBC支持基本的SQL功能,使用它可方便地与不同的关系型数据库建立连接,进行相关操作,并无需再为不同的DBMS分别编写程序。[10]
(四)、Servlet
Servlet是是JAVA 2.0中新增的一个全新功能。它是与Applet相对应的,Applet是运行在客户端的浏览器,而Servlet是运行在服务器端的。 JAVA Servlets 是运行在请求/面向请求服务器上的模块。也就是说:servlet能够象CGI脚本一样扩展WEB服务器功能,但是servlet占用很少密集资源,当一个服务器装载servlet时, 它运行servlet的 init 方法. 这个方法不能反复调用,一旦调用就是再装载servlet. 直到服务器调用 destroy 方法卸载 servlet后才能再调用.每个新的CGI要求在服务器上新增一个进程。如果多个用户并发地访问该程序,这些进程将消耗该Web服务器所有的可用资源,并且系统性能降低到极其低下的地步。有很多用CGI脚本编制的一些站点由于访问量剧增,性能迅速下降,这是CGI脚本一个缺点。 同时由于servlet 是用java编写的,因此是跨平台的。[12]
三、系统概述
(一)、系统描述
本系统是基于B/S结构下进行MIS系统开发的,利用Java和JSP的特性来设计结构合理的MVC架构并结合Java中间件软件开发高效的Web应用程序。本系统采用了JSP Model1体系,JSP页面独自响应请求并将处理结果返回客户,所有的数据存取都是由JavaBean来完成。[8]图3-1所示:
图3-1 JSP Model1 体系结构
(二)、系统任务
本系统实现后,可以更加方便快捷为读者提供服务,进一步提高图书的利用率。使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
(三)、设计目标
本系统的设计目标是借助网络,为图书馆建立一个信息管理系统,给图书管理和读者提供一个电子平台,将大大提高学校图书馆的管理水平和现代化程度。最终实现图书的借阅和管理信息化。
四、需求分析
(一)、功能需求
在本系统中,对读者来说,他们关心的问题其实是如何方便的查询到图书馆中的书籍以及自己正在借阅或是已经借阅过些什么书,所借的书是否到期等。[3]由此可以得出系统在面向读者方面应该至少做到如下几点:
1.图书查询。
2.读者信息查询,读者信息的查询内容应包括下面的几个方面:
- 读者信息——对读者的基本信息进行显示。
- 书刊借阅——对该读者借阅过的所有书籍进行查询。
- 借阅历史——查询该读者借阅过的所有书籍。
- 违章信息——该读者的违章信息。
- 读者规则——该读者所应用的规则。
对系统的管理员来说,应该注意的是:
1.图书馆中有些什么书,它们都存放在那里,是不是可以被借阅;
2.本图书馆发放的读者证有那些,如何管理这些读者证;
3.这些读者证都借阅着那些书;
4.如何来确定这些读者证是否可用,以及借书的还期等。
从以上问题出发,可以得出本系统应该具有的功能:
1.图书查询——对馆内的图书进行查询。
2.借阅管理——对读者的每一次借阅,还书进进登记和管理。
3.图书管理——对图书馆的书籍进行管理。
4.借阅证管理——对读者的借阅证进行管理。
5.读者规则管理——设置和管理读者规则。
(二)、环境需求
1、硬件环境
CUP:至少PentiumIII800以上
内存:至少128M以上
硬盘:至少20G硬盘空间以上
显示器:15‘显示器
光盘驱动器:CD-ROM或DVD-ROM驱动器
2、软件环境
本系统在WindowsXP及Java、JSP、Dreamweaver+Mysql Server中实现。
(三)、数据要求
保证数据的安全性和完整性及权限的设置等等。
(四)、功能模块划分
本系统实现如下功能:图书查询、借阅管理、图书管理、借阅证管理、读者规则管理等。
图4-1 模块划分图
五、概要设计
(一)、设计思想
- 利用软件开发现有软硬件环境,及先进的管理系统开发方案,从而达到充分利用现在资源提高系统开发水平和应用效果的目的。
- 系统应该符合软件工程开发的理论,开发方法等开发依据。
- 系统应满足图书馆管理工作需要,并达到操作过程中的直观,方便,实用,安全,准确等要求。
- 系统具备数据库维护功能,及时根据用户需求进行数据库的各种操作。
- 系统采用原型,使用模块化程序设计方法,便于系统功能的各种组合和修改,以及系统的测试与维护。[5]
(二)、各个数据表的结构表
(1)图书种类表(KJB2_KJXX_Book)
图书种类表是用来记录一类图书这个实体的,比如说《三国演义》其实是一类书,因为它不仅仅是有一本,而是有很多本书都可以是《三国演义》。一类书和一本的书的关系有类似于Java中类和对象的关系。图书种类表中的每一行记录代表同一种书的各个属性。
表5-1 图书种类表(KJB2_KJXX_Book)
序号 | 字段含义 | 字段名 | 类型 | 宽度 | 是否主码 | 是否非空 |
1 | 书种类ID | BookClassID | Int | PK | Y | |
2 | 题名 | Title | VChar | 50 | Y | |
3 | 作者 | Author | VChar | 50 | ||
4 | ISBN号 | ISBN | VChar | 50 | ||
5 | 出版发行项 | CBFXX | VChar | 50 | ||
6 | 载体信息 | ZTXX | VChar | 50 | ||
7 | 个人名称(等同责任者) | DTZRZ | VChar | 50 | ||
8 | 责任者 | ZRZ | VChar | 50 | ||
9 | 中国图书分类法类号 | ZGTSFLFLH | VChar | 50 | ||
10 | 科图图书分类法类号 | KTTSFLFLH | VChar | 50 | ||
11 | 论题主题 | LTZT | VChar | 50 | ||
12 | 附注项 | FZX | VChar | 200 | ||
13 | 出版时间 | CBSJ | DataTime | |||
14 | 单价 | DJ | Number | 10.2 | ||
15 | 赔偿金额 | PCJE | Number | 10.2 |
(2)馆藏地表(KJB2_KJXX_StorePlace)
馆藏地表是一个字典表,它记录了图书馆的馆藏地信息。比如说,一个学校的图书馆可能有“开架借书馆”、“闭架借书馆”、“社科借书馆”等不同的馆藏地。馆藏地表的一行记录代表一个馆藏地。
表5-2 馆藏地表(KJB2_KJXX_StorePlace)
序号 | 字段含义 | 字段名 | 类型 | 宽度 | 是否主码 | 是否非空 |
1 | 馆ID | StoreID | Int | PK | Y | |
2 | 名称 | MC | VChar | 50 | Y | |
3 | 位置 | WZ | VChar | 200 | ||
4 | 负责人 | FZR | VChar | 50 | ||
5 | 说明 | SM | VChar | 200 |
(3)馆藏表(KJB2_KJXX_Store)
馆藏表的每一行记录其实表代着图书馆中的每一本在馆图书。表中的种类ID关联着图书表,通过这一个字段的关联,使这个表中的每一行记录都可以看成是每一个图书类的一个对象。这个表中的索取号是提供给读者借阅图书的。
表5-3 馆藏表(KJB2_KJXX_Store)
序号 | 字段含义 | 字段名 | 类型 | 宽度 | 是否主码 | 是否非空 |
1 | 书本ID | BookID | Int | PK | Y | |
2 | 种类ID | BookClassID | Int | Y | ||
3 | 馆ID | StoreID | Int | Y | ||
4 | 索取号 | SQH | VChar | 50 | Y | |
5 | 条码号 | TMH | VChar | 50 | ||
6 | 年卷号 | NJH | VChar | 50 | ||
7 | 书刊状态 | ZT | VChar | 50 | Y | |
8 | 入馆时间 | RGSJ | DataTime | Y |
(4)读者(借阅证)表(KJB2_KJXX_Store)
读者(借阅证)表代表读者这一个实体。读者在这里其实就被定义为本图书馆的借阅证持有者。每一个持证者。每一个持证者在本表中都表示为一行记录。从另一个角度来看,其实这个表是记录也是所有的借阅证的集合。在图书借阅和读者信息查询时将使用到此表。
表5-4读者(借阅证)表(KJB2_KJXX_Store)
序号 | 字段含义 | 字段名 | 类型 | 宽度 | 是否主码 | 是否非空 |
1 | 读者ID | ReaderID | Int | PK | ||
2 | 证件号 | ZJH | VChar | 50 | ||
3 | 工号 | GH | VChar | 50 | ||
4 | 办证日期 | BZRQ | DateTime | |||
5 | 生效日期 | SXRQ | DateTime | |||
6 | 过期日期 | GQRQ | DateTime | |||
7 | 押金 | YJ | VChar | 50 | ||
8 | 手续费 | SXF | VChar | 50 | ||
9 | 累计借书 | LJJS | Int | |||
10 | 读者规则 | RuleID | Int | |||
11 | 状态 | ZT | VChar | 50 |
(5)读者规则表(KJB2_KJXX_Rule)
读者规则表表示的是规则这一实体。读者规则其实就是对读者借阅权限进行划分,每一种权限的借阅时间,借阅馆藏,可续借时间和次数都不尽相同。对于图书馆来说,每位读者可以借阅的图书等级可能会不同。
表5-5读者规则表(KJB2_KJXX_Rule)
序号 | 字段含义 | 字段名 | 类型 | 宽度 | 是否主码 | 是否非空 |
1 | 规则ID | RuleID | Int | PK | ||
2 | 规则名称 | GZMC | VChar | 50 | ||
3 | 可借阅天数 | KJYSJ | Int | |||
4 | 可借阅馆藏地ID | KJYGCDID | VChar | 50 | ||
5 | 续借天数 | KXJSJ | Int | |||
6 | 最大续次数 | KXJCS | Int | |||
7 | 预约保留天数 | KYYSJ | Int |
(6)书籍借阅表(KJB2_KJXX_JYB)
书籍借阅表代表的是书籍借阅这一个关系。它通过读者ID和书本ID,表示一本书被哪一个读者借阅了。系统在生成这一个关系表的记录时,会自动根据读者规则对到期时间等属性进行自动的填写。
表5-6书籍借阅表(KJB2_KJXX_JYB)
序号 | 字段含义 | 字段名 | 类型 | 宽度 | 是否主码 | 是否非空 |
1 | 借阅 | JYID | Int | PK | ||
2 | 读者 | ReaderID | Int | |||
3 | 书本 | BookID | Int | |||
4 | 借阅时间 | JYSJ | VChar | 50 | ||
5 | 到期时间 | DQSJ | VChar | 50 | ||
6 | 归还日期 | GHRQ | VChar | 50 | ||
7 | 状态 | ZT | VChar | 50 | ||
8 | 续借次数 | XJCS | Int |
(7)惩罚表(KJB2_KJXX_CFB)
惩罚表的一行记录代表的是对读者的一次惩罚。当读者由于超期还书等原因而应该被罚款时,就要向这一张表中增加一条记录。
表5-7 惩罚表(KJB2_KJXX_CFB)
序号 | 字段含义 | 字段名 | 类型 | 宽度 | 是否主码 | 是否非空 |
1 | 惩罚ID | CFID | Int | PK | Y | |
2 | 读者ID | ReaderID | Int | Y | ||
3 | 书本ID | BookID | Int | Y | ||
4 | 惩罚原因 | CFYY | VChar | 50 | ||
5 | 惩罚结果 | CFJG | VChar | 50 | ||
6 | 罚款金额 | FKJE | Number | |||
7 | 状态 | ZT | VChar | 1 |
(三)、模块设计及功能
1.图书查询
读者可以通过网络访问学校图书馆管理系统,并对馆内的图书进行查询,对查到的在馆图书可以进行借阅。
图5-1 图书查询流程图
2.借阅管理
这一部分是对书籍借阅、书籍归还的管理,当读者借书的时候,图书馆管理员把书籍的编号和读者的借阅证号输入系统,当此次借阅符合借阅规则的时候,借阅成功。并将结果写入到数据库中。读者归还书籍时,将图书交给图书管理员,管理员把书籍的编号和读者的借阅证号输入系统,系统核对借阅规则,对违规(如超期)的读者进行罚款之类。[6]
图5-2 借阅管理流程图
3.图书管理
图书管理主要实现的功能是对新购的图书进行入库和废书记录从库中删除。当新书被放入图书馆时,管理员登录进入系统,把图书的信息添加到图书馆管理系统中,并指定是放到哪一个藏书馆中。这时图书可以被读者查询到,并可以借阅。当要把一本废书删除时,图书管理员登录进入系统,查找到这一本书,并将其删除。这时,这一本图书将不再能被查询到。
图5-3 图书管理流程图
4.借书证管理
本部分是对借阅证进行管理,并对读者的一些基本的信息进行维护,提供增、删、改等功能。每一个借阅证都要以某一个读者规则相应,读者规则决定读者可以借阅书籍的等级,如借书时间、借书种类等。当读者借阅证丢失时,可以进行挂失处理。持失之后借阅证失效。
图5-4 借书证管理流程图
5.读者规则管理
读者规则包括借阅时间,可借阅的图书数目,可借阅图书的书馆等。这一部分可以对读者规则进行管理,主要是增、删、改操作。
图5-5 读者规则管理流程图
六、详细设计
(一)、详细设计概述
详细设计以概要设计为依据,进一步对系统每一个模块进行细化及对数据库的数据结构进行设计
(二)、数据库连接组件
1.图书数据组件
该组件是BookBean类,根据java的规范,这个类实现在BookBean.java文件中,它继承了ParentBean,通过ParentBean中的getonePage()、insertRecord()、updatRecord()和deltetRecord()方法向数据库发送SQL语句并完成数据的查询、增加、删除和修改的操作。
1.1用来查询一条数据的通用私有接口
Private Hashtable searchOneData(String sql)
该方法有一个参数,参数是一个字符串,表示要向数据库发送的一条SQL语句,这个SQL语句只能是一个查询语句,方法的返回值是一个Hashtable,在Hashtable中以键值对的方式表示了从数据库中选出的第一行记录。用Hashtable中的get(“FieldName”)方法可以得到该行记录的某一个记录的值。
查询核心代码如下:
<%@page language="java" contentType="text/html;charset=Gb2312"%>
<%@page import="java.util.*,java.text.*,kjb.main.*,kjb.bean.*"%>
<%
DealString ds = new DealString();
//取得菜单类别
//取得菜单类别
String strType = ds.toString((String)request.getParameter("txt_type"));
String strType1 = ds.toString((String)request.getParameter("txt_type1"));
//编号
String strID = ds.toString((String)request.getParameter("txt_id"));
//增删改类型
String strEdit = ds.toString((String)request.getParameter("txt_edit"));
//是否搜索的
String strSearch = ds.toString((String)request.getParameter("txt_search"));//新加入
if(strSearch.equals("")) strSearch="0";
String strTj = ds.toString((String)request.getParameter("tj"));
%>
<script>
function search()
{
document.all.txt_type.value = "<%=strType%>";
document.all.txt_type1.value = "<%=strType1%>";
document.all.txt_id.value = "";
document.all.txt_edit.value = "list";
document.all.txt_search.value = "1";
document.all.form1.action = "index.jsp";
document.all.form1.submit();
}
</script>
1.2增加记录的公有接口
Public int insert(Hashtable hash)
该方法有一个参数,是java.util.Hashtable类,在调用该方法之前,先用hashtable的put方法将记录的字段名和该记录的值存入hashtable中,然后将这个hasttable作为参数传入到insert方法中。在insert方法的最后,调用了ParentBean中的insertRecord方法,insertRecord可以根据传入的参数自动地生成增加记录的SQL语句并通过JDBC发送到数据库。
1.3删除记录的公有接口
Public int delete(String id)
该方法有一个参数id,该参数代表的是KJB2_KJXX_Book表中的ID字段,ID字段是这个表的主键,用这一个主键可以检索到表中的一条惟一的记录,通过这一主键,delete方法可以生成一条SQL语句,删除这一条记录。
1.4修改记录的公有接口
Public int update(Hashtable hash)
Update方法是把要修改的记录的信息通过Hashtable的方式传给update,update通过调用ParentBean的updateRecord(vect)来实现其功能,updateRecord(vect)可以根据传入的Vector自动生成符合MySQL规范的SQL语句并发送给MySQL数据库。
1.5查询记录的公有接口
Public Vector getData(int page)
getData是一个返回数据集的方法,该方法有一个参数,代表取得第几页数据,通过设置这个页码,可以实现结果集的分页。getData调用了ParentBean里的getOnepage方法来实现其功能。
2.馆藏数据组件
对馆藏表KJB2_KJXX_Store操作的连接组件是StoreBean类,实现在StoreBean.java中。类似于BookBean,它也继承了ParentBean中的getOnePage()、insertRecord()、updataR
Ecord()和deleteRecord()方法来向数据库发送SQL语句并完成数据的查询、增加、删除和修改等操作。
这个类的主要功能是对馆藏表进行增、删、改操作。其实现也类似于BookBean,但是其中一个私有方法与BookBean不同。
Private Vector searchData(String sql)
这个方法以一个SQL语句为参数,并返回一个Vector型的对象作为结果集。该方法首先用JDBC向数据库发送SQL语句,取得结果集,并把结果集的每一行记录用Hashtable封装,然后把选出的多行记录以Hashtable的形式放到一个Vector里面作为返回结果。
3.借阅数据组件
该组件以BorrowBean来实现,这个类同样继承了ParentBean。在BorrowBean类中,不仅仅实现了数据表的增删改的代码,还对借阅的操作过程进行了程序化。可以说,这一个组件是一个面向事务流程的组件。
利用ParentBean来实现事务,主要是通过调用这4个方法来实现的:
creatStatement();
clearBatch();
addBatch();
int result[]=executeBatch();
closeStm();
利用addBatch()可以同时向Staement添加多条SQL语句,使用executeBatch()实现SQL语句的同时执行。如果出错,则自动取消所有的SQL语句执行。这4个方法是通过直接调用JDBC的事务处理方法来实现对事务的管理。
借阅组件核心代码如下:
BorrowBean bb = new BorrowBean();
int errcode = 0;
DealString ds = new DealString();
String strType = ds.toString((String)request.getParameter("txt_type"));//取得菜单类别
String strType1 = ds.toString((String)request.getParameter("txt_type1"));//取得菜单类别
String strID = ds.toString((String)request.getParameter("txt_id"));//编号
String strEdit = ds.toString((String)request.getParameter("txt_edit"));//增删改类型
//第几页
String strPage = ds.toString((String)request.getParameter("txt_page"));
//取得表单参数
String strZJH = (ds.toString((String)request.getParameter("txt_zjh")));
String strSQH = (ds.toString((String)request.getParameter("txt_sqh")));
String strJYSJ = ds.getDateTime();
strJYSJ = strJYSJ.substring(0,10);
//生成参数集
Hashtable hash = new Hashtable();
hash.put("ZJH",strZJH);
hash.put("SQH",strSQH);
hash.put("JYSJ",strJYSJ);
4.读者数据组件
该组件以ReaderBean来实现。同样ReaderBean也继承了ParentBean。ReaderBean主要是提供对KJB2_KJXX_Reader表的读写操作。设计模式类似于BookBean。其主要的增、删、改方法如下:
新增方法首先从传入的参数Hashtable中取出存放在其中的数据,调用ParentBean中的增加记录的方法来增加一条记录。修改方法也是从传入的参数Hashtable中取出要修改的数据,调用ParentBean中的修改记录的方法来修改指定的记录。删除方法就直接向数据库发送一条SQL语句删除某记录。
(三)、设计与编写各模块
(1)本系统的页面代码都是用JSP页面来写的,为管理上的方便,页面一般都遵循下列的规则:
- 同一模块的文件放到一个文件夹下。
- 由index.jsp文件对页面进行调度。
- List.jsp页面做列表显示。
- View.jsp页面显示单行记录的详细内容。
- Edit.jsp实现记录的增加和修改。
- Servlet.jsp实现对数据连接组件的调用,完成数据的写入操作。
- 其他的页面作为辅助页面,配合上述几个页面来使用。
(2)简单介绍用户管理模块、借阅管理模块、和图书管理模块
1.用户查询模块
当用户访问图书馆网站时,就能看到图5-1所示的页面。在这个页面中,查询的方式有书名、作者、主题3种。通过这3种方式类型,访问者在选择查询方式并输入查询内容之后,可以很直接地找到想要的书。
图6-1 图书馆主页界面图
图6-2 查询结果
查询的主要页面有index.jsp、search.jsp、list.jsp、view.jsp。index.jsp用来调度所有的页面,search.jsp给用户显示一个查询接口,list.jsp用来显示查询到的结果列表。View.jsp用来显示查询到的图书的各种属性。由于查询功能不需要对记录进行增、删、改操作,因此这一模块主要就是由列表页和查看页组成。
2.借阅管理模块
借阅管理功能是提供给管理员使用的。当有一个读者要借书的时候,读者把图书和读者证交给管理员,管理员根据书和证件上的ID号,填入图5-3所示的界面中,单击“提交”按钮,就完成了一次借阅。
图6-3 书籍借阅
3.图书管理模块
书库管理是对存放图书的书库进行管理,书库其实是一个字典表,里面罗列了存放图书的书库的属性。
书库管理的页面是非常典型的单表增、删、改实现的例子。书库管理页面由index.jsp、list.jsp、view.jsp、edit.jsp、servlet.jsp这5个标准文件组成的。
例如调用edit.jsp向主表加入一条记录。然后在主表的list.jsp页中就会多出一个“上架”的操作,如图5-4所示:
图6-4 书籍管理主表页面
单击“上架”则进入了子表的操作,这里对子表的增、删、改操作都是针对跟主表的这一条记录相关联的那些记录。可以增加或修改一条记录,如图5-5所示:
图6-5 上架信息