图书馆管理系统

目 录

  

Abstract

第一章 绪论

1.1 课题的研究背景

1.2 研究现状

1.3 研究内容和论文组织

1.3.1 研究内容

1.3.2 论文结构

第二章 系统设计的关键技术

2.1 开发语言技术简介

2.1.1 C#介绍

2.1.2 ASP.NET介绍

2.2 系统体系结构的目的

2.2.1 C/S架构介绍

2.2.2 B/S架构介绍

2.2.3 B/SC/S的比较

2.3 数据库及数据库访问技术

2.3.1 数据库

2.3.2数据库访问技术

2.4 基于MVC的软件结构

2.5 系统中Ajax技术的应用

2.5.1. Ajax的概述

2.5.2 Ajax 技术的实现原理

2.5.3Ajax的几种框架

2.5.4Ajax在系统中的应用

2.6 IIS信息服务器

第三章 系统需求分析

3.1 系统特性分析

3.2 系统核心用例分析

3.2.1 系统用户分析

3.2.2 用户登录用例

3.2.3读者管理用例

3.2.4 图书管理用例

3.3 系统开发和运行环境

第四章 系统详细设计

4.1系统功能分析

4.1.1系统功能结构

4.1.2系统主要业务流程

4.2系统模块设计

4.2.1用户登录模块的设计

4.2.2系统设置模块的设计

4.2.3读者管理模块的设计

4.2.4图书管理模块设计

4.2.5图书借还模块设计

4.2.6系统查询模块设计

4.2 数据库设计

4.2.1 数据库设计介绍

4.2.2系统E-R图设计

4.2.3系统表设计

4.4 系统异常处理设计

4.4.1异常信息

4.4.2补救措施

第五章 系统运行及测试

5.1 软件测试的方法与步骤

5.2 测试计划和要点

5.2.1 系统设置模块测试要点

5.2.2 借阅模块测试要点

5.2.3 读者管理模块测试要点

5.2.4 图书管理模块测试要点

5.2.5 图书借还模块测试要点

5.3测试用例设计与测试用例的运行过程及测试结果分析

5.3.1模块测试

5.3.2 验收测试

5.4评价

第六章 总结与展望

6.1 总结

6.2 展望

 

参考文献

附录

摘  要

由于现时代社会的快速发展,人们对于知识的需求得到很大的增长,图书馆原来的管理方式已经难以胜任越来越繁杂的任务。系统旨在用较为先进的网络技术对图书馆进行数字化管理,以实现科学快速的图书管理。系统是使用C#语言编写,采用的使sql server 2008数据库作为存储数据的数据库的B/S架构系统。系统主要实现的功能有操作员管理,图书管理,图书借阅和归还几个功能,主要分为首页,系统设置,读者管理,图书管理,图书借还,系统查询,更改口令,退出系统几个主要模块组成,每个模块下又分为若干个子模块.系统最大的特点就是简单易用,系统针对图书馆中的常用业务流程进行了大幅优化,从而减少操作的步骤,省去的步骤全部交由系统自动处理,从而使得图书馆能够将剩下大量的人力资源。系统操作上,它对图书馆工作人员的要求极低,只需要懂得基本的计算机操作即可胜任图书馆中的工作。系统从需求分析到编码完成历时两个月,在本论文中,将全面介绍系统的各个模块和业务流程,使各位读者对系统有个基本的了解。

关键词: 图书馆,自动化办公,科学性

Abstract

Due to the current era of rapid development of society, people get a lot of growth in the demand for knowledge, the original library management could not do more and more complicated tasks. The system is designed with state-of-the-art network technology library digital management, in order to achieve scientific and fast library management. System using C # language, used to make sql server 2008 database as the database storing data B / S structure system. The functions of the main system operator management, library management, book lending and the return of several functions, mainly divided into Home, system settings, reader management, library management, library circulation system queries, change the password, exit the system several major modules, each module is divided into several sub-modules, the biggest feature of the system is easy to use, the system for the library of commonly used business processes significantly optimized, thereby reducing the operating steps, eliminating the need for all the step by the system automatically, so that the library can be a lot of manpower and resources left. On the operation of the system, its requirements of the library staff is very low, only need to know basic computer operations can be competent to work in the library. System from requirements analysis to the encoded lasted two months, in this paper, a comprehensive introduction to the various modules of the system and business processes, so that our readers have a basic understanding of the system.

Key Words: library, Office automatio,, scientificalness

第一章 绪论

1.1 课题的研究背景

相信大家都有过去图书馆借阅图书的经历,那么,大家对过去去过的图书馆的映像怎么样呢,就我自己的感觉来说那就是,管理混乱,借书还书流程复杂,就我去过的几个图书馆,他们基本上全部都是采用的人工管理的方式处理图书馆中的各种业务,就比如在图书馆中最常见的借还书流程,首先说借书。我们到图书馆去借书。首先要去大厅里看自己想要借阅的图书是什么类型,该类型的图书是放在哪个分馆,这个分馆的位置等信息,然后就去到该分馆,在分馆门口,首先将自己的图书证交给分馆操作员核对登记,然后才能进入图书馆中查找书籍,我们在图书馆中找书是非常的麻烦的,一个分馆中少说也有藏书数十万本,想在这数十万本书中找到自己想要找的书无疑是大海捞针,更致命的是你根本就不知道这本书是否在这个分馆中,有可能这个图书馆中没有这本书,也有可能都已借出,所以,很有可能你会花了一上午的时间却无法找到这本书。当你找到这本书后,你还需要去分馆管理员那里登记借阅信息,管理员将借书证和图书信息描述卡放在一个盒子里,并在每本书上贴着的借阅条上填写借阅信息,这样才完成借书。而还书的时候,读者要到服务台将图书交给工作人员,由工作人员找到结束时放置的盒子,并填写相关还书信息,领取借书证。从以上流程可以看出,传统的图书馆管理方式主要采用的是人工管理,这种管理方式首先从效率上来说,极为低下,整个借书的过程比较麻烦,读者往往花费大量的时间查找图书却最终发现没有找到自己想要的书,而找到之后,管理人员还需要填写各种信息,而且,在填写的信息管理上也存在着很多不方便的地方。还书的时候,还要首先在大量的借阅信息即放置借书证和图书信息卡的盒子中找到属于还书者的盒子,并消去借书记录。这样的管理方式无疑效率很低,而且整个图书馆管理过程中,这仅仅是其中最基本的两个业务流程而已,像这样的流程还有很多,这样就导致了整个图书馆管理人员很多,但办事效率却是很低的。

而且,近年来,随着高校的扩招和教育体制的改革,图书馆面临着一系列新的挑战。图书馆的书籍数量不断增加,读者人数不断增多,而图书馆在学校严格控制教辅人员编制的情况下,不仅没有相应增加工作人员,反而有些部门甚至出现了缺编情况。同时图书馆应自身发展需要,对信息化技术的要求越来越高;为了满足读者对图书馆的利用需求,又在不断增加服务项目和延长开馆时间,无形中造成了人员的短缺和馆员的工作压力加大,劳动强度增加。在这种情况下,使用一种自动化的管理系统,帮助图书馆完成图书采编,整理入库,数据库录入等工作,这成为各个高校以及公办图书馆必然的选择。

1.2 研究现状

    随着图书馆规模的日益扩大,去图书馆借阅书籍的人也是越来越多,传统的管理模式已经不适应现代管理要求,手续繁琐、效率低下、工作量大、出错率高等,同时也给对大量资料的查询、更新及维护都带来不少困难,这些都严重影响图书馆的工作,如何更大地发挥每个工作人员的作用,提高操作员处理业务的速度,简单快捷的借书还书成为了每个图书馆急需解决的问题。

如今的网络科技越来越发达,尤其最近几年,科技水平的发展只能用日新月异来形容,因此,也有很多图书馆开始来使用计算机软件来管理图书馆,图书馆管理开始进入信息时代,但是,经过我在网上查找资料后发现,现在的图书馆管理系统大多都是采用的C/S架构的管理系统,维护升级十分的不方便,每次系统更新时,每个客户端都需要进行同步更新,这样无疑是很麻烦的。而且大概是因为这些图书馆管理系统设计者开发时间的原因,所用到的开发技术比较落后,很多系统都是采用C#语言开发的,功能上也非常的简单,只能满足一些基本的功能,经过翻阅多种资料后,我总结了一下这些系统一般具有的功能模块: 1、图书搜索模块:是图书管理系统最重要的模块之一,是读者快速查询图书的主要途径。2、图书管理模块:是图书管理员操作模块,读者是无权进入的。本模块由借出图书登记、归还图书登记 和续借图书登记子模块构成。3、数据维护模块:是由图书管理员控制的模块,它由增加、修改和删除 读者,增加、修改删除图书,浏览修改读者、浏览修改图书 等程序组成。 4、数据统计模块:由读 者统计、图书统计、借出图书分类 统计、到期末归还图书读 者统计几部分组成。这些系统 解决了以前的那种管理方式所存在着 的诸如手续繁琐、工作量大、效率低下、出错率 高等缺点,设计出的系统能使读者快速检 索到自己喜爱的书,图书管理 员能减轻工作量。

1.3 研究内容和论文组织

1.3.1 研究内容

本文将着重研究如何搭建一个架构良好,可扩展性强,稳定性强的图书馆管理系统。研究如何应用软件工程中的经典瀑布开发模型,进行系统的开发。研究如何进行系统的需求诱导,需求分析,概要设计,详细设计,系统实现以及测试,从而完成系统的开发工作。

本文还将研究 C/S和B/S 结构的优缺点,B/S 架构中常用的软件开发技术,以及研究通过 AJAX 无刷新的获取服务端数据并更新页面,基于web 的MVC设计模式的应用,基于c#的网络通信等。

功能上讲,整个系统平台对整个图书馆能够进行管理,功能简单使用,系统的研究和实现的功能将包括:

 (1)用户管理,在系统中,管理员能够自己添加登陆到系统的用户,然后根据用户的不同,给不同的用户赋予不同的权限。

(2)系统设置。在这里,主要是图书馆信息和书架信息,通过图书馆信息,你能够对图书馆有一个大概的了解,比如图书馆名,位置,负责人等,而书架管理则是图书馆中的具体位置了,通过这里,你能够得知图书馆中书架的一些信息,书架信息是由管理员来添加的,在添加书架时,不允许添加相同的书架。

(3)读者管理,主要对读者管理,这里的读者管理主要分为两种:读者类型管理和读者档案管理。读者类型管理主要是因为读者的类型不同而导致的需求不同,把不同类型的读者专门归类,能够跟方便工作人员管理读者,读者档案管理则是对每一个具体的读者进行管理。

(4)图书管理:图书信息是通在图书入库是设置的,一经设定,不得轻易修改。图书在入库时,系统自动生成一个条形码,这个条形码将成为这本书的唯一标识。

(5)图书借还管理,这里主要实现的功能主要有三个,图书借阅,图书归还和图书续借。这三个功能是图书馆管理系统最为主要的功能,在这个模块中,发生着大量的读者与图书的交互关系。在本模块中读者和图书的条形码支持手工输入和使用扫描枪扫描输入,需要在输入条形码并验证是否存在后才能进行图书的借阅。每类图书能够借阅的图书设定的借出日期不同,当达到截止日期时,读者需要进行还书操作,某些读者还有可能进行续借,每本书只能续借一次。逾期未还的需要由图书管理员收取罚款。

(6)系统查询,这里的系统查询包括图书记录查询和借还记录查询,在这里,用户能够查看到相应的图书信息和读者的借还记录。

(7)更改口令,在这个模块中,登录系统的用户可以自由更改登录密码。       

     ()

1.3.2 论文结构 

本论文依照软件工程的规范、重点类容及主要章节内容如下:

  1. 绪论部分,综述了图书馆管理发展历史和现状,给出了本论文研究背景和意义;
  2. 系统的关键技术,介绍课题在设计和实现的过程中必须使用的技术理论基础和这些技术的优点;
  3. 系统需求分析,对整个系统的主要功能进行了需求进行详细的描述,并通过了用例图详细介绍项目的用例;
  4. 系统详细设计,根据实际的应用需求,介绍系统的架构设计,系统总体设计方案。子模块的划分及模块的详细设计;
  5. 系统的实现与及测试,实现细节和效果图,并详细介绍了系统测试用例图和测试结果;
  6. 总结和展望,总结系统开发过程中遇到的问题并对项目下一步的计划和研究方向做出期望。

第二章 系统设计的关键技术

2.1 开发语言技术简介

微软的C#+ASP.NET组合技术目前正是风风火火。作为全球软件业最大的公司,微软在.NET技术上投入了大量的人力物力,把公司未来战略重心放在了.NET上,而从目前看来,.NET技术无疑代表了未来Internet技术的方向之一。而系统正是基于C#和ASP.NET来进行开发的。

2.1.1 C#介绍

C#做为一门高级开发语言,它在带来对应用程序的快速开发能力的同时,忠实地继承了C和C++的优点。C#是专门为.NET应用而开发出的语言,这从根本上保证了C#与.NET框架的完美结合。在.NET运行库的支持下,.NET框架的各种优点在C#中表现得淋漓尽致。以下是C#的一些突出的特点,将会为以后体会到“#”-“SHARP”的真正含义打下基础。

(1)简洁的语法

在缺省的情况下,C#的代码在.NET框架提供的“可操纵”环境下运行,不允许直接地内存操作。它所带来的最大的特色是没有了指针。与此相关的是,那些在C++中被疯狂使用的操作符(例如:“::”)已经不再出现。C#只支持一个“.”。

(2)精心地面向对象设计

C#具有面向对象的语言所应有的一切特性:封装、继承与多态性。在C#的类型系统中,每种类型都可以看作一个对象。C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。

(3)与Web的紧密结合

.NET中新的应用程序开发模型意味着越来越多的解决方案需要与Web标准相统一,例如超文本标记语言(Hypertext Markup Language, HTML)和XML。由于历史的原因,现存的一些开发工具不能与Web紧密地结合。SOAP的使用使得C#克服了这一缺陷,大规模深层次的分布式开发从此成为可能。

(4)完整的安全性与错误处理

通过垃圾回收、结构化异常处理、类型安全检查,来实现其更好的安全处理。在类型安全检查中,C#要求遵循相关变量的规则,禁止使用没有被初始化的变量、取消不安全的类型转换和提供边界检查。

(5)版本处理技术

C#提供内置的版本支持来减少开发费用,使用C#将会使开发人员更加轻易地开发和维护各种商业用户。

升级软件系统中的组件(模块)是一件容易产生错误的工作。在代码修改过程中可能对现存的软件产生影响,很有可能导致程序的崩溃。为了帮助开发人员处理这些问题,C#在语言中内置了版本控制功能。例如:函数重载必须被显式声明,而不会像在C++或java中经常发生的那样不经意地被进行,这可以防止代码级错误和保留版本化的特性。另一个相关的特性是接口和接口继承的支持。这些特性可以保证复杂的软件可以被方便地开发和升级。

(6)灵活性和兼容性

在简化语法的同时,C#并没有失去灵活性。如果需要,C#允许你将某些类或者类的某些方法声明为非安全的。这样一来,你将能够使用指针、结构和静态数组,并且调用这些非安全代码不会带来任何其它的问题。此外,它还提供了一个另外的东西(这样的称呼多少有些不敬)来模拟指针的功能--delegates,代表。再例:C#不支持类的多继承,但是通过对接口的继承,你将获得这一功能。

(7)安全性。

正是由于其灵活性,C#允许与C风格的需要传递指针型参数的API进行交互操作,DLL的任何入口点都可以在程序中进行访问。C#遵守.NET公用语言规范(Common Language Specification, CLS),从而保证了C#组件与其它语言组件间的互操作性。元数据(Metadata)概念的引入,既保证了兼容性,又实现了类型安全。

2.1.2 ASP.NET介绍

ASP.NET是统一的 Web 应用程序平台,它提供了为建立和部署企业级Web应用程序所必需的服务。ASP.NET为能够面向任何浏览器或设备的更安全的、更强的可升级性、更稳定的应用程序提供了新的编程模型和基础结构。

ASP.NET 是Microsoft .NET Framework 的一部分,是一种可以在高度分布的 Internet 环境中简化应用程序开发的计算环境。.NET Framework  包含公共 语言运行库,它提供了各种核心服务,如内存管理、线程管理和代码安全。它也包含.NET Framework 类库,这是一个开发人员用于创建应用程序的综合的、面向对象的类型集合。ASP.NET提供了下面的优点:

可管理性:ASP.NET 使用基于文本的、分级的配置系统,简化了将设置应用于服务器环境和 Web应用程序的工作。因为配置信息是存储为纯文本的,因此可以在没有本地管理工具的帮助下应用新的设置。配置文件的任何变化都可以自动检测到并应用于应用程序。详细信息,请参阅  ASP.NET  配置。

安全:ASP.NET为Web应用程序提供了默认的授权和身份验证方案。开发人员可以根据应用程序的需要很容易地添加、删除或替换这些方案。详细信息,请参阅 ASP.NET安全。

易于部署:通过简单地将必要的文件复制到服务器上,ASP.NET  应用程序即可以部署到该服务器上。不需要重新启动服务器,甚至在部署或替换运行的已编译代码时也不需要重新启动。详细信息,请参阅ASP.NET部署。

增强的性能:ASP.NET是运行在服务器上的已编译代码。与传统的Active Server Pages (ASP) 不同,ASP.NET 能利用早期绑定、实时(JIT) 编译、本机优化和全新的缓存服务来提高性能。详细信息,请参阅ASP.NET性能监视。

灵活的输出缓存: 根据应用程序的需要,ASP.NET 可以缓存页数据、页的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新。

国际化:ASP.NET在内部使用Unicode以表示请求和响应数据。可以为每台计算机、每个目录和每页配置国际化设置。

移动设备支持:ASP.NET 支持任何设备上的任何浏览器。开发人员使用与用于传统的桌面浏览器相同的编程技术来处理新的移动设备。

扩展性和可用性:ASP.NET 被设计成可扩展的、具有特别专有的功能来提 高群集的、多处理器环境的性能。此外,Internet信息服务(IIS)和ASP.NET 运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。详细信息,请参阅ASP.NET进程隔离。

跟踪和调试:ASP.NET 提供了跟踪服务,该服务可在应用程序级别和页面 级别调试过程中启用。可以选择查看页面的信息,或者使用应用程序级别的跟踪 查看工具查看信息。在开发和应用程序处于生产状态时,ASP.NET 支持使用.NET Framework 调试工具进行本地和远程调试。当应用程序处于生产状态时,跟踪语 句能够留在产品代码中而不会影响性能。

与.NET Framework集成:因为ASP.NET 是.NET Framework的一部分,整个平台的功能和灵活性对Web应用程序都是可用的。也可从Web上流畅地访问.NET 类库以及消息和数据访问解决方案。ASP.NET是独立于语言之外的,所 以开发人员能选择最适于应用程序的语言。另外,公共语言运行库的互用性还保 存了基于COM 开发的现有投资。与现有 ASP 应用程序的兼容性:ASP和ASP.NET 可并行运行在 IIS Web 服务器上而互不冲突;不会发生因安装 ASP.NET而导致现有ASP应用程序崩溃 的可能。ASP.NET 仅处理具有 .aspx 文件扩展名的文件。具有.asp文件扩展 名的文件继续由ASP引擎来处理。然而,应该注意的是会话状态和应用程序状 态并不在ASP和ASP.NET页面之间共享。

2.2 系统体系结构的目的

B/S和C/S是当今世界开发模式技术架构的两大主流技术。C/S是美国Borland公司最早研发,B/S是美国微软公司研发。目前,这两项技术以被世界各国所掌握,国内公司以C/S和B/S技术开发出产品也很多。这两种技术都有自己一定的市场份额和客户群,各家企业都说自己的管理软件架构技术功能强大、先进、方便,都能举出各自的客户群体,都有一大用户为其摇旗呐喊,可谓仁者见仁,智者见智。本课题考虑到实际的需要,系统同时采用B/S架构和C/S架构。

2.2.1 C/S架构介绍

C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理 分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的 软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部 的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台 电脑以上局域网用户同时使用。而且代价高,效率低。

2.2.2 B/S架构介绍

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。

以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次 性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据 库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。

2.2.3 B/S和C/S的比较

系统性能的比较

在系统的性能方面,B/S占有优势的是其异地浏览和信息采集的灵活性。任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。

不过,采用B/S结构,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这使得服务器的负担很重。采用C/S结构时,客户端和 服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力。而且,由于客户端使用浏览器,使得网上发布的信息必须是以HTML格式 为主,其它格式文件多半是以附件的形式存放。而HTML格式文件(也就是Web页面)不便于编辑修改,给文件管理带来了许多不便。

系统开发

C/S结构是建立在中间件产品基础之上的,要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应用开发者提出 了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂。如果客户端是在不同的操作系统 上,C/S结构的软件需要开发不同版本的客户端软件。但是,与B/S结构相比,C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握 水平来看,C/S技术应是更成熟、更可靠的。 

    升级与维护

    C/S系统的各部分模块中有一部分改变,就要关联到其它模块的变动,使系统升级成本比较大。B/S与C/S处理模式相比,则大大简化了客户端,只要客户端 机器能上网就可以。对于B/S而言,开发、维护等几乎所有工作也都集中在服务器端,当企业对网络应用进行升级时,只需更新服务器端的软件就可以,这减轻了 异地用户系统维护与升级的成本。如果客户端的软件系统升级比较频繁,那么B/S架构的产品优势明显——所有的升级操作只需要针对服务器进行,这对那些点多 面广的应用是很有价值的,例如一些招聘网站就需要采用B/S模式,客户端分散,且应用简单,只需要进行简单的浏览和少量信息的录入。

客观地分析C/S、B/S的优劣,规划系统的时候有的放矢地“趋利避害”,才能够搭建成合适的信息系统。系统将C/S、B/S有机结合起来:通过终端获取基站数据然后传送接收使用C/S客户端,因为需要使用网络编程来传送接受数据;管理层则使用B/S客户端进行数据的查询,这样客户端比较灵活,只要能上网即可以操作。如此处理,可充分发挥各种模式的优越性——避免了B/S结构在安全性、保密性和响应速度等方面的缺点以及C/S结构在维护和灵活性等方面的缺点。 

2.3 数据库及数据库访问技术

2.3.1 数据库

SQL Server 是一个关系数据库管理系统。SQL Server 2008, 是Microsoft 公司推出的SQL Server 数据库管理系统的新版本。该版本继承了SQL Server 2005 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好、与相关软件集成程度高等优点。

SQL Server 2008具有以下特点:

(1)、丰富的图形化管理工具,使系统管理,操作更为直观方便。SQL Server企业管理器是一个基于图形用户界面(GUI)的集成管理工具,利用它可以配置管理SQL Server服务器、管理数据库和数据库对象、备份和恢复数据、调度任务和管理警报,实现数据复制和转换操作等。此外,SQL Server 2008还提供了SQL事件探查器、SQL查询分析器 、SQL Server服务管理器和多种操作向导等图形界面管理工具,大大简化了用户操作,从而增强了系统的易用性。

(2)、动态自动管理和优化功能。即使SQL Server数据库管理员不做任何设置,SQL Server也能够在运行过程中根据环境配置和用户访问情况动态自动配置,以达到最优性能,从而减轻管理员工作。

(3)、充分的Internet技术支持。SQL Server增强了对Internet技术的支持,它除保留了前期版本中的数据库Web出版工具"Web助手"外,还增加了对XML和HTTP技术的支持,这使得信息系统能够通过XML等访问SQL Server数据库系统,也扩展了SQL Server在数据挖掘和分析服务领域的应用。

(4)、丰富的编程接口工具,使用户开发SQL Server数据库应用程序更加灵活。SQL Server提供了Transact-SQL、DB-Library for C、嵌入式SQL(ESQL)等开发工具。此外,SQL Server 2008还支持ODBC、OLE DB、ADO.NET规范,可以使用ODBC、OLE DB、ADO.NET接口访问SQL Server数据库。

(5)、具有很好的伸缩性和可靠性。SQL Server 2008既能运行在Windows桌面操作系统下,又可运行在服务器操作系统下;既能运行在单CPU计算机上,又能运行在对称多处理系统下。所以,它具有很好的伸缩性,能够满足从桌面应用到大型企业分布式应用等不同层次用户的需求。

(6)、简单的管理方式。SQL Server能够充分利用操作系统所提供的服务和功能(如安全管理、事件日志、性能监视器,内存管理和异步I/O等),从而增强了SQL Server数据库系统的功能,并且只需占用很少的系统资源。

2.3.2数据库访问技术

ASP.NET通过ADO.NET来操作数据库。ADO.NET并不是ADO的升级版本,它是全新的面向对象模型。比ADO更适应于分布式及Internet等大型应用程序环境,为了多人同时存取更具扩展性,ADO.NET的数据存取采用的是离线存取模式,可说是专门为.NET平台设计的数据存取结构。它具有简单地访问关系数据、可扩展性、支持多层应用程序、统一XML和关系数据访问的特点。

(1) 简单地访问关系数据。ADO.NET的主要目标是提供对关系数据的简单访问功能。坦白的说,易于使用的类描述关系数据库中的表、列和行。另外,ADO.NET引入了DataSet类,它代表来自封装在一个单元中的关联表中的一组数据,维持他们之间完整的关系。这是在ADO.NET中的新概念,可以显著的扩展数据访问接口的功能。

(2) 可扩展性。ADO.NET可以扩展——它为插件.NET数据提供者(也称为可管理提供者)提供了框架,这些提供者被构建,以便从任何数据源读取和写入数据。ADO.NET提供了两种内置的.NET数据提供者,用于OLE DB数据源,可以通过OLE DB访问数据格式(比如Microsoft Access)、第三方数据库和非关系数据。另外,Microsoft最近预演了用于ADO.NET的ODBC.NET数据提供者,它允许.NET访问更多的旧的数据格式和第三方数据库。

(3) 支持多层应用程序。ADO.NET用于多层应用程序。这是当今商业和电子商务应用程序最常见的体系结构。在多层体系结构中,应用逻辑的不同部分运行在多个服务器或进程中,每一部分就称为一层。ADO.NET使用开放的Internet标准XML格式在层之间通信,允许数据通过Internet防火墙来传递,并允许以非Microsoft技术来实现一层或多层。

那么在Visual Studio.NET中ADO.NET访问数据库分为二种。一种是Access数据库,另一种是其它任何类型的数据库。系统的后台数据库为sql server 2008,因此是通过SqlConnection、SqlCommand、SqlDataAdapter、DataSet、DataView等几个主要的数据访问对象来访问数据的,以下是在引用类DB.cs中写的几个数据库操作方法。

2.4 基于MVC的软件结构

MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。其中控制器(Controller)负责转发请求,对请求进行处理。视图(View)界面设计人员进行图形界面设计。模型(Model)程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。

系统基于MVC三层框架来进行设计,基础框架遵循标准的 MVC 架构来组织应用,其层次结构:分为表示层、业务逻辑层和数据访问层,把系统的界面、业务、数据分离,各个层次各司其职。这样做的优点是使项目结构更清楚。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了,所以更安全。根据系统实际情况具体分层结构如下:

表示层:主要使用ASP.NET实现,主要有工程定义页面、工程分解页面、工程设置页面、数据上传页面、数据审核流程页面等等,为协同设计人员提供良好的交互页面。通过与用户界面的交互,表示层数据和服务层数据可以方便地进行相互传送。

业务逻辑层:使用工作流引擎和业务逻辑类实现。表示层提供服务和持久层进行数据交互。为系统协同设计提供项目分解分配功能、设计审核流程及其他管理、数据查询功能等等。

数据访问层:进行数据的处理,主要有用户实体、工程实体、地区实体、基站实体以及各工程节点实体等等。在基站建设过程中产生大量的合同文档、设计图纸、各节点验收图片及验收数据等资源信息,这些信息全部保存到数据库中,同时也可对数据库的数据进行访问,实现数据的动态交互。系统MVC组件类型的关系图如图2-1所示:

图2-1 系统MVC组件类型关系图

系统充分做到了MVC中“分解关注点”的思想:Model要重、Controller要轻、View要够笨。所有数据库的访问的动作全部通过Model层级的类来进行操作,尽可能的隐藏数据库访问数据或筛选数据的动作。并且更进一步地将一些复杂的业务逻辑一并抽离到Model层级的类中,以降低Controller的复杂度,让Controller思考的仅是如何有意义地操作数据,而如何筛选、改变数据,怎么设定默认值,以及使用哪种存储方式,都不会在Controller中看到,包括数据连接的程序代码也都一并抽离到独立的类中。

基于单一责任原则(Single Responsibility Principle,SRP),系统将与数据库访问有关的动作抽象成一个一个的接口,目的让Controller专注与接口方法的使用上,而非实现的细节。这样,降低了Controller与Model之间的耦合度,达到了“分解关注点”的目的。

系统同时采用了IOC的开发模式,IOC英文全称为“Inversion of Control”,控制反转模式。在规划较大型的软件架构时,IOC方法可以有效的降低类之间依赖的情况,不但能增加架构的弹性,也能有效降低软件的复杂度。

2.5 系统中Ajax技术的应用

2.5.1. Ajax的概述

Ajax 这一术语是短语 Asynchronous JavaScript and XML,中文译作“异步式JavaScript 与 XML”,它是近几年出现,并迅速红遍大江南北的一项技术。严格来说,Ajax 不是一个新技术,而是几种已有技术的组合,或者也可以说是一种模式,它主要包括一下项技术:

基于 web 标准的 XHTML+CSS 的表示。

使用 DOM(Document Object Model)进行动态显示及交互。

使用 XML  和  XSLT 进行数据交换及相关操作。

使用 XMLHttpRequest  进行异步数据查询、检索。

传统的 web 应用允许用户填写表单,当提交表单时就向 web 服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分 HTML 代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,Ajax 应用可以仅向服务器发送并取回必需的数据,它使用 SOAP或其它一些基于 XML 的 Web Service 接口,并在客户端采用 JavaScript 处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以 Web 服务器的处理时间也减少了。Ajax 应用程序的优势在于:

1.通过异步模式,提升了用户体验。

2.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。

3. Ajax 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

2.5.2 Ajax 技术的实现原理

图 2-2  传统同步模型下请求示意图

图 2-3  Ajax 异步模型请求示意图

图 2-2 显示了在传统的同步模型情况下,B/S 架构的系统是如何工作的。在 这种架构下,客户端发出请求,可能是单纯请求一个新页面,也可能是提交了包含数据的表单。不论怎样,这些请求信息将被提交到服务端,在从提交开发,客户端就进入“假死”状态,服务端收到请求信息及数据,按照指定的程序对其进 行处理,然后把响应信息交给客户端,这些响应信息是完整的页面。客户端接到 响应信息后,把它们显示在浏览器中。

图 2-3 是基于 Ajax 技术异步模型下 B/S 系统的工作原理图。在这里,客户端不再直接向服务端发出请求,而是通过一个 XMLHttpRequest 对象发送一个异步请求,而后,服务端接收到请求和数据,开始按照程序进行处理,而此时的客户端不必等待,可以继续做自己的工作。当服务端完成处理后,将自动调用一个在发送请求时指定的回调函数,这个回调函数一般使用 JavaScript 对页面的 DOM 进行操作,完成页面的更新。而整个这个过程是不需要刷新页面的。

2.5.3.Ajax的几种框架

    目前我们采用的比较多的ajax框架主要有ajax.dll,ajaxpro.dll,magicajax.dll 以及微软的atlas框架。Ajax.dll和Ajaxpro.dll这两个框架差别不大,而magicajax.dll只是封装得更厉害一些,比如说它可以直接返回DataSet数据集,前面我们已经说过,ajax返回的都是字符串,magicajax只是对它进行了封装而已。但是它的这个特点可以给我们带来很大的方便,比如说我们的页面有一个列表,而列表的数据是不断变化的,那么我们可以采用magicajax来处理,操作很简单,添加magicajax之后,将要更新的列表控件放在magicajax的控件之内,然后在pageload里面定义更新间隔的时间就ok了,atlas的原理和magicajax差不多。但是,需要注意的一个问题是,这几种框架都只支持IE,没有进行浏览器兼容方面的处理,用反编译工具察看他们的代码就可以知道。

 除这几种框架之外,我们用到的比较多的方式是自己创建xmlHttpRequest对象,这种方式和前面的几种框架相比更具有灵活性。另外,在这里还提一下ASP.NET2.0自带的异步回调接口,它和ajax一样也可以实现局部的无刷新,但它的实现实际上也是基于xmlhttprequest对象的,另外也是只支持IE,当然这是微软的一个竞争策略。

2.5.4.Ajax在系统中的应用

ASP.NET MVC中内置了Ajax的辅助方法,可以辅助开发人员快速的实现Ajax的开发效果。系统在MasterPage中加载了MicrosoftAjax.js,MicrosoftMvcAjax.js两个JavaScript文件,使用Ajax.BeginForm()、Ajax.ActionLink()方法来进行Ajax调用,并使用一些支持Ajax框架的jQuery来简化对Ajax的调用。使用Ajax辅助方法操作数据,页面并不会换页,而是直接将操作的结果显示在页面上,界面显示非常友好。

2.6 IIS信息服务器

IIS是Internet Information Server的缩写,它是微软公司主推的服务器,最新的版本是Windows2003里面包含的IIS 6.0,IIS与WindowNT Server完全集成在一起,因而用户能够利用Windows NT Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。

IIS支持HTTP(Hypertext Transfer Protocol,超文本传输协议),FTP(Fele Transfer Protocol,文件传输协议)以及SMTP协议,通过使用CGI和ISAPI,IIS可以得到高度的扩展。IIS支持与语言无关的脚本编写和组件,通过IIS,开发人员就可以开发新一代动态的,富有魅力的Web站点。IIS不需要开发人员学习新的脚本语言或者编译应用程序,IIS完全支持VBscript,Jscript开发软件以及Java,它也支持CGI和WinCGI,以及ISAPI扩展和过滤器 。在系统中主要是用到IIS的WEB服务器功能。

IIS的设计目的是建立一套集成的服务器服务,用以支持HTTP,FTP和SMTP,它能够提供快速且集成了现有产品,同时可扩展的Internet服务器。IIS相应性极高,同时系统资源的消耗也最少,IIS的安装,管理和配置都相当简单,这是因为IIS与Windows NT Server网络操作系统紧密的集成在一起,另外,IIS还使用与Windows NT Server相同的SAM(Security Accounts Manager,安全性账号管理器),对于管理员来说,IIS使用诸如Performance Monitor和SNMP(Simple Nerwork Management Protocol,简单网络管理协议)之类的NT已有管理工具。IIS支持ISAPI,使用ISAPI可以扩展服务器功能,而使用ISAPI过滤器可以预先处理和事后处理储存在IIS上的数据。用于32位Windows应用程序的Internet扩展可以把FTP,SMTP和HTTP协议置于容易使用且任务集中的界面中,这些界面将Internet应用程序的使用大大简化,IIS也支持MIME(Multipurpose Internet Mail Extensions,多用于Internet邮件扩展),它可以为Internet应用程序的访问提供一个简单的注册项。

IIS的一个重要特性是支持ASP。IIS 3.0版本以后引入了ASP,可以很容易的张贴动态内容和开发基于Web的应用程序。对于诸如VBscript,Jscript开发软件,或者由Visual Basic,Java,Visual C++开发系统,以及现有的CGI和WinCGI脚本开发的应用程序,IIS都提供强大的本地支持。在 IIS 6.0 中,ASP.NET MMC 管理单元提供了用于配置 ASP.NET 的 IIS 相关管理功能。系统就是采用IIS6.0版本。


第三章 系统需求分析

3.1 系统特性分析

为适应当代社会的需要,一个好的图书馆管理系统应该具有如下一些特性:

(1) 良好的简单实用的特性。

因为图书馆管理系统的使用者大多都是普通的用户,并不具备非常专业的计算机类知识,过于复杂的系统将会使系统操作人员不方便使用,因此,简单实用的系统成为了系统意向非常重要的指标,能够适用于任何人群,不需要太多的计算机类知识,仅仅只要求使用的工作人员具有最基本的计算机知识,即可用系统完成图书馆中的基本业务处理,而且系统能够极大的提升工作人员的工作效率,比如借书,我们只需要在大厅中登录系统即可搜索书籍,能够从中得知书本的详细信息。如大致内容,作者,馆藏数量,可借数量,藏书位置等,这将极大地方便读者。而得到了藏书的位置的我们找到该书就变得很轻松,找到书后,我们仅仅只需在分馆工作人员处扫描借书证和图书上的条形码即可完成借书。从以上的借书流程,我们可以看到这个系统带来的好处,简单实用且高效。

(2) 基 于 Web 模 式 的网 络 特 性。

系统只需要在服务器上安装一次,客户端电脑利用浏览器就可以访问该系统,无需安装任何额外程序。本图书馆管理系统的管理和升级方面比较轻松,升级管理服务的维护在一台服务器上就可轻松搞定,这样企业和个人的信息在任何地方都不必担心升级更新的问题。

    (3)易维护和更新管理的特性。

针对于现在企业发展的趋势,企业管理要求和用户的需求不断的发生着变化,必须要一套适合企业和用户现今需求而且能定制未来发展模式的图书馆管理系统,也就是说我们需要的软件应该是可以随着用户需求的调整和改变而做出相应的调整和改变的灵活系统,可以快速灵活地根据客户需要进行客户化开发,增加、修改客户界面和客户流程,更加的人性化。这样就能减少系统二次开发的成本,并且能充分的满足、贴切用户的需求,进而节约不必要的开支,更好的为用户服务。

3.2 系统核心用例分析

3.2.1 系统用户分析

对于一个需要安全严格控制的图书馆管理系统,通过用户登录方式,控制用户权限是非常有效的方法。因此在系统中,需要设计怎么样级别的用户角色,是一个需要考虑地重点。

从系统的需求出发,系统目前只需要考虑操作的员登录系统,行使操作员的权限,对系统进行基本数据录入和管理。系统管理员是系统的高级拥有者,管理系统所有图书馆读者、图书等信息,查看时时报表数据等。 这两者都是系统逻辑用户。此外,还需要一个管理系统平台的自定义用户,这些用户须由管理员添加而不能自由注册,然后管理员根据这些用户的工作职能给予不同用户不同的权限,其将帮助系统平台的正常运行和解决系统运行过程中的一些问题。通过此需求分析,系统设计如下两种用户角色。

图3-1 系统用户关系图

基于系统的扩展性设计,用户的权限管理不仅如此,通过用户、角色与权限分析,以及引入分组的概念,使得系统在未来的升级中,能适应越来越复杂的系统需求。

3.2.2 用户登录用例

系统用户登录是系统用户使用系统的唯一途径,通过对用户的登录管理,系统自动获取当前用户的角色,并通过得到当前角色的权限,在系统的主界面中显示与该角色相符的功能界面和链接。系统用户的登录用例图如图3-2所示。同时,为了进一步加强安全控制,系统还采用了验证码的验证登录。

图3-2 系统用户登陆用例图

触发条件:

系统用户打开系统登录界面->填写本人帐号和密码->点击登录按钮登录。

系统反馈:

图书馆管理系统按服务器在接受到用户的登录信息后,先验证用户是否存在,接着验证用户的密码是否正确。如果登录成功,用系统会从数据库中获取该用户的权限,跳转到相应的主界面。登录活动图如图3-3所示。

图3-3 用户登录活动图

   

3.2.3读者管理用例

   读者管理,整个系统平台对读者管理,在系统中能够添加读者类型来细化读者的管理,也能够添加读者,当某个读者类型下有该类型读者存在,则不能删除读者类型。

在系统中引入读者类型设置的概念是系统从实际出发的最好验证,总所周知,读者最鲜明的特征就是类型各异性,读者的类型的合理设置能够提高图书馆的管理效率,细化管理和提供优良的服务。因此,对于读者的添加一般都说由专门的管理员进行管理。系统中对读者进行分类管理正符合这样的实际情况。

图3-4 地区管理用例图

   在系统设计中,一般一个用户类型对应着会有若干个用户由其统一管理,进行借书数量的控制。

   触发条件:

   管理员->登录系统[用例3-2]->打开读者类型管理->新增读者类型->填写相应信息->提交

   管理员->登录系统[用例3-2]->打开读者类型管理->修改读者类型->填写相应信息->提交

   管理员->登录系统[用例3-2]->打开读者类型管理->选中相应类型->删除读者类型->提交

   系统反馈:

   在管理员点击提交新增读者类型的时候,浏览器客户端首先会检测相应的字段是否为空,对于不可为空的项给与不能为空的友好提示。当客户端验证通过后,系统的服务器端首先会查询新创建的读者类型是否已经存在,如果存在,则返回读者类型已存在的警告信息。如果读者类型创建成功则返回成功消息。

在管理员点击提交更新读者类型信息时,系统会根据读者类型的主键标识,更新该类型的相关的详细信息,除了读者类型主键ID,任何信息都是可以修改的。

对于删除读者类型信息,系统则会做严格的检测。如果系统中有任何读者或者其他信息关联到该类型,那么该类型则无法删除。如果管理员想强制删除,则首先会删除关联该类型的其他所有表的数据,然后删除该类型信息。

同样的,我们也可以对单个用户进行管理。

触发条件:

   管理员->登录系统[用例3-2]->打开读者档案管理->新增读者档案->填写相应信息->提交

   管理员->登录系统[用例3-2]->打开读者档案管理->修改读者档案->填写相应信息->提交

   管理员->登录系统[用例3-2]->打开读者档案管理->选中相应读者档案->删除读者类型->提交

   系统反馈:

   在管理员点击提交新增读者的时候,系统会根据当前时间自动生成一个条形码,具体的生成规则是当前日期和当前时间的分钟和秒钟拼接,这个是标示读者身份信息的唯一编号,由专门的工作人员填写读者相关信息后提交,浏览器客户端首先会检测相应的字段是否为空,对于不可为空的项给与不能为空的友好提示。当客户端验证通过后,系统的服务器端首先会查询新创建的读者档案是否已经存在,如果存在,则返回读者已存在的警告信息。如果读者创建成功则返回成功消息。

在管理员点击提交更新读者信息时,系统会根据地区读者的主键标识,更新该读者的相关的详细信息,除了读者主键ID,任何信息都是可以修改的。

对于删除读者信息,系统则会做严格的检测。如果系统中有任何读者或者其他信息关联到该类型,那么该类型则无法删除。如果管理员想强制删除,则首先会删除关联该类型的其他所有表的数据,然后删除该类型信息。

3.2.4 图书管理用例

图书管理用例是系统的主要特征。在系统的需求分析和设计中,是以图书类型为单位管理的。每一个图书类型都有一个属性,就是该图书归属于哪一个类型。通过访问系统中图书的信息,能够清楚的看到该图书的详细信息。

    触发条件:

    管理员->登录系统[用例 3-2]->点击图书类型管理->点击添加图书类型->填写图书信息->提交

管理员->登录系统[用例 3-2]->点击图书类型管理->选择相应图书类型->点击修改->填写修改内容->提交

管理员->登录系统[用例 3-2]->点击图书类型管理->选择相应图书类型->删除->提交

系统反馈:

系统的服务器接收到用户发送过来的相应操作后,会根据具体的操作进行相应的处理。当用户新增图书类型信息时,如果该类型不存在时在会成功添加该类型,如果该类型已经存在时,则会返回创建失败信息。

系统能够成功删除图书类型。但是不是每个删除都会成功,在删除数据时,系统会严格的检查。当发现有对该类型依赖的其他信息时,则不允许删除类型。如果管理员需要强制删除该类型信息,系统则会首先删除和该类型有关的其他所有信息,比如图书信息表等,然后才会删除图书类型信息。

3.3 系统开发和运行环境

系统开发的操作系统是Windows Server 2003,使用的开发工具是微软的Microsoft Visual Studio 2010,使用前必须要安装好.NET Framework 4.0。数据库使用了SQL SERVER 2008。系统开发完成后,C/S模式的通信软件直接打开运行就行,而web平台则在Windows 2003自带IIS6.0服务器里面发布,在网站配置里面设置好静态IP地址等属性,就可以通过该IP在你的电脑上或局域网内用浏览器访问。如果网站挂在Windows XP系统,需要手动添加IIS 5.1。下面介绍下开发工具及该运行环境的优点:

1. Windows Server 2003 是微软Windows系列操作系统服务器版,支持高性能服务器,并且可以群集服务器,以便处理更大的负荷。通过这些功能实现了可靠性,有助于确保系统即使在出现问题时仍可用。

2. Microsoft Visual Studio 2010是美国微软公司的开发工具包系列产品的一种。是一个基本完整的开发工具集,它包括了软件整个生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境等等。其核心是.NET Framework,它提供了一个新的环境,在此环境下,可以用多种语言开发出在Windows平台上运行的各种复杂的分布式应用程序。

3、SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台愿意帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。这个就对数据的安全性有了很大程度上的保障,同时也就保障了公司的机要信息的保密性,而且对能提高客户对系统访问的并发性。

第四章 系统详细设计

4.1系统功能分析

4.1.1系统功能结构

经过以上的系统分析,能够得到我们系统基本的功能是对图书馆藏书的操作和管理。系统的基本数据流动为数据的输入,包括图书的数据的录入、读者信息数据的录入,图书的数据,包括书名,条形码,作者,出版社,出版年月,入库年月等,以及读者要求的对数据的查询和其他要求所产生的数据输出。数据的输入与输出处理流程都是依靠数据库的支持,要将这些信息按照一定的方法规则建立数据库,在需要时可以随时调出来看,及时掌握图书的信息,提高图书的管理的效率。

根据上章对系统功能需求的分析,对系统的各项功能进行集中、分块,按照结构化程序设计的要求,图书馆管理系统的主要功能有系统设置、图书管理、读者管理、图书借还等。从而得到系统的主要功能模块图如图4-1所示。

4.1.2系统主要业务流程

1.登录流程

2.借书流程图

还书业务流程图:

4.2系统模块设计

4.2.1用户登录模块的设计

用户登录模块是系统的唯一入口,任何用户想要进入系统都必须凭用户名和密码进入该系统已进行各项操作,根据需求,要求能够由系统管理员在系统中设置登录系统的各用户的权限,因此,在验证用户名密码后需检查登录用户的权限,以确定登录用户能够操作哪些模块。系统中管理员能够设置的权限有:系统设置,读者管理,图书管理,图书借还,系统查询。不具备某项权限的用户打开该模块时,系统会提示没有权限。

4.2.2系统设置模块的设计

系统设置模块主要有三个子模块:图书馆信息管理,管理员设置,书架设置。

图书馆信息管理模块中能够查看到这个图书馆的一些基本信息,登陆进来的用户能够对图书馆信息进行修改

管理员设置中,能够添加和删除用户,也能够修改用户的权限,这是一个十分重要的模块,此模块的权限控制必须只能给予部分高权限的用户。

书架设置中能够添加修改和删除书架,这里所说的书架实质上就是我们平时所见图书馆中的各个分馆

4.2.3读者管理模块的设计

读者管理主要分为两个子模块:读者类型管理、读者档案管理。

读者类型管理,在这里,具有相关权限的用户能够自由设置读者类型,通过对读者类型信息进行添加、修改及删除操作,来管理读者。

读者档案管理,在此模块中,具有相关权限的用户能够对读者进行更加细微的控制,主要功能有对读者信息进行添加、修改、查看及删除操作。

4.2.4图书管理模块设计

图书管理:图书类型管理、图书档案管理。

图书类型管理,能够通过添加图书类型来对图书类型进行添加、修改及删除操作。

   图书档案管理,对图书信息进行添加、修改及删除操作。

4.2.5图书借还模块设计

图书借还:图书借阅、图书归还。

  图书借阅,对图书借阅信息添加操作。

  图书归还,对图书归还信息进行添加操作。

4.2.6系统查询模块设计

系统查询:图书档案查询、图书借阅查询。

图书档案查询,对图书档案信息进行查询操作。

图书借阅查询,对借阅的图书信息进行查询操作。

4.2 数据库设计

在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式,然后再把概念模式转换成逻辑模式,将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。

4.2.1 数据库设计介绍

利用E-R方法进行数据库的概念设计,可分成三步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局模式,最后对全局E-R模式进行优化,得到最终的模式,即概念模式。

1.设计局部E-R模式

ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。

2.设计全局E-R模式

所有局部E-R模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部E-R模式,而且必须合理地表示一个完整、一致的数据库概念结构。

A.确定公共实体类型

为了给多个局部E-R模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和主键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。

B.局部E-R模式的合并

合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。

C.消除冲突

冲突分为三类:属性冲突、结构冲突、命名冲突。设计全局E-R模式的目的不在于把若干局部E-R模式形式上合并为一个E-R模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型。

D.全局E-R模式的优化

在得到全局E-R模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。

4.2.2系统E-R图设计

4.2.3系统表设计

表名:Adms_set

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

UserNamen

Varchar(80)

800

0

2

systemSet

bit

4

0

3

readerManage

bit

1

0

4

bookManager

bit

1

0

5

bookBorrow

bit

1

0

0

6

systemSearch

bit

1

0

表名:bookinfo

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

bookBarCode

Varchar(100)

100

0

2

systemSet

Varchar(100)

100

0

3

bookType

Int

4

0

4

bookcase

Int

4

0

5

bookConcern

Varchar(100)

100

0

0

6

author

Varchar(80)

80

0

7

price

money

8

0

8

borrowSum

int

4

0

表名:readerinfo

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

ReaderBarCode

Varchar(50)

50

0

2

readername

Varchar(50)

50

0

3

sex

Char(10)

10

0

4

readerType

Varchar(50)

50

0

5

certificateType

Varchar(50)

50

0

0

6

certificate

Varchar(50)

50

0

7

Tel

Varchar(50)

50

0

8

Email

Varchar(50)

50

0

9

Remark

Varchar(500)

500

0

表名:bookBorrow

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

bookBarcode

Varchar(50)

50

0

2

bookName

Varchar(50)

50

0

3

borrowTime

datetime

8

0

4

ReturnTime

Datetime

8

0

5

readerBarcode

Varchar(50)

50

0

0

6

readerName

Varchar(50)

50

0

7

isReturn

bit

1

0

表名:bookcase

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

BookcaseID

int

4

0

2

bookcaseName

Varchar(80)

80

0

表名:bookcase

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

typeID

int

4

0

2

typeName

Varchar(50)

50

0

3

borrowDay

int

4

0

表名:library

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

libraryName

Varchar(80)

80

0

2

curator

Varchar(80)

80

0

3

tel

Varchar(100)

100

0

4

address

Varchar(200)

200

0

5

email

Varchar(100)

100

0

0

6

net

Varchar(200)

200

0

7

upbuildTime

datetime

8

0

8

remark

Varchar(500)

500

0

表名:readertype

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

Id

int

4

0

2

Type

Varchar(50)

50

0

3

Num

Varchar(50)

50

0

表名:Adms_set

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

userId

int

4

0

2

userName

Varchar(50)

50

0

3

userPwd

Varchar(50)

50

0

4.4 系统异常处理设计

4.4.1异常信息

系统出错信息的提供分两个部分,一是系统的错误信息,二是数据库错误信息和应用程序自动化错误信息。系统的错误信息将以统一的面貌表现出来,采用Windows提示信息方式。系统的出错和故障分为以下几类:

1.程序错误:此类错误属于程序设计时由于设计人员出错产生的错误,这种错误一般是无法更改的,需由开发人员对程序错误进行修正,在系统调试时应尽量考虑设计管理系统的各种使用情况,将程序错误的出现尽量减小到最少。

2.网络错误:主要由于拥护网络硬件或软件配置导致的网络错误,如网络中断,网络传输掉包等故障,此类故障将导致系统无法运行,运行中突然退出或死机,系统运行效率显著下降等。

3.基本配置错误:在与数据库建立连接时必须保证相应的应用程序的配置正确,由于用户安装其他软件或中途关机都有可能造成基本配置的改变,基本配置的改变将导致客户断无法与服务器连通,使系统无法使用,恢复一般为系统重安装或由相关技术人员对系统进行重新设置。

4.4.2补救措施

对于系统出现的不可恢复的错误,这里指的不可恢复错误是无法对系统进行配置,使系统恢复正常使用。一般处理方式为后备恢复,设计系统采用数据库级的备份等,二是建立详细的事务日志,所有的操作都将记录在案。

第五章 系统运行及测试

5.1 软件测试的方法与步骤

该系统在本地服务器上进行运行和调试,鉴于对系统的内部结构和处理算法的完全了解以及对系统功能的全面掌握对系统进行白盒测试和黑盒测试。

在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。测试目的在于:发现错误而执行一个程序的过程,测试重要发现一个发现其中尚未发现的错误。

本系统的测试阶段信息流程下图所示[15]。

图5.1  测试阶段信息流程图

为了设计出有效地测试方案按照下面准则进行测试:所有测试都应追溯到用户需求;在完成了需求模型就要着手制定测试计划,在编码之前最所有测试工作进行计划和设计;运用Pareto原理着重对占出现错误80%的容易出错的20%的模块进行测试,从小规模开始逐步进行大规模测试,通常先重点测试单个程序模块再转向集成的模块簇;精心设计测试方案,尽可能充分覆盖程序逻辑使之达到要求的可靠性[15]。

按照软件工程的观点,软件测试(主要是指多模块程序的测试)共包括4个层次。

1)单元测试。单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。

2)集成测试和确认测试。这一阶段的任务,是通过了单元测试的模块逐步组装起来,通过测试与纠错,最终得到一个满足需求的目标软件。

3)验证测试。在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试[15]。

在整个测试中,采用了白盒测试和黑盒测试相结合的方法。

5.2 测试计划和要点

软件测试的本质是针对测试的内容确定的一组测试用例。在讨论之前,需先把要测试各个模块的计划和要点列出:

5.2.1 系统设置模块测试要点

数据库连接情况:如正常情况,数据库文件缺少,外部系统异常等。

系统设置获取:正常情况,外部系统异常。

对用户输入响应:合法输入,能正常调用子模块;

非法输入验证,系统能否辨别,并作出响应(提出警告);

子模块异常状况,系统能否及时做出响应。

5.2.2 借阅模块测试要点

模块正常运行流程

用户输入数据检查(读者条形码、图书图书条形码),包括数据合理性检查,以及合法性检查

数据库操作

数据库连接异常时响应情况

5.2.3 读者管理模块测试要点

数据库连接正常时

输入合理合法参数

输入参数不合理

输入参数不合法

数据库连接异常;数据库数据异常(读者姓名为空)

5.2.4 图书管理模块测试要点

数据库连接正常

数据库数据正常

输入的书条形码合理合法

输入的书条形码不合理

输入的书条形码不合法

数据库数据异常

数据库连接异常

5.2.5 图书借还模块测试要点

模块正常的工作流程

对输入的较验,包括输入值的合法性与合理性较验

数据库连接异常时能否做出适当处理

数据库数据异常能否判断并给予适当处理

5.3测试用例设计与测试用例的运行过程及测试结果分析

5.3.1模块测试

1.用户登录测试

用户登录测试是测试系统访问的安全性,以及各个页面的设计的安全性,测试方案如下表5-1所示。

说明:下表中的“否”表示拒绝访问,没有通过系统的身份验证。“是” 表示可以访问系统。

表 5-1 用户登录测试表

用户类型

用户名

密码

空密码

错误

错误类型

管理员

用户名空

管理员

admin

密码空

管理员

00001

hyll

密码错误

管理员

admin

hyl

正确

当用户输入的用户名或密码错误是系统会跳转到出错页面并提示“您输入的用户名或密码错误”,用户点击确定,系统会重新返回登陆页面,其中错误信息提示页面如图5-2所示:

图5-2 系统出错提示页面

     2.更改密码模块测试

用户登录系统后可对自己的登录密码进行更改,更改过程要求用户提供原始密码,输入新密码,重新输入新密码进行确认,如果用户输入的原始密码错误,或两次输入的新密码不一致将无法执行密码更新操作,系统会给出相应的提示,其测试方案如表5-2:

表 5-2口令修改测试表

用例编号

原密码

新密码

重复新密码

错误

错误类型

5.2.1

111

111

原密码不正确

5.2.2

hyl

新密码为空

5.2.3

hyl

111

222

两次密码输入不一致

5.2.4

hyl

111

111

正确

: 图5-3是用例5.2.3的执行结果:

图5-3 两次密码不一致提示页面

3.添加书籍功能测试

作为一个图书馆管理系统,系统与书籍的关系是息息相关的,因此,书籍的添加也是系统最为重要的功能之一,也是测试的重点。其测试方案如表5-3.

表5-3 添加图书模块测试用例

字段名称

描 述

标识符

C1

测试项

图书添加功能的功能测试

输入标准

1.打开图书档案管理模块,点击添加图书信息。

2.输入一些正确的图书信息,图书名称,类型,出版社和价格为必填项,点击“保存”。

3.输入一些非法的图书信息,如使必填项为空

输出标准

1.模块未做任何操作,单击 “退出”命令,能正常退出,无提示信息。

2.在打开图书添加模块,做相关的“添加”操作,未保存,单击 “退出”命令,提示“修改信息未保存,保存修改吗?”单击“Yes”,保存修改,正常退出,单击“No”,不保存修改,并退出。

3.输入错误图书信息,系统将提示错误信息。

添加图书信息页面如图5-4所示

图5-4

4.添加读者功能测试

作为一个图书馆管理系统,读者往往是图书馆工作人员的服务对象,因此,读者的添加同样也是系统最为重要的功能之一,也要作为测试的重点。其测试方案如表5-4.

表5-4添加读者功能测试用例

字段名称

描 述

标识符

C2

测试项

读者添加功能的功能测试

输入标准

1.打开读者档案管理模块,点击添加读者信息。

2.输入一些正确的读者信息,图书名称,类型,出版社和价格为必填项,点击“保存”。

3.输入一些非法的图书信息,如使必填项为空

输出标准

1.模块未做任何操作,单击 “退出”命令,能正常退出,无提示信息。

2.在打开图书添加模块,做相关的“添加”操作,未保存,单击 “退出”命令,提示“修改信息未保存,保存修改吗?”单击“Yes”,保存修改,正常退出,单击“No”,不保存修改,并退出。

3.输入错误图书信息,系统将提示错误信息。

测试结果如图5-5所示。

图5-5添加读者失败

5.借阅模块测试

图书借阅是图书馆管理系统主要的功能,是测试重点之一,测试用例为表5-5

表5-5借阅模块测试用例

字段名称

描 述

标识符

C3

测试项

借阅模块的功能测试

输入标准

1.打开借阅模块,没有任何输入字符,点击相应的项目。

2.输入一些正确的读者条形码、图书条形码,点击“借阅”。

3.输入一些非法的读者条形码、图书条形码,能否查看到该读者或这本图书。

输出标准

1.模块未做任何操作,单击 “退出”命令,能正常退出,无提示信息。

2.在打开借阅模块,做相关的“借出”操作,未保存,单击 “退出”命令,提示“修改信息未保存,保存修改吗?”单击“Yes”,保存修改,正常退出,单击“No”,不保存修改,并退出。

3.输入错误读者或图书条形码,系统将提示错误信息。

图书借阅功能测试结果为图5-6和图5-7

5-6读者条形码输入错误

图5-7图书条形码输入错误

6.还书功能测试

图书借阅是图书馆管理系统主要的功能,是测试重点之一,测试用例为表5-6

表5-6 还书功能测试用例

字段名称

描 述

标识符

C4

测试项

还书功能测试

输入标准

1.打开还书模块,没有任何输入字符,点击相应的项目。

2.输入一些正确的读者条形码,点击“查询”,能否显示借书信息,选择借书信息,点击“还书

3.输入一些非法的读者条形码,能否查看到该读者。

输出标准

1.模块未做任何操作,单击 “退出”命令,能正常退出,无提示信息。

2.在打开还书,做相关的“还书作,未保存,单击 “退出”命令,提示“修改信息未保存,保存修改吗?”单击“Yes”,保存修改,正常退出,单击“No”,不保存修改,并退出。

3.输入错误读者,系统将提示错误信息。

4.正常执行时,系统提示还书成功。

图书还书测试结果为图5-8

5-8还书成功

7.续借功能测试

图书续借是图书馆管理系统主要的功能,是测试重点之一,测试用例为表5-7

表5-7还书功能测试用例

字段名称

描 述

标识符

C5

测试项

续借测试

输入标准

1.打开续借,没有任何输入字符,点击相应的项目。

2.输入一些正确的读者条形码,点击“查询”,能否显示借书信息,选择借书信息,点击“续借”。

3.输入一些非法的读者条形码,能否查看到该读者。

输出标准

1.模块未做任何操作,单击 “退出”命令,能正常退出,无提示信息。

2.在打开还书,做相关的“续借”操作,未保存,单击 “退出”命令,提示“修改信息未保存,保存修改吗?”单击“Yes”,保存修改,正常退出,单击“No”,不保存修改,并退出。

3.输入错误读者,系统将提示错误信息。

4.正常执行时,系统提示续借成功。

图书还书测试结果为图5-9

5-9图书续借成功

5.3.2 验收测试

在进行了以上的测试工作后,将整个软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但它是在用户积极参与下进行的,此测试过程主要使用实际数据,进行测试,验证测试的目的是验证系统确实能够满足用户的需求,经过这个环节的实际数据测试,系统的各个功能实现都达到了系统需求设计的要求。

5.4评价

测试过程严格按照测试的流程,经过单元测试、子系统测试和系统测试。通过单元测试,查找出了系统各模块内部的错误;通过子系统测试,发现了模块间相互协调和通信上的错误;通过系统的集成测试,发现了软件设计过程中存在的错误。通过改正错误的设计和实现部分,保证了图书借阅管理系统可以完成需求分析中制定的需求[16]。

从上面的测试中可以看出,此系统可以完成用户登录、系统设置、图书管理、读者管理管理、借阅管理和系统查询等功能。读者在本系统的应用下可实现按照各种方式(如:书名,编号,作者)查询图书馆的藏书请客,方便的借阅图书,续借图书,归还图书,能够查询自己的借阅图书情况。图书馆工作人员能够实现方便的对图书进行查询,方便的进行读者借阅情况查询,方便的进行借书还书处理等,便捷的对图书信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。系统管理员可以对图书馆信息进行修改更新操作,对系统用户进行添加、修改、删除、权限设置等操作,对图书馆的办证参数进行修改维护等操作功能。测试阶段的工作一方面发现了系统的各种错误,另外一方面也验证了修改后的系统能够实现提高图书馆工作效率的预期目的。

第六章 总结与展望

6.1 总结

随着社会的发展,计算机科学技术将越来越深入大家的生活中,将越来越多重复的繁杂的任务交给计算机自动处理的办公自动化已经成为了必然的趋势。我设计的这个图书馆管理系统系统就是随着这个趋势氤氲而生。系统是采用最新的编程技术C#编写而成,能够保证五到八年内技术上不会过时,同时,系统采用的sqlserver2008数据库也是相当先进的技术,这个数据库能够存储大量的数据,足以满足大中型数据库的需求,该数据库易于维护也是一个相当大的优点,图书馆工作人员只需进行少量培训即可胜任数据库的维护工作。系统采用B/S架构,这个架构的优点同样是易于维护,它不像C/S架构的系统,一旦更新,服务端和客户端都需要更新,系统只需要在服务器端进行更新,即可完成全部的更新操作。

系统技术和架构上都是采用的先进技术,业务流程上,也进行了大量的优化,省去很多的步骤,往往以前需要十多的步骤才能完成的业务,现在仅仅需要三四步即可完成,大大减少工作人员的工作量,提高工作效率。

6.2 展望

系统虽然很好的完成了需求功能,达到了系统需求的管理要求。但由于时间过于仓促以及其他一些原因,系统还存在着一些欠缺。

1、由于系统目前针对的图书馆管理的功能还很少,为了更进一步的添加功能模块,让系统成为一个完整的体系,系统还需要进一步的升级改进。

2、系统还需实现对基站的远程喊话功能,在系统改进时,还需不断引入新技术,使系统更加智能完善。

    3、因为技术上的原因,测试还很不彻底,需要专业的测试人员进行更深一步的测试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值