图书馆信息管理系统课程设计报告

2018-11-08 14:58

数据库课程设计报告

-----图书馆信息管理系统

学院:软件学院 专业:软件工程 班级:**级软件*班

姓名:** 学号:***********

任课教师:彭朝晖 实验教师:王诚梅 助教:**

目录

前言--------------------------------------------------------------3 一.系统开发平台

1.1开发平台简介--------------------------------------------------4 1.2一些细节问题 -------------------------------------------------4

二.数据库规划

2.1任务陈述------------------------------------------------------4 2.2任务目标------------------------------------------------------5

三.系统定义----------------------------------------------5 四.需求分析

4.1用户需求说明--------------------------------------------------6 4.2系统需求说明--------------------------------------------------9

五.数据库逻辑设计

5.1ER图---------------------------------------------------------10 5.2数据字典-----------------------------------------------------12 5.3用户视图中的表-----------------------------------------------14

六.数据库物理设计

6.1基本表的实现-------------------------------------------------15 6.2具有派生数据的表的示例---------------------------------------19 6.3索引---------------------------------------------------------19 6.4安全机制-----------------------------------------------------19

七.应用程序设计

7.1功能模块-----------------------------------------------------19 7.2界面设计-----------------------------------------------------31 7.3事务设计-----------------------------------------------------31

八.测试和运行-------------------------------------------31

九.部分代码分析

9.1首页跳转代码-------------------------------------------------31 9.2用户登陆信息显示---------------------------------------------31 9.3数据库操作通用类---------------------------------------------32

十.总结-------------------------------------------------33 附参考文献-----------------------------------------------35

2

前言

随着科学技术的高速发展,我们已步入数字化、网络化、信息化的时代。图书馆是学校的文献信息中心,是为全校教学和科学研究服务的学术性机构,是学校信息化的重要基地。图书馆的工作是学校教学和科学研究工作的重要组成部分,是全校师生学习和研究的重要场所。为了更好地适应这种网络数字化信息的环境,提高利用图书馆检索信息的效率,一种成功的跟踪最新技术、充分利用软硬件资源、扎根于准、新、全数字资源的\图书馆信息管理系统\已孕育而生。

图书馆在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息、图书预约信息等。人工记录方法既效率低又错误过多,大大影响了图书馆的正常管理工作。因此需要对书籍信息、读者信息、借书信息、还书信息、图书预约信息等进行统一管理,及时了解各个环节中信息的变更,有利于管理效率的提高,同时为了提高工作效率、服务质量和管理水平,并使图书馆管理人员从繁琐的工作中解脱出来,故开发该图书馆信息管理系统。

目前我校已经有一套功能比较完备的图书馆信息管理系统,但是在使用过程中,由于管理员以及读者不断提出新的功能需求,使现有系统的局限性逐渐体现出来,所以本系统在实现现有系统功能的基础之上,又实现了几种为用户提供便利的功能,使得本软件能够更好的满足用户的需求、更具人性化、使用起来更加方便。

3

正文

一系统开发平台

1.1开发平台简介

本图书馆信息管理系统采用B-S架构,使用Java EE的技术路线,遵守MVC Model2模型。

Model模型层使用数据库作为持久性储存结构,选用的后台数据库是MySQL5.0。这是业界领先的开源数据库,在开源产品中具有仅次于Apache服务器的市场占有率。本数据库开放源代码,具有免费使用,比较稳定的特点,适合于小型系统的持久性存储。Model使用Java Beans作为OO层面上的抽象。

View视图层使用JSP技术。这是Java EE平台推荐的表现层技术。图书馆信息管理系统中使用JSP2.0规范,严格控制页面代码中的业务逻辑部分,做到不在HTML代码中混杂Java业务代码,实现了很好的业务和表现的分离。在这里采用的JSTL标准标签库来达到这一目标。

