☰
图书馆管理系统数据流图:分层DFD阅读与绘制指南
2026/10/11 18:20:03 网站建设 项目流程

简介:《图书馆管理系统数据流图.pdf》是一份面向系统分析师、软件工程专业学生及软考备考者的实用案例文档。它围绕数据流图(DFD)这一核心,完整呈现了图书馆从图书采购、编目、借阅到归还的整套业务流程,同时覆盖了系统内部人员组织结构分析(包括馆长办公室、采编室、借阅室等)以及用户注册、读者留言等辅助功能,适用于信息系统分析与设计学习。资源包内共1个PDF文件,大小1.1MB,便于移动设备阅读和打印。文档包含0层、1层、2层数据流图,并细化图书采编、图书借阅、图书查询、读者管理等子系统的数据流向,每个层级均标注外部实体、处理过程和数据存储,还附有数据流描述(如D01图书采编信息、D02图书借阅单)及数据字典示例,可帮助读者掌握DFD分层建模与数据字典编写的关键方法。目前已有8277人学习/下载,适合作为课程设计参考或软考系统分析师等考试的复习资料,内容结构清晰,便于按需查阅。

1. 图书馆管理系统数据流图.pdf 在读什么:一份分层 DFD 能解决你的哪些问题

很多人拿到的第一份系统设计文档不是代码,而是一个「图书馆管理系统数据流图.pdf」——里面是一整套从上下文图一直画到 1 层、2 层的分层数据流图(DFD),把读者借书、还书、续借、预约、逾期罚款这些日常动作翻译成「数据从哪里来、经过哪个加工、存到哪份文件」的流动关系。它的价值不是画得多精致,而是帮你确认系统边界、模块划分和数据库该建哪几张表。这份 PDF 适合三类人:要交课设或毕设的学生、准备自研馆藏系统的开发者、以及接手旧系统要先理清业务的分析师。打开 PDF 别急着钻连线,从最外层上下文图往里读,才不会迷路。

2. 先学会读图再谈画图:DFD 图元、分层结构与 PDF 里的编号约定

打开这份 PDF,你会发现它不是一张图,而是一叠图。结构化分析方法-数据流图的交付物通常按「上下文图(顶层图)→ 0 层图 → 1 层图 → 2 层图」排布:上下文图只有一个加工,代表整个图书馆管理系统;0 层图把它摊成 5 到 9 个业务加工;1 层、2 层再把借书、还书这种关键加工继续往下拆。读图的第一步不是看连线,而是分辨你手上这一页是哪一层。

2.1 四个图元别搞混:外部实体、加工、数据流、数据存储各自的判定

DFD 只有四种图元,多数教材和 PDF 沿用同一套规则:外部实体用直角矩形,画在系统边界外,命名是名词,如「读者」「管理员」;加工用圆形或圆角矩形,命名必须是动宾短语,如「借书处理」「验证读者资格」;数据流是带箭头的线,命名是名词,如「借书请求」「馆藏状态」;数据存储是开口矩形或双划线矩形,命名是名词带编号,如「D1 读者档案」「D3 借阅记录」。

一张图拿在手里,判断某个图形该是哪类,我常用两个问题追问:它会不会对外部产生数据?不会,可能是存储或加工;它会不会做判断、计算、写文件?会做,就必须是加工;它没有编号前缀又躺在边界外,基本是外部实体。最容易翻车的判定是「查询」:查询书目是加工,不是存储,更不是外部实体。记住这个判据:凡是「把数据变换、校验、计算后输出新数据」的都算加工,凡是「静止保存数据、等加工来读写」的才算存储。

图元常见画法命名要求判定口诀图书馆例子
外部实体直角矩形名词系统外的人或系统读者、管理员
加工圆形/圆角矩形动宾短语有判断有计算有写文件借书处理、罚款管理
数据流带箭头线名词流动的数据借书请求、逾期标记
数据存储开口矩形/双线名词带编号静止保存D2 馆藏书目

借书台一个常见动作——管理员扫描读者证,扫描本身不是加工也不是实体,「读者证号」从外部实体「管理员」流向加工「P1 借书处理」,这才是正确画法。判断图元时还有一类边界案例:系统会对接外部系统,比如校园一卡通中心或图书供应商系统。图书馆管理系统 DFD 里如果出现「一卡通中心」,它同样画成直角矩形外部实体,流名是「一卡通验证结果」。不要把外部系统画成数据存储,因为它的数据不由本系统持久化,拉进来只会让存储关系混乱。

2.2 上下文图、0 层图与 1 层图:沿着「上下文数据流图的分解」往下读

拿到 PDF 先找「图 0」或「上下文图」。它只有中间一个加工、外围若干外部实体,绝不出现数据存储。它回答一个核心问题:系统边界在哪。比如读者向系统提交借书请求,管理员提交罚款结算,系统向读者回执借阅凭证,向管理员输出统计报表;把这些进出关系说清楚,边界就定了。

0 层图紧接着把中间那一个加工摊开,出现 P1 到 P8 多个加工,D1 到 D5 存储也开始出现。上下文图和 0 层图之间守一条守恒关系:上下文图里每条外部数据流,在 0 层图里必须能找到对应的加工和存储去向;0 层图里新增的加工之间流,属系统内部细节,不需要上升回上下文图。1 层图则只围绕 0 层里某一个加工展开,比如把 P1 借书处理拆成验证读者、查验馆藏、登记借阅、更新馆藏、生成凭证五个动作。这就是「上下文数据流图的分解」的标准路径:先边界,再大加工,再逐层细化。

读 PDF 时我建议严格按图号顺序读,不要先翻最复杂的 1 层图——你会在编号 P1.2 出现时因为没有父图上下文而彻底迷失。怎么区分 0 层图和 1 层图?数加工数量:全系统多个加工是 0 层;只围绕一个加工、周边全是它的子动作,就是 1 层。这个方法应对页序混乱或图号丢失的 PDF 特别有效。

2.3 图号命名规则:一份 PDF 里快速定位「借书」在哪张图

多数图书馆系统 DFD 的图号带下标:图 0 上下文图;图 1 0 层图;图 1.1、图 1.2 是 0 层图里 P1、P2 的分解子图;图 1.1.2 表示 P1 的第 2 个子加工的再分解。另一套常见体系用 E 开头标外部实体(E1 读者、E2 管理员)、D 开头标存储、P 开头标加工。无论哪种体系,拿到 PDF 先做三件事:翻目录看有没有「图索引表」;没有的话自己按每张图标题建一个「图号 → 包含加工 → 对应业务流程」的小清单;然后用 5 分钟把每张图的图号连读一遍,看跳不跳号。

图号跳号往往意味着交付时 PDF 漏了子图,或者作者改业务编号没同步更新图号。我拿到跳号的 PDF 会先请对方确认是「漏图」还是「编号没刷新」,而不是直接开画——基于错误索引去补图,只会把错误固定进文档。这类文档审阅时直接打回,因为一个索引对不上的 DFD,比没有文档更危险。

提示:如果 PDF 里只有图没有目录,先按图号重排一份页面清单再动手。页序问题比画图错误更容易浪费一整天。

3. 从业务流程反向拆出顶层图与 0 层图:照着图书馆日常操作画就行

读 PDF 和画 PDF 是两码事。画的时候,我习惯「先列事件、再画顶层、再分 0 层」:把图书馆每天发生的业务动作写在便签上,然后把便签归类成外部实体、加工、数据存储三类。下面这套拆法可以直接照抄,也是多数课设和教材里图书馆管理系统的标准分法。

3.1 先圈外部实体:读者、管理员之外,为什么「书」不算实体

列外部实体时最容易犯的错是把「书」放进来。物理的书在系统边界之外,系统处理的是「图书条码」「书目记录」这些数据,不是书的实体。所以图书馆系统外部实体通常只有三个:读者、管理员、编目员。编目员只在含采编子系统的 0 层图里出现;如果系统只做流通业务,编目员可以省略。

外部实体判据有三条:它出现在系统边界之外、与至少一个加工有数据流;它不读不写数据存储;删除它,系统仍能存在,只是少了一个数据来源或去向。用第三条检验「书」:删掉书这个实体,借书流程照样存在,只是少了条码数据;所以「图书条码」是流,「书」不是实体。每标一个外部实体,同时写出它进出的数据流,形成小表,后面画上下文图直接照着放。

外部实体输入到系统的数据流系统输出的数据流
读者借书请求、还书请求、续借请求、预约请求、查询条件借阅凭证、应还日期、罚款通知、查询结果
管理员借还办理指令、罚款结算、上架登记、统计请求借还结果、罚款单据、库存台账、统计报表

如果系统对接校园一卡通中心,把「一卡通中心」也画成外部实体,数据流是「学号验证请求」和「学号验证结果」,不要因为它是软件系统就画成加工或存储。这条规则在保真的系统分析里经常被人忽略,但评审老师一眼就能看出来。

3.2 0 层加工按业务事件划分:借、还、续、约、罚一个加工对应一件事

0 层加工划分的原则是「每个独立业务事件至少一个加工,加工数量控制在 5 到 9 个」。为什么强调按事件而不是按功能模块划分?按功能划分容易把「查询」写成存储,按事件划分每个加工有明确的触发条件,画出来的流不会断头。图书馆系统最常见的划分是:P1 借书处理、P2 还书处理、P3 续借处理、P4 预约处理、P5 罚款管理、P6 图书查询、P7 馆藏采编管理、P8 读者管理。

第一步,把一天里的业务动作写在便签上:读者借书、读者还书、读者续借、读者预约、读者查书目、管理员收罚款、管理员登记新书、管理员注销旧书、读者注册、读者注销。第二步,归类合并,注册与注销合并为读者管理,新书登记与旧书注销合并为馆藏采编管理。第三步,按业务顺序给加工编号,并注明每个加工写入哪个存储。

加工编号加工名触发事件写入的存储
P1借书处理读者借书D2 馆藏书目、D3 借阅记录
P2还书处理读者还书D2、D3、D5 罚款账目
P3续借处理读者申请续借D3
P4预约处理读者预约图书D4 预约队列
P5罚款管理逾期结算D5
P6图书查询读者/管理员查询馆藏读 D2
P7馆藏采编管理新书登记、旧书注销D2
P8读者管理读者注册与注销D1 读者档案

P1 和 P2 是最容易漏拆的两个加工。借书不只是「把书拿走」,它要同时改 D3 借阅记录里的在借字段和 D2 里的在架状态;还书则可能触发逾期判断,因此还书加工必须输出「逾期标记」给罚款管理,否则罚款就断了头。把这张表填完,0 层图的主框架就有了。

3.3 数据存储与加工的关系:书目、读者、借阅三条主线怎么挂

数据存储不是自己独立存在的,它必须「有加工写、有加工读」。图书馆系统的主线是三条:D1 读者档案由 P8 写入、P1 和 P5 读取;D2 馆藏书目由 P7 写入、P1 到 P4 和 P6 读取;D3 借阅记录由 P1 写入在借状态、P2 到 P4 读取并更新。如果某个存储只有写没有读,或者只有读没有写,基本可以断定是后来补加的表、画图时忘了同步存储条目。

画 0 层图我习惯按五步走:把加工按业务先后从左到右摆放;外部实体放两侧;存储放在与它交互最多的加工旁边;每画一条流先问一遍「数据从哪个加工到哪个加工,中间有没有加工在改写」;最后检查每个存储至少有一条写流和一条读流。借书、还书两条主线上的存储交互最密集,连线允许交叉,但不要让一条流穿过另一个加工框,那样读图的人会误以为它被该加工消费了。

还有一个常被问到的细节:D3 借阅记录要不要拆成「在借记录」和「历史借还记录」两张存储?如果 PDF 只画 D3 一个,说明作者选择合并;如果拆成 D3 和 D6,就要在父图和子图上分别标清哪条流写哪个。这类分拆必须同步写进数据字典,不写的话实现阶段就会卡在「到底建一张表还是两张表」的争论上。

4. 1 层与 2 层分解:拆分粒度、数据字典与跨层交叉引用

0 层图只是骨架,真正决定这份 PDF 有没有工程价值的是 1 层和 2 层分解是否合理。同样是「借书处理」,有人拆出 8 个子加工,有人只画一个加工加两条流——这背后是「上下文数据流图的分解」粒度问题,也是审阅者最爱卡人的地方。

4.1 上下文数据流图的分解到哪一层该停:原子加工的三个判据

拆分的停止条件不是「图好看」,而是加工已经变成「原子加工」:内部逻辑能用一句话说明白,且只做一件事。我常用的判据有三条:加工描述里没有「并」「或」「然后」这类连接词,或者只是一个简单判断;输入数据流和输出数据流合计在 2 到 5 条之间,没有超过人能一眼看懂的限度;实现时对应一个函数、一个事务或一张表上少量字段的更新。

以 P1 借书处理为例,典型拆法是:P1.1 验证读者资格(读 D1,检查欠费、超限);P1.2 查验馆藏状态(读 D2,图书是否在架);P1.3 登记借阅(写 D3);P1.4 更新馆藏状态(写 D2);P1.5 生成借阅凭证(输出给读者)。每一层子加工数量控制在 5 到 9 个,超出就说明上一层的加工拆得太粗或太细。如果 P1.3 登记借阅还要同时处理预约抢占,即检测该书是否被预约,那 P1.3 就要再拆成 P1.3.1 检查预约队列、P1.3.2 写入借阅记录、P1.3.3 清除预约标记三步,这就是 2 层叶子。

两种失败形态要特别留意。拆得过细:把「计算逾期天数」单独成加工挂在还书子图里,子图加工数到 11 个,读图人根本记不住。拆得过粗:把校验读者资格、检查预约、登记借阅、更新库存糊在一个加工里,数据流超过 8 条,加工描述要用三段话才说清。任何一层出现这两种形态,回头重新划,别怕返工,DFD 改图比改代码便宜得多。

4.2 借书流程的数据字典:每条流的名字、组成、来源与去向

数据字典是 DFD 的配套文档,PDF 里一般放在图册最后几页。每条数据流都要有定义,没有字典的 DFD 只能算草图。条目规则不复杂:每条数据流一条;组成用加号连接原子项,方括号表示可选;来源和去向写加工编号或存储编号;量级写峰值而不是平均值。

数据流名组成来源去向峰值量级
借书请求读者证号 + 图书条码 + 操作员号 + 请求时间读者/管理员P1 借书处理高峰 300 条/小时
读者资格结果读者证号 + 欠费状态 + 在借数量P1.1P1.3与借书请求同量级
馆藏状态ISBN + 馆藏位置 + 在架状态D2P1.2随查询产生
借阅凭证读者证号 + 图书条码 + 书名 + 应还日期P1.5读者与借书请求同量级
逾期标记读者证号 + 图书条码 + 逾期天数P2 还书处理P5 罚款管理日结 50 条

写字典时有一个容易被忽略的动作:把「组成」字段的每个子项往数据库表字段上靠一遍,能对齐就说明存储设计合理,对不上的就要回头查存储条目。很多表结构缺陷在这里就能暴露,而不是等到写接口时才发现字段缺失。别名也要登记:读者证号和借书证号是同一个字段,不在字典里注明,后续开发就会因字段语义分歧扯皮。

4.3 图号与加工编号联动:从顶层追踪到叶子加工需要几步

一份可维护的 DFD,图号和加工编号是联动的。比如从「读者发起借书」到最终「更新馆藏」,追踪路径是:上下文图(借书请求流)→ 图 1 0 层图(P1 借书处理)→ 图 1.1 P1 的子图(P1.2 查验馆藏)→ 数据字典中 D2 馆藏书目条目。每一步编号都在上层被明确引用,读者不用倒回去翻,就能知道现在看到的是哪一层、属于哪个加工。

交叉引用有三个检查点:子图图号在父图里有对应的加工;子图的输入输出流与父图该加工的输入输出流完全一致;数据流名在数据字典里都查得到。改图时最怕的是改了父图的流名,子图和字典没同步。我的习惯是改任何一条流,同时改三处:父图、子图、数据字典,并在 PDF 修订记录里写一行改了什么。这样一份 DFD 才能从一个交差的图集,变成后面写接口、建表时真的能对照的施工图。

5. 避坑清单:画图书馆 DFD 常见的 5 个问题

这份标题带 PDF 的文档,多半是课设或项目评审要交的交付物,审图老师最常挑的刺就集中在下面 5 处。每一条我都踩过或帮别人排查过,按「现象 → 原因 → 解决」说清楚。前两条是硬伤,后三条是细节,硬伤决定能不能过审,细节决定过审之后开发会不会返工。

5.1 父图有流子图却找不到:借书处理的输入流在分解后神秘消失

现象:父图里 P1 借书处理周围有「读者资格结果」「馆藏状态」两条输入流,翻开子图却只画了「借书请求」进来,读者资格那条流不见了。原因:画子图时只盯着正常借阅路径,把「查询读者档案」当成系统内部细节忽略掉了,忘了上下文数据流图的分解必须保持父子平衡。解决:做平衡检查。先把父图 P1 的每个输入输出流抄到纸上,打开子图逐条勾销,勾不掉的流要么补进子图,要么确认它在更下层出现并标注出处。评审现场最常问的一句话就是「这条流去哪了」,回答不上来,整张图的可信度都会被打折扣。

5.2 查询修改被画成存储:外部实体直连数据存储是典型硬伤

现象:0 层图上直接画一条箭头从「读者」指向「D2 馆藏书目」,或者把「书目查询」画成一个数据存储框。原因:把数据存储当成了能处理查询的功能模块,实际上存储是静止的文件,不加加工就让它外露,等于把数据库表直接暴露给终端用户。解决:插入「P6 图书查询」加工,让「读者 → 查询条件 → P6 → 查询结果 → 读者」「P6 → D2 馆藏书目」成为唯一通路。所有对存储的读写都必须经由加工,这是结构化分析方法-数据流图的铁律。把「查询」理解成加工而不是存储,图才会被老师一眼判定为内行画的。

5.3 数据流方向标反:还书时「应还日期」到底从谁流向谁

现象:还书子图里「应还日期」箭头从读者指向借阅记录存储,看起来像读者在向系统报告自己该什么时候还书。原因:把物理动作和数据所有权混在一起。书虽然由读者拿回来,但「应还日期」这条数据的权威来源是系统的 D3 借阅记录,不是读者。解决:定一个方向约定——数据流方向永远从「产生或被权威保存的一方」流向「使用方」。读者只提供「还书请求」,系统读取 D3 得到「应还日期」,再输出「逾期标记」。凡是箭头从外部实体指向存储、却没有经过加工,基本都可以判定为方向标反或存储乱挂。

5.4 逾期罚款断头:还书加工里算钱,后面没有对账出口

现象:还书加工 P2 里直接算出罚款金额写入 D5,0 层图上却看不到任何指向 P5 罚款管理的流,也没有「收款凭证」输出给管理员。原因:还书是一个业务动作,罚款结算是另一个动作,把两者塞进一个加工,子图里必然出现「既改 D3 又改 D5」的双写逻辑,父图看不到跨加工的流,账就在系统里断了头。解决:把金额计算从还书加工里拆出去。P2 只负责判断逾期并输出「逾期标记」,P5 罚款管理负责根据标记计算金额、写 D5、生成罚款单给读者、生成收款凭证给管理员。两个加工之间的数据流画在 0 层图上,账才能对得上。

5.5 图元用颜色区分,打印成黑白 PDF 分不清加工与存储

现象:电子版 DFD 用蓝色底表示加工、黄色底表示存储,导出成黑白 PDF 后全是灰块,加工和存储根本分不清。原因:作者依赖颜色编码而非形状编码,这是交付层面的失误。解决:约定每类图元必有形状差异——加工用圆角矩形、存储用开口矩形、外部实体用直角矩形、流用带箭头直线。交付前把 PDF 导出成灰度模式自查一遍,分不清就改形状。还有一个细节:存储编号 D1、D2 和加工编号 P1.1、P1.2 要在图中固定标注,黑白打印后靠编号也能区分。这也是 PDF 版 DFD 比源文件更适合评审场合的原因,PDF 格式稳定、字体不丢,但前提是作者别只顾配色、不顾形状编码。

6. 一张 DFD 是否合格的三个快检技巧,以及我改图前的固定动作

6.1 三个快检:存储必访问、流必平衡、名必成对

快检一,存储孤立检查:数一遍每个数据存储有几条读流、几条写流,只读不写或只写不读的存储要不解释清楚,要不删掉。快检二,外部实体直连检查:所有箭头只允许出现在「外部实体-加工」「加工-加工」「加工-存储」之间,「外部实体-存储」只要出现就一定错。快检三,命名检查:数据流名全是名词短语,加工名全是动宾短语,把两条规则套一遍,不符合的立刻改。这三个检查不出五分钟,能在交付前拦住九成硬伤。

6.2 我改图前的固定动作:备份一份可编辑源文件,再做平衡核对

我的习惯是,PDF 之外永远保留一份可编辑的源文件,PDF 只作为评审和存档介质。因为一份课设 DFD 从初稿到定稿至少要改三版,每次改完 PDF 很容易忘掉同步某个子图,留源文件才能低成本回退。我不止一次吃过亏:改 P3 续借子图时删掉 D3 的一条读流,PDF 已导出、父图却还画着那根线,评审现场被问住。后来固定动作变成「改完一层图,立刻做 6.1 的三项检查,再导出 PDF 覆盖存档」——这个动作用了几年,基本没翻过车。

如果你手上的 PDF 正好是别人画的初稿,按第 2 章的读法逐层看,再拿第 5 章的清单挑刺,十分钟就能判断这份图值不值得继续投入;如果要自己画,把第 3、4 章的两张表填完,DFD 基本就成型了。导出 PDF 之前,别忘了把源文件复制一份放进「v1_2025」这样的目录,这是我现在改任何图都先做的一步。希望这些土办法帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询