图书管理系统示例(共17页).doc
精选优质文档-倾情为你奉上图书管理系统1、 需求分析1.1系统任务概述这里我们将图书管理系统的应用对象定位在中小型图书馆。图书馆的主要功能是为注册用户提供图书借阅,主要涉及对图书的管理,借阅者管理,以及图书借阅信息的管理。其中对图书的管理主要是指:对馆藏图书的增删改查;对借阅者信息的增删改查,还有挂失;对借阅者借阅信息的管理。除此之外,只有合法用户才能使用该系统,要实行用户密码登陆。1.2功能需求图书管理系统完整功能需求如下:1) 借阅者管理每个通过审查的人可以办理一张借阅卡,拥有用户名、密码,成为注册用户。此卡包含所有个人信息,以后所有图书借阅活动凭此卡进行,直至该卡被注销或删除。因此,对借阅者的管理包括相关信息的添加、修改、删除、检索。2) 图书信息管理l 新书入库:每本新到图书需将详细信息添加入库,方可对外借阅。l 图书检索:馆藏图书丰富,须提供图书快速查询检索功能。l 图书信息修改:图书基本信息入库时已基本确定,但是一些辅助信息,如存放位置,是否接触等会有变化,须提供修改功能。l 图书信息删除:对于太过破旧被淘汰或者丢失的书籍,要从系统信息中删除。3) 图书借阅信息管理系统核心功能之一。图书管理系统最主要的功能是对图书的借出和归还。主要涉及被借阅的图书和借阅者,即图书基本信息,借阅者部分信息,借出归还日期等。具体来说,对于借书,首先获得借阅者的信息,看其是否有权利借书,其次检查相关书籍,看其是否被可以被外借;对于还书,同样也需要借阅者信息和图书信息才能还书,同时还要计算本次借阅是否超期,超期要计算出罚款金额,借阅者交了足额罚款才能还书成功。此外,对于历史借还记录要提供查询功能;同时由于存储空间限制,不能永久保存历史记录,还需提供删除记录功能。4) 用户登录该系统用户主要有系统管理员和普通注册用户(即持有借阅卡的借阅者)两种。系统管理员拥有所有功能权限,普通注册用户只能管理个人信息和检索需要图书。系统要对不同的用户给予不用权限,每个合法用户凭登录名和密码登陆此系统。5) 系统基本信息管理l 对借阅者类别的设置:对于借阅者设置不同类别,不同类别的借阅者设置不同的借阅图书数量上限。l 对图书类别的设置:不同类别图书的借阅期限不同,超期后的罚款金额也不同。l 对系统用户的管理:本系统暂定两类用户,系统管理员和普通注册用户,不同用户拥有不同的使用权限。1.3数据流图借还书的过程要和时间挂钩,所以还要有一个数据源点为“系统时钟”,因此得到图书管理系统的基本数据流图1-1。图1-1 基本数据流图通过对需求的深入分析,对“图书管理系统”加工进一步细化,得到功能级数据流图1-2。图1-2 功能级数据流图通过对图1-2的分析,发现上述的三个加工在工作过程中要涉及一些数据存储。因此得到改进后的功能级数据流图,如图1-3所示。图1-3 改进后的功能级数据流图再仔细分析图1-3的每个加工是否还能细化,或者还有没有可以补充的加工。我们发现系统中还需要一个加工来专门负责“基本信息的维护”,这样得到进一步的数据流图,如图1-4所示。那么,对于图1-4是否还需要细化呢?比如“借阅者管理”还要先“添加”再“查询”等,这些都是一些比较细节的东西,不需要在需求分析里作过多关注。图1-4 最终数据流图1.4数据字典对于数据流图中的每个元素,都可以额通过数据字典加以描述,以保证数据定义的严格性,针对上述系统的数据字典如下:借阅者管理=添加借阅者|修改借阅者|删除借阅者|检索借阅者图书管理=添加图书|修改图书|删除图书|检索图书借阅信息管理=添加借阅信息|修改借阅信息|删除借阅信息|检索借阅信息管理个人信息=检索个人信息|修改个人信息基本信息维护请求=对借阅者类别信息的维护|对图书类别信息的维护|对登陆用户的维护对借阅者类别信息的维护=对借阅者类别信息的添加|对借阅者类别信息的修改|对借阅者类别信息的删除|对借阅者类别信息的检索对图书类别信息的维护=对图书类别信息的添加|对图书类别信息的修改|对图书类别信息的删除|对图书类别信息的检索对登录用户的维护=对用户信息的添加|对用户信息的修改|对用户的删除|对用户信息的检索时间=年+月+日借阅卡信息=借阅卡号+姓名+性别+身份证号+单位+家庭住址+联系电话+借阅者类别+办证日期+已借书数目+是否挂失注册用户=借阅卡信息注册用户=借阅者借阅卡号=8数字8性别=男|女身份证号=18数字18联系电话=(区号)+7数字7区号=4数字4借阅者类别=一级读者|二级读者|三级读者描述:在本系统中一级读者可借10本,二级读者可借5本,三级读者可借3本办证日期=年+月+日已借书数目=0|1|2|3|4|5|6|7|8|9|10是否挂失=挂失|没挂失挂失=1没挂失=0图书信息=图书号+书名+作者+出版社+出版日期+单价+图书类别+存放位置+入库日期+是否借出图书=图书信息图书号=7数字7+同一本书副本编号同一本书副本编号=0|1|2|3|4|5|6|7|8|9出版日期=年+月+日图书类别=一类图书|二类图书|三类图书|四类图书|五类图书|六类图书入库日期=年+月+日是否借出=借出|未借出借出=1未借出=0借阅信息=借阅卡号+姓名+图书号+书名+借出日期+实际归还日期+罚款金额借出日期=年月日实际归还日期年月日系统基本信息借阅者类别信息|图书类别信息|系统用户借阅者类别信息借阅者类别能借书的数量借阅者类别=一级读者|二级读者|三级读者能借书的数量=1|2|3|4|5|6|7|8|9|10单位:本图书类别信息图书类别可借天数图书超期每天罚款金额图书类别=一类图书|二类图书|三类图书|四类图书|五类图书|六类图书可借天数=10|20|30|40|50|60|70单位:天图书超期每天罚款金额=0.1|0.2单位:元系统用户=用户名+密码+是否管理员用户名=1字母|数字16密码=1字母|数字8是否管理员=是管理员|不是管理员是管理员=1不是管理员=01.5 ER图根据上一小节的数据字典,得到系统图,如图1-5。图1-5 图书管理系统的E-R图对应图书管理系统有六张表,分别是:表1-1“借阅者表”,表1-2“图书表”,表1-3“借阅表”,表1-4“借阅者类别表”,表1-5“图书类别表”,表1-6“系统用户表”。表1-1借阅者表字段名称数据类型是否关键字是否可以为空借阅卡号decimal是否姓名Varchar(20)否否性别Boolean否否身份证号Varchar(30)否否单位Varchar(30)否是家庭住址Varchar(30)否是联系电话Varchar(30)否是借阅者类别Varchar(30)否否办证日期datetime否否已借书数目int否是是否挂失boolean否是表1-2图书表字段名称数据类型是否关键字是否可以为空图书号decimal是否书名Varchar(20)否否作者Varchar(20)否否出版社Varchar(20)否否出版日期datetime否否单价money否否图书类别否否存放位置Varchar(30)否是入库日期datetime否是是否借出boolean否否表1-3借阅表字段名称数据类型是否关键字是否可以为空借阅卡号decimal是否图书号decimal是否姓名Varchar(20)否是书名Varchar(20)否是借出日期datetime否否实际归还日期datetime否否罚款金额money否是表1-4借阅者类别表字段名称数据类型是否关键字是否可以为空借阅者类型Varchar(30)是否能借书的数量int否否表1-5图书类别表字段名称数据类型是否关键字是否可以为空图书类别Varchar(30)是否可借天数int否否图书超期每天罚款金额money否是表1-6系统用户表字段名称数据类型是否关键字是否可以为空用户名Varchar(20)是否密码Varchar(20)是否是否是管理员boolean否是1.6性能要求总体来说,系统在性能上没有太多的特殊要求,只要进行图书查询时没有明显的延时就行了,希望查询的响应时间不超过3秒,其他一些要求如下:l 系统最小寿命:在无重大改动的情况下,正常运行5年以上。l 设备要求:计算机稳定性良好,整套系统经济实惠。l 在使用上:要求系统易理解,易学习,易操作。l 在安全性上:要求系统安全可靠,容错,易恢复。l 在数据集中上:要求用统一的数据库实现数据的完整性和实时性。l 在可维护性上:要求系统可修改,可测试,可扩充,可移植。2、 系统设计2.1总体设计通过对需求分析阶段文档做更深入的分析,我们进一步复查和细化数据流图,得到改进后的数据流图,如图2-1所示。图2-1 细化的系统数据流图可以看出图2-1的数据流图并没有一个很明显的事务中心,因此可以把它看成一个变换流,通过使用一个面向数据流的设计方法得到系统的软件结构图,如图2-2所示。图2-2图书管理系统的软件结构图该图是未经精化的软件结构图,通过对用户需求的进一步分析,结合软件设计的高内聚和低耦合标准,得到精化后的软件结构图,如图2-3所示。图2-3精化后的系统结构图2.2详细设计根据前面总体设计的软件结构图,下面我们依次具体设计每个模块实现的方法和相关的交互界面。2.2.1用户登陆模块由于本系统有系统管理员和注册用户,不同的用户登陆后拥有不同的权限,所以在系统开始时,需要有登陆模块来实现此功能。该模块可以给任何人使用。模块的输入:用户名、密码。模块的处理:系统根据用户输入的用户名和密码到后台数据库相应的记录中查找,如果没有则给出相应的提示不予进入,如果有则根据其不同身份进入不同处理界面。模块的输出:对于非法用户给出相应提示,对于合法用户,进入相应处理界面。用户登陆模块的PAD图如图2-4所示。图图2-4登陆模块的图该模块的交互界面设计,如图2-5所示。图2-5用户登陆模块的交互界面3、系统编码4、软件测试4.1概述4.1.1图书管理系统概述本系统的主要功能包括入库图书的管理、图书借阅卡的管理、图书借还的管理以及系统使用者的管理。4.1.2系统的测试计划(1)需求分析阶段列出的系统的每个功能都要求是“可测试”的。(2)设计阶段每个具体功能的实现都要考虑到其测试用例的设计。(3)编码实现阶段对每个模块做单元测试,然后做集成测试。(4)最后和用户一起做验收测试。4.1.3测试人员安排系统的需求工程师扮演测试负责人的角色,负责对测试的总体把握;每个模块的编码者负责自己模块的单元测试;另外一名专门的软件测试工程师负责系统的集成测试并配合测试负责人的工作。4.2测试方法和步骤4.2.1系统的测试方法本系统各个模块的功能集中在对数据库的处理以及对用户交互界面的设计,系统内部并没有设计复杂的算法和数据结构,因此测试方法采用侧重测试功能的黑盒测试为主,对个别重要模块可以额辅以白盒测试。4.2.2系统测试步骤先进行单元测试,再进行集成测试,遵循自底向上的策略。对于每个测试用例都要考虑合法和非法的测试情况。4.3测试过程4.3.1系统的测试内容测试1:系统登录测试测试2:借阅者管理测试测试2.1:添加借阅者测试测试2.2:修改借阅者测试测试2.3:删除借阅者测试测试2.4:查询借阅者测试测试3:图书管理测试测试3.1:添加图书测试测试3.2:修改图书测试测试3.3:删除图书测试测试3.4:查询图书测试测试4:借阅管理测试对4个子模块分别进行单元测试,然后再进行集成测试测试4.1:借书测试首先需要测试输入正确的借阅卡号,能否正确显示该借阅卡的信息,以及当输入错误的借阅卡号时,能否给出相应提示;接着需要测试输入正确的图书号,能否正确显示该图书的信息,以及当输入错误的图书号时,能否给出相应提示;最后需要测试当给出正确的借阅卡号和图书号时,能否进行正确的借书处理。测试4.2:还书测试测试4.3:删除借还信息测试测试4.4:查询借还信息测试测试5:基本信息管理测试4.3.2系统的单元测试本系统的测试模块较多,很多模块的测试内容比较相似,对于单元测试,仅以系统借书管理为例,详细的说明如何设计测试用例。对于每个单元测试,采用的方法是黑盒测试。具体说是采取以等价类划分为主,辅以边界值分析法,力图发现系统的每个错误。测试4.1:借书测试用例的设计(1) 等价类的划分有效的输入等价类有:A. 有效的借阅卡号且未被挂失的借阅卡号,而且借书数目没有超过该卡所能借的最大数目B. 有效的图书号且该图书未被借出有效的输出等价类有:Z. 成功的借阅无效的输入等价类有:b 无效的借阅卡号c 有效的借阅卡号但被挂失的借阅卡号d 效的借阅卡号且未被挂失的借阅卡号,但借书数目超过该卡所能借的最大数目e 无效的图书号f 有效的图书号但该图书已被借出无效的输出等价类有:z 提示借阅卡无效y 提示借阅卡被挂失x 提示借书卡借书数额已满w 提示图书号无效v 提示该图书已被借出(2) 设计覆盖等价类的测试用例表4-2 设计的测试用例有效性输入输出覆盖的等价类有效A,BZA,B,Z无效bzb,z无效cyc,y无效dxd,x无效ewe,w无效fvf,v4.3.3系统的集成测试通过单元测试后,进行集成测试,一般采用自底向上集成的方法,下面以借阅管理模块为例阐述集成测试。测试4:借阅管理模块的集成测试在测试4.1,4.2,4.3,4.4四个子模块的单元测试完成之后,可以进行“借阅管理”模块的集成测试。这里主要测试的是各个模块之间的接口,以及涉及的一些全局变量。具体设计步骤如下:(1)利用模块4.1完成某个借阅卡的一次借书,然后调用模块4.4看看这次借书行为能否查询到,如果没有查询到则发现错误,否则进入下一步。(2)接着调用模块4.2进行还书,如果可以进入下一步,否则发现错误。(3)调用4.4查询上述还书行为,如果查询到进去下一步,否则发现错误。(4)调用4.3删除上述借还记录,看能否给出正确提示,如果给出则进入下一步,否则发现错误。(5)修改借阅卡的相关字段,以满足被删除的条件,再次调用4.3对借还记录进行删除,如果可以删除,则此次测试成功,否则发现错误。4.3.4系统测试与回归测试完成各个模块的测试后要进行系统测试。即把系统的所有模块集成在一起进行全面测试,还要考虑软件兼容和硬件的配置问题。在系统测试的任何一个阶段,只要发现了错误,就要尽可能及时改正。更正后还要检验已经发现的缺陷有没有被正确的修改和修改过程中有没有引发新的缺陷,即回归测试。另外,每当一个新模块被当做集成测试的一部分加进来的时候,软件环境都会发生改变,这些改变有可能会使原本正常的功能产生错误,因此在集成测试策略的环境中要进行回归测试,就是对部分已通过测试的功能进行再次测试,以保证系统的新环境夏能正常工作。出师表:先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。 亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也。臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。今当远离,临表涕零,不知所言。专心-专注-专业