热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

DFD图练习(图书管理系统)

某学校欲开发图书管理系统,以记录图书馆所藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主

某学校欲开发图书管理系统,以记录图书馆所藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:
处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法。若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表。借阅者归还所借图书时, 先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。
维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。
处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。
现采用结构化方法对该图书管理系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
在这里插入图片描述
在这里插入图片描述
【问题1】
使用说明中的词语,给出附件图1-1中的实体E1〜E4的名称。
【问题2】
使用说明中的词语,给出附件图1-2中的数据存储D1〜D4的名称。
【问题3】
在DFD建模时,需要对有些复杂加工(处理)进行进-步精化,绘制下层数据流图。针对附件图1-2中的加工“处理借阅”,在1层数据流图中应分解为哪些加工?(使用说明中的术语)
【问题4】
说明【问题3】中绘制1层数据流图时要注意的问题。

答案:
【问题1】
E1:借阅者 E2: 图书管理员
E3/E4:学生数据库/职工数据库
【问题2】
D1:图书表 D2: 借出图书表
D3:逾期未还图书表 D4:罚金表
【问题3】
检查借阅者身份或检查借阅者ID;
检查逾期未还图书;
检查罚金是否超过限额;
借阅图书;
计算图书损坏或丢失罚金额;
【问题4】
保持父图与子图平衡

解析:
【问题1】
由题干中的关键信息“(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查”、“(3) 处理逾期。系统在每周一统计逾期未还图书,……并给有逾期未还图书的借阅者发送提醒消息”,结合如图1-2所示的0层数据流图中与外部实体E1相关的输出数据流“借阅者ID”和处理“处理借阅”、输入数据流“逾期未还提醒”和处理“处理逾期”等,可知图1-1和图1-2中实体E1的名称是“借阅者”
根据题干中给出的关键信息“(1)处理借阅。……借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表”,结合图1-2中与外部实体E2相关的输出数据流“损坏罚金”和处理“处理借阅”;关键信息“(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录”,结合图1-2中与外部实体B2相关的输入数据流“查询到的图书”、输出数据流“待删除的图书”“待添加的图书”和处理“维护图书”;关键信息“(3)处理逾期。……借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度”,结合图1-2中与外部实体B2相关的输出数据流“交罚金额”和处理“处理借阅”等,可知图1-1和图1-2中实体E2的名称是“图书管理员(或图书馆管理员)”。
基于题干中给出的 “(1) 处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法…”等关键信息,结合图1-2中与外部实体E3/E4相关的输入数据流“借阅者ID”、输出数据流“验证结果”和处理“处理借阅”等,可知图1-1和图1-2中实体E3、E4的名称分别是“学生数据库”、“职工数据库”
【问题2】
结合问题1的分析结果,基于题干中给出的关键信息“(1)处理借阅。……如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,……借阅者归还所借图书时,……最后,更新图书表,删除借出图书表中的相应记录”,结合图1-2中与数据存储D1相关的输入数据流“借阅的图书”、“归还的图书”和处理“处理借阅”;关键信息“(2)维护图书。……在 新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录”,结合图1-2中与数据存储D1相关的输入数据流“新书信息”、“ 待删除图书ID”和处理“维护图书”等,可知图1-1和图1-2中数据存储D1的名称是“图书表”。
由题干中给出的“(1) 处理借阅。……如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表。借阅者归还所借图书时,……最后,更新图书表,删除借出图书表中的相应记录”等关键信息,结合图1-2中与数据存储D2相关的输入数据流“借阅的图书”、“归还的图书”和处理“处理借阅”等,可知数据存储D2的名称是“借出图书表”。
根据题干中的关键信息“(1) 处理借阅。借阅者要借阅图书时,……若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书……”等,结合图1-2中与数据存储D3相关的输出数据流“逾期未还图书”和处理“处理借阅”等,可知数据存储D3的名称是“逾期未还图书表”
基于题干中给出的关键信息“(1)处理借阅。借阅者要借阅图书时,……检查借阅…罚金表中的罚金是否超过限额。…借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表; ……”,结合图1-2中与数据存储D4相关的输入数据流“损坏/丢失罚金额”、输出数据流“罚金额”和处理“处理借阅”等;关键信息“(3)处理逾期。……逾期未还的图书按规则计算罚金,并记入罚金表,…… 借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度”,结合图1-2中与数据存储D4相关的输入数据流“交罚金额/逾期罚金额”和处理“处理逾期”等,可知数据存储D4的名称是“罚金表”。
【问题3】
根据题干中给出的关键信息“(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。……合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。……则允许借阅图书,更新图书表,……惜阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;……” 等,图1-2中加工“处理借阅”在1层数据流图中应分解为“检查借阅者身份(或检查借阅者ID)”、“ 检查逾期未还图书”、“ 检查罚金是否超过限额”、“ 借阅图书”、“计算图书损坏或丢失罚金额”、“归还图书” 等加工。题干中已明确说明“处理逾期”是一个操作,而且在描述“(3)处理逾期”中单独描述,图1-2中 已经建模为单独一个处理,因此在本问题中不需要进一步分解。
【问题4】
父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的
基于0层数据流图绘制1层数据流图时,需要注意保持父图与子图平衡。具体而言,父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。


推荐阅读
  • 本文介绍了Paxos的世界中关于复制日志与状态机的概念和重要性。通过存储日志来实现数据的持久化,并通过日志流来记录数据的变化,而不是直接持久化数据本身。这样做的好处是简化了持久化存储的操作,并且方便多机之间的数据同步。 ... [详细]
  • PHP玩家基地系统毕业设计(附源码、运行环境)的用户登录界面、游戏管理和玩家作品管理
    本文介绍了一个PHP玩家基地系统的毕业设计,包括用户登录界面、游戏管理和玩家作品管理等功能。附带源码和运行环境,并提供免费赠送本源代码和数据库的方式,请私信获取详细信息。摘要共计约XXX字。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • qt学习(六)数据库注册用户的实现方法
    本文介绍了在qt学习中实现数据库注册用户的方法,包括登录按钮按下后出现注册页面、账号可用性判断、密码格式判断、邮箱格式判断等步骤。具体实现过程包括UI设计、数据库的创建和各个模块调用数据内容。 ... [详细]
author-avatar
lb小小凡人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有