图书管理系统毕业论文

更新时间:2024-05-09 11:44:01 阅读量: 综合文库 文档下载

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

毕业设计报告(论文)

图书管理系统的设计与实现

所 属 系: 计算机工程系 专 业: 计算机科学与技术(软件工程方向) 学 号: XXXXXXXX 姓 名: XXXXXX 指导教师: XXXXXX 起止日期: 2014.02.19 - 2014.06.02 设计地点: 东南大学成贤学院

东南大学成贤学院毕业设计报告(论文)

诚 信 承 诺

本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。如论文涉及任何知识产权纠纷,本人将承担一切责任。

学生签名: 日 期:

图书管理系统的设计与实现

摘要

当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。

本系统就是为了管理好图书馆信息而设计的。

很多学校都有自己的图书馆,而传统的图书管理全部采用手工管理很费时费力,效率很低,而且也不利于图书的查找与管理。这些缺点随着图书数量的增加会更加明显。目前也有很多的高校也已有了自己的图书管理系统,但是在使用中发现其管理系统的功能不够完善与丰富,不能更好的满足图书管理的需要。本课题着力于设计开发一个功能完善实用的图书管理系统。

该系统为针对目前普遍的图书管理系统存在的功能不全、操作复杂、系统要求高等一系列问题,而设想一个具有个性化的图书管理系统。基于此问题,有必要建立一个图书管理系统有效的支持Web服务,以使图书管理工作规范化、系统化、程序化,提高信息处理的速度和准确性,并且能通过Internet能够及时、准确修改图书情况。本系统的设计有效的支持Web访问,是的资源利用最大化用户只需要通过浏览器就可以实现操作和操作简单灵活。此设计的目标在于开发一个功能齐全,操作简单的图书馆借阅系统。

关键词:MySql数据库;Eclipse技术;Tomcat服务器;图书管理;借阅管理;

I

Book management system design and Implementation

Abstract

The present era is the rapid development of the information age. Cannot leave the information processing in all walks of life, it is widely used in computerinformation management system environment. The biggest advantage is that the computer can use it for information management. The use of computer control of information, not only improve the work efficiency, and greatly improved its security. Especially for complex information management, computer can give full play to its advantages. Information management and information management system of the computer is closely related, system development is a prerequisite for system management.

The system is to manage information and library design.

Many schools have their own libraries, while the traditional books managementall adopt manual management is very time consuming, low efficiency, but also not conducive to search and management of the library. These shortcomings will increase the number of books with more obvious. At present there are manyuniversities also have own library management system, but found the use of themanagement function of the system is not perfect and rich, can not meet theneeds of Library management. This paper focuses on the design and development of a library management system with perfect functions and practical.

The system is aiming at a series of problems existing in the higher requirements of library management system general function not entire, complex operation,system, and the idea of a personalized library management system. Based on this problem, it is necessary to establish a library management system effectivelysupport the Web service, the library management standardization,systematization, program, improve the speed and accuracy of information processing, and through the Internet can timely, accurately modify books. The design of the system effectively support Web access, is the use of resources to maximize the user need only through the browser can realize operation andsimple and flexible operation. This design goal is to develop a complete function,simple operation of the library system.

Keywords: MySql database; Eclipse technology; Tomcat server;

II

目录

摘要 ....................................................................................................................................................................... I 目录 ..................................................................................................................................................................... III 第一章 引言 .........................................................................................................................................................1

1.1 开发背景 ...............................................................................................................................................1 1.2 现有图书管理系统的概述 ...................................................................................................................1 1.3 开发图书管理系统的目的和意义 .......................................................................................................1 1.4 系统开发运行环境 ...............................................................................................................................1 1.5 论文结构介绍 .......................................................................................................................................2 第二章 系统开发相关介绍 .................................................................................................................................3

2.1 Eclipse基本介绍 ................................................................................................................................3 2.2 MySQL 概述 ...........................................................................................................................................3

2.2.1 MySQL简介 ................................................................................................................................3 2.2.2 MySQL应用环境 ........................................................................................................................3 2.3 Web技术 ................................................................................................................................................4

2.3.1 B/S模式 ....................................................................................................................................4 2.3.2 Tomcat服务器 ..........................................................................................................................4

第三章 图书管理系统分析 .................................................................................................................................5

3.1 可行性分析 ...........................................................................................................................................5

3.1.1 经济可行性 ...............................................................................................................................5 3.1.2 技术可行性 ...............................................................................................................................5 3.1.3 运行可行性 ...............................................................................................................................5 3.2 需求分析 ...............................................................................................................................................5 3.3 系统实现的目标 ...................................................................................................................................6 3.4 系统功能模块分析与设计 ...................................................................................................................6 3.5 系统功能结构图 ...................................................................................................................................7 3.6 功能模型 ...............................................................................................................................................7

3.6.1 图书管理 ...................................................................................................................................7 3.6.2 借阅管理 ...................................................................................................................................8 3.7 功能分析说明 .....................................................................................................................................10 3.8 系统流程图 .........................................................................................................................................10 第四章 数据库设计 ........................................................................................................................................... 11

4.1 数据库设计 ......................................................................................................................................... 11 4.2 数据库关系图 .....................................................................................................................................17 第五章 系统程序设计 .......................................................................................................................................18

5.1 概述 .....................................................................................................................................................18 5.2 登录模块 .............................................................................................................................................18 5.3 个人信息模块 .....................................................................................................................................21 5.4 图书管理模块 .....................................................................................................................................24 5.5 借阅管理模块 .....................................................................................................................................27 第六章 系统功能测试 .......................................................................................................................................31

6.1 测试目标 .............................................................................................................................................31 6.2 测试内容 .............................................................................................................................................31 参考文献 .............................................................................................................................................................32

III

东南大学成贤学院毕业论文

第一章 引言

1.1 开发背景

随着计算机和网络技术的飞速发展,Internet/Intranet应用的日益普及在全球范围内,社会正在快速推进到信息社会,信息系统已是越来越重要。图书馆面临着许多正常运行,读者信息,图书信息和图书馆,两者之间的相互作用产生的信息,还书信息。因此,图书信息管理是发展的必然趋势。利用结构化系统分析与设计方法,一种有效的管理信息系统的建立,可以减少工作,将工作科学化,规范化,提高了图书馆的工作信息管理的质量根据图书馆管理的实际发展一套图书管理系统是十分必要的。

1.2 现有图书管理系统的概述

在这日新月异的时代,以当前所拥有的开发工具和技术,并且网络技术的成熟,人们已经不满足需要到图书馆才能查询需要的书籍和所有业务需要到图书馆办理的麻烦。这就需要一个网络化的系统来实现人们所期望的要求,该系统能通过网络,令图书馆的一些操作能在家就能办理,能解放图书馆的人力资源。

图书馆在运营中总要面对大量的读者信息,图书信息和两者之间所产生的借书、还书、续借等等信息进行必要的管理,通过系统能及时的对各个环节的信息变更有充分的了解和处理。

而现今存在的图书馆的管理系统很多还是基于C/S(Client/Server,客户/服务器)模式。综上所述,该类系统已经不完整现在人们的需求。

1.3 开发图书管理系统的目的和意义

以现在到来的网络时代,很多图书馆的管理模式还基于C/S模式,这种模式已经不能适应现今时代的发展,在网络时代,这种模式必然被以网络为基础的信息管理模式给取代。

本图书管理系统的目的在于,当读者能不在图书馆里就能通过网络处理以前要到图书馆里办理的业务,这将方便读者来回奔波的麻烦,也使图书馆需要的人力资源得到充分的解放,令图书馆员工能有更多的精力来维护图书馆的书籍。读者能通过网络查询自己所需要的书籍,这样能减少图书在非借出的时期的损耗,也方便的读者来回和查找图书的时间。而且图书馆管理员能通过网络实时查询图书馆的信息,并且了解其中一些信息的变更,这样能提高图书馆进行自动化的管理,也能更加快捷的满足读者的要求。提高了员工的工作效率,也就降低了图书馆的维护成本。

1.4 系统开发运行环境

系统开发环境:eclipse-jee-juno-SR2-win32和jdk1.7 系统开发语言:java 运行平台:Windows 7 数据库:MySQL

Web服务器: apache-tomcat-6.0.18

1

东南大学成贤学院毕业论文

1.5 论文结构介绍

本文主要描述图书管理系统的设计与实现,共分为六个章节,各章内容安排如下:

第一章,引言部分。首先介绍该课题的开发背景,总结图书管理系统的概述,并叙述了开发新的图书管理系统的目的和意义,介绍开发环境和讲解本文结构。

第二章,系统开发相关介绍部分。主要详细介绍了开发图书管理系统所用到的一些工具或技术。 第三章,系统分析部分。介绍了该系统的可行性分析,需求分析,在了解系统实现的目标后,分析出系统功能模块,并以此给出系统功能结构图。

第四章,数据库设计部分。通过第三章的内容,设计数据库的表单并通过表单给出数据库表的关系图。

第五章,系统程序设计部分。本章主要是图书管理系统的界面设计,并给出实现流程和相关代码。 第六章,系统功能测试部分。主要进行实现图书管理系统的测试目标和内容。

2

东南大学成贤学院毕业论文

第二章 系统开发相关介绍

2.1 Eclipse基本介绍

虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。

2.2 MySQL 概述

2.2.1 MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

2.2.2 MySQL应用环境

与其他大型数据库,如Oracle,DB2,SQL Server等,其自身的MySQL的不足之处,但相比它也没有降低其受欢迎的程度。对于一般的个人用户和中小型企业,MySQL提供的功能已经绰绰有余,而且由于MySQL是开源软件,它可以显著降低总拥有成本。 Linux作为操作系统,Apache和Nginx的作为Web服务器,MySQL作为数据库,PHP/ Perl的/ Python作为一种服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除了劳动力成本)可以建立一个稳定的,免费的网站系统,被业界称为“LAMP”组合。

3

东南大学成贤学院毕业论文

2.3 Web技术

2.3.1 B/S模式

B/S模式(浏览器/服务器,Browser/Server),是WEB兴起后的一种网络结构模式,而WEB浏览器已是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Internet Explorer,服务器安装数据库,如MySql。浏览器就能通过Web Server 同数据库进行数据交互。

最大的优点B / S是该操作可以在任何地方进行,而无需安装任何特殊的软件,只要有一台电脑能上网就能使用客户端零安装,零维护。系统的扩展非常容易。

B / S模式使用越来越多,特别是在需求驱动的AJAX技术的发展,它也可以在客户端计算机上,从而大大减轻了服务器的负担,对治疗方案的一部分;并增加互动性可以实时进行部分更新。

2.3.2 Tomcat服务器

Tomcat服务器是一个免费的开源的Web应用服务器,应用服务器是轻量级的,在中小型系统通常用于和并发访问用户不是很多的场合,是首选的JSP开发计划。对于一个初学者,这可能是因为当一个好Apache服务器上配置了一台机器,你可以用它来响应的HTML (在标准通用标记语言的应用程序。 )要访问的页面请求。 Apache Tomcat的实际上是服务器的扩展的一部分,但它是独立运行的,所以当你运行tomcat的,它实际上是作为与Apache单独运行一个单独的进程。

诀窍是,当配置正确时,Apache服务的HTML页面,但实际上运行Tomcat JSP页面和Servlet 。另外, Tomcat和IIS Web服务器,具有处理功能的HTML页面,而这是一个Servlet和JSP容器,独立的Tomcat Servlet容器是默认模式。不过, Tomcat是不如来处理静态HTML的Apache服务器的能力。目前的Tomcat 8.0.0 -RC1 (阿尔法)的最新版本发布。

Tomcat的流行与广大喜欢它的程序员,因为它运行占用一个小的系统资源,可扩展性,对常用的功能,如负载均衡和消息服务应用开发系统的支持;它不断改进和完善,任何一个程序员感兴趣,您可以更改或添加新的功能。

4

东南大学成贤学院毕业论文

第三章 图书管理系统分析

3.1 可行性分析

随着信息作为计算机的三大主要应用(科学计算,过程控制和数据处理) ,数据处理的一个量的增加,已迅速攀升到计算机应用的主要方面,数据库技术已成为人们日常生活中的治疗缺乏数据是不是一个强大的工具,和现代信息管理系统,几乎所有的数据库技术为核心。

图书馆管理系统是基于中央数据库的数据管理规划的新模式。在这本书中,读者,事实上的管理,是管理的书籍,读者数据。该系统是专为经理无疑给图书馆管理系统提供了很大的帮助。

现在大多数的方式为图书馆管理,重复劳动多,劳动密集且容易出错,使用新系统的可能是一个很好的解决了这些问题的人工搬运取决于系统的可行性,目的可行性研究的是最低价格的时间应尽可能短,以确定问题是否可以解决。

3.1.1 经济可行性

由于网络技术的发展非常迅速,在硬件软件配置以及开发技术均可行的情况下开发一个管理系统不需要很大的投入,但可以大大的提高图书馆的工作效率,从另一方面来看,可以减少很多人力的投入,这就是图书馆管理发展的必然趋势,其中必将有比较宽阔的市场。采用的MySql数据库总体成本低。

综上所述,本系统在开发经济上完全可行。

3.1.2 技术可行性

该系统所需的硬设备不需要很高的要求,甚至可以使用原有的设备,本系统采用B/S结构,所以只要拥有网络和浏览器,就可以访问该系统,不需要安装,使系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。且采用的MySql数据库是开放源码的,所以能更好的使用。

综上所述,本系统在开发技术上完全可行。

3.1.3 运行可行性

本系统的界面简单明了,易于管理,方便管理者查询设备信息,能够满足使用者的要求。该系统应该提供简单的操作界面,能够快速的实现查书、借书、还书功能。采用的体积小、速度快的Mysql数据库。

综上所述,本系统在开发运行上完全可行。

3.2 需求分析

随着互联网技术发展与成熟,人们越来越习惯于利用网络来实现所需的服务,互联网已经深入影响到人们生活的各个方面。另外,传统的图书馆不能满足一部分现代人的需要,而图书管理系统,能更好的帮助图书馆工作人员管理图书的各种提供快速的图书信息检索功能及快捷的图书借阅、归还流程。而且其方便快捷,实现技术又比较成熟,因此获得许多图书馆的追捧。

该系统主要分为三部分:读者部分,借阅员部分和管理员部分。为了方便读者查找自己感兴趣的主题进行阅读,要将图书按照内容进行分类。读者可以按照类别进行查找,可以查看自己的信息。借阅员 5

东南大学成贤学院毕业论文

可以处理读者的借阅,续借,归还请求处理。本系统还可对用户的账号和书目的阅读权限进行管理。管理员需要给用户分配用户名和密码,及设定用户的级别,还为用户提供图书的排行榜让用户能知道那些图书受到大家的欢迎。

3.3 系统实现的目标

图书管理系统的开发主要要实现的目标有以下几个方面: (1)友好的界面设计,美观,安全,可靠的数据存储。 (2)强大的查询功能,保证数据查询的灵活性。 (3)完全实现数据信息的书,更新,恢复过程跟踪。 (4)提供图书借阅排行榜,为管理员提供了真实的数据。

(5)提供灵活的,方便的权限设置功能,使整个系统的劳动分工明确的管理。 (6)最大限度地实现易维护性和易操作性。

3.4 系统功能模块分析与设计

在对图书管理流程熟悉的基础上,设计一个实用的功能完善的图书管理系统。该系统根据使用者的不同角色,分为读者子系统、图书子系统和管理员子系统。

在读者子系统中,读者在该系统中可以注册一个账号,并登录,可以根据不同的查询条件查询图书,选中一本图书后可以查看图书的详细信息;借阅某本图书后,可以登录该系统续借图书;也可以查看目前的和过往的图书借阅记录。其应该完成的功能模块如下:

1、用户注册,用户登录,用户信息的修改; 2、根据一定的查询条件查询图书; 3、查看当前借书记录,续借图书; 4、查看过往借书记录;

图书借阅员可以登录该系统,对图书进行出借、归还、续借工作,对有罚款情况的读者,可以进行罚款的处理。该子系统应该完成的功能如下:

1、图书借阅; 2、图书归还; 3、图书续借; 4、图书查询; 5、罚款处理;

管理员主要完成对图书信息的管理工作。对有新进馆的图书,添加相应的图书信息;对需要修改基本信息的图书进行基本信息的修改,可以设定读者借阅图书的数量,同时每隔一定的时间可以对图书借阅进行统计排名。子系统应该完成的功能如下:

1、登录,修改密码;

2、图书信息的添加,删除,修改; 3、读者信息的管理,读者借阅数量管理;

6

东南大学成贤学院毕业论文

4、图书借阅排行统计;

3.5 系统功能结构图

根据本系统的实际需求,可以将图书管理系统划分为我的面板、决策系统和系统设置3个部分,决策系统下还有图书模块和借阅模块两个模块,系统设置下还有机构用户和系统管理两个模块。该系统功能结构图3.1所示。

图书管理系统我的面板决策系统系统设置个人信息图书管理借阅管理机构用户系统管理

图 3.1 系统功能结构图

3.6 功能模型

3.6.1 图书管理

在图书管理中,共有查询图书、新增图书、修改图书、入库图书、损耗图书和删除图书这六个功能。不同的用户显示的功能和功能作用的范围不同。

查询图书读者新增图书借阅员修改图书入库图书管理员损耗图书删除图书

图 3.2 图书管理用例图

7

东南大学成贤学院毕业论文

图书管理界面 : 用户1: 打开记录管理界面客户端数据库2: 查询请求3: 查询4: 返回数据5: 返回数据6: 新增请求7: 插入数据8: 成功或失败9: 返回消息10: 修改或删除请求11: 修改数据12: 成功或失败13: 返回消息14: 打开15: 入库图书17: 返回消息16: 插入数据18: 成功或失败19: 损耗图书20: 修改数据21: 成功或失败22: 返回消息

图3.3 图书管理顺序图

3.6.2 借阅管理

在借阅管理中,共有查询借阅记录、续借图书、借阅图书、归还图书和处罚读者这五种功能。不同的用户显示的功能和功能作用的范围不同。

8

东南大学成贤学院毕业论文

查询借阅记录读者续借图书借阅员借阅图书归还图书管理员处罚读者

图 3.4 借阅管理用例图

借阅管理界面 : 用户1: 进入2: 查询请求5: 返回数据服务端数据库3: 查询4: 返回数据6: 借阅请求7: 插入数据8: 成功或失败9: 返回消息10: 续借、归还或处罚请求11: 修改数据12: 成功或失败13: 返回消息

图3.5 借阅管理顺序图

9

东南大学成贤学院毕业论文

3.7 功能分析说明

图书管理系统::图书管理 编号:01-01 参与者:读者、借阅员、管理员 说明: 在图书管理系统中的决策系统中的图书管理模块中,读者、借阅员和管理员可以通过组合条件查询图书,而管理员还可以新增,修改,入库,损耗,删除图书。

图书管理系统::借阅管理 编号:01-01 参与者:读者、借阅员、管理员 说明: 在图书管理系统中的决策系统中的借阅管理模块中,读者、借阅员和管理员可以通过组合条件查询借阅记录和续借图书,但读者只可以查询关于自己的借阅记录和续借关于自己的图书,而借阅员和管理员还可以借阅图书,对图书进行归还,当读者延期归还图书或遗失图书之后,还要处罚读者。 3.8 系统流程图

图书管理系统是通过用户输入账号密码并验证通过后进入系统,登录系统后系统会根据登录账号从数据库中获取该用户的角色,比如读者、借阅员或管理员,读者能进行个人信息查询和修改、图书查询、借阅查询和续借查询,借阅员拥有读者的功能并能根据读者的要求进行借阅图书、归还图书和续借图书、处罚和查询图书,而管理员可以进行相关信息的查询、添加删除图书及读者的所有信息、设置相应的权限、为图书更新排行榜的信息、以及完成读者的图书借阅、归还和续借。

开始修改个人信息登录系统判断角色权限修改密码读者借阅员管理员查看图书续借图书借阅图书归还图书添加或修改图书用户管理退出系统结束

图3.6 系统流程图

10

东南大学成贤学院毕业论文

第四章 数据库设计

4.1 数据库设计

在开发图书管理系统时,除了主要的图书数据外,还要包括借阅记录数据,用户数据,和用户相应的权限关系数据,通过获得相应的权限数据显示相应的数据。

通过对系统进行需求分析、系统流程图以及系统功能结构的确定,设计数据库,其数据库名称为library,共12张表。

(1)用户表sys_user,如表4.1所示。

该表存储了用户的一些详细信息,比如密码,邮箱,联系方式等。包括了可以登录该系统的所有用户。

表 4.1 用户表

列名 id company_id office_id login_name password no name email phone mobile user_type login_ip login_date create_by create_date update_by update_date remarks del_flag 数据类型 varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar char varchar datetime varchar datetime varchar datetime varchar char 64 64 64 100 100 100 100 200 200 200 1 100 64 64 255 1 长度 主键 是 是否为空 非空 非空 非空 非空 非空 非空 非空 编号 归属图书馆 归属部门 登录名 密码 编号 姓名 邮箱 电话 手机 用户类型 最后登陆IP 最后登陆时间 创建者 创建时间 更新者 更新时间 备注信息 删除标记 注释

11

东南大学成贤学院毕业论文

(2)用户角色表sys_user_role,如表4.2所示。 该表存储用户表和角色表之间的关系。

表 4.2 用户角色表

列名 user_id role_id 数据类型 varchar varchar 64 64 长度 主键 是 是 是否为空 非空 非空 注释 用户编号 角色编号

(3)角色表sys_role,如表4.3所示。 该表存储了在该系统中存在的角色。

表 4.3 角色表

列名 id office_id name data_scope create_by create_date update_by update_date remarks del_flag 数据类型 varchar varchar varchar char varchar datetime varchar datetime varchar char 64 64 100 1 64 64 255 1 长度 主键 是 是否为空 非空 非空 非空 非空 编号 归属部门 角色名称 数据范围 创建者 创建时间 更新者 更新时间 备注信息 删除标记 注释

(4)角色菜单表sys_role_menu,如表4.4所示。 该表存储了角色表和菜单表的关系。

表 4.4 角色菜单表

列名 role_id menu_id 数据类型 varchar varchar 64 64 长度 主键 是 是 是否为空 非空 非空 注释 角色编号 菜单编号

(5)角色机构表sys_role_office,如表4.5所示。 该表存储了角色表和机构表的关系。

表 4.5 角色机构表

列名 role_id office_id 数据类型 varchar varchar 64 64 长度 主键 是 是 是否为空 非空 非空 注释 角色编号 机构编号

12

东南大学成贤学院毕业论文

(6)菜单表sys_menu,如表4.6所示。

该表存储了该系统的所有菜单和拥有的相应权限信息和每个菜单在整体树状菜单关系中的位置。

表 4.6 菜单表

列名 id parent_id parent_ids name href target icon sort is_show is_activiti permission create_by create_date update_by update_date remarks del_flag 数据类型 varchar varchar varchar varchar varchar varchar varchar int char char varchar varchar datetime varchar datetime varchar char 64 64 2000 100 255 20 100 11 1 1 200 64 64 255 1 长度 主键 是 是否为空 非空 非空 非空 非空 非空 非空 非空 编号 父级编号 所有父级编号 菜单名称 链接 目标 图示 排序 是否显示 是否同步工作流 权限标识 创建者 创建时间 更新者 更新时间 备注信息 删除标记 注释

(7)机构表sys_office,如表4.7所示。

该表存储了所有机构和每个机构在整体树状机构关系中的位置和在某个区域下。

表 4.7 机构表

列名 id parent_id parent_ids area_id code name type address zip_code

数据类型 varchar varchar varchar varchar varchar varchar char varchar varchar 64 64 2000 64 100 100 1 255 100 13

长度 主键 是 是否为空 非空 非空 非空 非空 非空 非空 注释 用户编号 父级编号 所有父级编号 归属区域 区域编码 机构名称 机构类型 联系地址 邮政编码 东南大学成贤学院毕业论文

表 4.7 机构表(续)

master phone fax email create_by create_date update_by update_date remarks del_flag varchar varchar varchar varchar varchar datetime varchar datetime varchar char 100 200 200 200 64 64 255 1 非空 负责人 电话 传真 邮箱 创建者 创建时间 更新者 更新时间 备注信息 删除标记

(8)区域表sys_area,如表4.8所示。

该表存储了所有区域和每个机构在整体树状区域关系中的位置和区域类型等。

表 4.2 区域表

列名 id parent_id parent_ids code name type create_by create_date update_by update_date remarks del_flag 数据类型 varchar varchar varchar varchar varchar char varchar datetime varchar datetime varchar char 64 64 2000 100 100 1 64 64 255 1 长度 主键 是 是否为空 非空 非空 非空 非空 非空 编号 父级编号 所有父级编号 区域编码 区域名称 区域类型 创建者 创建时间 更新者 更新时间 备注信息 删除标记 注释

(9)字典表sys_dict,如表4.9所示。

该表存储了该系统其他表中的一些数据对应的含义。

表 4.9 字典表

列名 id label

数据类型 varchar varchar 64 100 14

长度 主键 是 是否为空 非空 非空 编号 标签名 注释 东南大学成贤学院毕业论文

表 4.9 字典表(续)

value type description sort create_by create_date update_by update_date remarks del_flag varchar varchar varchar int varchar datetime varchar datetime varchar char 100 100 100 11 64 64 255 1 非空 非空 非空 非空 数据值 类型 描述 排序 创建者 创建时间 更新者 更新时间 备注信息 删除标记

(10)图书表lib_book,如表4.10所示。

该表为图书信息实体,存储了所有图书的相关信息。

表 4.10 图书表

列名 id code name stock price author publisher create_by create_date update_by update_date remarks del_flag 数据类型 varchar varchar varchar decimal decimal varchar Varbinary varchar datetime varchar datetime varchar char 36 100 100 10,0 10,2 50 100 64 64 255 1 长度 主键 是 是否为空 非空 非空 非空 非空 非空 编号 条形码 名称 库存 价格 作者 出版社 创建者 创建时间 更新者 更新时间 备注信息 删除标记 注释

15

东南大学成贤学院毕业论文

(11)图书记录表lib_book_record,如表4.11所示。

该表用于存储图书的入库和损耗记录,用以准确记录每本图书的库存增减情况。

表 4.11 图书记录表

列名 id book_id number operate create_by create_date update_by update_date remarks del_flag 数据类型 varchar varchar decimal varchar varchar datetime varchar datetime varchar char 64 64 10,0 100 64 64 255 1 长度 主键 是 是否为空 非空 非空 非空 非空 编号 图书编号 数量 操作 创建者 创建时间 更新者 更新时间 备注信息 删除标记 注释 (12)借阅表lib_borrow,如表4.12所示。

该表用于存储图书借阅信息,用以准确记录每本图书的借阅记录。

表 4.12 借阅表

列名 id book_id user_id borrow_date renew_date back_date return_flag punish_type punish_by punish_date punish_remark create_by create_date update_by update_date remarks del_flag

数据类型 varchar varchar varchar datetime datetime datetime varchar varchar varchar datetime text varchar datetime varchar datetime varchar char 64 64 64 10 10 36 64 64 255 1 16

长度 主键 是 是否为空 非空 非空 非空 非空 非空 编号 图书编号 用户编号 借出日期 续借日期 归还日期 当前状态 处罚类型 处罚人 处罚时间 处罚备注 创建者 创建时间 更新者 更新时间 备注信息 删除标记 注释 东南大学成贤学院毕业论文

4.2 数据库关系图

在该系统的数据库中,用户角色表记录用户表与角色表的一对多关系,角色机构表记录角色表与机构表一对多关系,角色菜单表记录着角色表与菜单表的一对多关系,借阅表中记录着用户和图书的关系,即为借阅信息。图书表和图书记录表为一对多关系,即一本书可以有多条入库或损耗记录。

图4.1 数据库关系图

17

东南大学成贤学院毕业论文

第五章 系统程序设计

5.1 概述

在设计系统的Web层的时候应用了常见的MVC模式,M是业务模型,V是用户界面,C是控制器,强制的把程序的输入、输出和处理分开。也就是MVC所说的三个核心部件:模型、视图、控制器。

MVC模式的好处在于它在程序中能处理很多不同的视图。在视图在说,只是作为一种输出数据的手段。视图层和业务层分离,使可以更改视图层的代码,不需要改变业务层的代码可以是视图多样化。也可以不改变视图层的代码,改变业务层的代码,使显示的数据内容多样化。从中可以看出MVC模式的重用性比较高,随着技术不断进步,越来越多不同的访问方式来访问应用程序。MVC模式就是允许不同的视图来访问服务端的一样的代码。即多个视图共享一个模型。

本系统采用Spring的MVC模式,由于Spring Mvc是一个轻量的控制反转和面向切面的框架。而且它是一个纯正的servlet系统,和它本身有代码,易用性高。

5.2 登录模块

本模块主要是用户想要使用本系统需要通过首页登录通过进入该系统。用户通过输入账号和密码,系统验证通过后,在进入系统的时候,系统会根据这个用户获得它相应的角色和权限,并显示该用户所能查看的界面。如果登陆失败,则系统会跳回登陆界面,并提示错误信息。本系统的登陆界面如图5.1所示。

图 5.1 登陆界面

18

东南大学成贤学院毕业论文

登陆界面在服务端进行的用户登录操作的流程图如图5.2所示。

图 5.2 用户登录流程图

登录模块相关代码:

/**

* 管理登录 */

@RequestMapping(value = \, method = RequestMethod.GET)

public String login(HttpServletRequest request, HttpServletResponse response, Model model) {

User user = UserUtils.getUser(); // 如果已经登录,则跳转到管理首页 if(user.getId() != null){

return \+Global.getAdminPath(); }

return \; }

/**

* 登录失败,真正登录的POST请求由Filter完成 */

@RequestMapping(value = \, method = RequestMethod.POST)

public String login(@RequestParam(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM) String username, HttpServletRequest request, HttpServletResponse response, Model model) {

19

东南大学成贤学院毕业论文

User user = UserUtils.getUser(); // 如果已经登录,则跳转到管理首页 if(user.getId() != null){

return \+Global.getAdminPath(); }

model.addAttribute(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM, username); model.addAttribute(\, isValidateCodeLogin(username, true, false));

return \; }

/**

* 登录成功,进入管理首页 */

@RequiresUser

@RequestMapping(value = \)

public String index(HttpServletRequest request, HttpServletResponse response) { User user = UserUtils.getUser(); // 未登录,则跳转到登录页 if(user.getId() == null){

return \+Global.getAdminPath()+\; }

// 登录成功后,验证码计算器清零

isValidateCodeLogin(user.getLoginName(), false, true); // 登录成功后,获取上次登录的当前站点ID

UserUtils.putCache(\, CookieUtils.getCookie(request, \)); return \; } /**

* 获取主题方案 */

@RequestMapping(value = \)

public String getThemeInCookie(@PathVariable String theme, HttpServletRequest request, HttpServletResponse response){

if (StringUtils.isNotBlank(theme)){

CookieUtils.setCookie(response, \, theme); }else{

theme = CookieUtils.getCookie(request, \); }

return \+request.getParameter(\); } /**

* 是否是验证码登录

20

东南大学成贤学院毕业论文

* @param useruame 用户名 * @param isFail 计数加1 * @param clean 计数清零 * @return */

@SuppressWarnings(\)

public static boolean isValidateCodeLogin(String useruame, boolean isFail, boolean clean){

Map loginFailMap = (Map)CacheUtils.get(\); if (loginFailMap==null){

loginFailMap = Maps.newHashMap();

CacheUtils.put(\, loginFailMap); }

Integer loginFailNum = loginFailMap.get(useruame); if (loginFailNum==null){ loginFailNum = 0; }

if (isFail){

loginFailNum++;

loginFailMap.put(useruame, loginFailNum); }

if (clean){

loginFailMap.remove(useruame); }

return loginFailNum >= 3;

}

5.3 个人信息模块

本模块主要是用户查看自己的信息可以在这个页面修改自己的一些信息,还可以修改自己的登录密码,界面如图5.3和图5.4所示。

图5.3 个人信息界面

21

东南大学成贤学院毕业论文

图5.4 修改密码界面

个人信息和密码修改的流程图如图5.5和5.6所示。

图5.5 修改个人信息流程图

图 5.6 修改密码流程图

22

东南大学成贤学院毕业论文

个人信息模块相关代码:

@RequiresUser

@RequestMapping(value = \)

public String info(User user, Model model) { User currentUser = UserUtils.getUser();

if (StringUtils.isNotBlank(user.getName())) { if (Global.isDemoMode()) {

model.addAttribute(\, \演示模式,不允许操作!\); return \; }

currentUser = UserUtils.getUser(true); currentUser.setEmail(user.getEmail()); currentUser.setPhone(user.getPhone()); currentUser.setMobile(user.getMobile()); currentUser.setRemarks(user.getRemarks()); systemService.saveUser(currentUser);

model.addAttribute(\, \保存用户信息成功\); }

model.addAttribute(\, currentUser); return \; }

@RequiresUser

@RequestMapping(value = \)

public String modifyPwd(String oldPassword, String newPassword, Model model) { User user = UserUtils.getUser();

if (StringUtils.isNotBlank(oldPassword) && StringUtils.isNotBlank(newPassword)) { if (Global.isDemoMode()) {

model.addAttribute(\, \演示模式,不允许操作!\); return \; }

if (SystemService.validatePassword(oldPassword, user.getPassword())) {

systemService.updatePasswordById(user.getId(), user.getLoginName(), newPassword); model.addAttribute(\, \修改密码成功\); } else {

model.addAttribute(\, \修改密码失败,旧密码错误\); } }

model.addAttribute(\, user); return \;

}

23

东南大学成贤学院毕业论文

5.4 图书管理模块

本模块有三个部分,分别是图书管理、库存记录和图书信息,主要是根据不同的角色和权限显示不同的页面来提供给用户不同的图书操作。管理员拥有操作图书管理和库存记录的权限,借阅员和读者拥有操作图书信息的权限,该模块共有添加、修改、删除、通过特定条件模糊查询图书和入库或损耗图书并该记录,界面如图5.7、图5.8和图5.9所示。

图5.7 图书管理界面

图5.8 库存记录界面

图5.9 图书信息界面

图书管理模块相关代码:

@RequiresPermissions(\) @RequestMapping(value = {\, \})

public String list(Book book, HttpServletRequest request, HttpServletResponse response, Model model) {

Page page = bookService.find(new Page(request, response), book); for (Book b : page.getList()) { // 剩余数量

b.setNumber(Long.parseLong(b.getStock()) - borrowService.count(b.getId())); }

model.addAttribute(\, book); model.addAttribute(\, page);

24

东南大学成贤学院毕业论文

return \; }

@RequiresPermissions(\) @RequestMapping(value = {\})

public String select(Book book, HttpServletRequest request, HttpServletResponse response, Model model) {

Page page = bookService.find(new Page(request, response), book); model.addAttribute(\, book); model.addAttribute(\, page); return \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String form(Book book, Model model) { model.addAttribute(\, book); return \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String save(Book book, Model model, RedirectAttributes redirectAttributes) { if (!beanValidator(model, book)) { return form(book, model); }

bookService.save(book);

addMessage(redirectAttributes, \保存图书'\ + book.getName() + \成功\); return \ + Global.getAdminPath() + \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String delete(String id, RedirectAttributes redirectAttributes) { bookService.delete(id);

addMessage(redirectAttributes, \删除图书成功\);

return \ + Global.getAdminPath() + \; }

@ResponseBody

@RequiresPermissions(\) @RequestMapping(value = \)

public String checkCode(String id, String code) { Book book = bookService.getByCode(code); // 如果可以获取且不等于该对象,返回false

25

东南大学成贤学院毕业论文

if (book != null && !id.equals(book.getId())) { return \; }

return \; }

@RequiresPermissions(\) @RequestMapping(value = {\, \})

public String list(BookRecord bookRecord, HttpServletRequest request, HttpServletResponse response, Model model) { Page page =

bookRecordService.find(new Page(request, response), bookRecord); model.addAttribute(\, bookRecord);

model.addAttribute(\, borrowService.getDictList(\)); model.addAttribute(\, page); return \; }

@RequiresPermissions(\) @RequestMapping(value = {\})

public String select(BookRecord bookRecord, HttpServletRequest request, HttpServletResponse response, Model model) { Page page =

bookRecordService.find(new Page(request, response), bookRecord); model.addAttribute(\, bookRecord);

model.addAttribute(\, borrowService.getDictList(\)); model.addAttribute(\, page);

return \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String form(BookRecord bookRecord, Model model) { model.addAttribute(\, bookRecord);

model.addAttribute(\, borrowService.getDictList(\)); return \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String save(BookRecord bookRecord, Model model, RedirectAttributes redirectAttributes) {

if (!beanValidator(model, bookRecord)) { return form(bookRecord, model); }

// 获取图书信息

26

东南大学成贤学院毕业论文

Book book = bookService.get(bookRecord.getBook().getId()); if (bookRecord.getOperate().equals(\)) { if (Integer.parseInt(book.getStock()) < Integer.parseInt(bookRecord.getNumber())) {// 当库存小于损耗

addMessage(redirectAttributes, \损耗超过库存\);

return \ + Global.getAdminPath() + \; } }

bookRecordService.save(bookRecord);

addMessage(redirectAttributes, \保存图书'\ + bookRecord.getBook().getName() + \成功\); return \ + Global.getAdminPath() + \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String delete(String id, RedirectAttributes redirectAttributes) { bookRecordService.delete(id);

addMessage(redirectAttributes, \删除图书成功\);

return \ + Global.getAdminPath() + \; }

5.5 借阅管理模块

本模块有三个部分,分别是借阅管理、借阅记录和借阅信息,主要是根据不同的角色和权限显示不同的页面来提供给用户不同的借阅操作。管理员拥有操作借阅管理的权限,借阅员拥有操作借阅记录的权限,读者拥有操作图书信息的权限,该模块共有借阅、续借、归还和处罚操作,界面如图5.10、图5.11和图5.12所示。

图5.10 借阅管理界面

图5.11 借阅记录界面

27

东南大学成贤学院毕业论文

图5.12 借阅信息界面

借阅管理模块相关代码:

@RequiresPermissions(\) @RequestMapping(value = {\, \})

public String list(Borrow borrow, HttpServletRequest request, HttpServletResponse response,

Model model) {

Page page = borrowService.find(new Page(request, response), borrow); // 计算预计归还日期

for (Borrow b : page.getList()) {

if (b.getRenewDate() != null && !b.getRenewDate().equals(\)) { b.setEndDate(new SimpleDateFormat(\HH:mm:ss\).format(new Date(b.getBorrowDate()

.getTime() + 60 * 24 * 60 * 60 * 1000L))); } else {

b.setEndDate(new SimpleDateFormat(\HH:mm:ss\).format(new Date(b.getBorrowDate()

.getTime() + 30 * 24 * 60 * 60 * 1000L))); } }

model.addAttribute(\, borrow);

model.addAttribute(\, borrowService.getDictList(\)); model.addAttribute(\, borrowService.getDictList(\)); model.addAttribute(\, page); return \; }

@RequiresPermissions(\) @RequestMapping(value = {\})

public String select(Borrow borrow, HttpServletRequest request, HttpServletResponse response,

Model model) {

Page page = borrowService.find(new Page(request, response), borrow); model.addAttribute(\, borrow); model.addAttribute(\, page); return \; }

@RequiresPermissions(\) @RequestMapping(value = \) 28

东南大学成贤学院毕业论文

public String form(Borrow borrow, Model model) {

List borrowReturnFlag = borrowService.getDictList(\); model.addAttribute(\, borrowReturnFlag); model.addAttribute(\, borrow); return \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String formPunish(Borrow borrow, Model model) {

List dicts = borrowService.getDictList(\); model.addAttribute(\, dicts); model.addAttribute(\, borrow); return \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String save(Borrow borrow, Model model, RedirectAttributes redirectAttributes) { if (!beanValidator(model, borrow)) { return form(borrow, model); }

if (borrow.getBook() != null && !borrow.getBook().getId().equals(\)) { Book book = bookService.get(borrow.getBook().getId()); // 借出数量

long num = borrowService.count(borrow.getBook().getId());

if (Long.parseLong(book.getStock()) <= num || borrow.getId() == null) { addMessage(redirectAttributes, \库存不足!\);

return \ + Global.getAdminPath() + \; } }

if (borrow.getReturnFlag() == null || borrow.getReturnFlag().equals(\)) { borrow.setReturnFlag(\); }

borrowService.save(borrow);

addMessage(redirectAttributes, \保存借阅记录《\ + borrow.getBook().getName() + \》给'\ + borrow.getUser().getName() + \成功\);

return \ + Global.getAdminPath() + \; }

@RequiresPermissions(\) @RequestMapping(value = \) public String savePunish(Borrow borrow, Model model, RedirectAttributes redirectAttributes) {

if (!beanValidator(model, borrow)) {

29

东南大学成贤学院毕业论文

return form(borrow, model); }

borrowService.savePunish(borrow);

addMessage(redirectAttributes, \保存借阅处罚记录《\ + borrow.getBook().getName() + \》给'\

+ borrow.getUser().getName() + \成功\);

return \ + Global.getAdminPath() + \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String renew(String id, RedirectAttributes redirectAttributes) { Borrow borrow = borrowService.get(id);

if (borrow.getBackDate() != null && !borrow.getBackDate().equals(\)) { addMessage(redirectAttributes, borrow.getBook().getName() + \已归还\);

} else if (borrow.getRenewDate() != null && !borrow.getRenewDate().equals(\)) { addMessage(redirectAttributes, borrow.getBook().getName() + \已续借\); } else {

borrowService.renewById(id);

addMessage(redirectAttributes, \续借图书《\ + borrow.getBook().getName() + \》成功\); }

return \ + Global.getAdminPath() + \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String back(String id, RedirectAttributes redirectAttributes) { borrowService.backById(id);

addMessage(redirectAttributes, \归还图书成功\);

return \ + Global.getAdminPath() + \; }

@RequiresPermissions(\) @RequestMapping(value = \)

public String delete(String id, RedirectAttributes redirectAttributes) { borrowService.delete(id);

addMessage(redirectAttributes, \删除图书成功\);

return \ + Global.getAdminPath() + \; }

30

东南大学成贤学院毕业论文

第六章 系统功能测试

6.1 测试目标

在软件开发完成后,因为在软件开发过程中容易出现不易检测到的逻辑错误等。所以软件测试成为软件项目中不可或缺的一个环节。随着软件产业的发展,软件测试是为了发现一些可以通过测试就能避免的开发风险。把测试目标定位于要证明程序中存在有缺陷,那么实施测试可以提高发现缺陷的几率,也就降低所发现的风险。

在开发软件系统的过程中,需要面对许多错综复杂的问题,因此在软件的每个生存周期不可避免的会发生编码错误。测试目的在于在执行一个程序的过程中发现错误,测试就是为了发现一些隐性或者说是尚未发现的错误。

因为项目测试也是需要一个系统流程,面对不同软件执行与之对应的测试方法,所以在开发项目中,我们可以将测试看做是一个标准的项目。

6.2 测试内容

(1)登录模块测试

输入用户的账号密码,通过填写错误账号,密码来测试登录功能,当账号和密码都通过验证时登录系统,否者返回登录窗口和提示错误消息。

(2)个人信息模块测试

在个人信息模块里进行查看信息和修改密码两个功能测试,通过修改用户相关信息进行保存和填写新旧密码,修改成功后,查看是否能通过旧密码进行修改密码。

(3)图书管理模块测试

在图书管理模块中,可以进行图书的组合条件查询图书,新增图书、入库图书、损耗图书、修改图书和删除图书的功能,其中读者、借阅员和管理员可以测试通过组合条件查询图书,而管理员还可以测试新增,修改,入库,损耗,删除图书。还有测试图书损耗能否超过库存。

(4)借阅管理模块测试

在借阅管理模块中,含有对借阅记录的组合条件查询、新增借阅记录、续借、归还和添加处罚信息功能。其中读者、借阅员和管理员可以测试组合查询、续借功能,借阅员和管理员还能测试新增借阅记录,归还和添加处罚信息功能。

31

东南大学成贤学院毕业论文

参考文献

[1] 潘艳丽.基于Asp.Net的图书馆管理系统的设计与研究[D].复旦大学硕士论文,2010. [2] 关辛.vb图书管理系统论文[D].浙江师范大学学位论文,2009. [3] sunshine .图书管理系统的可行性分析[J].网络,2010. [4] 林延.图书信息管理系统[D].电子科技大学硕士论文,2008. [5] 王明.图书管理系统[D].信息工程学院,2010. [6] 张海藩.软件工程导论[C].清华大学出版社,2008.

[7] 王珊,萨师煊.数据库系统概论(第四版)[C].高等教育出版社,2006.

[8] 卫红春,朱欣娟.信息系统分析与设计(第二版)[C].西安电子科技大学出版社,2008. [9] 周张莉.高校图书管理系统的设计与实现[C].电子科技大学工程硕士论文,2011. [10] GB 7713-87,科学技术报告、学位论文和学术论文的编写格式[S].

32

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

Top