系统需求分析 整个软件生命周期中,开发所占的费用和时间都很小。后期维护工作一般要占整个软件生命周期的80% 以上。所以系统分析很重要,一个好的系统分析可以减少很多后期维护工作。 1现行业务描述 下面以一所学校的图书馆为例子进行分析,画出图书馆的组织结构图如下: 图2.1 该图书馆各个部门负责的主要业务如下: (1)采编组主要负责图书采编工作,包括购置新书、打印编目、增加数量。 (2)目录厅主要负责读者查询工作,包括可借图书(按图书类别、图书名称或图书作者查询);新书目录(按图书类别、日期查询)。 (3)借阅组主要负责图书流通、查询统计、借阅查询等工作。 (4)阅览室、工具书室主要负责读者阅览工作,包括:阅览各种杂志、报纸、阅览各种工具书。 下面绘制出图书馆流通业务中借书的流程图: (1)读者在目录厅查阅索引卡; (2)读者写出所借图书的分类号、种次号、交给图书管理员,并出示本人的借书证; (3)图书管理员根据图书的分类号、种次号到书库找书; (4)将图书交给读者,并由读者填写所借图书的借书卡。 (5)图书管理员把借书卡保存到写有该读者借书证号的口袋里。 得出该图书馆业务流程图如下所示:
图2.2 2现行系统存在问题的分析 该图书馆工作大部分还是进行着手工管理,工作起来效率很低,由于不可避免的人为因素,经常造成数据的遗漏、误报。计算机信息化管理有着储存信息量大、速度快等许多优点,提供给我们的处理信息及时快捷,同时也提高了我们工作人员的自身素质。 3解决方案 基于以上的对问题的分析,利用计算机给我们提供信息,及时地调整学校图书馆图书结构,并且对学生们的借阅过程形成一整套动态的管理就十分必要了。 图书馆信息系统的建立,需要进行用户的需求调查与分析,以确定系统目标,提出解决 问题的详细方案,这是系统建设的重要环节。 学校图书馆规模相对于商业图书馆小,但要有着完善的图书信息,对每一册书要有详细的记录信息,功能上对系统的需求是全面的。因此对用户的需求可分为四个方面:一方面是图书馆工作人员通过计算机来管理各类图书,分类编号,调整图书结构,增加图书库存,适应学生的需求;二方面是学生们能通过计算机来查询浏览图书馆中的图书,来确定自己需要的书籍,为借阅做好准备;三方面是工作人员对学生们的借书证发放;四方面也是图书馆的核心工作,对图书的借阅管理。 这四个方面形成了学校图书馆一个工作整体,采用计算机自动化信息处理,可方便快捷地共享信息、交流信息,高效地协同工作。 在软、硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,可以很简单方便的管理各种图书信息。硬件的配置要求不能太高,这样可以很好的适应当前的学校图书馆。 在开发方式上对系统的需求,由于学校图书馆是一种无商业利益的,所以系统设计开发的周期要短,在短时间内完成,减少开发成本,提高开发效率,方便、简单、实用作为系统开发的指导思想。
三 系统总体结构设计 如果要完成一个完整的图书管理系统,需要的相关信息很多。由于种种条件的限制,同时考虑到开发成本,所以本系统仅实现基本的管理功能。并不能完全满足上面例子所描述的图书馆,使用前应进行二次开发。 1 系统目标设计 系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动化。 能够对图书进行注册登记,也就是将图书的基本信息(如:书名、作者、价格等)预先存入数据库中,供以后检索。 能够对借阅人进行注册登记,包括记录借阅人的姓名、地址、电话等信息。 提供方便的查询方法。如:以书名、作者、出版社、出版时间(确切的时间、时间段、某一时间之前、某一时间之后)等信息进行图书检索,并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行检索;以出版社名称查询出版社联系方式信息。 提供统计分析功能。可以展现出图书类型比例、库存与借出比例。 提供旧书销毁功能,对于淘汰、损坏、丢失的书目可及时对数据库进行修改。 能够对使用该管理系统的用户进行管理,按照不同的工作职能提供不同的功能授权。 提供较为完善的差错控制与友好的用户界面,尽量避免误操作。 2 系统功能分析 根据以上功能,将图书管理系统的数据分为: 数据输入部分:主要包括图书基本信息的录入、借阅人基本信息的录入、用户基本信息的录入。 数据输出部分:主要是各种统计查询,包括:根据图书信息(如书名、作者、出版社等)查阅图书及其借阅信息、统计输出图书类型比例等。 数据处理部分:主要涉及借阅和归还的处理,如一本书借出后,必须在数据库中将该书标记为已借出,以防出现数据库中有书但图书馆无书的情况;一本书归还后,同样必须在数据库中将其标记为已经归还,以便再次借出。 3系统各功能模块设计 在系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如图所示的系统功能模块图: 四 数据库设计 数据库的设计是MIS系统的核心部分,设计数据库,首先要进行需求分析,然后进行数据库的概念结构设计、逻辑结构设计、数据库结构实现等步骤。 1数据库需求分析 根据以上的需求分析和数据组织,开始设计数据结构,即根据需求勾画出实体/关系图(E/R)。在概念上,E/R图代表的是系统需要的数据及其这些数据之间的关系。如图所示的实体/关系图:
图4.1 从图中可以看出,在这个系统中实际存在的实体:图书和借阅人,其中借阅人和图书是多对多关系,针对本系统,通过对图书借阅管理的内容和数据流程分析,设计数据项和数据结构如下: (1) 图书基本信息,其数据项有图书编号、图书名称、作者、出版社等。 (2) 借阅人基本信息,其数据项有借阅人编号、借阅人姓名、电话等。 (3) 图书借阅登记,其数据项有借阅序号、借阅图书编号、借阅人编号等。 为了实现图书信息录入的方便性与规范性以及相关的统计功能,还应增加出版社信息 与图书分类信息: (4) 出版社信息,其数据项有出版社编号、出版社名称、地址、电话、传真等。 (5) 图书分类信息,其数据项有分类编号、分类名称、同一类型图书数目。 同时针对于本系统的多用户使用特点,增加用户信息表: (6)用户信息表,其数据项有用户名、密码、用户权限。 为了实现图书借阅超期罚款制度,还应增设罚金规则表: (7)罚金规则表,其数据项包括免费使用天数、罚金费率、规则启用开关。 2 数据库逻辑结构设计 数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。 另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义成CHAR(1)或BIT 型。建议实际应用中定义成CHAR(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后来的开发中,可以通过设计标志字段为不同的值来解决,这样就避免了修改数据库结构。 数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。 程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库结构一旦改变, |