管理系统理科设计说明_第1页
管理系统理科设计说明_第2页
管理系统理科设计说明_第3页
管理系统理科设计说明_第4页
管理系统理科设计说明_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、毕业设计(论文)论文题目:图书馆管理系统概括随着信息技术在管理中的应用越来越深入和广泛,管理信息系统的实施在技术上也逐渐成熟。管理信息系统是一门不断发展的新学科。企业要生存和发展,要高效、有机地组织企业活动,就必须加强企业管理,即加强对企业部门各种资源(人力、财力、物力)的管理。等)有效管理,建立适合自身特点的管理信息系统。PowerBuilder环境下采用“自上而下统筹、自下而上应用开发”的策略开发管理信息系统的过程。通过分析传统人工管理库的不足,建立了一套行之有效的计算机管理库程序。文章详细介绍了图书管理信息系统的系统分析部分,包括可行性分析、组织分析、管理功能分析、业务流程分析、数据流程

2、分析、数据字典、处理描述等。系统设计部分主要介绍了系统功能设计与数据库设计;系统实现部分列出了几个主要的框图,以及一些主要的窗口和程序。系统界面友好,操作简单,更实用。关键词管理信息系统、图书管理、 PowerBuilder应用目录 TOC o 1-3 h z u HYPERLINK l _Toc230353367 第 1 章 前言 PAGEREF _Toc230353367 h 1 HYPERLINK l _Toc230353368 第一节MIS系统开发方法 PAGEREF _Toc230353368 h 一 HYPERLINK l _Toc230353369 第二节MIS系统开发流程 PA

3、GEREF _Toc230353369 h 2 HYPERLINK l _Toc230353370 第二章系统需求分析 PAGEREF _Toc230353370 h 3 HYPERLINK l _Toc230353371 第 1 节 当前业务描述 PAGEREF _Toc230353371 h 3 HYPERLINK l _Toc230353372 第二节 现行制度存在的问题分析 PAGEREF _Toc230353372 h 4 HYPERLINK l _Toc230353373 第 3 节 解决方案 PAGEREF _Toc230353373 h 4 HYPERLINK l _Toc23

4、0353374 第三章 系统总体结构设计 PAGEREF _Toc230353374 h 6 HYPERLINK l _Toc230353375 第 1 节 系统目标设计 PAGEREF _Toc230353375 h 6 HYPERLINK l _Toc230353376 第二节 系统功能分析 PAGEREF _Toc230353376 h 6 HYPERLINK l _Toc230353377 第三节 系统各功能模块设计 PAGEREF _Toc230353377 h 7 HYPERLINK l _Toc230353378 第 4 节 数据流 图 PAGEREF _Toc230353378

5、 h 7 HYPERLINK l _Toc230353379 第 4 章 数据库设计 PAGEREF _Toc230353379 h 11 HYPERLINK l _Toc230353380 第 1 节 数据库需求分析 PAGEREF _Toc230353380 h 11 HYPERLINK l _Toc230353381 第二节 数据库逻辑结构设计 PAGEREF _Toc230353381 h 12 HYPERLINK l _Toc230353382 第五章图书馆管理系统的具体实现 PAGEREF _Toc230353382 h 16 HYPERLINK l _Toc230353383 第

6、 1 节PowerBuilder开发工具介绍 PAGEREF _Toc230353383 h 16 HYPERLINK l _Toc230353384 第二节PowerBuilder 8应用开发的基本步骤 PAGEREF _Toc230353384 h 16 HYPERLINK l _Toc230353385 第三节 编码规则 PAGEREF _Toc230353385 h 17 HYPERLINK l _Toc230353386 第 4 节 创建祖先窗口和全局函数 PAGEREF _Toc230353386 h 17 HYPERLINK l _Toc230353387 第 5 节 应用程序对

7、象App_librarain PAGEREF _Toc230353387 h 19 HYPERLINK l _Toc230353388 第六节 特定窗口的实施 PAGEREF _Toc230353388 h 19 HYPERLINK l _Toc230353389 第七节 附注 PAGEREF _Toc230353389 h 38 HYPERLINK l _Toc230353390 结论 PAGEREF _Toc230353390 h 39 HYPERLINK l _Toc230353391 演讲 PAGEREF _Toc230353391 h 40 HYPERLINK l _Toc23035

8、3392 参考文献 PAGEREF _Toc230353392 h 41第一章 前言随着人类社会的发展,人类对知识的需求也在不断增长。在这种形势下,书籍逐渐成为人们获取和增长知识的主要途径,图书馆自然而然地在人们的生活中占据了一定的位置。如何科学地管理图书馆,不仅关系到读者求知的方便程度,还关系到图书馆的发展。因此,开发一套完整的图书馆管理系统至关重要。管理信息系统(MIS)是介于信息论、经济管理理论、统计学和运筹学与计算机科学之间的一门边缘性、综合性和系统性的交叉学科。 ,计算机技术等的发展产生和发展。图书馆管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的

9、开发。前者要求建立数据的一致性和完整性,后者要求应用功能齐全、易于使用的特点。基于以上考虑,本系统主要使用PowerBuilder 8作为前端应用开发工具,使用Adaptive Server Anywhere 7作为后台数据库,使用WINDOWS作为系统平台开发图书管理系统。此外,图书馆管理系统采用软件工程思想和方法,一般采用结构化生命法进行系统分析和设计,而系统实现等步骤则采用原型法和面向对象法。第一节 MIS系统开发方法管理信息系统的开发方法包括生命周期法、原型法和面向对象的开发法:生命周期法是1960年代发展起来的一种应用广泛、比较成熟的管理系统开发方法。其基本思想是将系统的开发从开始到

10、结束分为几个阶段。每个阶段都有明确的任务,系统开发完成后,并不意味着生命周期的结束,而是根据组织的需要对系统进行修改和重构的开始。Prototyping Method是1980年代为了改变生命周期法的缺点而发展起来的一种系统开发方法。根据系统的基本要求和主要功能,利用系统快速生成工具建立系统模型,然后在此基础上与用户沟通,不断补充、修改、完善模型等,直至两者都用户和开发者都很满意。从而形成了一个比较稳定和理想的管理信息系统。( Object Oriented )的开发方法在1980年代开始兴起,是一种基于问题对象的自下而上的系统开发方法,这种方法的特点是基于对象,对象是分析问题和解决问题的核心

11、.第二节 MIS系统开发流程MIS系统的开发过程一般包括以下几个步骤:(1)需求分析:需求分析主要是了解用户的需求。要求越详细,程序的后期开发和维护成本就越少。在一般的开发团队中,需求分析是由资历较高的系统分析师或项目经理执行的,可见其重要性。需求分析制定后,需要反复修改。最终结果交给用户审批。确认无误后,系统分析师将完成需求分析文档,然后开始下一步。(2) 大纲设计:大纲设计遵循需求分析。明确用户需求后,对获取的数据进行分析,进而构建数据库的逻辑结构。此时数据库中的表还没有形成,通过各种分析工具(如Power Designer等)绘制数据流图,最终可以抽象出数据库的具体表结构。系统分析人员对

12、此进行了反复审查。在确认考虑了所有需求并且没有遗漏任何内容后,您就可以开始开发高级设计文档了。大纲设计文档形成后,整个程序的逻辑框架也就形成了。(3)详细设计:大纲设计完成后,根据设计中制定的业务模块。可以进行详细的分析和设计。详细设计是构建每个业务模块的所有窗口,每个窗口控件的处理代码都用语言表达。所以详细设计是整个系统中最繁琐的环节。详细设计完成后,确定了整个程序,然后程序员根据详细设计文档完成代码。整个开发工作告一段落。程序编码:与其他环节相比,程序编码相对简单。程序员只需要根据详细的分析文档编写程序代码,保证代码没有错误。程序编码在整个程序编写中需要注意命名和编程风格的标准化,这需要较

13、长的时间来开发。你需要在不断的练习中形成自己独特的风格。一般来说,不要过于追求复杂的算法,因为这可能会导致维护困难,因为以后的维护人员无法阅读您的代码。(4)测试:程序编码完成后,需要进行测试。测试有几种类型,主要是测试代码的逻辑错误和加载数据环境中程序的稳定性。测试工作中发现的错误应及时纠正,并记录在测试文档中。(5) 包装:测试完成后,确认无误。该程序可以打包和分发。打包一般使用PWISE等工具。以上就是一个完整的MIS系统开发流程。其实不仅是MIS系统,其他类型的程序开发也基本相同。第二章系统需求分析在整个软件生命周期中,开发成本和时间都很少。后期维护工作一般占整个软件生命周期的80%以

14、上。所以系统分析很重要,一个好的系统分析可以减少很多后期维护工作。第一节 当前业务描述下面以某学校图书馆为例进行分析,绘制图书馆组织结构图如下:馆馆 长采编组书库阅览室工具书室目录厅借阅室图 2-1 图书馆组织结构图图书馆各部门的主要活动如下:(一)收藏编纂组主要负责图书的收藏编纂工作,包括购置新书、印刷编目、增加图书数量等。(2)目录处主要负责读者查询,包括现有图书(按图书类别、书名或图书作者查询);新书目录(按书籍类别和日期查询)。(3)借阅组主要负责图书流通、查询统计、借阅查询等工作。(4)阅览室和工具书室主要负责读者的阅读工作,包括:阅读各种杂志、报纸,阅读各种工具书。图书馆流通业务借

