基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc

上传人:哈尼dd 文档编号:3923637 上传时间:2019-10-10 格式:DOC 页数:31 大小:656.41KB
返回 下载 相关 举报
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc_第1页
第1页 / 共31页
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc_第2页
第2页 / 共31页
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc_第3页
第3页 / 共31页
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc_第4页
第4页 / 共31页
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc》由会员分享,可在线阅读,更多相关《基于嵌入式SQL技术数据检索功能的实现本科 毕业论文.doc(31页珍藏版)》请在三一文库上搜索。

1、本科毕业论文(设计) 论 文 题 目基于嵌入式 SQL 技术数据检 索功能的实现 姓名(学号) 系 别 信息工程学院 专 业 计算机科学与技术 导 师 姓 名 二 一一年 六 月 本科毕业论文(设计) 基于嵌入式基于嵌入式 SQLSQL 技术数据检索功能的实现技术数据检索功能的实现 摘要摘要:SQL 是面向集合的描述性语言,具有功能强、效率高、使用灵活等特点,而单纯的 SQL 语言是一种独立的、非过程性语言,很难实现具有过程性控制的完整应用系统。嵌入 式 SQL 语言就是将 SQL 语句直接嵌入到程序的源代码中,与其他高级程序设计语言相结 合,使 SQL 语句负责控制数据库,高级语言负责控制程

2、序流程,从而实现各种复杂应用的 处理。 本文在基于 SQL 技术的基础上,介绍了嵌入式 SQL 技术的发展、嵌入式 SQL 语言以及嵌入式 SQL 工作原理及流程,以 JAVA 作为宿主语言,以 “图书馆管理系统” 的设计为例,描述了嵌入式 SQL 技术的具体应用,重点设计并实现了数据的检索功能。 关键词:关键词: 嵌入式 SQL;宿主语言;JAVA ;JDBC The Implementation of Data Retrieval Based on Embedded SQL Technology Abstract: SQL is a descriptive language which f

3、acing the set, it has strong function, high efficiency, agile using and so on. While pure SQL language is independent and not the process of language, it hard to achieve application systems which with process sexual control, Embedded SQL language embedded the SQL statement to program source code dir

4、ectly, then combined other high-level programming language, Making the SQL statement responsible for controlling the database and Senior language is responsible for control processes, So as to realize the processing various complex applications. In this paper, on the basis of SQL technology, Introdu

5、ced the development of embedded SQL technology, embedded SQL language and embedded SQL working principle and process, As the host language in JAVA, With “library management system“ the design as an example, Describes the application of the embedded SQL technology, key design and realized data retrie

6、val functions. KeyKey words:words: Embedded SQL ; Host Language ; JAVA ;JDBC 本科毕业论文(设计) 目目 录录 1 绪论1 1.1课题背景.1 1.2国内外的发展及现状.1 1.3 课题研究的主要内容.2 2 嵌入式 SQL 技术 .2 2.1 SQL 和嵌入式 SQL 简介2 2.2 SQL 语句3 2.2.1 基本 SQL 语句 3 2.2.2 复杂 SQL 语句 4 2.3 嵌入式 SQL 语句.6 2.4 嵌入式 SQL 工作原理及流程 6 2.5 嵌入式 SQL 应用 7 2.5.1 宿主语言 JAVA 简介

7、 7 2.5.2 宿主语言 JAVA DB 引擎驱动.7 2.5.3 宿主语言 JAVA 应用程序接口JDBC 9 2.5.4 嵌入式 SQL 应用示例 14 3 数据检索功能的实现.17 3.1 图书管理系统 18 3.2 数据检索功能的设计 18 3.2.1 系统结构设计18 3.2.2 数据库设计19 3.3 数据检索功能的实现 21 总 结 26 致 谢 27 参考文献: .28 本科毕业论文(设计) 第 0 页 1 1 绪论绪论 1.11.1课题背景课题背景 数据库技术是现代信息科学与技术的重要组成部分,是计算机数据处 理与信息管理系统的核心。数据库技术研究和解决了计算机信息处理过程

8、中 大量数据有效地组织和存储的问题,在数据库系统中减少数据存储冗余、实 现数据共享、保障数据安全以及高效地检索数据和处理数据。 随着嵌入式系统软件的发展,编程语言从 10 多年以前的汇编为主流发 展到现在 C、C+、Java 为主流。另外,面向对象设计技术、组件技术等在嵌 入式系统软件设计中的应用也日益引起人们的重视。 嵌入式 SQL(英文: Embedded SQL)是一种将 SQL 语句直接写入 C 语言, JAVAL,FORTRAN, Ada 等编程语言的源代码中的方法。借此方法,可使得应用 程序拥有了访问数据以及处理数据的能力。在这一方法中,将 SQL 文嵌入的 目标源码的语言称为宿主

9、语言。 1.21.2国内外的发展及现状国内外的发展及现状 随着嵌入式 SQL 技术的普遍使用,支持嵌入式 SQL 的数据库产品也大量 出现:Oracle Database Ada Pro*Ada 在 Oracle 7.3 的版本中被加入产品族,并且在 Oracle 8 中被替换为 SQL*Module。但在此之后就一直没有更新2。SQL*Module 支持 Ada 83. C/C+ Pro*C 在 Oracle 8 时被替换成了 Pro*C/C+。之后 Pro*C/C+ 到 Oracle Database 11g 仍都在被支持。 COBOL Pro*COBOL 到 Oracle Databas

10、e 11g 仍都在被支持。 Fortran Pro*FORTRAN 在 Oracle 8 之后的 Oracle 版本中就不再被更新,但 Bug 修正 仍在维护中3。 本科毕业论文(设计) 第 1 页 Pascal Pro*Pascal 在 Oracle 8 之后的 Oracle 版本中就不再被更新3。 PI/L Pro*PL/I 自 Oracle 8 之后就不再被更新,但文档中仍然有记述3。 IBM DB2 IBM DB2 的版本 9 中提供了对于 C/C+,COBOL,Java 等宿主语言的嵌入式 SQL 的支持。 PostgreSQL C/C+ PostgreSQL 自版本 6.3 起就提

11、供了对于 C/C+的嵌入式 SQL 的支持,以 ECPG 组件的形式存在。 1.31.3 课题研究课题研究的主要内容的主要内容 首先,本文简要的叙述了嵌入式 SQL 的定义以及发展现状,并详细介绍 了嵌入式 SQL 的数据检索语句:基本嵌入式 SQL 数据检索功能语句和复杂嵌 入式 SQL 数据检索语句;然后,本文以 JAVA 为宿主语言,重点分析嵌入式 SQL 在宿主语言 JAVA 中的工作原理和处理流程 ,以及对 JDBC 驱动和 JDBC API 做了详细介绍;最后,针对嵌入式 SQL 和宿主语言 JAVA,以实例“图书 馆管理系统”演示嵌入式 SQL 的具体应用。 2 2 嵌入式嵌入式

12、 SQL 技术技术 2.12.1 SQL 和嵌入式和嵌入式 SQL 简介简介 SQL(Structured Query Language)结构化查询语言,是一种数据库查询 和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 SQL 是高级的非过程化编程语言,允许用户在高层数据结构上工作。它 不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式, 所以具有完全不同底层结构的不同数据库系统,可以使用相同的 SQL 语言作 为数据输入与管理的接口。它以记录集合作为操作对象,所有 SQL 语句接受 集合作为输入,返回集合作为输出,这种集合特性允许一条 SQL 语句的输出 作

13、为另一条 SQL 语句的输入,所以 SQL 语句可以嵌套,这使他具有极大的灵 本科毕业论文(设计) 第 2 页 活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功 能只需要一个 SQL 语句就可以达到目的,这也意味着用 SQL 语言可以写出非 常复杂的语句。 SQL 语言包含 4 个部分: 数据定义语言(DDL),例如:CREATE、DROP、ALTER 等语句。 数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、 DELETE(删除)语句。 数据查询语言(DQL),例如:SELECT 语句。 数据控制语言(DCL),例如:GRANT、REVOKE、CO

14、MMIT、ROLLBACK 等 语句。 SQL 语言包括三种主要程序设计语言类别的语句:数据定义语言 (DDL),数据操作语言(DML)及数据控制语言(DCL)。 嵌入式 SQL(英文: Embedded SQL)是一种将 SQL 语句直接写入 C 语言, COBOL,FORTRAN, JAVA 等编程语言的源代码中的方法。借此方法,可使得应 用程序拥有了访问数据以及处理数据的能力。在这一方法中,将 SQL 文嵌入 的目标源码的语言称为宿主语言。 在 SQL 标准的 SQL86(1986 年发布)中定义了对于 COBOL, FORTRAN, PI/L 等语言的嵌入式 SQL 的规范。在 SQL

15、89(1989 年发布)规范中,定义了对于 C 语言的嵌入式 SQL 的规范。一些大型的数据库厂商发布的数据库产品中,都 提供了对于嵌入式 SQL 的支持。比如 Oracle, DB2 等。 2.22.2 SQL 语句语句 2.2.12.2.1 基本基本 SQLSQL 语句语句 简单嵌入式 SQL 数据检索功能语句表示只是对单表的数据检索,其基 本语句为: “select from where group by having order by “ 例如: 本科毕业论文(设计) 第 3 页 查询学号为“S040901106”学生的姓名 表 2-1,studentInfo 表相关数据 StuIdS

16、tuNameDeptIdSex S040201101 任非 02M S040901102 王情 02F S040901103 戴丽 08F S040901106 郑治 08M SQL 语句: SELECT StuName FROM studentInfo WHERE StuId = S040901106; 2.2.12.2.1 复杂复杂 SQLSQL 语句语句 然而现实数据库项目中,对于数据库的数据检索可能设计有多个表,或要 求更复杂的数据检索 SQL 语句,所以有必要介绍几种复杂的嵌入式 SQL 数据 检索语句。 3.2.13.2.1 联接查询联接查询 (一一)内联接内联接 内连接查询操作列

17、出与连接条件匹配的数据行,它使用比较运算符比较被连 接列的列值。内连接分三种: 1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查 询结果中列出被连接表中的所有列,包括其中的重复列。 2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被 连接的列的列值。这些运算符包括、=、!。 3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使 用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 例,下面使用等值连接列出 authors 和 publishers 表中位于同一城市的作者和 本科毕业论文(设计) 第 4 页 出版社: SE

18、LECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city 又如使用自然连接,在选择列表中删除 authors 和 publishers 表中重复列(city 和 state): SELECT a.*,p.pub_id,p.pub_name,p.country FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city (二二)外连接外连接 内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采

19、用外连接时,它返回到查询结果集合 中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外 连接时)或两个边接表(全外连接)中的所有数据行。 如下面使用左外连接将论坛内容和作者信息连接起来: SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b ON a.username=b.username 以及他们所在的城市: SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as b ON a.username=b.username (三三)交叉连接交叉连接 交叉连接不带 WHERE 子句

20、,它返回被连接的两个表所有数据行的笛卡尔积, 返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以 第二个表中符合查询条件的数据行数。 例,titles 表中有 6 类图书,而 publishers 表中有 8 家出版社,则下列交叉连 接检索到的记录数将等 于 6*8=48 行。 SELECT type,pub_name FROM titles CROSS JOIN publishers ORDER BY type 本科毕业论文(设计) 第 5 页 2.32.3 嵌入式嵌入式 SQL 语句语句 (1)宿主变量 宿主变量就是在嵌入式 SQL 语句中引用主语言说明的程序变量 如:在

21、JAVA 语句中对程序变量:username、password 的进行数据库插入 操作 String sql = “insert into reader(username,password) values(“ + username + “,“ + password + “)“; 在嵌入式 SQL 语句中使用宿主变量前,必须采用 “+username + ” 的形 式给宿主变量说明。 2.42.4 嵌入式嵌入式 SQLSQL 工作原理及流程工作原理及流程 图 2.1 数据库产品中嵌入式 SQL 操作流程图 为了解决嵌入式 SQL 源码的处理流程问题,数据库厂商需要提供一个嵌入 式 SQL 的预编

22、译器,把包含有嵌入式 SQL 文的宿主语言源码转换成纯宿主语言 的代码。这样一来,源码即可使用宿主语言对应的编译器进行编译。通常情况 下,经过嵌入式 SQL 的预编译之后,原有的嵌入式 SQL 会被转换成一系列函数 本科毕业论文(设计) 第 6 页 调用。因此,数据库厂商还需要提供一些列函数库(图 2.1),以确保链接器能 够把代码中的函数调用与对应的实现链接起来。 2.52.5 嵌入式嵌入式 SQLSQL 应用应用 2.5.12.5.1 宿主语言宿主语言 JAVAJAVA 简介简介 Java,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设 计语言

23、和 Java 平台的总称。用 Java 实现的 HotJava 浏览器(支持 Java applet)显示了 Java 的魅力:跨平台、动态的 Web、Internet 计算。从此, Java 被广泛接受并推动了 Web 的迅速发展,常用的浏览器现在均支持 Java applet。 JAVA 项目运行环境平台(图 2.2): 图 2.2JAVA 程序运行环境平台图 2.5.22.5.2 宿主语言宿主语言 JAVAJAVA DBDB 引擎驱动引擎驱动 众所周知,在台式机领域,DB 是一个十分关键的基础软件。以往嵌入式 系统的软件可能更侧重于与硬件的交互与控制,但随着对嵌入式系统功能需 求的日益复

24、杂化,嵌入式系统软件中,信息、数据的保存与管理的比重也日 应用组件应用组件应用组件 .CLASS 文件库 DB 组件 JVM 本科毕业论文(设计) 第 7 页 益增加。在这样的背景下,嵌入式系统软件开发中,通过引入 DB 组件,对实 现软件整体框架结构的组件化与简单化,有着十分明显而重要的意义。 DB 引擎驱动的总体框架(如图 2.3):整个 DB 组件设计为 3 层结构,分 别为 JDBC 接口层、SQL 解释层和动作执行层。这 3 层之间呈单向依赖关系。 也就是说,SQL 解释层依赖于动作执行层,但动作执行层不依赖于其上面的两 层,可以单独存在而直接被使用。如果用户以使用方便为主要目的,可

25、采用 完全配置方式,应用程序通过 JDBC 接口层存取数据。反之,如果用户对空间 和效率要求较高,可仅配置动作执行层组件,应用程序直接调用动作执行层 的 API 进行数据的检过和更新等操作。 图 2.3 DB 引擎驱动的总体框架图 (1)JDBC 接口层 如前文所述是可选组件,旨在为应用程序提供一个标准的 DB 调用接口。 (2)SQL 解释层 本 DB 组件实现的 SQL 解释层,只实现了标准 SQL 的一个小子集,主要完 成 select、delete、insert、update、create table、drop table 等功能。 其中数据操作语句(select、delete、ins

26、ert、update)的解释要点之一是 where 条件子句的解释执行,类似于数学表达式求值算法。 JDBC 接口层 SQL 解释层 动作执行层 JVM 本科毕业论文(设计) 第 8 页 (3)动作执行层 动作执行层是整个 DB 组件的核心和关键,因为所有的 DB 操作最终都由 该层完成,同时用户也可以跳过上面的两层,直接调用该层的 API,以实现相 同的数据操作功能。 2.5.32.5.3 宿主语言宿主语言 JAVAJAVA 应用程序接口应用程序接口JDBCJDBC (1) JDBC 介绍 JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执

27、行 SQL 语句的 Java API(如图 2.6、图 2.7),可以为多种关系数据库提供统 一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 为工具/数据库开 发人员提供了一个标准的 API,据此可以构建更高级的工具和接口,使数据库 开发人员能够用纯 Java API 编写数据库应用程序。 Java 数据库连接体系结构是用于 Java 应用程序连接数据库的标准方法。 JDBC 对 Java 程序员而言是 API,对实现与数据库连接的服务提供商而言是接 口模型。作为 API,JDBC 为程序开发提供标准的接口,并为数据库厂商及第 三方中间件厂商实现与数据库的连接提供了标准方法(如

28、图 2.4)。JDBC 使 用已有的 SQL 标准并支持与其它数据库连接标准,如 ODBC 之间的桥接。JDBC 实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现 的接口。 Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等 特性,是编写数据库应用程序的杰出语言。所需要的只是 Java 应用程序与各 种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。 JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含 有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也 可以用 JDBC

29、通过 Intranet 将所有职员连到一个或多个内部数据库中(即 使这些职员所用的计算机有 Windows、 Macintosh 和 UNIX 等各种不同的操 本科毕业论文(设计) 第 9 页 作系统)。随着越来越多的程序员开始使用 Java 编程语言,对从 Java 中便 捷地访问数据库的要求也在日益增加。 图 2.4.JDBC 框架图 (2) JDBC 驱动类型 图 2.5JDBC 驱动类型说明图 JDBC-ODBC 桥(JDBC-ODBC bridge)(图 2.5) JDBC 调用ODBC 调用。要求 ODBC 代码、client 端代码 都要在客户机上安装。 本科毕业论文(设计) 第

30、 10 页 本地 API 部分 JAVA 驱动(Native-API partly-Java driver) JDBC 调用 数据库的 Client 端 API,也需要在客户机上 安装代码。 网络协议完全 JAVA 驱动(JDBC-Net pure Java driver) JDBC 调用 独立于任何 DBMS 的网络协议,该协议 将由另外一个服务器转换为某种 DBMS 协议。 本地协议完全 JAVA 驱动(Native-protocol pure Java driver) JDBC 调用 特定 DBMS 的网络协议。 (3) JDBC API JDBC API 功能: 建立与数据库的连接 发

31、送 SQL 语句 处理结果 本科毕业论文(设计) 第 11 页 (1 1)JDBCJDBC APIAPI 类:类: 图 2.6 JDBC API 所涉及的类图 (2)JDBC 类层次:类层次: 图 2.7 JDBC API 类层次图 (3 3)建立数据库的连接:)建立数据库的连接: 本科毕业论文(设计) 第 12 页 JDBC 的 DriverManager 查找到相应的数据库 Driver 并装载。 从系统属性 java.sql 中读取 Driver 的类名,并一一注册。 在程序中使用 Class.forName( )方法动态装载并注册 Driver。 如 Class.forName(“su

32、n.jdbc.odbc.JdbcOdbcDriver”), 注册 JDBC-ODBC 桥。 通过 DriverManager.getConnection( )与数据库建立连接 数据库连接串 URL,指定数据源以及使用的数据库访问 协议。 语法格式:jdbc: 例:通过 JDBC-ODBC 桥接驱动与 wombat 数据源建立连接。 Connection con = DriverManager.getConnection(“jdbc:odbc: wombat”,”username”,”password”); (4 4)传送)传送 SQLSQL 语句:语句: 在数据库连接上创建 Statement

33、 对象,将各种 SQL 语句 发送到所连接的数据库。 /* 传送 SQL 语句并得到结果集 rs */ Statement stmt = con.createStatement( ); ResultSet rs = stmt.executeQuery(“ SELECT a, b, c FROM Table1”); 对于多次执行但参数不同的 SQL 语句,可以使用 PreparedStatement 对象。 本科毕业论文(设计) 第 13 页 使用 CallableStatement 对象调用数据库上的存储过程。 (5 5)处理结果集:)处理结果集: 结果集是查询语句返回的数据库记录的集合。 在

34、结果集中通过游标(Cursor)控制具体记录的访问。 SQL 数据类型与 JAVA 数据类型的转换 根据 SQL 数据类型的不同,使用不同的方法读取数据。 /*处理结果集 rs*/ while (rs.next( ) int x = rs.getInt(“a”); String s = rs.getString(“b”); float f = getFloat(“c”); stmt.close( ); con.close( ) 2.5.42.5.4 嵌入式嵌入式 SQLSQL 应用示例应用示例 本节以图书馆管理系统的部分功能模块为例,演示说明 JAVA 语言中嵌入 SQL 的处理流程。 本科毕

35、业论文(设计) 第 14 页 图 2.8 用户登陆界面 图 2.9 用户登陆后操作界面 系统以用户登陆界面的初始界面,根据用户输入的用户名和密码,使用 getText()方法获取用户输入的值,并赋值给 java 定义变量“user”、 “pass”,利用 SQL 语句结合变量对数据库中的表 USER 进行数据匹配,用户 只有在输入与数据库相匹配的用户名和密码时,才能登陆系统,进如图 2.9 用 户操作界面 具体sql语句:“select * from user where name=“ + “ + user+ “ and pass=“ + “ + pass + “; 部分代码展示:部分代码展示

36、: 登陆时对数据库的操作: private void btn_okActionPerformed(ActionEvent e) String user = tf_user.getText(); / 获得用户名 String pass = pf_pass.getText(); / 获得密码 String username = “; int is_admin; 本科毕业论文(设计) 第 15 页 / 未输入用户名 if (user.equals(“) JOptionPane.showMessageDialog(this, “用户名不允许 为空!“); return; try / 在数据库中查询 S

37、tring sqlStr = “select * from user where name=“ + “ + user + “ and pass=“ + “ + pass + “; ResultSet result = BaseDao.executeQuery(sqlStr); if (result.next() username = result.getString(“name“); is_admin = result.getInt(“is_admin“); BaseDao.close(); else JOptionPane.showMessageDialog(this, “用户名或 密码不正

38、确!“); BaseDao.close(); return; GlobalVar.login_user = username; / 记录当前用户 / 进入主界面 Main main = new Main(); main.setPurView(byte) is_admin); this.dispose(); catch (Exception ex) 本科毕业论文(设计) 第 16 页 ex.printStackTrace(); 连接数据库部分: / 构造方法,创建数据库连接 private BaseDao() try if (conn = null) Class.forName(driver);

39、 / 加载数据库驱动 conn = DriverManager.getConnection(url, dbUser, dbPwd); / 建立数据库连接 else return; catch (Exception ee) ee.printStackTrace(); 实际查询操作部分: / 执行数据库查询操作 public static ResultSet executeQuery(String sql) try if (conn = null) new BaseDao(); return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

40、 ResultSet.CONCUR_UPDATABLE).executeQuery(sql); / 执行 本科毕业论文(设计) 第 17 页 数据库查询 catch (SQLException e) e.printStackTrace(); return null; 3 3 数据检索功能的实现数据检索功能的实现 本章以“图书馆管理系统”为例,介绍图书馆系统结构设计和数据库设计, 重点针对系统的“查询管理”模块的“图书信息查询”进行说明分析。 3.13.1 图书管理系统图书管理系统 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很 多的信息数据的管理,现今,有很多的图书馆都是初步开

41、始使用,甚至尚未 使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式 是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、 超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进 行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信 息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的 来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚 未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息 系统的开发的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采 取手工方式对图书借

42、阅情况进行人工管理,由于信息比较多,图书借阅信息 的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和 内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚, 时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询 费时、费力。如要对很长时间以前的图书进行更改就更加困难了。 本科毕业论文(设计) 第 18 页 本系统以研究 java 嵌入 SQL 为目的实现图书馆的基本功能:用户登陆、 图书管理、用户管理、用户借书还书管理。 3.23.2 数据检索功能的设计数据检索功能的设计 3.2.13.2.1 系统结构设计系统结构设计 本系统使用对象为图书馆管理员。其

43、中包括基本的信息维护、用户的 借还书管理、数据检索和系统管理四大模块。 错误用户名或密码 系统主页面 借还管理 基础维护菜单 查询管理 系统维护 用户信息 图书维护 借书 还书 图书查询 用户查询 密码修改 退出系统 新增用户信息 删除用户信息 修改用户信息 新增图书信息 删除图书信息 修改图书信息 管理员登陆 登陆 登陆失败 本科毕业论文(设计) 第 19 页 图 3.1 总体设计架构 3.2.23.2.2 数据库设计数据库设计 本系统数据库使用的是 MySQL 数据库,使用该数据库是因为本数据库的使 用方便性。首先建立一个数据库名为 library,在其中建立四个信息表,通过 输入数据建立

44、表或者直接建立空表并设置字段名和数据类型。建立的四个表分 别为用户信息表、图书信息表、借还书信息表、管理员信息表。数据库具体设 计如表 3-1,3-2,3-3,3-4 所示: 表 3-1 用户信息表(user) 字段名数据类型可否为空说明 idint(100) 不可自动编号 nameVarchar(20) 不可用户名 typeVarchar(20) 不可用户角色 sexVarchar(20) 不可性别 max_numVarchar(20) 不可最大借书数 days_numVarchar(20) 不可结束天数 表 3-2 图书息表(book) 字段名数据类型可否为空说明 idint(100) 不

45、可图书编号 nameVarchar(20) 不可图书名 typeVarchar(20) 不可种类 authorVarchar(20) 不可作者 本科毕业论文(设计) 第 20 页 translatorVarchar(20) 不可翻译者 publisherVarchar(20) 不可出版社 Publish_timeVarchar(20) 不可出版时间 priceVarchar(20) 不可价格 stockVarchar(20) 不可状态 表 3-3 借还书信息表(borrow) 字段名数据类型可否为空说明 book_idVarchar(20) 不可图书编号 reader_idVarchar(20

46、) 不可读者 ID borrow_dateVarchar(20) 不可借书时间 back_dateVarchar(20) 不可还书时间 is_backint(10) 不可是否归还 idint(100) 不可自动编号 表 3-4 管理员信息表(user) 字段名数据类型可否为空说明 idint(100) 不可自动编号 nameVarchar(20) 不可管理员用户名 passVarchar(20) 不可借用户密码 is_adminint(10) 不可是否为管理员 本科毕业论文(设计) 第 21 页 3.33.3 数据检索功能的实现数据检索功能的实现 该部分以系统查询图书信息模块为例,重点演示说明

47、在宿主语言 JAVA 中 嵌入 SQL 实现对书籍数据的检索。 图 3.2 图书信息查询操作界面(1) 图 3.3 图书信息查询操作界面(2) 本科毕业论文(设计) 第 22 页 用户以正确匹配的用户名和密码登陆系统后,点击“查询管理”进 入“图书查询”,可出现图 3.3,。 该部分图书检索功能以图书编号为检索条件,输入“图书编号”,点击 查询即可查找相应的图书信息,程序实现中,在查询图书的方法 BookQuery 内设置“图书编号”变量“id”,通过 String id = tf_id.getText();获取 用户输入的图书编号 ,最后通过对 sql 语句的执行,获取所要检索的图书信 息

48、SQL 语句: String sql = “select * from book“; if (id != null 部分代码展示:部分代码展示: 连接数据库部分: / 构造方法,创建数据库连接 private BaseDao() try if (conn = null) Class.forName(driver); / 加载数据库驱动 conn = DriverManager.getConnection(url, dbUser, dbPwd); / 建立数据库连接 else return; 本科毕业论文(设计) 第 23 页 catch (Exception ee) ee.printStack

49、Trace(); 前台实现数据检索的方法: private void btn_cxActionPerformed(ActionEvent e) String id = tf_id.getText(); / 获取图书编号 / 根据查询条件构建sql String sql = “select * from book“; if (id != null / 执行查询操作,将查询结果显示到界面 Object results = getResult(BookDao.selectBookList(sql); DefaultTableModel model = new DefaultTableModel(); table.setModel(model); model.setDataVector(resu

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1