Controller控制层采用Servlet技术。页面获取的数据通过Servlet的转发传递给后面的Java Beans进行数据的封装和与数据库的交互,反馈信息由Java Beans传递给Servlet,再由Servlet进行转发,从而实现业务逻辑和表现的完全分离。

本图书馆信息管理系统使用struts1.2作为MVC开发框架,整个系统有struts框架作为MVC的后台运行支持。struts1.2框架是业界最早的也是最稳定和成熟的MVC开发框架,经过时间的洗礼已经被证明是一款很优秀的MVC框架,尽管还存在一些不足之处,但struts已经是可以选择的最好的框架技术。

本图书馆信息管理系统的软件开发平台是MyEclipse6.0GA + Dreamweaver CS3。

它的软件运行平台是Apache Tomcat 6.0 + JSTL + struts1.2。

1.2一些细节问题

图书馆信息管理系统中存在大量的表单提交。这里我们采用JavaScript进行客户端的简单验证。对于一些相对简单的验证,比如表单提交项是否为空,两次密码的输入是否一致等,将这样的验证过程由服务器端转移到客户端可以减轻服务器的负担,从而为更多客户提供更好的服务。

对于页面菜单的设计,考虑到浏览器兼容的问题,采取最大兼容的代码。经过实际测试,该代码可以正常显示在当前主流浏览器内核之上。测试浏览器包括IE6,IE7,Firefox,Opare9。

二数据库规划

2.1.任务陈述

图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员)信息、图书借阅信息以及意外处理信息,及时记录存储各个环节信息的变更,以便管理、查询、显示、输出,节约大量人力物力把人们从繁杂的手工记录方式

4

中解脱出来的同时,有力保障图书馆日常事务的高效运作。

2.2.任务目标

目标类别 人员信息管理 子目标 读者信息管理,包括读者类别、性别、借书数量、借书期限、备注等的输入、修改、删除、显示以及报表呈现。 图书馆管理员信息管理,包括管理员权限、性别、备注等的输入、修改、删除、显示以及报表呈现。 书籍基本信息管理,包括书籍编号、类别、关键词、备注等的输入、修改、删除、显示以及报表呈现。 借书信息管理,包括书籍编号、读者编号、借书日期、借书期限、备注等的输入、修改、删除、显示以及报表呈现。 还书信息管理,包括书籍编号、读者编号、还书日期、还书期限、备注等的输入、修改、删除、显示以及报表呈现。 续借、超期赔偿、丢失赔偿、损坏赔偿等信息的输入、修改、删除、显示以及报表呈现。 书籍信息管理 借阅信息管理 意外处理信息管理

三.系统定义

本图书馆信息管理系统主要面向各大图书馆的图书管理以及相关人员,读者和图书管理员。旨在实现图书管理的信息化,把人们从繁杂的手工记录方式中解脱出来,实现高效准确的管理。根据我对图书馆工作和管理模式的了解,再结合上网查找到的资料和从学校图书馆工作人员那里了解到的情况,做出如下设计:本系统将用户分为读者、图书馆管理员两种身份,共同参与图书的流通管理过程。 图书馆管理员权限:具有该系统的最高权限,对系统进行管理,可对数据库进行系统所提供的所有操作,并负责图书流通过程中的借书、还书操作。权限具体陈述如下:

1、图书管理:包括图书的录入、查询、修改和删除。

2、管理员信息管理:添加、查询、修改、删除所有管理员的信息。 3、读者管理:包括读者信息的添加、查询、修改、删除等。

4、系统数据处理:数据查询,包括查看当前在馆书籍信息、当前所有违章罚款信息、所有被预约图书信息等。

5、管理员的个人功能:包括查看个人信息、修改密码、重新登陆、退出系统等。

5

6、图书流通中的借书操作:借书时需要输入用户号和图书ISBN。如果该图书可借,则正常借书,提示“借阅成功”;如果该书不可借,则弹出窗口提示。