15、书流程图如下:(一)读者在目录厅查阅索引卡;(二)读者应记下所借图书的分类号和类别号,交馆员并出示借书证;(3)馆员根据图书的分类号和类别号在馆内查找图书;(4)将图书交给读者,读者填写所借图书的借书证。(5) 图书馆员应将借书证与读者借书证号码放在口袋里。图书馆业务流程图如下:图2-2 图书馆业务流程图第二节现行制度存在的问题分析图书馆的大部分工作还是人工管理,工作效率很低。由于不可避免的人为因素,经常会造成数据遗漏和误报。计算机信息管理具有存储信息量大、速度快等优点。它为我们提供了快速及时的信息处理,也提高了我们员工的素质。第 3 节 解决方案基于以上对问题的分析,利用计算机为我们提供信息

16、,及时地调整学校图书馆图书结构,对学生借阅过程形成一套动态管理是非常必要的。图书馆信息系统的建立需要对用户需求进行调查分析,确定系统目标,提出具体的问题解决方案,是系统建设的重要组成部分。与商业图书馆相比,学校图书馆的规模较小,但必须拥有完整的图书信息、每本书的详细记录信息以及功能完备的系统。因此,用户的需求可以分为四个方面:一方面,图书馆工作人员利用计算机对各类图书进行管理,分类编号,调整图书结构,增加图书库存,满足学生的需求;使用电脑查询和浏览图书馆的图书,确定自己需要的图书,准备借阅;第三个方面是工作人员向学生发放图书证;第四个方面也是图书馆的核心工作,图书的借阅。管理。这四个方面构成了

17、学校图书馆的一个整体工作,采用计算机自动信息处理,可以方便快捷地共享信息、交换信息、高效协同工作。在软硬件方面,系统要求,软件要求简单易学,界面友好,易于掌握,可以非常简单方便的管理各种图书信息。硬件配置要求不要太高,才能很好的适应现在的学校图书馆。对系统在开发方式方面的需求,由于学校图书馆是非商业利益,系统设计开发周期要短,在短时间内完成,降低开发成本,提高开发效率,方便,简单和实用的系统开发指南。第三章系统总体结构设计如果你想完成一个完整的图书馆管理系统,你需要大量的相关信息。由于各种条件的限制,考虑到开发成本,本系统只实现了基本的管理功能。不完全满足上面例子中描述的库,使用前需要重新开发

18、。第一节 系统目标设计系统开发的总体目标是实现图书借阅管理的系统化、标准化、自动化。它可以注册图书,即提前将图书的基本信息(如:书名、作者、价格等)存储在数据库中,以供日后检索。可以注册借款人,包括记录借款人地址等。提供便捷的查询方式。如:书名、作者、出版时间(准确时间、时间段、某段时间前、某段时间后)等用于图书检索的信息,并能反映图书的借阅情况;搜索个人信息;按姓名查询联系信息。提供统计分析功能。可以显示图书种类的比例、库存和贷款比率。提供旧书销毁功能,对被淘汰、损坏或丢失的书目及时修改数据库。可以对使用管理系统的用户进行管理,根据不同的工作职能提供不同的功能授权。提供更完善的错误控制和友好

19、的用户界面,尽量避免误操作。第二节 系统功能分析根据以上功能,图书馆管理系统的数据分为:数据录入部分:主要包括图书基本信息录入、借书人基本信息录入、用户基本信息录入。数据输出部分:主要用于各种统计查询,包括:根据图书信息(如书名、作者等)查找图书及其借阅信息,统计输出图书类型比例等。数据处理部分:主要涉及借入和归还的处理。例如,图书借出后,必须在数据库中将该图书标记为已借出,以防止出现数据库中有图书而图书馆没有图书的情况; a 归还书籍时,同样必须在数据库中将其标记为已归还,以便再次借出。第三节 系统各功能模块设计在系统功能分析的基础上,考虑PowerBuilder编程的特点,得到如图所示的系

20、统功能模块图:图书借阅管理系统图书借阅管理系统数据输入子系统数据输出子系统数据管理子系统图 3-1系统功能模块图第 4 节 数据流程图(1) 登记/修改图书基本信息图书信息图书信息信息库图书分类信息库信息分类信息得到完整的图书信息图书信息库图 3-2 图书基本信息的注册/修改说明:信息人工录入后,存入信息库,方便日后录入图书信息和信息查询。分类信息由图书馆分类定制,存储在图书分类信息库中,用于图书分类管理。注册新书时,在填写和分类时,只需要进行相应的选择,并存入图书信息库即可。(二)借款人基本信息登记/修改借阅人基本信息借阅人基本信息借阅人信息库图3-3 借款人基本信息登记/修改注:输入借款人

21、基本信息后,存入借款人信息库。(3) 图书查询查询条件查询条件图书信息库信息查询图书查询结果图 3-4 图书查询说明:输入查询条件后,会搜索库并反映查询结果。(4) 图书查询统计条件统计条件图书分类信息库信息统计图书统计结果图书信息库图 3-5 图书查询说明:根据选取的统计条件,搜索图书分类信息库或图书信息库,并反映统计结果。(5) 图书借阅借阅人编号借阅人编号借阅人信息库借阅人信息认证图书信息库图书借出处理图书编号图书信息认证在借信息库图书在借状态修改图 3-6 借书说明:输入借款人编号,通过查询借款人信息库验证借款人身份。输入书号,通过搜索图书信息库,验证图书信息。图书借阅处理完成后,在图

