图书信息查询系统

更新时间:2023-03-17 04:39:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要

本文结合日常图书查询系统的实际需要,通过对C/S模式、Java开发工具、数据库以及SQL语言的深入学习及实践,主要完成了图书资料查询系统的需求分析、数据库设计、应用程序设计的工作。

首先,在基本原理部分介绍了图书资料查询系统的应用背景、开发环境以及选用的开发工具与数据库的关系。并对数据库的体系结构、DBMS进行了介绍。

第二章粗略的介绍了图书信息查询系统,主要包括系统简介、需求描述以及系统结构。

第三章详细的设计了了本系统的数据库,并且阐述了两个角色。 第四章进行了java类的实现(主要是连接服务器端的几个类)。 第五章主要阐述了图书查询系统的运行演示与分析,让每一个人了解这个系统的运行环境、数据源的配置、系统的运行和部署,提高了对读者的透明性。另外对出现的各种问题都进行了分析和阐述。

第六章总结了本论文在各个方面出现的问题及功能。

关键词:C/S结构,数据库,SQL语言,Java开发工具

1

图书信息管理系统

引言

1数据库技术

数据库技术作为数据管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现已形成相当规模的理论和实用技术。优秀的数据库设计是应用成功的基石。是开发高品质应用的前提。

1.1 数据库的体系结构

数据的体系结构分成三级:内部级,概念级和外部级。这个三级结构有时也称为“三级模式结构”。

1. 外部级:最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。

2. 概念级:涉及到所有用户的数据定义、是全局的数据视图。全局试图的描述称为“概念模式”。

3. 内部级:最接近于物理存储设备,涉及到实际数据存储的结构物理存储数据视图的描述称为“内模式”。

数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。

1.2 数据库管理系统(DBMS)

数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、查询、更新及各种控制,都是通过DBMS进行的。在不同的计算机系统中,由于缺乏统一的标准,即使同种数据库模型的DBMS,他们在用户接口、系统功能方面也常常是不同的。用户对数据库进行操作,是由DBMS把操作从应用程序带到外部级、概念级、再导向内部级,进而操作存储器中的数据。DBMS的主要目标,是使数据作为一种可管理的资源处理。

DBMS的主要功能为: 数据库定义功能:DBMS提供数据定义语言(DDL)定义数据库的三级结构,包括外模式、概念模式、内模式及相互之间的映像,定义数据的完整性、安全控制等约束。因此,在DBMS中应包括DDL的编译程序。

数据库的操作功能:DBMS提供数据操作语言(DDL)实现对数据库中数据2的操作。基本的数据操作分成三种:

2

1 检索(查询)

2 更新(插入、删除、修改)

3 数据库的保护功能:数据库中的数据是信息社会的战略资源,对数据的保护是至关重要的大事。

DBMS对数据库的保护主要通过五个方面实现:

1 数据库的恢复:在数据库被破坏或数据不正确时,系统有能力把数据库恢复到正确的状态。

2 数据库的并发控制:DBMS的并发控制子系统能防止错误发生,正确处理好多用户、多任务环境下的并发操作。

3 数据库的完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作。

4 数据库的安全性控制:防止未经授权的用户蓄谋或无意地存取数据中的数据,以免数据的泄露、更改或破坏。

5 数据库的存储管理:把各种DML语句转换成底层的文件系统命令,起到数据的存储、检索和更新的作用。

数据库的维护功能:它有许多实用程序提供给数据库管理员: ¢ 数据装载程序 ¢ 备份文件

¢ 文件重组织程序 ¢ 性能监控程序

数据字典:数据库系统中存放三级结构定义的数据库称为数据字典(DD)。对数据库的操作都要通过访问DD才能实现,通常DD中还存放数据库运行时的统计信息。

1.3 Java开发工具与数据库

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。JDBC是面向关系型数据库的。

2 图书信息查询系统 1.1 系统功能

1 图书查询,借书还书。

2 用户必须登录方能执行各种操作。 3 能将查询结果生成报表。

3

1.2 系统开发工具

该系统采用Java的所有开发工具,数据库服务端为Acess,并且在windows操作系统下完成各种调试。

第一章 基本原理

1 数据库方面

1.1 Microsoft Access2003介绍

Access 2003是office自带的数据库,Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。

表(是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。 查询(Query)查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。

窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。

报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。 宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。

模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。

当对表格和报表进行操作时,Microsoft Access有一个无正式文本的特性。这个特性允许你从设计视窗性质sheet window中进行过程调用,调用的方法时同时按下shift和F2键。

1.2 Access的功能

1. 数据库中包含多个表,每个表可以分别表示和存储不同类型的信息。 2. 通过建立各个表之间的关联,从而将存储在不同表中的相关数据有机地结合起来。

3. 用户可以通过创建查询在一个表或多个数据表中检索、更新和删除记录,并且可以对数据库中的数据进行各种计算。

4. 通过创建联机窗体,用户可以直接对数据库中的记录执行查看和编辑操作。

4

2 Java开发工具和Access的连接方面

JDBC是一个面向对象的应用程序接口(API), 通过它可访问各类关系数

据库。JDBC也是java核心类库的一部分。

JDBC的最大特点是它独立于具体的关系数据库。与ODBC类似, JDBC API 中定义了一些Java类分别用来表示与数据库的连接, SQL语句, 结果集以及其它的数据库对象, 使得Java程序能方便地与数据库交互并处理所得的结果。使用JDBC, 所有Java程序(包括Java applications , applets和servlet)都能通过SQL语句或存储在数据库中的过程(stored procedures)来存取数据库。要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁。通常,Java程序首先使用JDBC API来与JDBC Driver Manager交互,由JDBC Driver Manager载入指定的JDBC drivers, 以后就可以通过JDBC API来存取数据库。JDBC driver 是用于特定数据库的一套实施了JDBC接口的类集。 \这种类型的driver能使客户端通过JDBC调用连接到一个使用ODBC driver的数据库。如本系统中的第十五个程序里面有个引入文件是java.sql.*。这个文件里就包含了数据库和java程序连接接口和类。

第二章 整体架构

2.1 系统概述 2.1.1 系统简介

图书馆信息管理系统是一个集图书管理、读者管理、借书还书管理、系统管理等功能模块于一体的信息管理系统。在本文,我们将给出图书馆信息管理系统的概貌,但主要介绍图书信息查询模块和读者借阅信息查询模块。

图书信息查询系统是图书馆信息管理系统的一个子系统,它为广大用户提供了图书信息查询的快速通道。用户通过这个系统可以查询图书在图书馆的仓管情况,可以查询用户的个人借阅信息。

2.1.2 需求描述

图书馆信息管理系统包括图书信息管理、读者信息管理、借还信息管理、系统信息管理等功能,下图给出了图书馆嘻嘻管理系统的主要功能模块。

5

图书馆信息管理系图书信息管理读者信息管理借还信息管理系统信息管理 图书信息查询添加图书信息修改图书信息删除图书信息借阅信息查询 添加读者信息1 图书信息管理

该模块设计图书基本信息(如书名、书号、作者、出版社、出版日期、图书开本、定价、页数等)的添加、删除、修改;读者可以根据书名、作者、出版社、书号等关键字检索所需要的图书,读者可以查询某图书在图书管里还有多少本,被借去的图书什么时候归还等信息。

2 读者信息管理

该模块设计读者基本信息(如借书证号、姓名、性别、所在单位、联系方式、读者类别,办证时间,过期时间等)的录入、修改、删除;可以根据读者的证号、姓名等信息查询到读者,读者登录到系统后能够修改自己的联系方式等信息,读者可以查询自己图书借阅情况信息,如当前借的都是什么书,该什么时候归还等。对读者进行分类,不同类别的读者其借书数量借期不同。

3 借书还书管理

该模块实现图书的借还功能,根据读者借书证号和书号将图书借给读者,根据图书条形码归还图书。读者借书时验证读者的身份是否合法、验证借书证是否有效、借书是否超量。

4 系统信息管理

本模块涉及管理员用户与系统参数的管理和维护,如设置图书的借期、数量、超期每天罚款金额等;超级管理员可以增加、删除普通管理员,并对普通管

6

修改读者信息删除读者信息 借书信息管理 还书信息管理设置系统参数 设置管理权限 理员设置权限,如读者管理权限、图书管理权限、系统参数修改权限等。

2.2 系统设计 2.2.1 系统结构

本系统采用C/S结构,客户端发送操作请求到服务器端,服务器根据请求代码,对数据库中的数据进行处理,再将结果返还客户端,如下图:

请求代码 客户端1 处理结果 数据请求 数据库 客户端2 服务器 错做结果 客户端3 系统框架结构 客户端发送请求代码到服务期端的守护线程,守护线程根据代码的值判断本次请求要执行的数据处理操作,并生成相应的数据库处理语句发送给数据处理器,数据处理器根据守护线程发来的指令操纵数据库,完成数据处理,并把结果发送给守护线程,守护线程再把数据结果传回客户端。

第三章 关键技术Ⅰ(数据库设计)

3.1 系统角色业务流程分析 1读者

读者无需登录系统就可以查询图书信息;读者登录系统后,可以修改自己的部分个人信息,可以查询自己的图书借阅信息。

7

2管理员

超级管理员登录系统后,可以增添普通管理员,设置普通管理员的权限。普通管理员登录系统后,可以管理图书的信息、读者的信息以及设置系统参数。管理员登录后,还能借书给读者、接受读者归还图书,并把这些借书、还书信息登记到系统之中。

3.2 数据库设计

本系统设计了图书基本信息表(bookdata)、图书馆藏信息表(bookinfo)、读者基本信息表(reader)、借书还书表(lendinfo)、管理员基本信息表(librarian)以及系统参数信息表(parameter)等。这些表的结构见下几个:

1 图书基本信息表

字段名 数据类可否为空 型

长度 描述

id isbn name series authors publisher size pages price

数字型 NOT NULL 字符型 NOT NULL 字符型 NOT NULL 字符型 字符型 字符型 字符型 数字型 数字型

16 15 50 50 50 50 10 4 4 500 20 20

自动编号,主键 国际标准书号 书名 丛书名 作者 出版发行 图书开本 页数 定价 内容简介 图片 图书分类号

introduction 字符型 picture clnum

字符型 字符型

说明:图书基本信息表只存储了图书的基本信息。这里的出版发行属性实际上存储了三类信息,即出版信息、出版社名称、出版时间。在按照出版社或出

8

版日期查询图书时,采用模糊查询方式。也可以把此属性分解为三个属性分别存储。

2 图书馆藏信息表

字段名 数据类型

可否为空 长度 描述

id barcode isbn status duedate location

数值型 字符型 字符型 数值型 日期型 字符型

NOT NULL NOT NULL

16 20 15 2 8 20

自动编号,主键 图书条形码 国际标准书号 是否可借 图书应还时间 馆藏地点

说明:由于同一个ISBN号的图书往往在图书馆里有很多本,而且可能分别收藏在不同的地点,每本都以不同的条形码区分,每本书都有一个状态标志其当前是否可借,如果读书已经被借出,则记录其应还时间,一边读者查询。

3 读者信息表

字段名 数据类型 可否为空 长度 描述

id readerid passwd name gender address tel startdate enddate type

数字型 字符型 字符型 字符型 字符型 字符型 字符型 日期型 日期型 数值型

NOT NULL 16 NOT NULL 12 NOT NULL 32 NOT NULL 50

2 50 20

自动编号,主键 读者编号 登录密码 读者姓名 性别 单位地址 联系方式 办证日期 作废日期

1:大学生,2:研究

NOT NULL 8 NOT NULL 8 NOT NULL 2

9

生,3:教师

说明:读者信息里包括读者的借书证号、登录密码、读者姓名、性别、单位地址、联系方式、借书证开通日期及作废日期、读者类别等信息。这里。读者可以修改自己的登录密码、单位地址、联系方式等信息,其他信息只有管理员才能修改。

4 借阅信息

字段名 id readerid bookcode

数据类型 可否为空 数值型 字符型 字符型

NOT NULL NOT NULL NOT NULL

长度 描述 16 12 20 8 8 8 8 8

自动编号,主键 读者编号 图书条形码 借书日期 应还日期 还书日期 续借标识 超期天数 罚款金额

borrowdate 日期型 duedate returndate renew

日期型 日期型 数值型

overduedays 数值型 fine

数值型

说明:借阅信息里包括读者的借书证号、图书条形码、借书日期、应还日期、图书实际归还日期、续借标识(允许用户续借一次)、超期天数、罚款金额等信息。

5 管理员信息表

字段名 id userid name bookp reader

数据类型 数据型 字符型 字符型 数值型 数值型

可否为空 NOT NULL NOT NULL NOT NULL

10

长度 16 12 32 2 2

描述

自动编号,主键 账号 密码 图书管理权限 读者管理权限

parameter 数值型 2 参数管理权限

说明:管理员信息包括管理员账号、登录密码、权限等信息。超级管理员具备包括图书管理、读者管理、系统参数设置等所有的权限,其他管理员的管理权限则由超级管理员分配;

6 系统参数信息表

字段名 id type

数据类型 可否为空 数值型 数值型

NOT NULL NOT NULL

长度 16 2 2 2 4

描述

自动编号,主键 读者类别 借书数量 借期天数

超期还书每日罚款金额

amount 数值型 period

数值型

dailyfine 数值型

说明:系统参数信息包括读者的类别,该类别读者的借书数量、借期天数、超期还书时每日罚款金额等信息。

第四章 关键技术Ⅱ(主要是与数据库连接的几个Java类的实现)

4.1 实现系统的类及其之间的关系

为了使读者能够更加容易地理解整个系统设计的过程,本节只给出图书查询模块和读者借阅信息查询模块构成的信息查询系统的设计与实现。本查询系统有17个java类、2个配置文件和若干个图文件构成。其中,Library.java服务器端的主类,它可以运行在多个客户端。images目录里存放的是每本书的封面 图片;dbinfo.txt保持了客户端连接服务器时用到的参数。

各java类的功能

序号 1 2 类名 Library.java MainFrame.java 功能描述 客户端主类,它强调用MainFrame类启动客户端主界面 客户端主界面,显示主菜单、各功能模块界面 11

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 BookRetrievlPanel.java 图书信息检索面板,为读者提供查询界面 BookDetailsDialong MyBorrowPanel.java LibClient.java ServerInfoGetter.java BookDetails.java BookInLibrary.java BorrowInfo.java LibProtocals.java LibServer.java LibOpHandler.java LibDataAxxessor.java DbInfoGetter.java CurrDateTime.java 图书详情对话框,用于显示图书的基本信息及在馆情况 我的借阅面板,用于显示读者的图书借阅情况 系统客户端,用于连接服务器 服务器信息读取器,用于读服务器的IP地址和端口号 记录图书作者、书名、出版社、内容简介等信息 记录图书存放地点、数量、是否在馆、何时归还等信息 记录读者的借阅清单、何时借出、何时归还等信息 借口类,操作协议信息,客户端和服务器端都要实现它 服务器端主类,用于启动监听客户端操作请求的线程 操作处理器,即用于处理客户端操作请求的线程 数据存取器,接受操作处理器的指令,完成数据的存取 数据库信息读取器,用于数据库的连接参数 时间日期处理器,以不同的格式显示当前的时间和日期 ReaderLoginDialog.java 读者登录对话框,登录系统后才能查询、修改个人信息

各java类的功能

序号 1 2 配置文件 Servinfo.txt dbinfo.txt 功能描述 保存服务器中的IP地址和端口号 保存数据库的驱动程序、URL、用户名和密码

下面两图从客户端和服务器端给出各类之间的关系。其中,带箭头的虚线表示类之间的依赖关系,带空心箭头的实线表示类之间的继承或类与接口之间的实现关系。

12

Library 点 EMainFrame BookRetrievalPanel ServerInfoGttte LibClie ReaderLoginDial MyBorrowPanel BookDet BookDeDilo txt <<接口》 LibProto BorrowInfo BookInLibra 客户端各Java类之间的关系

LibServer 《接口》LibP LibOpHandler CurrDateTime DbInfoGetter LibDataAccessor Dbinfo.txt BookDetails BookInLibrar BorrowInfo 13

服务器端各Java类之间的关

客户端用到了12个java类和用于保存服务器参数的配置文件。Library类

是客户端入口类,它包括了main方法,创建了MainFrame对象,启动客户端主界面。MainFrame类是客户端的主框架,这个框架里包含了客户端的主菜单,个图形用户界面将根据用户对菜单更能的选择加载到这个框架里。使用

ServerInfoGetter类读取服务器IP地址、端口号信息,传给LibClient,以便同服务器实现信息的传递。

服务器端用到了10个Java类和用于保存数据库参数的配置文件。LibServer类是服务器端入口类,它包含了main方法,并启动服务器端的图书数据操作处理器,它接受客户端发来的请求;LibOpHandler类是服务器端的图书数据操作处理器,它接受LibClient发送来的请求,并将请求交给数据存取器

LibDataAccessor,LibDataAccessor根据从DbInfoGetter获取的数据库参数和从LibDataAccessor发来的数据请求去访问数据库,处理结束后再将返回通过

LibDataAccessor送回至客户端。下图揭示了客户端想服务器发送请求,服务器相应请求的过程:

客户端 BookRetrievalPane 图书查询面板 BookDetailsDialog 图书详情对话框 MyBorrowPanel 我的借阅面板 操作请求 LibClient 相应结束 请求代码 相应结果 网络 处理结果 LibOpHandler 处理请求 LibDataAccessor 数据请求 数据库 操作结果 数据流向

4. 2几个Java类的设计

12 LibProtocals.java

该类是接口类,保存了图书馆各种操作协议信息。客户端和服务端都要实现它。增加新的功能模块时,需要增加相应的协议信息。该类代码如下:

14

public interface LibProtocals {

public static final int OP_GET_BOOK_DETAILS=100;//读取图书详细信息 public static final int OP_GET_BOOK_LIBINFO=101;//读取图书在馆情况 public static final int OP_GET_BORROWINFO=102;//读取读者借阅信息 }

13 LibServer.java

该类是服务器端主类,用于启动监听客户端操作请求的线程。该类的代码如下:

import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;

//应用程序服务器端主类,启动服务期并等待客户的链接 public class LibServer {

protected LibOpHandler libOpHandler;//图书操作处理器 protected ServerSocket serverSocket;//服务器套接字 protected Socket clientSocket;//客户端套接字

protected boolean done;//是否结束监听客户端的请求 public LibServer(int thePort){ done=false; try{

log(\启动服务器\

serverSocket=new ServerSocket(thePort);//创建服务器端套接字

log(\服务器准备就绪\ }catch(IOException e){ log(e);

System.exit(1); }

while(! done){ try{

log(\服务器正在等待请求\

clientSocket=serverSocket.accept();//等待客户端请求 String

clientHostName=clientSocket.getInetAddress().getHostName();

log(\收到连接来自\的连接= = =\

libOpHandler=new LibOpHandler(clientSocket);//创建操作处理器线程

libOpHandler.start();//启动操作处理器线程 }catch(IOException e2){ log(e2); } }

15

本文来源:https://www.bwwdw.com/article/udyt.html

Top