图书馆管理系统毕业论文_第1页
图书馆管理系统毕业论文_第2页
图书馆管理系统毕业论文_第3页
图书馆管理系统毕业论文_第4页
图书馆管理系统毕业论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南科技学院新科学院2012届本科毕业论文(设 计)二叉排序树在图书信息检索中的应用研究学生姓名: 朱珂潮 所在院系: 新科学院信工系 所学专业: 计算机科学与技术 导师姓名: 朱艳丽 完成时间: 2012年 5月 10 日 iii二叉排序树在图书信息检索中的应用研究摘 要随着关系数据库技术的应用越来越广泛,二叉树算法、结构化查询语言等研究对数据库查询有着实际的意义。本文提出了一种用二叉排序树来表示关系表的方法,来提高图书信息的查询效率。本文使用jsp程序设计语言、myeclipse开发工具和mysql数据库进行开发一套图书管理系统,并重点阐述基于二叉排序树算法的信息检索模块的实现过程,通过比

2、较测试,实现了相应的功能,满足了系统需求,达到了系统设计的预期目标,提高了工作效率。本系统中包含5个功能模块:综合检索,登录管理,读者管理,图书管理和图书借还。此系统既克服传统检索方式的工作量大、效率低下,又能够使图书查询工作快捷化,规范化,真正实现图书管理的方便化。关键词:二叉排序树,图书管理系统,jsp,信息检索the application of binary sort tree in the book information retrievalabstractwith the application of relational database technology is more a

3、nd more extensive, binary tree algorithm, and structured query language research has practical meaning for database queries. this paper puts forward a kind of binary sort tree to represent a relationship chart and improve the library information query efficiency.this paper used jsp programming langu

4、age, myeclipse development tools and mysql database to develop a books management system.it focuses on binary sorted tree algorithm applied in information retrieval in the library management system, and designs detailed the information retrieval module in system, by comparison tests, it realizes the

5、 corresponding function and meets the system requirements, and reaches the target of system design, improves work efficiency. this system contains 5 functional modules: integrated search, log management, reader management, book management and circulation of books.this system is to overcome large wor

6、kload and low efficiency of the traditional way, and it also could make book search work fast, standardized, and realize the convenience of book management truly.keywords: binary sort tree,book management systems,jsp, information retrievaliii目 录1.绪 论11.1 目前图书管理系统存在的问题11.2 课题意义11.3 主要任务11.4 论文的工作和安排2

7、2. 设计可行性与开发环境概述22.1 可行性分析22.2 开发环境简介32.2.1 myeclipse32.2.2 tomcat32.2.3 mysql42.3开发技术概述42.3.1 jsp技术42.3.2 jdbc53. 系统分析与总体设计53.1系统分析53.1.1 系统目标53.1.2 图书管理系统总体结构图53.1.3 用户类和用户特性63.2总体设计73.2.1 功能描述73.2.2 管理员详细功能描述73.2.3 用户详细功能描述74. 详细设计74.1 后台数据库的创建74.1.1 数据的导入84.1.2 数据库各信息表的结构设计84.2 二叉排序树检索的实现104.2.1

8、二叉排序树的构建104.2.2 数据的插入124.2.3 数据的插入过程144.2.4 检索过程174.3 前台jsp页面的实现174.3.1 主界面174.3.2 登录模块程序设计184.3.3 信息维护模块195. 软件测试205.1 软件测试的方法与步骤205.2 评价22结论22参考文献23致 谢241.绪 论1.1 目前图书管理系统存在的问题(1)检索速度慢、效率低目前大多数的图书馆系统采用的是b/s(浏览器/服务器)结构的管理软件,其数据库表的查询操作大部分使用的是顺序查找法,即从第一行记录顺序的查找到满足查询条件的记录,这种查找方法算法简单,对表结构无任何要求。但是当数据量的很大

9、时,查找的时间复杂度很大,查找效率会很低。(2)借书、还书工作量大借书、还书频率越大,说明图书馆的作用越大。然而随之而来的大量的借书、还书登记、实存图书的更新等处理工作,其工作量之大,往往是人工操作所难以胜任的,而且经常会出现这样那样的差错。1.2 课题意义随着计算机的广泛应用,其逐步成为现代化的标志。图书馆或者一些企业内部,甚至是书店,在正常运行过程中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息、还书信息。因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高图书馆或者企业内部对图书存销的自动化的

10、管理,用结构化系统分析与设计的方法,建立一套有效的图书信息管理系统,既可以减轻工作,将工作科学化、规范化,提高图书馆信息管理工作的质量,又能够更快速的满足读者的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的1。为此,本文介绍了基于二叉排序树的图书管理系统的设计。图书管理系统的主要功能是实现图书馆图书的借阅和归还管理。除了这些核心功能外,还包括一些基本和辅助功能,它们是:登录设计、读者管理、图书管理、综合检索。1.3 主要任务(1)用二叉排序树算法实现查询优化;(2)实现图书馆对所藏图书的按书名、isdn等多方面的查询,最大的方便读者对所需图书的查询;(3)建立图书馆外借读者数

11、据库,方便工作人员对读者进行有效管理;(4)实现图书馆对新书入库,旧书注销的简单处理,方便进货;1.4 论文的工作和安排本次设计的目标是,开发一个基于二叉排序树应用的图书管理系统。借助该系统,管理员通过快捷可靠的数据库管理,方便的管理图书馆的信息资料,规范化的管理读者用户,设定不同用户权限,方便读者的使用,最终达到提高图书馆资源利用效率的目的。论文设计和实现了图书管理系统,可以根据用户的不同权限,对图书馆的的各种信息进行添加、删除、修改或查询操作。论文分为五个部分:第一章即本章绪论,简述图书管理系统这个课题的背景情况以及开发本系统的意义。第二章为设计可行性与开发环境概述,概述了本课题研究、设计

12、、开发中使用的工作环境,设计、开发平台,以及实现的软件开发技术。第三章为系统分析与总体设计,本章中根据系统需要实现的功能,设计了图书信息、读者信息、留言信息、图书借阅信息、读者类型信息等表。第四章为详细设计,详细描述了本系统中各模块的设计情况,并给出了系统总体界面的设计方案。为程序设计与编码各主要功能模块的实现方法和部分关键代码,同时提供了个主要界面运行的参考图片,以更直观了解系统的实现情况。第五章为软件测试,测试系统功能实现并对测试结果进行记录分析。第六章为结束语,为此次毕业设计做一个总结,总结所获得的经验和体会。2. 设计可行性与开发环境概述本章详细的概述了本课题研究、设计、开发中使用的工

13、作环境,设计、开发平台,以及实现的软件开发技术。2.1 可行性分析采用现代化统一的计算机信息网站系统,能够有效优化图书馆管理系统,使其高效的发挥最大作用,能够迅捷的为读者提供相应的服务。开发本系统技术上的可行性分析主要分析技术条件能否顺利完成开发工作,软、硬件能否满足需要。本系统采用jsp开发出友好美观的人机界面,便于用户理解、操作。数据库管理系统采用mysql,它能够处理大量数据,同时保持数据的完整性、安全性。因此本系统的开发平台已成熟可行。硬件方面,在科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越便宜,因此硬件平台也能够满足本系统所需。2.2 开发环境简

14、介2.2.1 myeclipsemyeclipse企业级工作平台(myeclipse enterprise workbench ,简称myeclipse)是对eclipse ide的扩展,利用它我们可以在数据库和j2ee的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的j2ee集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持html, struts, jsf, css, javascript, sql, hibernate。在结构上,myeclipse的特征可以被分为7类:j2ee模型,web开发工具,ejb开发工具,应用程序服务器的连接器,j2ee项目

15、部署服务,数据库服务,myeclipse整合帮助。对于以上每一种功能上的类别,在eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。myeclipse结构上的这种模块化,可以让我们在不影响其它模块的情况下,对任一模块进行单独的扩展和升级。简单而言,myeclipse是eclipse的插件,也是一款功能强大的j2ee集成开发环境,支持代码编写、配置、测试以及除错。2.2.2 tomcattomcat服务器是一个免费的开放源代码的web 应用服务器。它是apache 软件基金会(apache software foundation)的jakarta 项目中的一个核心项目,由apach

16、e、sun 和其他一些公司及个人共同开发而成。由于有了sun 的参与和支持,最新的servlet 和jsp 规范总是能在tomcat 中得到体现。tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试jsp 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好apache 服务器,可利用它响应对html 页面的访问请求

17、。实际上tomcat 部分是apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与apache 独立的进程单独运行的。2.2.3 mysqlmysql主要目标是快速、健壮和易用。最初是因为我们需要这样一个sql服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,mysql就开发出来。mysql是一个真正的多用户、多线程sql数据库服务器。sql(结构化查询语言)是世界上最流行的和标准化的数据库语言。mysql是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。mys

18、ql是一个精巧的sql数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(api)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与apache和php/perl结合,为建立基于数据库的动态网站提供了强大动力。2.3开发技术概述2.3.1 jsp技术java server pages 技术是一个纯java平台的技术,它主要用来产生动态网页内容。在传统的网页html文件中加入java程序片段和jsp标记,就构成了jsp网页。web服务器接收到访问jsp网页的请求时,首先执行其中的程序片段,然后将执行结

19、果以html格式返回给客户。jsp是基于java servlet以及整个java体系的web开发技术,利用这一技术可以建立先进、安全、快速和跨平台的动态网页。jsp在多个方面加速了动态的web页面的开发:程序写一次,到处可以运行。jsp在设计时,充分考虑到应用平台的无关性。依赖于java的可移植性,jsp得到目前许多流行操作平台的支持,可在apache、netscape、iis等服务器上执行。执行速度快。jsp页面只需编译一次转化为java字节代码,其后一直驻留于服务器内存中,加快了对jsp页面的响应速度。若不考虑jsp页面第一次编译所花的时间,则jsp的响应速度要比asp快得多。java的优

20、势。jsp技术是用java语言作为脚本语言的。跨平台、成熟、健壮、易扩充的java技术使得开发人员的工作在其他方面也变得容易和简单。java语言通过提供防止内存泄漏的方法,在内存管理方面大显身手。加之,jsp为应用程序提供了更为健壮的意外事件处理机制,充分发挥了java的优势。jsp标签可扩充性和跨平台的可重用性。jsp技术能够使开发者扩展jsp标签得以应用,jsp开发者能定制标签库,大大减少对脚本语言的依赖。由于定制标签技术,使网页制作者降低了制作网页和向多个网页扩充关键功能的复杂程度。jsp组件(企业javabeans,javabeans或定制的jsp标签)都是跨平台可重用的。javabe

21、ans和企业javabeans组件可以访问传统的数据库,并能以分布式系统模式工作于unix和windows平台。2.3.2 jdbcjdbc由一组java语言编写的类和接口组成,使用内嵌式的sql,主要实现三方面的功能:建立与数据库的连接,执行sql声明以及处理sql执行结果。jdbc支持基本的sql功能,使用它可方便地与不同的关系型数据库建立连接,进行相关操作,并无需再为不同的dbms分别编写程序10。3. 系统分析与总体设计3.1系统分析3.1.1 系统目标本系统主要建立一个基于b/s模式的图书管理系统,其中检索模块应用二叉排序树算法实现,可以通过使用系统的两种用户类型操作来实现:(1)对

22、于读者在本系统的应用下可实现按照多种方式(如:书名,编号,isdn)查询图书馆的书籍,借阅图书,归还图书,并且能够查询自己的借阅图书情况。(2)对于图书馆管理员能够实现方便的对图书进行查询,方便的进行读者借阅情况查询,方便的进行借书还书处理等,便捷的对图书信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。3.1.2 图书管理系统总体结构图绘制系统结构图的过程,实际上就是对系统功能模块进行分解设计的过程。系统结构图将会使用户能直观的了解系统的结构模式,理解系统的各个功能的结构,能更好地方便用户使用和理解整个系统。本系统的结构图如下:图书管理系统管理员登录用户

23、登录图书信息维护用户信息维护系统信息维护借阅归还操作个人信息查询图书信息查询借书记录查询图3-1系统的结构图根据需求分析的结果,按照“低耦合、高内聚”的原则,本系统将划分为以下主要功能模块:综合检索功能模块,登录功能模块,读者管理功能模块,图书管理功能模块和图书借还功能模块。3.1.3 用户类和用户特性图书借阅管理系统是一个基于b/s模式的对图书馆进行高效率管理的应用系统,它的用户主要是读者和图书管理员,学生通过该系统进行图书查询进而对自己需要的图书进行借阅及自己的借阅情况进行查询,图书管理员则通过本系统实现对图书及读者的高效管理2。两类用户的具体描述如下表所示:表3-1用户具体描述用户类描述

24、读者读者是该系统的重要的使用角色,他们通过登录该系统,可以查询自己需要的图书信息,也可以查询自己得借阅情况。图书管理员图书管理员是该系统的另一个重要使用者,图书管理员通过该系统进行图书的增加,修改,删除,分类管理等操作,实现对读者借阅归还图书的方便操作,实现对系统中图书,读者,读者借阅情况的查询,信息更改维护等操作,管理读者类型等图书馆的基本操作。3.2总体设计3.2.1 功能描述图书管理系统的主要任务是实现读者迅速检索查询,方便借阅归还图书,图书管理员高效的完成系统的各项基本操作,图书管理系统要完成一下功能:(1)登录读者、图书管理员进入该系统必须登录,身份验证正确了才可以进入该系统。(2)

25、综合检索功能对图书可以通过分类检索,查询相关图书信息。(3)用户管理功能对用户进行添加,修改,删除等操作。(4)查询功能对图书馆的图书信息,借阅信息,读者用户等信息进行查询。3.2.2 管理员详细功能描述(1)用户管理功能对用户的类型和用户档案进行管理,包括添加,修改,删除用户类型和用户用户的相关信息,管理不同类型用户借阅图书的数量。(2)图书管理功能包括对图书信息的管理,可以增加,修改,删除图书,丰富具体图书的信息,对不同图书进行分类操作。3.2.3 用户详细功能描述查询图书信息功能主要包括:对图书馆图书信息进行查询,对自己当前借阅书籍进行查询,对图书归还到期进行查看。4. 详细设计4.1

26、后台数据库的创建数据库是整个系统的基石,数据库的设计优劣直接影响到整个系统的设计成败,本节对数据库的设计进行专门阐述。数据库是数据管理的最新技术。十多年来数据库管理系统已从专用的应用程序发展成为通用的系统软件。由于数据库具有数据结构化,最低冗余度,较高的程序与数据独立性,易于扩充,易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。因此不仅大型计算机及中小型计算机,甚至微型机都配有数据库管理系统6。数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。数据库及其应用的性能都建立在良好的数据库设计的基础之上,数据库的数据是一切操作的基础,

27、如果数据库设计不好,那么其它一切用于提高数据库性能的方法收效都是有限的。数据库设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。整个系统所包括的信息有图书信息、读者信息、留言信息、图书借阅信息、读者类型信息。可将这些信息抽象为下列系统所需要的数据项和数据结构:(1)图书信息(图书编号,图书名称,作者,书柜号,isbn,出版社,借阅状态)(2)用户信息(学号,姓名,性别,角色,院系,班级,年级,毕业时间,图书卡号)(3)管理员信息(账号,密码,)(4)图书借阅记录(图书编号,读者id,借出时间,类别,图书卡号,标签,应还时间)4.1.1 数据的导入面对六万条的数据记录,

28、本设计使用excel中的concatenate (text1,text2,.) 函数,将几个文本字符串合并为一个文本字符串。h2=concatenate("insert into t_bookinfo values('",a2,"','",b2,"','",c2,"','",d2,"','",e2,"','",f2,"');")。然后,选中h列整列复制,生成t_

29、bookinfo表数据的插入语句。4.1.2 数据库各信息表的结构设计(1)图书信息表图书信息表主要用于存储图书馆中所藏图书的相关信息,其中的相关信息是在图书入库时由操作员进行添加完善,此表主要用于用户和管理员对馆中图书的查询,系统用户根据图书的属性进行查询,便可得知图书的其他相关信息。表的具体结果如下:表3-1图书信息表t_bookinfo字段名称数据类型字段长度是否为空说明bookidvarchar30nokeybooknamevarchar40no 书名authorvarchar20no作者pressvarchar40no 出版社isbnvarchar40nobookcaseldvarc

30、har40no书柜号(2)用户信息表用户信息表的设计是为了图书馆管理员对用户进行管理,其中用户id,不同类型证件的号码都是唯一的,是用户在借阅图书时需要输入对用户身份进行识别的信息。表的具体结构设计如下:表3-2用户信息表t_studentinfo字段名称数据类型字段长度是否为空说明stu_idvarchar40nokeynamevarchar20no 姓名sexvarchar10no 性别rolevarchar10no 角色yuanxivarchar30no院系stu_classvarchar20yes 班级gradevarchar30 no 年级graduationvarchar30yes

31、 毕业日期library_card_idvarchar40no图书卡号(3)图书借阅信息表该表的设计是用于对读者借阅图书进行管理,表中图书id属性是对借阅图书的唯一性识别标识,用户id号记录借阅的相应读者,表的具体结构设计如下:表 3-3图书借阅信息表check_out_info字段名称数据类型字段长度是否为空说明check_out_idvarchar10nokeystu_idvarchar10no (外键)book_idvarchar10no (外键)classifiervarchar20no 借出时间last_opvarchar30nosuoshuhaovarchar20no 应归还时间4

32、.2 二叉排序树检索的实现二叉排序树(binary sort tree)又称二叉查找树。它或者是一棵空树;或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;本模块实现的是基于二叉排序树的图书检索功能,是本设计的核心部分。它是按图书名称进行检索的,从数据库中拿到所有的图书信息,根据图书名称构建成一棵完整的二叉排序树。由此需要将图书名转化成拼音再提取首字母作为关键字然后由此进行构建树。以“mmmmmmmmm”为根节点,进行插入。4.2.1 二叉排序树的构建二

33、叉树数据存储结构在本系统中以对象的形式表现:其中类binarytree是一个二叉树对象,binarytreenode类对应的是二叉树节点,类binarytree只需要持有一个根结点binarytreenode对象即可。public class binarytree private binarytreenode root;而binarytreenode类需持有一个book对象(用于存储节点的图书信息),一个list<book>对象(若拼音首字母相同,则需要将各个book信息存储到list<book>信息中),两个binarytreenode对象,分别用于存储它的左子节点和

34、右子节点,这样的话,每个节点将持有它的两个子节点的对象,可以实现对各个节点联通起来,构成树结构。public class binarytreenode private book data;private list<book> datas = new arraylist<book>();private binarytreenode lefttreenode;private binarytreenode righttreenode;根据数据库图书表中书籍名称的首字母信息(字符ascii码的大小),构造二叉排序树。例如我们在图书表中搜索到五条记录分别是:生态保护、摩托车驾驶与

35、安全、中国国家书目、世纪大讲堂、传感器原理、中国园林艺术、二级c语言程序设计、信息安全。提取出它们名称首字母的前四项,构造一个线性表(stbh,mtcj,zggj, sjdj,cgqy,zgyl,ejcy,xxaq) ,以表中stbh为根结点,以后的各个数据,逐个插入结点,在插入过程的每一步,原有树结点位置不再变动,只是将新数据的结点作为一个叶子结点插入到合适的位置,使树中任何结点的数据与其左、右子树结点数据之间的关系仍然符合对二叉排序树的要求,构造出二叉排序树如图4-1所示,并按照二叉排序树的原理建立对应的二叉树关系表。zggjmtcjstbhzgylejcysjdjxxaqcgqy图4-1

36、二叉排序树简例为实现二叉排序树的构建,就需要使用合适的关键字来实现排序。本系统采用书名作为关键字。由于书名情况复杂,现提取书名拼音首字母作为比较的具体方法。为此,需要写一个将汉字转化为拼音并提取首字母的java类(com.zkc.utils.pinyin.java),通过网上查找,它需要用到pinyin4j.jar包。提取书名拼音首字母的具体实现如下:import net.sourceforge.pinyin4j.pinyinhelper;import net.sourceforge.pinyin4j.format.hanyupinyincasetype;import net.sourcefo

37、rge.pinyin4j.format.hanyupinyinoutputformat;import net.sourceforge.pinyin4j.format.hanyupinyintonetype;import net.sourceforge.pinyin4j.format.hanyupinyinvchartype;public static string getpinyinheadchar(string str) hanyupinyinoutputformat t3 = new hanyupinyinoutputformat();t3.setcasetype(hanyupinyinc

38、asetype.lowercase);t3.settonetype(hanyupinyintonetype.without_tone);t3.setvchartype(hanyupinyinvchartype.with_v);string convert = ""for (int j = 0; j < str.length(); j+) char word = str.charat(j);string pinyinarray = pinyinhelper.tohanyupinyinstringarray(word,t3);if (pinyinarray != null

39、) convert += pinyinarray0.charat(0); else convert += word;return convert;4.2.2 数据的插入为了尽量使二叉树平衡,取a-z中间的字母m,所以设置根结点为“mmmmmmmmmmmmmm”,新的结点要插入二叉树时,需要将该结点的拼音首字母与该二叉树现有的结点进行比较,不断递归,直到找到该结点的位置,然后此新结点就插入成功了。为此,使用了一个比较两个字符串的方法com.zkc.utils.comparecharactor类。将新的节点拼音首字母与树中的某个结点比较,有三种特殊情况:(1)若新结点比原结点短且共有的部分相等,视

40、为新结点比原结点小;(2)若新结点比原结点长且公共部分相等,视为新结点比原结点大;(3)书名的拼音首字母完全一样时,可存同一结点,新增了一个list集合。private book data;private list<book> datas = new arraylist<book>();/list集合比如“数据结构(sjjg)”已是树中结点,新结点“数据结构算法(sjjgsf)”和“审计局(sjj)”将要插入此树。它就需要与“数据结构(sjjg)”进行比较,我们定义“审计局(sjj)”为“数据结构(sjjg)”左孩子,“数据结构算法(sjjgsf)”为其右孩子。当“时间

41、结构(sjjg)”要插入时,定义它一起存入“数据结构(sjjg)”结点的列表中。数据插入过程的具体实现代码如下:public static int comparecharsmall(string str,string obj) if(str.length()<obj.length() /int j=str.length();for(int i=0;i<str.length();i+) if(str.charat(i)<obj.charat(i)return 1;else if(str.charat(i)>obj.charat(i)return 2;else contin

42、ue;return 1;else if(str.length()>obj.length()for(int i=0;i<obj.length();i+)if(str.charat(i)<obj.charat(i)return 1;else if(str.charat(i)>obj.charat(i)return 2;else continue;return 2;elsefor(int i=0;i<obj.length();i+)if(str.charat(i)<obj.charat(i)return 1;else if(str.charat(i)>obj

43、.charat(i)return 2;else continue;return 0;4.2.3 数据的插入过程在数据插入时,需要不止一次进行比较,所以在com.zkc.utils.binarytree.java类中用了递归方法:public void insertrecursion(binarytreenode node,book book),直到跟叶子节点比较完毕。public void insertrecursion(binarytreenode node, book data) string newbookname = pinyin.getpinyinheadchar(data.getb

44、ookname();string nodebookname = pinyin.getpinyinheadchar(node.getdata().getbookname();if (node = null) | (node.getdata() = data) return;if (comparecharactor.comparecharsmall(newbookname, nodebookname) = 1) if (node.getlefttreenode() = null) binarytreenode temp = new binarytreenode();temp.setdata(dat

45、a);node.setlefttreenode(temp); else insertrecursion(node.getlefttreenode(), data); else if (comparecharactor.comparecharsmall(newbookname, nodebookname) = 2) if (node.getrighttreenode() = null) binarytreenode temp = new binarytreenode();temp.setdata(data);node.setrighttreenode(temp); else insertrecu

46、rsion(node.getrighttreenode(), data); else list<book> datas = new arraylist<book>();datas=node.getdatas();datas.add(data);node.setdatas(datas);为了搜索某本书,遍历二叉排序树时,同样需要比较若干次,直到找到该书或者比较到叶子结点,比较完毕。public list<book> isexist(string booknamehc, binarytreenode searchroot) / string newbooknam

47、e=pinyin.getpinyinheadchar(data.getbookname();string nodebookname = pinyin.getpinyinheadchar(searchroot.getdata().getbookname();system.out.println(nodebookname);int comparenum = comparecharactor.comparecharsmall(booknamehc,nodebookname);if (comparenum = 1) if (searchroot.getlefttreenode() != null) r

48、eturn isexist(booknamehc, searchroot.getlefttreenode(); else if (comparenum = 2) if (searchroot.getrighttreenode() != null) return isexist(booknamehc, searchroot.getrighttreenode(); else list<book> books = new arraylist<book>();if (searchroot.getdatas().size() = 0) books.add(searchroot.g

49、etdata();return books; else books.removeall(books);books = searchroot.getdatas();books.add(searchroot.getdata();return books;4.2.4 检索过程当第一次进行二叉排序树查询时,花费的时间比较多,因为它需要构建树,但以后的查询就可以无限用这棵构建好的二叉排序树进行查询。然后需要用到一个单例运行模式,这个对象的只能被构建一次,且此对象保存有从数据库中查询出的数据并构建成的二叉排序树,却可以被无限使用。利用类里边的方法获得这个对象。public list<book>

50、 query(string bookname) throws exception selectbooks selb= selectbooks.getselectbookobj();string booknamehc=pinyin.getpinyinheadchar(bookname);return selb.getbinarytree().isexist(booknamehc, selb.getbinarytree().getroot();4.3 前台jsp页面的实现4.3.1 主界面本模块index.jsp引用我校主页背景,中间搜索框运用iframe框架。打开主页默认显示searchlike

51、.jsp,呈现搜索信息(输入框、条件按钮)。图4-1 图书管理系统主页面4.3.2 登录模块程序设计index.jsp主页页面中右上角有一个login圆形图片链接,用于打开登录窗口(login.jsp)。点击index.jsp页面之后,iframe将会显示login.jsp页面信息。本模块主要是用户通过图书管理系统的首页登录进入该系统。用户输入正确的用户名和密码,如果登录信息有错误,则系统提示登入错误的信息,并且禁止系统用户进行任何操作。图书管理系统的管理员登录页面如图4-2所示。图4-2 管理员登录页面用户在登录页面输入用户名和密码,选择登录,登录成功则跳转到系统的首页,否则提示错误信息。图

52、4-3 用户登录流程图图4-4 读者查询页面4.3.3 信息维护模块(1)图书信息维护模块本模块可根据图书的书名进行查询,对图书的信息进行修改,删除等操作。其操作界面如下图所示:图4-5 图书信息维护页面(2)用户信息维护及借阅模块本模块管理员可以对图书馆读者进行添加、删除等操作,界面如下:图4-6 用户信息维护页面本模块读者可以查询自己的借阅记录,并获取未归还图书的信息。界面如下:图4-7 图书借阅页面5. 软件测试5.1 软件测试的方法与步骤打开myeclipse,开启tomcat,加载library_search工程,在ie浏览器中输入http:/localhost:8080/libra

53、ry_search/,进入登录页面,输入账号密码进入主页。从文本框输入想要查找的书名,并且勾选一个或多个其下的复选框,点击搜索。例如:输入“新中国大事典”,三种查询方式同时勾选,点击搜索,如图5-1。图5-1 搜索“新中国大事典”跳转结果页面,显示搜索结果,如图5-2。图5-2 搜索“新中国大事典”显示结果又如搜索“中国大百科全书”显示结果如下:图5-3 搜索“中国大百科全书”显示结果系统测试过程严格按照系统功能流程图,经过单元测试、子系统测试和系统测试。通过单元测试,查找出了系统各模块内部的错误;通过子系统测试,发现了模块间相互协调和通信上的错误;通过系统的集成测试,发现了软件设计过程中存在

54、的错误。通过改正错误的设计和实现部分,保证了图书借阅管理系统可以完成需求分析中制定的需求。5.2 评价从上面的测试中可以看出,使用二叉排序树检索比顺序查询,数据库查询速度都快,平均速率提高达十倍以上。此系统可以完成系统登录、图书管理、读者管理、借阅管理和综合检索等功能。读者在本系统的应用下可实现按照书名或isdn查询图书馆的藏书,能够查询自己的借阅图书情况。图书馆工作人员能够实现便捷的对图书信息进行添加、修改、删除等操作,对读者信息进行相关添加,修改、删除等操作。测试阶段的工作一方面发现了系统的各种错误,另外一方面也验证了修改后的系统能够实现提高图书馆工作效率的预期目的。结论在myeclips

55、e开发环境下,运用jsp网络编程语言和div+css框架和mysql数据库完成了b/s模式的图书管理系统。系统基本上实现了预期的各项功能,达到了任务书中的主要设计内容的各项任务,整个系统也在经过测试和不断地改正之后能够顺利运行。基本上实现了开题报告中的需求设计在程序编写,该系统能够实现:(1)读者在本系统的应用下可实现按照各种方式(如:书名,isdn)查询图书馆的藏书请求,方便的查询图书,能够查询自己的借阅图书情况。(2)图书馆工作人员能够实现方便的对图书进行查询,方便的进行读者借阅情况查询,方便的进行借书还书处理等,便捷的对图书信息进行添加、修改、删除,分类管理等操作;对读者信息进行相关添加,修改等操作;对系统用户进行添加、修改、删除、权限设置等操作。由于时间有限

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论