22、书借阅图书馆登记,借阅图书的借阅标志设置为“是”。(6) 还书在借图书编号在借图书编号图书信息库借阅人信息库在借信息库图书归还处理图书在借状态修改在借信息库修改图 3-7 还书说明:输入书号,搜索借阅信息库,反映图片和借阅情况。归还操作后,修改借阅信息库中的相关项目,同时修改图书信息库中相关图书的借阅标志为“No.第 4 章 数据库设计数据库设计是MIS系统的核心部分。设计数据库,首先要进行需求分析,然后进行数据库的概念结构设计、逻辑结构设计、数据库结构实现等步骤。第一节 数据库需求分析根据以上需求分析和数据组织,开始设计数据结构,即根据需求绘制实体/关系图(E/R)。从概念上讲,E/R 图表

23、示系统需要的数据以及这些数据之间的关系。实体/关系图如图:借阅人借阅人(Member)图书基本信息(Book)图书借阅登记(Book Loan)图 4-1 实体关系图从图中可以看出,这个系统中实际存在的实体:书本和借书人,其中借书人与书本是多对多的关系。对于本系统,通过对图书借阅管理的内容和数据流的分析,设计数据项和数据结构如下:(一)图书基本信息,数据项包括书号、书名、作者等。(二)借款人基本信息,数据项包括借款人编号、借款人等。(3)图书借阅登记,其数据项包括借阅序号、借阅书号、借阅人号等。为实现图书信息录入的便捷性和规律性及相关统计功能,还应增加信息和图书分类信息:(四)信息,数据项包括

24、编号、姓名、地址等。(五)图书分类信息,数据项包括分类号、分类名称、同类型图书数量。同时,根据本系统多用户使用特点,增加了用户信息表:(6)用户信息表,数据项包括用户名、密码、用户权限。为实现借书逾期处罚制度,还应增加处罚规则表:(7)惩罚规则表,数据项包括免费使用天数、惩罚率、规则启用开关。第二节 数据库逻辑结构设计数据库设计有几个公式。一般我们需要做的是第三个公式,即数据表中不存在冗余字段,使得与同表中的字段没有函数依赖关系,并且冗余字段已经保存在一个表中。该信息不应存在于另一个表中。如果需要,可以通过表之间的关联来获得。函数依赖是指表中的字段之间不应该有计算关系。比如一个表有单价字段,金

25、额字段,就不应该有总金额字段。如果在程序运行过程中需要总量,可以实时计算。但是在一些比较常用的表中,我们可以适当预留冗余字段,这样可以减少程序运行过程中由于表之间相互关联而导致使用速度变慢等问题。这就是所谓的第四式。在设计数据表时,最好不要将用户输入的信息作为主键。每个数据表自己定义一个主键,添加的信息由程序自动添加,可以减少数据更新时的错误。与表关联的外键最好是程序自动生成的主键,这样数据库就更有规律了。另外,数据表设计一般应该有一些标志字段,可以定义为CHAR(1)或BIT类型。建议在实际应用中定义一个CHAR(1)字段来存储各种可能的状态。在最初的设计中,可能会有一些我们没有考虑到的情况

26、。在程序的后续开发中,我们可以将flag字段设计成不同的值。解决了,以免修改数据库结构。在数据库的初始设计中必须小心,考虑到所有可能的情况,即使当时没有使用,也应该留在数据库中作为备用字段,以备将来扩展。一旦程序开始编码,您应该尽量避免修改数据库。因为如果数据库结构发生变化,所有与修改数据表相关的业务都可能受到影响,而且有些影响很难看到,很容易形成恶性循环。错误越多,修改越乱,最终的结果就是程序的失败。 PB的数据窗口不同于其他语言的数据控件,它的很多东西都是预编译的。即使你已经调试了一个没有错误的模块,只要数据库结构发生变化。必须重新修改相应的模块,否则会出现问题。图书借阅管理系统数据库中各

27、表的设计结果如下表所示。每个表都表示为数据库中的一个表。说明:记录借款人的基本信息,设置memberid为主键和索引。表 4-1 借款人基本情况列名数据类型长度可以为空笔记会员ID字符10不为空借款人编号成员名字字符10无效的借款人IDvarchar20无效的不添加字符50无效的电话字符20无效的连接Mobile字符20无效的移动说明:记录系统用户的用户名、密码和权限,name设置为主键。表4-2 用户基本信息表people列名数据类型长度可以为空笔记姓名字符10不为空用户名密码字符10不为空密码等级字符1不为空允许图书基本信息表 bookinfo说明:记录书籍的基本信息,设置bookid为主

28、键和索引。表 4-3 图书基本信息表 bookinfo列名数据类型长度可以为空笔记书号字符10不为空书号伊斯本字符30无效的图书 ISBN班级名称字符20无效的书籍类型标题字符40无效的书名发布日期日期-无效的发布日期作者字符20无效的作者字整数-无效的字数(万)酒馆字符30无效的价格数字19.4无效的价格磁盘字符1无效的光盘关键词字符30无效的关键词数字整数-无效的商店代码摘 要varchar100无效的概括书本贷款字符1无效的在贷款标志的书(Y-借款 N-不借款)基本信息表publishinfo说明:记录信息,pubid设置为主键。表4-4 基本信息表publishinfo列名数据类型长度

29、可以为空笔记公开字符4不为空编号酒馆字符30无效的姓名添加字符50无效的压缩字符6无效的邮政编码电话字符16无效的连接传真字符16无效的字符16无效的网址分类信息表bookclass说明:记录自定义分类,classid设置为主键。表 4-5 分类信息表 bookclass列名数据类型长度可以为空笔记班级号字符2不为空分类号班级名称字符20无效的分类名称数字整数-无效的数字贷款信息表说明:对于借款的注册,将loanid设置为主键并自动增加。表4-6 贷款信息表贷款列名数据类型长度可以为空笔记贷款人诠释-不为空借用序列号书号字符10不为空书号会员ID字符10不为空借款人编号贷款日期日期-无效的借款

30、日期规则信息表常规说明:记录设置的借阅规则,days设置为主键。表4-7 规则信息表常规列名数据类型长度可以为空笔记天诠释4不为空免费贷款天数美好的十二月5.2无效的处罚标准旗帜字符1无效的规则切换(一)规划有效指标在组合表的列上创建索引,包括主键和外键所在的列。在列或类组合上创建唯一索引可增强唯一性。浏览索引并卸载未使用的索引。索引需要一定的硬盘空间和时间来维护。数据插入操作频率高的数据库最好不要索引。读取频率较高的数据库应该有更多的索引。避免在聚集索引中包含不必要的列。在可能的情况下,使用较小的数据类型,例如 varchar 而不是 char。考虑使用聚集索引来支持排序和环绕查询。在优化表

31、以进行数据检索时,聚集索引必须支持数据的分组索引。为集群键选择一列或一组列,以经常需要的顺序对数据进行排序,或将必须一起访问的记录中的记录分组。创建支持一般查询的查找参数索引。具有高选择性的列是索引的最佳候选者。高密度的列不适合索引。(2) 使用约束实现数据完整性PRIMARY KEY 约束定义表中的主键,它是行的唯一标识符,它强制实体完整性。使用 PRIMARY KEY 约束时请考虑以下事实:每个表只能有一个 PRIMARY KEY 约束。键入的值必须是唯一的。不允许空值。PRIMARY KEY 约束在指定列上创建唯一索引,并且可以指定聚集索引和非聚集索引(如果之前不存在非聚集索引,则默认使

32、用聚集索引)。UNIQUE 约束指定列中的任何两行不能具有相同的值。此约束使用唯一索引来强制实体的完整性。 UNIQUE 约束在已经存在主键(例如员工编号)时很有用,但其他标识符(例如员工的驾照编号)也必须保证是唯一的。使用 UNIQUE 约束时,请考虑以下事实:允许空值。可以在一个表上设置多个 UNIQUE 约束。UNIQUE 约束可以应用于具有唯一值的单个或多个列,但不能应用于表的主键。可以通过在指定列或列组上创建唯一索引来强制执行索引。第五章图书馆管理系统的具体实现第一节 PowerBuilder开发工具介绍PowerBuilder是目前开发Client/Server结构应用系统的主要工

33、具之一。 PowerBuilder 8.0在继承和开发之前版本优秀功能的基础上,将PowerBuilder在Enterprise Application Studio和Power Site中的功能进行了整合,以满足Web应用的开发需求。在传统数据库开发的基础上,Web 应用程序更好地集成到 PowerBuilder 中。 PowerBuilder 完全支持面向对象的编程。它是一种功能强大且易于使用的第四代编程语言(4GL),它设置了包括数据窗口在内的多种对象类,并且可以方便地访问数据库。与其他应用工具相比,PowerBuilder具有工作效率高、成本低、质量高、功能强等特点。第二节PowerB

34、uilder 8应用开发的基本步骤当我们要开发一个应用程序时,我们必须首先对其进行分析。无论是哪种应用程序,都必须先创建一个应用程序对象。下面我们描述以下PowerBuilder 8应用程序开发的基本步骤:(1)首先,必须建立应用对象。(2) 创建一个窗口。在窗口中放置各种控件并编写事件响应。(3) 创建菜单。窗口中的菜单可以包括菜单栏、下拉菜单、级联菜单和弹出菜单。脚本事件响应菜单。(4) 创建用户对象。如果要重用控件的功能,可以将经常放置在窗口中的控件定义为用户对象。(5) 创建数据窗口。数据窗口可以检索数据库中的数据,创建各种报表或统计表,修改数据库。(6) 创建功能、结构和事件。为了更

35、好地支持脚本,编写自定义函数,定义结构类型变量,并为对象和控件定义自己的事件。(7)运行调试。您可以在开发环境中随时运行应用程序,发现错误后可以使用调试工具进行调试。(8) 应用程序开发时,可编译成可执行文件,方便用户建立应用系统的运行环境。第三节 编码规则为了减少软件开发过程中的错误,在软件开发过程中应该遵循一定的标准。命名对象必须有一定的规则。组件名称最长可达 40 个字符。窗口的命名:W_function code_function description。数据窗口名称:DW_function code_function description。菜单命名:M_function code_

36、function description。命名标识符时,标识符应具有一定的字面意义,有利于程序调试和脚本可读性。本系统使用的命名约定为:变量作用域+变量类型+ “ _ ” +具有一定字面意义的名称。例如:li_selectrow 体现含义: “l”代表局部变量,是local的缩写, “ i ”代表整数类型的变量,selectrow表示该变量是用于记录行号的计数器。第 4 节创建祖先窗口和全局函数充分利用PB的面向对象特性。在程序开发过程中通常会创建几个模板窗口。功能窗口上的一些常用功能都封装在模板窗口中。然后将这些模板窗口用作祖先窗口。所有子窗口都可以通过继承的方法生成。这减少了要编写的代码量

37、。使整个程序界面整洁。修改祖先窗口时,自动修改所有子窗口。因此,祖先窗口的确定要非常小心。全局函数的工作方式与局部函数类似。唯一的区别是全局函数的作用域是整个程序周期。它可以从任何模块的代码中调用。所以我们可以把一些常用的函数写成全局函数。在程序的其他地方反复调用。(1) 功能级别(字符级别)功能介绍:通过传入的lev值,将部分菜单项设置为“禁用”,限制某些功能的使用。 Lev值是不同职责(系统管理1、账簿管理2、借阅管理3、借阅操作员4)的权限,从people表的level字段中读取。代码分析:选择案例列情况1”案例“2”m_main.m_borrower management.enable

38、d=falsem_main.m_book rental.enabled=falsem_main.m_system menu.m_user management.enabled=falsem_main.m_system menu.m_borrowing 规则 settings.enabled=falsem_main.m_system menu.m_book 信息 settings.enabled=false案例“3”m_main.m_book management.enabled=falsem_main.m_book rental.enabled=falsem_main.m_Book Query

39、.enabled=falsem_main.m_statistics.enabled=falsem_main.m_system menu.m_user management.enabled=falsem_main.m_system menu.m_borrowing 规则 settings.enabled=falsem_main.m_system menu.m_book 信息 settings.enabled=false案例“4”m_main.m_book management.enabled=falsem_main.m_borrower management.enabled=falsem_mai

40、n.m_system menu.m_user management.enabled=falsem_main.m_system menu.m_borrowing 规则 settings.enabled=falsem_main.m_system menu.m_book 信息 settings.enabled=false结束选择(2) 函数countdaycountday(日期 date1,日期 date2)功能介绍:传入date1(开始日期)和date2(结束日期)的值,计算相差的天数,返回值为整数。代码分析:国际日日=(整数(年(日期2)-整数(年(日期1)*365 +&(整数(月(date2)

41、 - 整数(月(date1)*30 +&(整数(天(date2) - 整数(天(date1)*1返回日(3) 函数计数countfine (整数天,小数罚款,整数 countday)功能介绍:根据免费借书天数、罚款率罚款、已借天数(由countday函数计算)计算成本,返回值为小数类型。代码分析:十二月计数if countday=0 and countday=days then /免费使用期罚款为 0计数=0别的countfine=(countday - days)*fine /根据期限计算罚金万一返回计数第 5 节 应用程序对象 App_librarain功能介绍:PB程序以一个应用程序启动

42、,即每个PB程序开始运行时,首先执行应用程序对象的Open事件。在 Open 事件中连接到数据库并打开登录窗口 w_login。代码分析:/ 档案馆员SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=图书馆员;UID=;PWD=使用 SQLCA 连接;/判断数据库连接是否成功如果 sqlca.sqlcode = 0 那么打开(w_login)别的messagebox(系统提示, 连接数据库失败!)万一第六节 特定窗口的实现(1) 登录窗口 w_login图 5-1 特定窗口的实现功能介绍:该窗口主

43、要是检查操作员输入的用户名和密码是否正确。如果正确,则允许登录。如果有错误,则会显示错误消息。操作方法:填写“用户名”和“密码”后,点击“登录”按钮进行验证,点击“取消”退出。代码分析:event: sle_1.setfocus() /“用户名”输入框获得焦点this.width=923这个.高度=588“登录”按钮:字符串名称,密码查列夫智力测验名称=sle_1.textpwd=sle_2.text/检查用户名和密码是否匹配选择级别进入:列夫从人WHERE name=:name 和 password=:pwd;如果 lev 那么打开(w_main)level(lev) /根据权限设置菜单状态

44、别的sle_1.setfocus()test=messagebox(提示:,用户名或密码错误!,感叹号!,好的取消!, 2)end if /判断是否重新登录如果测试=1 那么返回 1别的关闭(父)万一(2) 主窗口 w_main功能介绍:该窗口充当菜单和其他子窗口的容器。窗口设置;这个窗口是一个容器窗口,所以它的WindowType是mdihelp!,说明这个窗口是一个多文档界面,可以有菜单、工具栏和状态栏。 WindowState is minimized!,表示窗口在运行时最大化。 Menuname 属性设置为 m_main,这是连接到该窗口的菜单的名称。(3) 菜单 m_main图 5-

45、2 菜单 m_main功能介绍:打开各个功能窗口操作方法:单击菜单项或工具栏上的相应按钮,状态栏可显示帮助信息。代码分析:每个对应菜单项的点击事件使用opensheet方法打开对应的功能窗口。例如“新书存储”菜单项下点击事件的处理代码为: opensheet(w_newbook,w_newbook,parentwindow,0,cascaded!)(4) 新书存放窗口w newbook图 5-3 新书存储窗口功能介绍:新增、修改图书信息。操作方法:a.添加图书信息:点击“添加”按钮添加图书信息,完成后点击“保存”按钮湾。修改图书信息:通过“书号”检索图书信息,修改后点击“保存”按钮代码分析:打

46、开事件: dw_1.settransobject(sqlca) /指定数据窗口的事务对象dw_1.retrieve() /从数据库中获取数据用于数据窗口this.width=2926 /设置窗口的高宽这个.高度=1572“检索”按钮:字符串 ls_bookid,ls_filterls_bookid=sle_bookid.textdw_1.setfilter(bookid=+ls_bookid+) /设置过滤条件dw_1.filter() /过滤数据“上一个”按钮: dw_1.scrollpriorrow() /滚动到上一行“下一步”按钮: dw_1.scrollnextrow() /滚动到下一

47、行“添加”按钮:长 ll_rowll_row=dw_1.insertrow(0) /向数据窗口添加一行dw_1.scrolltorow(ll_row) /数据窗口滚动到当前行dw_1.setcolumn(2) /使第一列成为当前列并获得焦点dw_1.setfocus()“保存”按钮:长 ll_rowdw_1.accepttext() /向主缓冲区写入数据if dw_1.modifiedcount()0 then /检查数据是否被修改if dw_1.update()0 then /如果数据库被修改则更新数据库犯罪; / 提交事务cb_new.setfocus() /“添加”按钮获得焦点别的回滚;

48、 / 回滚事务messagebox(系统提示, 保存失败!请检查数据正确性)dw_1.setcolumn(1) /数据窗口第一列获得焦点dw_1.setfocus()万一别的cb_new.setfocus() /“添加”按钮获得焦点万一(5)旧书销毁窗口w_delbook图 5-4 旧书销毁窗口功能介绍:删除图书信息。操作方法:首先通过书号检索图书信息,然后点击“销毁”按钮取消该图书。代码分析:打开事件:类似于“新书存储窗口w_newbook”“检索”按钮:字符串 ls_bookid,ls_filterls_bookid=sle_bookid.text /设置过滤条件dw_1.setfilte

49、r(bookid=+ls_bookid+) /过滤数据dw_1.filter() / 使“销毁”按钮可用cb_del.enabled=truesle_bookid.setfocus()“销毁”按钮: long li_rowli_row=dw_1.getrow() /获取当前行号if li_row0 then /判断是否存在可以删除的行if messagebox(删除问题, 你真的要取消这本书吗?,question!,Yesno!,2)=1 thendw_1.deleterow(li_row) /删除行if dw_1.update()0 then /更新数据库犯罪;别的回滚;messagebox

50、(错误信息,无法登出!)万一li_row=dw_1.getrow() /获取当前行if li_rowdw_1.rowcount() then /判断是否至少有两行dw_1.selectrow(0,false) /高亮当前行dw_1.selectrow(li_row,true)万一万一别的messagebox(系统提示, 没有数据要注销)万一cb_del.enabled=false /使“销毁”按钮回到不可用状态(6) 注册借用者窗口 w_newmember图 5-5 Register Borrower 窗口功能介绍:新增、修改借款人信息操作方法:类似“新书存储窗口w_newbook”代码分析:

51、打开事件:类似于“新书存储窗口w_newbook”“搜索”按钮:类似于“新书存储窗口 w_newbook”“添加”按钮:类似于“新书存储窗口w_newbook”“保存”按钮:类似于“新书存储窗口 w_newbook”(7) 取消借用窗口 w_delmember图 5-6 注销借阅者窗口功能介绍:删除借款人信息操作方法:类似“旧书销毁窗口w_delbook”代码分析:打开事件:类似于“旧书销毁窗口w_delbook”“搜索”按钮:类似于“旧书销毁窗口 w_delbook”“销毁”按钮:类似于“旧书销毁窗口 w_delbook”(8) 借款窗口 w_loan图 5-7 借阅窗口功能介绍:借书,操作

52、方法:输入“借书人号”和“书号”后,会显示借书人及书号,然后点击“借书”按钮即可借书。代码分析:打开事件: this.width=1243这个.height=1160“借款人号码”输入框修改事件:字符串 ls_memberid,ls_membernamels_memberid=trim(this.text)select membername /根据“借款人号”查询“借款人”进入:ls_membername来自会员信息其中 memberid=:ls_memberid;if sqlca.sqlcode0 then /判断是否有“借款人”messagebox(系统提示, 没有该借款人的信息!)sle

53、_memberid.setfocus() /“借款人ID”输入框获取焦点返回别的sle_bookid.setfocus() /“图书ID”输入框获取焦点sle_membername.text=ls_membername /显示“”借款人万一“书号”输入框修改事件:字符串 ls_bookid, ls_titlels_bookid=trim(this.text)选择标题进入:ls_title来自书信其中 bookid=:ls_bookid;如果 sqlca.sqlcode0 那么messagebox(系统提示,没有这本书的信息!)sle_bookid.setfocus()返回别的sle_title

54、.text=ls_title万一“借”按钮:字符串 ls_bookid,ls_memberid,ls_bookonloan日期 ldt_nowdateldt_nowdate=today()/获取“当前日期”ls_bookid=trim(sle_bookid.text)/获取“借款人ID”ls_memberid=trim(sle_memberid.text)/获取“书号”/强制输入“借书人号”和“书号”如果 ls_memberid= 或 isnull(ls_memberid) 那么messagebox(系统提示,请输入借款人号码!)sle_memberid.setfocus()返回万一如果 ls

55、_bookid= 或 isnull(ls_bookid) 那么messagebox(系统提示,请输入书号!)sle_bookid.setfocus()返回万一/根据“书号”检查图书是否借出选择 bookonloan INTO:ls_bookonloan从 bookinfo WHERE bookid=:ls_bookid;如果 ls_bookonloan=y 那么messagebox(系统提示, 本书已借出!)sle_bookid.setfocus()返回别的/添加借书记录插入贷款(bookid,memberid,loandate)值(:ls_bookid,:ls_memberid,:ldt_n

56、owdate);犯罪;/设置图书为“出借”状态更新 bookinfo 设置 bookonloan=y哪里 bookid=:ls_bookid;犯罪;万一/“借款人号”获得焦点,清空所有输入框sle_memberid.setfocus()sle_bookid.text=sle_title.text=sle_memberid.text=sle_membername.text=“关闭”按钮:关闭(父)(9) 还书窗口w_return图 5-8 还书窗口功能介绍:还书操作方法:输入“书号”,判断后显示书名、借书人编号、借书人。并根据是否启用“罚款系统”(在“罚款规则窗口”中设置)决定是否计算罚款。代码

57、分析:打开事件: char lc_flag/查询“规则”是否启用并显示选择标志进入:lc_flag从常规;如果 lc_flag=y 则 sle_fine.enabled=truethis.width=1285这个.高度=1256“书号”输入框修改事件:字符串 ls_bookid,ls_title,ls_memberid,ls_membername日期 ld_date1,ld_date2int li_daysdec ld_fine, ld_countfineld_date2=today()/获取当前日期ls_bookid=trim(this.text)/获取“图书ID”/根据“书号”查询“借阅日

58、期”选择贷款日期进入:ld_date1从贷款哪里 bookid=:ls_bookid;/查询“空闲天数”、“处罚规定”选择天,很好INTO :li_days,:ld_fine从常规;/计算惩罚ld_countfine=countfine(li_days,ld_fine,countday(ld_date1,ld_date2)/查询“书名”选择标题进入:ls_title来自书籍信息哪里 bookid=:ls_bookid;/查询“借款人号码”、“借款人”选择会员ID,会员名INTO :ls_memberid,:ls_membername来自会员信息会员在哪里(选择会员编号从贷款哪里 bookid=

59、:ls_bookid);如果 sqlca.sqlcode0 那么messagebox(系统提示,无贷款信息!)sle_bookid.setfocus()返回别的sle_title.text=ls_titlesle_memberid.text=ls_memberidsle_membername.text=ls_membername如果 sle_fine.enabled=true 那么 sle_fine.text=string(ld_countfine)万一“返回”按钮:字符串 ls_bookid,ls_bookonloanls_bookid=sle_bookid.text如果 ls_bookid

60、= 或 isnull(ls_bookid) 那么messagebox(系统提示,请输入书号!)sle_bookid.setfocus()返回别的选择 bookonloan 进入 :ls_bookonloan来自 bookinfo,其中 bookid=:ls_bookid;如果 ls_bookonloan=n 那么messagebox(系统提示, 本书已被退回!)别的删除贷款 where bookid=:ls_bookid;更新 bookinfo set bookonloan=n where bookid=:ls_bookid;犯罪;万一万一sle_bookid.setfocus()sle_bo

温馨提示

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

评论

0/150

提交评论