7、图书流通中的还书操作:还书时需要输入用户号和图书ISBN。若正常还书,点击确定即可;若读者违章,可填写违章记录,并处以罚款。

8、察看读者的请求信息,加以处理。

读者权限:使用系统的相应查询功能。具体权限如下: 1、图书检索功能(包括简单检索和高级检索)。 2、查看个人信息、修改密码等个人信息。 3、查看个人借阅历史。

4、续借已借图书:在查看个人借阅历史模块里实现,当前已借未还未续借的每本书后面都有一个续借按钮,选中后点击可以实现该书的续借。

5、图书预约:可查看自己的预约信息及处理情况,也可通过填写预约表单预约图书。

6、查看违章欠款记录。

四.需求分析

4.1用户需求说明

4.1.1数据需求

图书馆分为若干个分馆,分馆名称唯一。每个分馆都藏有图书,系统可以浏览、操作、管理各个分馆的图书信息。对应书籍实体的图书信息包括图书的编号,ISBN ,名称,第一、第二、第三作者,书名的汉语拼音缩写,内容简介,入库时间,书籍单价,图书馆购进图书总数,书籍当前在库数目,书籍所在馆号,书籍外借数目等。除了一些从服务器自动获取的信息外,大部分图书信息都由管理员来维护。

此外管理员还可维护图书馆管理员信息、读者信息、分馆信息、权限信息、不良记录信息。图书馆管理员信息和读者信息由用户编号、用户密码、用户密码提示问题、用户名字、用户权限、用户年龄、用户性别、用户不良记录、用户请求记录组成。其中读者可以自行维护除编号、权限、不良记录以外的其它信息。

读者在借书之前必须先注册,注册后便可进行借书、还书、留言等一系列操作。借书信息包括借书记录号、用户号书籍编号、借阅日期、是否续借、是否归还等信息。

对于读者的不良记录,系统将予以存储。存储的信息有不良记录编号、借阅编号、不良记录描述。

对应于用户请求记录实体的请求信息包括请求信息编号、用户编号、请求描述、请求发出时间、该请求是否实现等内容。

6

4.1.2事务需求

? 数据录入

a 新用户注册时录入自己的详细情况; b 录入新进图书的各项信息; c录入分馆的基本信息;

d用户登录后录入自己的请求信息; e管理员录入用户的不良记录 ? 数据更新/删除

f 更新/删除用户的个人信息;

g 更新/删除某些图书的基本信息; h更新/删除某些图书的借阅信息; i更新/删除某些分馆的基本信息; j更新/删除某些用户的请求信息; ? 数据查询

k查询用户的个人信息; l查询图书的基本信息; m查询图书的借阅信息; n查询分馆的基本信息; o查询用户的请求信息;

p查询用户的不良记录信息; 4.1.3系统用例

用例:

7

用例总图:

4.1.4 组件图

4.1.5部署图

8

4.2系统需求说明

4.2.1网络和共享需求:

? 所有分馆必须安全的和总部数据库网络互连; ? 必须能够支持每个分馆至少3名用户同时访问; 4.2.2性能:

? 单个记录查询时间少于3秒 ? 多个记录查询时间少于6秒 ? 更新/保存记录时间少于2秒 4.2.3安全性:

? 必须有口令保护

? 每个用户分配特定的用户视图所应有的访问权限 4.2.4法律问题:

? 对管理员和读者信息管理,遵守法律 4.2.5 运行需求

4.2.5.1用户界面 ? 使用浏览器界面结构,采用导航栏界面方式,尽力带给操作用户便利,对

用户友好;对鼠标和键盘单独支持。

4.2.5.2硬件接口 ? 本软件需要能够互联网的支撑,用户的硬件平台应该能够与互联网连接。

4.2.5.3软件接口 ? 运行于Windows98及更高版本的Windows操作系统之上,或者其他系统。

4.2.5.4故障处理 ? 正常使用时不应出错,若运行时遇到不可恢复的系统错误,也必须保证数

据库完好无损。 4.2.6其它需求

? 系统的功能实现情况: 用户可在本系统下实现各种用户要求的功能

? 系统的安全性: 对于系统的重要数据都有密码保护,具有一定的安全性 ? 系统的容错性: 用户输错数据都有提示信息,具有较好的容错性能。 ? 系统的封闭性: 用户的封闭性较好,用户基本上在提示信息下输数据。

9

五.数据库逻辑设计

5.1E-R图

图书信息管理系统的数据库可以设计定义用户(由权限可分为管理员和普通读者)、书籍、图书馆、借书信息、请求信息和不良记录信息等实体及其之间的联系。实体使用E-R图进行描述。为清楚起见,这里将实体图和联系图分开表现。

5.1.1实体图:

5.1.1.1书籍信息的E-R图:

年龄 密码提示问题 特殊请求 不良记录 密码 编号 用户 名字 权限 密码提示问题答案 在库总数 购进所在库号 总数 入库时间 外借数目 单价 ISBN 编号 内容书籍 简介 书名 作者 拼音缩写 5.1.1.2用户信息的E-R图:

性别

5.1.1.3图书馆信息的E-R图:

编号 图书馆 名字 10

5.1.1.4 请求信息的E-R图: 用户 编号 编号 请求 内容 请求信息 请求是请求 否完成 时间

5.1.1.5不良记录的E-R图:

借书 编号 不良记录 编号 描述

5.1.2.联系图:

读者

编号 书籍 编号 编号 读者 借阅 书籍 借阅 时间 是否是否 归还 续借

管理员 管理 用户

11

管理员 管理 不良记录 管理员 管理 书籍 管理员 管理 请求信息 5.2数据字典

根据上面描述的E-R图进行数据库的逻辑结构设计。在这里以表格的形式给出数据库的设计。下面表中的字段除特殊标明的外,均不能为空。

(5.2.1)书籍实体。 字段 类型 备注 book_id int(11) 主键,书籍编号,自增类型 book_isbn book_title book_author0 book_author1 book_author2 book_chinese_short book_introduction book_year book_price book_amount book_amount_in book_which_lib varchar(30) varchar(100) varchar(20) varchar(20) varchar(20) varchar(50) text date decimal(11,0) int(3) int(3) int(2) 书籍ISBN 书籍名称 第一作者 第二作者,可以为空 第三作者,可以为空 书名的汉语拼音缩写,用于支持拼音查找 书籍内容简介 入库时间,该时间从服务器获取 书籍单价 购进书籍总数 书籍当前在库数目 书籍所在馆号 书籍外借数目,该字段由book_amount和book_amount_in字段计算得出,用于快速查找 book_how_many_borrowed int(3) 12

(5.2.2)用户实体。在这里的用户具有管理员和普通读者的权限。 字段 类型 备注 user_id int(11) 主键,用户编号,由用户自主选择,只能由数字构成 user_password varchar(20) 用户密码 user_password_question varchar(50) 用户密码提示问题,用于用户忘记密码时找回密码之用 user_password_question_answer varchar(50) 用户密码提示问题答案,用于用户忘记密码时找回密码之用 user_name varchar(20) 用户名字 user_purview varchar(2) 外码,指向user_pruview,用户权限 user_age tityint(3) 用户年龄 user_sex enum('0','1') 用户性别,枚举类型,0代表“男”,1代表“女” user_durty_record int(11) 外码,指向durty_info,不良记录,可以为空 user_quest_record int(11) 外码,指向request_info,请求记录,可以为空 (5.2.3)图书馆实体。 字段 类型 备注 lib_id int(2) 主键,图书馆编号 lib_name varchar(50) 图书馆名字

(5.2.4)请求记录实体。 字段 类型 request_id int(11) request_user_id int(11) request_describetion varchar(100) request_date date request_finished tinyint(1) (5.2.5)不良记录信息实体。 字段 类型 durty_id int(3) durty_borrow_id durty_describetion int(11) varchar(100) 备注 主键,自增类型 借阅编号 不良记录描述 备注 主键,自增类型 用户编号 请求描述,由用户输入 请求发出时间 该请求是否实现,0代表为实现,1代表已经实现 13

(5.2.6)借阅联系。 字段 borrow_id borrow_user_id borrow_ book_id borrow_date borrow_reborrow 类型 int(11) int(11) int(11) date tinyint(1) borrow_is_return tinyint(1) 备注 主键,自增类型 外码,指向user_info,用户编号 外码,指向book_info,书籍编号 借阅日期,从服务器获得 是否续借,0代表没有续借,1代表已经续借,最大续借次数为1次,默认为0 是否归还,0代表未归还,1代表已经归还,默认为0 5.3用户视图中的表

(1)Book_info(book_id,book_isbn,book_title,book_author0,book_author1,

book_author2,book_chinese_short,book_introduction,book_year,book_price,book_amount,book_amount_in,lib_id,book_how_many_borrowed)

主键:book_id

外码lib_id参照Lib_info (lib_id)

(2)User_info(user_id,user_password,user_password_question,

user_password_question_answer,user_name,purview_id,user_age,user_sex,durty_id,request_id)

主键:user_id

外码purview_id参照User_purview(purview_id)

(3)Lib_info(lib_id,lib_name)

主键:lib_id

(4)Request_info(request_id,user_id,request_describetion,request_date,request_finished) 主键:request_id

外码user_id参照User_info (user_id)

(5)Durty_info(durty_id,borrow_id,durty_describetion) 主键:durty_id

外码borrow_id参照Borrow_info (borrow_id)

(6)Borrow_info(borrow_id,user_id,book_id,borrow_date,borrow_reborrow,borrow_is_return)

主键:borrow_id

外码user_id参照User_info (user_id) 外码book_id参照Book_info (book_id)

(7)user_purview(purview_id,purview_name)

14

主键:purview_id

六数据库物理设计

6.1基本表的实现

创建表及数据库的SQL语句如下:

# SQL Manager 2007 for MySQL 4.1.1.2

# --------------------------------------- # Host : localhost # Port : 3306 # Database : library

SET FOREIGN_KEY_CHECKS=0;

CREATE DATABASE `library` CHARACTER SET 'utf8'

COLLATE 'utf8_general_ci';

USE `library`;

#

# Structure for the `lib_info` table : #

CREATE TABLE `lib_info` ( `lib_id` int(2) NOT NULL, `lib_name` varchar(50) NOT NULL, PRIMARY KEY (`lib_id`),

UNIQUE KEY `lib_id` (`lib_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#

# Structure for the `book_info` table : #

CREATE TABLE `book_info` (

`book_id` int(11) NOT NULL auto_increment, `book_isbn` varchar(30) NOT NULL, `book_title` varchar(100) NOT NULL, `book_author0` varchar(20) NOT NULL,

`book_author1` varchar(20) default NULL,

15

`book_author2` varchar(20) default NULL, `book_chinese_short` varchar(50) NOT NULL, `book_introduction` text NOT NULL, `book_year` date NOT NULL,

`book_price` decimal(11,0) NOT NULL, `book_amount` int(3) NOT NULL, `book_amount_in` int(3) NOT NULL,

`book_which_lib` int(2) NOT NULL,

`book_how_many_borrowed` int(5) NOT NULL, PRIMARY KEY (`book_isbn`), UNIQUE KEY `book_id` (`book_id`), UNIQUE KEY `book_isbn` (`book_isbn`), UNIQUE KEY `book_isbn_2` (`book_isbn`), KEY `book_which_lib` (`book_which_lib`),

CONSTRAINT `book_info_lib_fk` FOREIGN KEY (`book_which_lib`) REFERENCES `lib_info` (`lib_id`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

#

# Structure for the `borrow_info` table : #

CREATE TABLE `borrow_info` (

`borrow_id` int(11) NOT NULL auto_increment, `borrow_user_id` int(11) NOT NULL, `borrow_book_isbn` varchar(30) NOT NULL, `borrow_date` date NOT NULL,

`borrow_reborrow` tinyint(1) default '0', `borrow_is_return` tinyint(1) default '0',

PRIMARY KEY (`borrow_id`),

UNIQUE KEY `borrow_id` (`borrow_id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

16

#

# Structure for the `durty_info` table : #

CREATE TABLE `durty_info` (

`durty_id` int(3) NOT NULL auto_increment, `durty_borrow_id` int(11) NOT NULL,

`durty_describetion` varchar(100) NOT NULL, PRIMARY KEY (`durty_id`),

UNIQUE KEY `durty_id` (`durty_id`),

KEY `durty_borrow_id` (`durty_borrow_id`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

#

# Structure for the `request_info` table : #

CREATE TABLE `request_info` (

`request_id` int(11) NOT NULL auto_increment, `request_user_id` int(11) NOT NULL,

`request_describetion` varchar(100) NOT NULL, `request_date` date NOT NULL,

`request_finished` tinyint(1) NOT NULL default '0', PRIMARY KEY (`request_id`),

UNIQUE KEY `request_id` (`request_id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

#

# Structure for the `user_purview` table :

17

#

CREATE TABLE `user_purview` (

`purview_id` varchar(2) NOT NULL, `purview_name` varchar(20) NOT NULL, PRIMARY KEY (`purview_id`),

UNIQUE KEY `pruview_id` (`purview_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#

# Structure for the `user_info` table : #

CREATE TABLE `user_info` (

`user_id` int(11) NOT NULL,

`user_password` varchar(20) NOT NULL,

`user_password_question` varchar(50) NOT NULL,

`user_password_question_answer` varchar(50) NOT NULL, `user_name` varchar(20) NOT NULL, `user_purview` varchar(2) NOT NULL, `user_age` tinyint(3) NOT NULL,

`user_sex` enum('0','1') NOT NULL default '0', `user_durty_record` int(11) default NULL, `user_quest_record` int(11) default NULL, PRIMARY KEY (`user_id`),

UNIQUE KEY `user_id` (`user_id`), KEY `user_purview` (`user_purview`),

KEY `user_durty_record` (`user_durty_record`), KEY `user_quest_record` (`user_quest_record`),

CONSTRAINT `user_info_durty_fk` FOREIGN KEY (`user_durty_record`) REFERENCES `durty_info` (`durty_id`),

CONSTRAINT `user_info_purview_fk` FOREIGN KEY (`user_purview`) REFERENCES `user_purview` (`purview_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

18

6.2具有派生数据的表的示例

由于每次计算派生数据都要花费一定的时间和代价,为了提高性能,在数据库的某些表中,我设计了派生列,像上表book_info中的派生列book_how_many_borrowed。

6.3索引

因为添加索引会改善系统性能,所以,根据不同的情况,我引入了不同类型的索引。举例说明如下。

在列出馆中所有书时,选择排序的列为book_which_lib,非主键,此索引为聚簇索引。

在列出馆中所有管理员时,选择排序的列为user_id,主键,此索引为主索引。

但在一些表中,如lib_info表,没有建索引,因为通过课程学习我们了解到,不必为小表建立索引。

列出馆中所有图书,此操作进行较为频繁,因而为其建立二级索引。先按所在馆进行分类,再按字典序依book_isbn进行排序。

在表book_info中,因book_title 、book_author、 book_chinese_short为搜索条件,建立索引。

6.4安全机制

在本图书馆信息管理系统中,我建立了两种类型的安全机制,系统安全和数据安全。

在系统安全的建设方面,不允许以游客身份访问本系统,所有用户都必须注册并登陆,登录时会验证用户名和密码。只有两者匹配时,才可访问本系统。

在数据安全方面, 数据库对象的访问和使用有严格的控制,其中的某些表只有具有特定权限才可以访问。

七应用程序设计

7.1功能模块

7.1.1登陆模块

19

说明:该登陆界面可实现管理员、读者两种身份的登录功能,如果输入的帐号和密码及用户类型均正确,则正常登陆系统,否则显示提示信息。

20

7.2界面设计

见功能模块中的截图。

7.3事务设计

本图书馆信息管理系统中涉及到的事务,均以现实世界图书馆的日常事务为原型。其中可圈可点的几处介绍如下。

找回密码的流程在此不再重复,见7.1.1登陆模块。

书刊归还时,管理员可根据现实情况决定是否填写不良记录,若填写,该不良记录会出现在管理员界面的违章列表中,和读者界面的违章欠款中。

若读者在查询时发现馆中目前尚未有自己想借的图书,可填写预约,该预约信息会显示在管理员界面的预约列表中,管理员了解读者预约后,可进行相应处理,若已购到该书,可将预约进行标记,标记后,读者可在“查看预约”模块中看到该处理信息,这时就可去图书馆借阅该书。

除此之外,读者还可续借未还的图书。

八测试和运行

此图书馆信息管理系统在Tomcat6.0服务器进行了功能性测试。测试结果是所有功能已经实现。

此图书馆信息管理系统在IE6、IE7、Firefox2、Opera9等四款浏览器上进行了兼容性测试。测试结果是系统界面能够基本完全一致的呈现。稍有不同之处是归还书籍页面中的不良记录的自动呈现,在Netscape内核和Opera内核处有不同的表现。

除此之外,还对此图书馆信息管理系统进行了低强度的压力测试。测试结果较为理想。

九部分代码分析

9.1首页跳转代码

这里使用JSP2.0的标准表现输出标签JSTL进行跳转。这样可以最大化的将业务层和表现层的代码分离。这是JSP2.0标准的推荐使用方法。

9.2用户登录信息的显示

  用户名:

31

登录时间:

type=\

dateStyle=\

timeStyle=\

在登录时从服务器端获得登录时间,存放在session中。使用JSTL标签,取出该登录时间,使用JSP内置的时间本地化操作对该时间进行本地化。9.3数据库操作通用类

package org.galaxy.database;

import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

import net.snapbug.util.dbtool.ConnectionManager; import net.snapbug.util.dbtool.ConnectionPool; import net.snapbug.util.dbtool.PoolFulledException;

public class DBWorker {

private ConnectionPool pool = null; private Statement st = null; private ResultSet result = null;

private static final DBWorker INSTANCE = new DBWorker();

public static DBWorker getInstance(){ return INSTANCE;

}

public ResultSet getResultSet(String sql) throws PoolFulledException, SQLException{ if(pool == null){ throw new NullPointerException(\ }

st = pool.createStatement(); result = st.executeQuery(sql); return result;

}

public int updateDatabase(String sql) throws SQLException{

if(pool == null){ 32

}

}

throw new NullPointerException(\

st = pool.createStatement(); return st.executeUpdate(sql);

private DBWorker(){ }

private void initialize() { } }

try { }

// 获得当前class文件的路径

String filePath = this.getClass().getResource(\// 获得DatabasePool文件的路径

filePath = filePath.substring(1, filePath.indexOf(\filePath = filePath.replace(\ConnectionManager.init(filePath);

pool = ConnectionManager.getConnectionPool(\e.printStackTrace(); initialize();

} catch (Exception e) {

该类封装了关于数据库的通用操作。本系统使用snappool数据库连接池,需要在该类中对连接池进行初始化,具体来说就是在一个老、配置文件中获得有关该连接池的设置信息。该类使用单例设计模式,用一个私有的构造方法对类进行初始化操作,同时提供一个公共的实例以便外界类使用。这可以保证在一个JVM上仅有一个该类实例存在。由于数据库操作类是极耗资源的,并且其中还涉及到文件读取操作,因而这样做是有意义的。

该类封装了对数据库的通用操作。其余的具体操作在相应的类中实现,但都是调用该类的代码。因此该类同其他的数据库操作类构成组合的关系。

十总结及致谢

本程序基本实现了图书馆管理中所应用的大体功能,能非常流畅地实现整

个图书的入库、借书、还书、图书续借、预约等功能,系统最后进行了大量的测试,可以说程序健壮性非常好,对各种错误和异常都有非常好的报错功能。并创新性地引入了读者密码寻回,使系统更加人性化、用户使用起来更加方便。系统采用B/S方式,这样读者直接通过浏览器就可以访问系统,而不必特意安装客户端软件,一则方便了用户的使用,二则省去了客户端软件更新、维护的不便。但

33

是客观地说,系统也存在着一些不足。例如:书籍信息的维护这一方面较为欠缺,还有待改进和提高。总起来说,这次课程设计还是很成功的,自己在这个过程中学到了很多知识,更重要的是获取了更多的经验,了解了数据库设计和软件开发的一般流程,为以后实际工作奠定了良好的基础!

整个系统的开发历时2个星期的时间,回顾两个星期走过的路程,还是颇有感触的。从前期选题时的犹豫不决,到选择开发平台时的踌躇、思前想后,再到实际开发时为每个细小的问题付出的点滴汗水,再到后期测试时的忐忑不安,直到最后提交系统时的内心愉悦与成就感——这点点滴滴都给我留下了不可磨灭的印象,也为我以后的发展奠定了坚实的基础。

自己能有这两个星期的收获,最后能交上一个比较完美、健壮性比较良好的系统,得感谢很多人的帮助:首先,感谢学院数据库系统课程提供的本次课程设计,让我有机会接触软件开发的过程,并且让我熟悉了数据库设计和软件开发过程中应该注意的很多问题,为以后进行开发积累了宝贵的经验;其次,感谢授课教师彭朝晖的耐心教导。2周的授课中,彭老师非常详尽地为我们介绍了数据库应用程序的开发过程、软件测试、SQL的优化等知识,还结合自身开发经验给了我们很多有益的建议,同时介绍了公司希望聘用什么样的人等工作经验,所有这一切真的是让我受益匪浅,接触到了很多课本上学不到的知识,很大了开阔了自己的视野。再次,感谢带实验的王诚梅老师和程旭学姐,是你们在我实际编程过程中遇到困难时给予了最热情的帮助,真诚地感谢你们在带实验过程中付出的巨大努力和给予我们的热情、耐心的帮助!最后,也感谢身边的很多同学,当遇到困难时,是大家一起积极的讨论、互相帮助,才使困难解决,在此过程中我真切地感受到了集体和团队的力量。在课程结束之际,真心地对帮助过我的老师、同学说声谢谢,谢谢大家了!!

34

附录(参考资料)

在整个开发过程中,参考了很多图书馆和因特网上的资料,在此一并列出。 1、《信息系统开发方法》 徐宝祥主编 机械工业出版社 2007 2、《Java 2实用教程》 杜江编著 电子工业出版社 2006 3、《图书馆信息技术应用指南》 刘晓清主编 海洋出版社 2007 4、《图书馆信息学》 主编储荷婷、张茵 中国人民大学出版社 2007 5、《图书馆工作基础知识》 程长源著 浙江人民出版社 1983 6、《网页时尚设计师》 王国平等著 电子工业出版社 2008 7、 CSDN论坛 8、阶梯人论坛

35


图书馆信息管理系统课程设计报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!
下载这篇word文档

下一篇:记者团招新面试问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: