首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文统计学
   图书馆信息查询子系统的设计分析      ★★★ 【字体: 】  
图书馆信息查询子系统的设计分析
收集整理:佚名    来源:本站整理  时间:2012-06-29 22:17:51   点击数:[]    

[本篇论文由5var5VAR论文频道为您收集整理,5VAR论文频道http://paper.5var.com将为您整理更多优秀的免费论文,谢谢您的支持]

第一章    绪论
1.1  研究动机与目的
    图书馆管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端的应用程序的开发两个方面。对于前者要求建立数据的一致性和完整性,对于后者则要求应用程序功能的完备,易用等的特点。基于上述考虑本设计主要利用PowerBuilder 9作为开发工具 ,利用WINDOWS作为系统平台开发的图书馆信息查询子系统。另外本图书馆信息查询子系统利用软件工程化思想和方法,总体上是采用结构化生命法进行系统分析和设计的,而系统实现等步骤则采用了原型法和面向对象的方法。
    下面以一所学校的图书馆为例子进行分析,画出图书馆的组织结构图如下:
主管


采编组 目录厅 借阅组 阅览室,工具书室

                            图1-1 图书馆组织结构图
图书馆各个部门负责的主要业务如下:
(1)采编组主要负责图书采编工作,包括购置新书、打印编目、增加数量。
(2)目录厅主要负责读者查询工作,包括可借图书(按图书类别、图书名称或图书作者查询);新书目录(按图书类别、日期查询)。
(3)借阅组主要负责图书流通、查询统计、借阅查询等工作。
(4)阅览室、工具书室主要负责读者阅览工作,包括:阅览各种杂志、报纸、阅览各种工具书。
下面根据图书馆借书流程绘制出图书馆流通业务中借书的流程图:
(1)读者在目录厅查阅索引卡;
(2)读者写出所借图书的分类号、种次号交给图书管理员,并出示本人的借书证;
(3)图书管理员根据图书的分类号、种次号到书库找书;
(4)将图书交给读者,并由读者填写所借图书的借书卡。
(5)图书管理员把借书卡保存到写有该读者借书证号的口袋里。
得出该图书馆业务流程图如下所示:
查阅 收集信息
搜索书籍 填写凭据 完成借阅

索引卡 分类号 种次号 借书证 馆藏图书 借书卡 保存信息
                            图1-2 图书馆业务流程图
    该图书馆工作大部分还是进行着手工管理,工作起来效率很低,由于不可避免的人为因素,经常造成数据的遗漏、误报。计算机信息化管理有着储存信息量大、速度快等许多优点,提供给我们的处理信息及时快捷,同时也提高了我们工作人员的自身素质。
    基于以上的对问题的分析,利用计算机给我们提供信息,及时地调整学校图书馆图书结构,并且对学生们的借阅过程形成一整套动态的管理就十分必要了。
    图书馆信息系统的建立,需要进行用户的需求调查与分析,以确定系统目标,提出解决问题的详细方案,这是系统建设的重要环节。学校图书馆规模相对于商业图书馆小,但要有着完善的图书信息,对每一册书要有详细的记录信息,功能上对系统的需求是全面的。因此对用户的需求可分为四个方面:一方面是图书馆工作人员通过计算机来管理各类图书,分类编号,调整图书结构,增加图书库存,适应学生的需求;二方面是学生们能通过计算机来查询浏览图书馆中的图书,来确定自己需要的书籍,为借阅做好准备;三方面是工作人员对学生们的借书证发放;四方面也是图书馆的核心工作,对图书的借阅管理。
    这四个方面形成了学校图书馆一个工作整体,采用计算机自动化信息处理,可方便快捷地共享信息、交流信息,高效地协同工作。在软、硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,可以很简单方便的管理各种图书信息。硬件的配置要求不能太高,这样可以很好的适应当前的学校图书馆。在开发方式上对系统的需求,由于学校图书馆是一种无商业利益的,所以系统设计开发的周期要短,在短时间内完成,减少开发成本,提高开发效率,方便、简单、实用作为系统开发的指导思想。
1.2  研究背景
开发软件的一个目的是针对目前普遍的图书管理系统存在的功能不全,操作复杂,系统要求高等一系列问题,而设想一个具有个性化的图书管理系统。该管理系统与MIS系统相联系,在图书馆内部建成可靠,方便,并且功能齐全的MIS系统。从而在图书馆对新旧书的反应;对书籍借阅的管理能力;对读者和图书馆工作人员的管理能力;对图书馆管理人员软件操作的适应时间和操作感觉这些方面都将大大的提高。当然对该软件的态度是渴望获得显著的社会效益。
    开发软件的另一个目的是使其具有强大的实用价值,即它可以满足中小型图书馆的借阅与管理的需要。在一般的学校与科研机构,其下属的很多分支的研究中心,试验中心,各个学院,它们往往都有着自己的规模较大的图书资料室。而这些图书资料室由于本身规模不大因此其对书籍或资料的管理模式一般都比较旧,而且在没有能力也没有必要引进大型的图书馆管理软硬件的基础上,寻求一个针对中小型图书资料室的管理软件是必要的。
   这种管理软件对硬件的要求很低,一般有一个比较简单的服务器与PC机组成的网络即可,再加上使用比较廉价、性能不错的软件,这样就可以以较低的成本来实现一个足够使用的功能,而这种模式也正满足了那种中小型资料室,图书馆的要求。但是目前对这种管理软件的开发还处于一种比较原始的阶段。开发者往往都是出于资金和时间的顾虑使用比较陈旧的技术,并且各为己见,很少涉及网络。可是当今是一个网络化的社会,像资料室,图书馆这样的信息机构不能与网络联系起来岂不可惜,再加上如今单机版的图书管理软件多如牛毛,去开发一个类似的软件无疑是一种在时间上、精神上和资源上的极大浪费。所以出于多方面的考虑觉得有必要为这种有需要的中小型图书馆,资料室开发一种基于网络的图书资料管理软件。
1.3  研究方法与系统描述
管理信息系统的开发方法有生命周期法、原型法和面向对象的开发方法等:
生命周期法(Life Cycle Method)是20世纪60年代发展起来的一种应用广泛且比较成熟的管理系统开发方法,它的基本思想是将系统的开发工作从开始到结束

划分为若干个阶段,每个阶段都有明确的任务,而系统开发出来后,并不意味着生命周期的结束,而意味着根据组织的需要对系统的修改和重建的开始。
原型法(Prototyping Method)是20世纪80年代发展起来的,旨在改变生命周期法的缺点的一种系统开发方法,该法的开发思路是首先根据用户的要求,由用户和开发者共同确定系统的基本要求和主要功能,利用系统快速生成工具,建立一个系统模型,再在此基础上与用户交流,将模型不断补充、修改、完善,如此反复,最终直至用户和开发者都比较满意为止,从而形成一个相对稳定、较为理想的管理信息系统。
面向对象(Object Oriented)的开发方法于20世纪80年代开始兴起的,是一种基于问题对象的自底向上的一种系统开发方法,这种方法的特点是以对象为基础,对象是分析问题和解决问题的核心。
一个MIS系统的开发过程一般包括如下几个步骤:
(1)需求分析:需求分析主要是了解用户的需求。需求了解得越详细,程序的后期开发与维护费用就会越少。一般的开发团队中,需求分析都是由资历较深的系统分析员或项目经理担当,可见它的重要性。需求分析制订好后,需要反复修改。将最后的结果交给用户审定,确认无误后,由系统分析员完成需求分析文档,再开始下一步工作。
(2)概要设计:概要设计紧跟在需求分析之后。用户需求明确后,将得到的数据分析后,开始构建数据库的逻辑结构。此时,数据库中的表格还未成形,通过各种分析工具(如PowerDesigner等)画出数据流图,最后就可抽象出数据库的具体表结构。这时由系统分析人员反复审核。确认所有的需求都考虑在内,没有遗漏后,就可以开始制订概要设计文档。概要设计文档形成后,整个程序的逻辑框架也就形成了。
(3)详细设计:概要设计完成后,根据设计中制订的业务模块。就可以进行详细分析设计了。详细设计就是将各个业务模块的窗口全部建好,各个窗口控件的处理代码全部用语言表达出。所以详细设计是整个系统中最繁琐的环节。详细设计完成后,整个程序就确定了,再由编程人员根据详细设计文档将代码完成。整个开发工作就宣告结束。
(4)程序编码:程序编码相对于其他环节来说比较简单,程序员只需要根据详细分析文档写程序编码,保证代码没有错误即可。程序编码需要注意的是整个程序书写中命名的规范化与编程风格的规范化,这需要较长时间的培养来形成。需要在不断的实践中形成自己独特的风格。总的来说,不要过分地追求复杂的算法,因为那可能会导致后期维护人员无法读懂你的代码而造成维护的困难。
(5)测试:程序编码完成后,就需要测试。测试有几种类型,主要是测试代码有无逻辑错误以及在加载数据环境下程序的稳定性问题。测试工作中发现的错误应及时改正,然后将它记录到测试文档中。
(6)打包:测试完成,确认无误后。程序就可以打包发行了。打包一般使用工具如PWISE等。
以上是一个完整的MIS系统开发过程,其实不仅MIS系统,其他类型的程序开发也基本相同。
本设计后台数据库支持:采用PowerBuild 9.0,主要是由于PowerBuild 9.0是美国Sybase公司PowerSoft的新一代数据库应用开发工具,它能够设计传统的高性能、基于客户/服务器体系结构的应用系统,也能够用于开发基于Internet的应用系统。它具有容易使用,便于维护的优点,使使用部门可以节省培训费用,加快磨合周期,同时有利于操作人员的培训,是对数据的安全性要求不是特别高,同时又有比较大的数据量的单位的较好选择。作为PowerBuild 8.0的后续版本,PowerBuild 9.0 扩展了 PowerBuild 8.0 版的性能、可靠性、质量和易用性。PowerBuild 9.0增加了几种新的功能,由此成为数据仓库和电子商务应用程序的优秀数据库平台。这些功能如:
1. 新的开发调试界面,使程序员对于工作环境有了直观的了解,最大的方便了程序员的工作,新增的剪贴板能够让你保存最常用的代码段,避免了重复输入。
2. 新的Web特性,这是PB9.0相对于8.0最大的改进,它提供了因特网浏览器中使用数据窗口控件的瘦客户端的解决方式。普通数据窗口和数据存储中可以使用的方法和属性现在大部分可以使用于Web数据窗口了。
3. 新的数据库连接,在改进已有接口的前提下,使用新的数据库连接接口jdbc/jbd数据接口。它封装了jdbc函数功能于一个PB数据库接口,不仅支持使用SUN公司的jdk/jre1.1,还支持使用微软的java vm。因此它具有对现在windows操作平台更加好的兼容性。
1.4  论文内容概述
    通过用户提供的图书编号、图书名、作者、出版社、图书类别等基本信息,在数据库中检索出符合条件的所有图书,将图书的信息显示出来,并且可以通过点击书名,查看图书的详细信息。
(1) 输入信息:图书类别,查询方式(按书号、书名、作者、出版社查询) ,查询内容。注:图书类别、查询方式都为选择项,查询内容为输入项,各项目在逻辑上是与的关系,若输入项为空,则列出用户选中类别的所有图书,若用户未选择类别且输入为空,则列出全部图书资料的信息。
(2) 输出信息:图书编号,名称,作者,出版社,借阅情况。注:若图书已借出,则在详细信息里,输出
借阅用户的信息以及归还日期。
(3) 超期信息查询。
用户可以查看超期的图书信息。
输入信息:书号。
输出信息:书籍信息,借阅时间,应归还时间,归还状态及超期提示。

第二章   系统总体结构设计   
    如果要完成一个完整的图书管理系统,需要的相关信息很多。本设计仅对图书馆信息查询子系统作一定的深究,其他为查询提供基础的数据库信息,登陆信息等项目均默认为已开发完毕,本设计只对它们作书面阐述,对于整个图书馆信息管理系统也只是提供一个简单的开发思路。
2.1   系统总目标设计
    系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动化。能够对图书进行注册登记,也就是将图书的基本信息(如:书名、作者、ISBN等)预先存入数据库中,供以后检索。能够对借阅人进行注册登记,包括记录借阅人的姓名、地址、电话等信息。提供方便的查询方法。如:以书名、作者、出版社、出版时间(确切的时间、时间段、某一时间之前、某一时间之后)等信息进行图书检索,并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行检索;以出版社名称查询出版社联系方式信息。提供统计分析功能。可以展现出图书类型比例、库存与借出比例。提供较为完善的差错控制与友好的用户界面,尽量避免误操作。
2.2   系统功能分析
根据以上功能,将图书管理系统的数据分为:
(1) 数据输入部分:主要包括图书基本信息的录入、借阅人基本信息的录入、用户基本信息的录入。
(2

         

) 数据输出部分:主要是各种统计查询,包括:根据图书信息(如书名、作者、出版社等)查阅图书及其借阅信息、统计输出图书类型比例等。
(3) 数据处理部分:主要涉及借阅和归还的处理,如一本书借出后,必须在数据库中将该书标记为已借出,以防出现数据库中有书但图书馆无书的情况;一本书归还后,同样必须在数据库中将其标记为已经归还,以便再次借出。   (本设计针对上述第二项作探究。)
2.3   功能模块设计
在系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如图所示的系统功能模块图:

图2-1 系统功能模块图
2.4   数据流程图
   在图书馆信息管理系统中,数据产生有一定的时序关系,如用户需先找寻书籍,找到后才能由管理员将图书和用户信息录入;管理员添加书籍需在用户借阅之前,管理员添加书籍到书库之前,必须获得管理员身份,即用户名和密码。因此,进行合理的数据流程分析对于系统的构造至关重要。数据流程图(DFD)可以帮助开发者进行数据流程分析,即把数据在组织内部的流动情况抽象地独立出来,从数据流动过程来考察实际业务的实际处理模式。图书馆信息管理系统的查询子系统中,外部实体只有一个角色,即用户;数据的存储以数据库中表的形式存储在数据库中,下图为图书馆信息管理查询子系统的数据流程图:
 
图2-2 图书馆信息管理系统数据流程图

 
图2-3 图书馆信息查询子系统数据流程图


第三章    查询系统数据库设计
数据库的设计是MIS系统的核心部分,设计数据库,首先要进行需求分析,然后进行数据库的概念结构设计、逻辑结构设计、数据库结构实现等步骤。
3.1   数据库需求分析
根据以上的需求分析和数据组织,开始设计数据结构,即根据需求勾画出实体/关系图(E/R)。在概念上,E/R图代表的是系统需要的数据及其这些数据之间的关系。如图所示的实体/关系图:
   


图3-1 图书馆信息查询系统E-R图                                
从图中可以看出,在这个系统中实际存在的实体:图书,借书证,书库,查询平台和用户,针对本系统,通过对图书借阅管理的内容和数据流程分析,设计查询系统的数据项和数据结构如下:
(1)图书基本信息,其数据项有图书编号、图书名称、作者、出版社等。
(2)出版社信息,其数据项有出版社编号、出版社名称、地址、电话等。
(3)图书分类信息,其数据项有分类编号、分类名称、同一类型图书数目。
3.2   数据库逻辑结构设计
数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。
另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义成CHAR(1)或BIT型。建议实际应用中定义成CHAR(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后来的开发中,可以通过设计标志字段为不同的值来解决,这样就避免了修改数据库结构[9]。
程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库结构一旦改变,所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。错误越改越多,越改越乱,最终导致程序的失败。PB的数据窗口与其他语言的数据控件不一样,它的很多东西是预编译的。即使你一个模块已经调试无误,但只要数据库结构改动,相应的模块就一定要重新修改,否则一定会出问题[10]。
图书借阅管理查询系统数据库中表的设计结果如下所示:
表3-1 用户基本信息表people(name为主键)
项目 数据类型 长度 可否为空 注释
name Char 10 Not  null 用户名
password Char 10 Not  null 密码
Level Char 1 Not  null 权限


表3-2 图书基本信息表bookinfo(bookid为主键)
项目 数据类型 长度 可否为空 注释
Bookid Char 10 Not  null 图书编号
Isbn Char 30 Null 图书isbn
Classname Char 20 Null 图书类型
Title Char 40 Null 图书名称
publishdate Date -- Null 出版日期
Author Char 20 Null 作者
Words Int -- Null 字数(千)
Pub Char 30 Null 出版社
Keyword Char 30 Null 关键词
Number Int

         

 -- Null 存放代码
Bookonloan Char 1 Null 图书在借状态
表3-3 分类信息表bookclass(classid为主键)
项目 数据类型 长度 可否为空 注释
Classid Char 2 Not  null 分类编号
Classname Char 20 Null 分类名称
Number Int -- Null 数目
表3-4 借阅情况信息表(menberid为主键)
项目 数据类型 长度 可否为空 注释
memberid Char 10 Not null 会员编号
bookid Char 10 Not null 图书编号
Loandate1 Date -- Null 起始日期
Loandate2 Date -- Null 归还日期
message Char 10 Not null 归还及超期信息
应注意:(1)规划有效的索引:
a. 在组合表的列中创建索引,包括主关键字和外部关键字所在的列。
b. 在列或类组合中创建唯一的索引能增强唯一性。
c. 浏览索引并卸载不使用的索引。索引需要一定硬盘空间和时间来维护。具有较高数据插入操作频率的数据库最好不要索引。有较高读操作频率的数据库应该有更多的索引。
d. 避免在簇索引中包括不必要的列。在可能的情况下,使用较小的数据类型,例如用varchar替代char。
e. 考虑使用簇索引来支持排序和范围化查询。在为数据检索优化表时,簇索引必须支持数据的分组索引。为簇关键字选择列或列组,簇关键字以经常需要的顺序排序数据或以必须被一起访问的记录而分组记录。
f. 创建支持一般查询的查找参数索引。具有高选择性的列是索引的最好候选列。具有高密度的列是索引糟糕的候选列。
(2)使用约束实现数据的完整性:PRIMARY KEY约束在表中定义了主关键字,它是行唯一的标识符,它可以强制实体完整性。在使用PRIMARY KEY约束时考虑以下事实[11]:
a. 每个表只能有一个PRIMARY KEY约束。
b. 键入的值必须是唯一的。
c. 不允许有空值。
d.  PRIMARY KEY约束在指定的列创建唯一的索引,可以指定簇索引和非簇索引(如果
非簇索引先前并不存在,簇索引是默认的)。
    UNIQUE约束指定,在一列中的两行不能有相同的值。该约束使用唯一的索引来强制实体的完整性。在已有一个主关键字时UNIQUE约束很有用,例如雇员号,但是必须保证其他标识符(例如,雇员驾驶证号)也是唯一的。在使用UNIQUE约束时,考虑以下事实[12]:
a. 允许有空值。
b. 在一个表中可以设置多个UNIQUE约束。
c. 可以将UNIQUE约束运用于具有唯一值的单列或多列,但不能用于表的主关键字。
d. 通过在指定的列或列组中创建唯一的索引,可以使UNIQUE索引得到强制。
第四章   图书管理系统查询功能的具体实现
4.1  PowerBuilder开发工具简介
    PowerBuilder是目前开发Client/Server结构的应用系统的主要工具之一。PowerBuilder9.0在继承与发展以前版本优秀功能的基础上,为适应网络应用程序的开发要求集成了Enterprise Application Studio中PowerBuilder以及Power Site的功能,在传统数据库开发的基础上,将Web应用更好地集成到PowerBuilder中。PowerBuilder全面支持面向对象编程。是功能强大并易于使用的第4代编程语言(4GL),它内置了包括数据窗口在内的多种对象类,可以方便地访问数据库。相对于其他应用工具,PowerBuilder具有工作效率高、成本低、质量高、功能强的特点[13]。
4.2   Powerbuilder 9应用程序开发的基本步骤
    我们要开发应用程序时,首先要对它进行分析。无论哪种、哪方面的应用程序,都要先建立一个应用对象。下面我们介绍PowerBuilder 9应用程序开发的基本步骤:
(1)首先要建立应用对象。
(2)创建窗口。在窗口里放置各种控件和编写事件响应的脚本。
(3)创建菜单。窗口里的菜单可包括菜单条,下拉式菜单,级联菜单和弹出式菜单为菜单编写事件响应的脚本。
(4)创建用户对象。如果想要重复使用某个控件的功能,可以把窗口上经常放置的控件定义为用户对象。
(5)创建数据窗口。数据窗口可以检索数据库中的数据,可以建立各种报或统计表,可以修改数据库。
(6)创建函数、结构、事件。为了能够更好地支持脚本,编写自定义的函数,定义结构类型变量,也可以为对象和控件定义自己的事件。
(7)运行与调试。可以在开发环境中随时运行应用程序,发现错误后,可以用调试工具进行调试。
(8)当应用程序开发完毕后,可以把它编译成可执行的文件,让用户比较容易地建立应用系统的运行环境[14]。
4.3  编码规范
    为了减少在软件开发过程中的错误,在软件开发过程中应该遵守一定的标准。给对象命名要有一定的规范,部件名称可以达到40个字符,窗口的命名:W_功能代码_功能描述。数据窗口的命名:DW_功能代码_功能描述。菜单命名:M_功能代码_功能描述。
    标识符命名时,应该使标识符有一定的字面含义,有助于程序的调试和脚本的可读性的提高。本系统中使用的命名规范为:变量作用域+变量类型+”_”+具有一定字面含义的名称。例如:li_selectrow反映出的含义:”l”代表是本地变量,是local的缩写,”i”代表是integer类型的变量,selectrow表示该变量是用来记录一个行号的计数器[15]。
4.4  创建主窗口和全局函数
    为充分利用PB的面向对象的特性。程序开发时一般创建几个模板窗口。将功能窗口上的某些常用功能封装在模板窗口中。然后将这些模板窗口作为主窗口。所有的子窗口都可以通过继承的方法来生成。这样就减少了代码的书写量。使得整个程序界面保持整齐。当修改主窗口时,所有的子窗口都会自动修

         

改。所以,主窗口的确定要十分谨慎。
全局函数与局部函数的作用类似。唯一不同的是全局函数的作用域是整个程序周期。不论你在任何一个模块的代码中都可以调用它。所以我们可以把某些常用功能写成全局函数。在程序的其他地方反复调用。
(1) 函数level(character lev)
功能介绍:通过传入的lev值,将某些菜单项设为“非使能”,以限制某些功能的使用。Lev值即不同职责的权限(系统管理1、图书管理2、借阅人管理3、借阅操作员4),从people表中的level字段中读取。
代码分析:
choose case lev
     case "1"
        case "2"
                m_main.m_借阅人管理.enabled=false
                m_main.m_系统菜单.m_用户管理.enabled=false
                m_main.m_系统菜单.m_借阅规则设置.enabled=false
                m_main.m_系统菜单.m_图书信息设置.enabled=false
        case "3"
                m_main.m_图书管理.enabled=false
                m_main.m_图书查询.enabled=false
                m_main.m_统计资料.enabled=false
                m_main.m_系统菜单.m_用户管理.enabled=false
                m_main.m_系统菜单.m_借阅规则设置.enabled=false
                m_main.m_系统菜单.m_图书信息设置.enabled=false
        case "4"
                m_main.m_图书管理.enabled=false
                m_main.m_借阅人管理.enabled=false
                m_main.m_系统菜单.m_用户管理.enabled=false
                m_main.m_系统菜单.m_借阅规则设置.enabled=false
                m_main.m_系统菜单.m_图书信息设置.enabled=false
end choose              

(2)函数countday
countday (date date1,date date2)
功能介绍:通过传入的date1(起始日期)值与date2(结束日期)值,计算出中间相差的天数,返回值为integer型。
代码分析:
int day
day=(integer(year(date2)) - integer(year(date1)))*365 +&
         (integer(month(date2)) - integer(month(date1)))*30 +&
         (integer(day(date2)) - integer(day(date1)))*1
return day
(3)应用程序对象 App_librarain
功能介绍:PB程序由一个应用程序开始,即每个PB程序在开始运行时,先执行应用程序对象的Open事件。在Open事件中

         

连接数据库,并打开登陆窗口w_login。
代码分析:
// Profile librarian
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=librarian;UID=WD='"
Connect using SQLCA;
//判断数据库连接是否成功
if sqlca.sqlcode = 0 then
        open(w_login)
else
        messagebox('系统提示','连接数据库失败!')
end if
4.5  具体查询窗口的实现
“按图书名称查询“窗口w_search_title
“按作者姓名查询”窗口w_search_author
“按出版社查询”窗口w_search_pub
“按图书编号查询”窗口w_search_keyword
“按ISBN号查询”窗口w_search_isbn
“按出版日期-某个阶段查询”窗口w_search_date_between(本功能未实现,仅做介绍)
说明:由于“按出版日期查询”使用的是date型数据,所以分开阐述。
(1) 查询条件为char型:
    属于此类的查询包括:“按图书名称查询“、“按作者姓名查询”、“按出版社查询”、“按图书编号查询”、“按ISBN号查询”。由于“按图书名称查询“窗口w_search_title为模板窗口,其他窗口都是继承得来,所以仅分析这个窗口。
功能介绍:根据查询条件,检索出符合条件的数据。
操作方法:输入检索条件,点击“查询”按钮进行查询。
代码分析:
Open事件:dw_1.settransobject(sqlca)
this.width=3616
this.height=1096
“查询”按钮:string ls_title
ls_title=trim(sle_find.text)
if sle_find.text="" then
        messagebox("提示信息","请输入"+mid(st_1.text,4,4))
else
         ls_title="%"+ls_title+"%"//设置检索条件
    dw_1.retrieve(ls_title)
end if
sle_find.setfocus()
数据窗口的数据源SQL语句:
  SELECT "bookinfo"."bookonloan",  
         "bookinfo"."number",  
         "bookinfo"."title",  
         "bookinfo"."author",  
         "bookinfo"."pub",  
         "bookinfo"."publishdate",  
         "bookinfo"."isbn",  
         "bookinfo"."keywords",  
         "bookinfo"."abstract" 
   FROM "bookinfo" 
   WHERE "bookinfo"."title" like :query//:query为查询变量  
(2) 查询条件为date型:
    属于此类查询的查询包括:“按出版日期-某个阶段查询”、“按出版日期-某个日期查询”、“按出版日期-某日期之前查询”、“按出版日期-某日期之后查询”。我们将对“按出版日期-某个阶段查询”窗口w_search_date_between进行分析[16]。
功能介绍:根据查询条件,检索出符合条件的数据
操作方法:输入检索条件,点击“查询”按钮进行查询,点击“重置”按钮重新输入查询条件。
代码分析:
Open事件:类同“按图书标题查询“窗口
“查询”按钮:date id_start,id_end
  if isdate(em_date.text) then
   if isdate(em_date2.text) then
          id_start=date(em_date.text)
          id_end=date(em_date2.text)
   else
         messagebox("数据错误","请重新输入结束日期.")
         em_date2.setfocus()
    return
   end if
else
     &nbs

         

p;  messagebox("数据错误","请重新输入开始日期.")
        em_date.setfocus()
        return
end if
if id_start>id_end then
        messagebox("数据错误","开始日期不能大于结束日期.")
else
        dw_1.retrieve(id_start,id_end)
end if
        em_date.setfocus()
数据窗口的数据源SQL语句:
  SELECT "bookinfo"."bookonloan",  
         "bookinfo"."number",  
         "bookinfo"."title",  
         "bookinfo"."author",  
         "bookinfo"."pub",  
         "bookinfo"."publishdate",  
         "bookinfo"."isbn",  
         "bookinfo"."keywords",  
         "bookinfo"."abstract" 
   FROM "bookinfo" 
   WHERE "bookinfo"."publishdate" between :date1 and :date2
   //:date1与:date2为查询变量
图书信息查询界面设计如下图所示:
 
图4-1 图书信息查询界面设计图
图4-2 图书信息查询界面运行图
 
a) 图书查询查询结果示范
 
b) 图书查询查询结果示范
 
c) 图书查询查询结果示范
表4-1 查询界面控件名称及其功能说明
控件 控件名称 功能说明
信息-label Label1 用于输入信息名称
查询类别-dropdownlist Dropdownlist1 用于绑定查询类别
显示信息-文本框 Textbox1 用于显示查询信息
查询方式-radiobuttonlist Key 查询方式选择
查询-按钮 Button1 单击“查询”进入查询结果
  根据不同的需求,查询功能还可以帮助用户对自己的信息,自己的借阅情况进行相关查询。
  下面为会员用户借阅情况查询界面及运行示范界面:
 
图4-3 借阅情况查询界面
 
图4-4 借阅情况查询示范
表4-2 借阅情况界面控件名称及其功能:
控件 控件名称 功能说明
会员编号-label Label1 用于输入会员编号
显示会员信息-文本框 Textbox1 用于显示会员信息
显示借阅情况-文本框 Textbox2 用于显示借阅情况
显示信息-按钮 Button1 单击显示查询结果

第五章  结论  
在对管理信息系统的开发过程有了基本了解后,本人使用PowerBuilder 9.0和SQL SERVER 2000开发了这个“图书管理查询系统”。系统基本实现了内部图书查询功能。可以按作者、出版社、出版时间等信息对图书进行查询,并能反映出图书的借阅情况。
通过对该系统的设计、开发和调试,一方面让我了解了MIS系统的开发过程与方法,另一方面,让我初步掌握了PowerBuilder开发工具的使用方法,熟悉了SQL SERVER 2000以及一些可视化控件的使用方法,还了解到窗口对象、数据窗口对象、各类控件的属性与方法。同时,在制作过程中遇到了不少问题和困难,通过查阅书籍及互连网得到了不小的帮助。
    因为条件的限制,该查询系统还存在不少的缺点和漏洞,只能尽量改正与完善。不足之处,望予指正。


致   谢
    经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。 在这里首先要感谢我的导师钱亚冠老师。钱老师平日里工作繁多,但在我做毕业设计的每个阶段,从查阅资料到设计草案的确定和修改,中期检查,后期详细设计,装配草图等整个过程中都给予了我悉心的指导。我的设计较为复杂烦琐,但是钱老师仍然细心地纠正设计中的错误。除了敬佩钱老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。 其次要感谢我的同学对我无私的帮助,特别是在软件的使用方面,正因为如此我才能顺利的完成设计,我要感谢我的母校——浙江科技学院,是母校给我们提供了优良的学习环境;另外,我还要感谢那些曾给我授过课的每一位老师,是你们教会我专业知识。在此,我再说一次谢谢!谢谢大家!!!

         


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:绘制小和山校园C区3D地图的设计策略

  • 下一篇文章:若干运筹学优化方法的MATLAB的设计策略
  • 返回上一页】【打 印】【关闭窗口
    中查找“图书馆信息查询子系统的设计分析”更多相关内容 5VAR论文频道
    中查找“图书馆信息查询子系统的设计分析”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››杭州g值的凯特摆法的模型分析
  • ››随机利率下的寿险模型的开发分析
  • ››国内外基于3G网络的移动数字图书馆...
  • ››国内外Living Library实践与理论的...
  • ››Web2.0环境下用户参与的图书馆信息...
  • ››RAINBOW分组密码的线性基础分析
  • ››二元极值分布混合模型的矩估计值
  • ››若干运筹学优化方法的MATLAB的设计...
  • ››图书馆信息查询子系统的设计分析
  • ››绘制小和山校园C区3D地图的设计策略...
  • ››图书馆信息查询子系统的设计分析
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .