软件设计师(下午题)数据流图真题解析

必备知识点

数据流图

图解相关

又称DFD或分层数据流图,需要与E-R图(实体属性图)分开,这里给出图元及对应含义。

上述需要注意的是,

需填写数据流的名称,一般都在题中(给出的数据流图或题干文字)

需填写数据流的起点终点,一般都在题中(给出的数据流图或题干文字)

数据字典相关

数据流图平衡原则(解题核心)

父图和子图之间的平衡

子图内平衡

注意:数据流图中操作流程信息的方向。同时应该保证既有输入也有输出。

只有输入没有输出称为黑洞。

只有输出没有输入称为奇迹。

 

以上为基础知识回顾,以下为实例解读。

实例解读1

 

阅读下列说明和有关的图表,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

A公司决定为该市车站开发自动售票系统,系统的要求如下:

1.乘客能按以下三步操作购票:选定目的地;投入钱币;获得一张票;

2.当且仅当乘客选定目的地后,系统才接收投钱,每次投入的钱只购买一张票;

3.只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快出票;

4.如需找钱,则在出票的同时应退还多余的钱;

5.如果乘客投入的钱不够票价,或者票库中没有所要求的票时,系统将全额退钱,并允许乘客另选目的地,继续购票;

6.出票前乘客可以按"取消"按钮取消购票,系统将全额退出该乘客投入的钱,并允许乘客另选目的地,继续购票;

7.出票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。

该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚线表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。转换图如图1所示。

图1转换图

程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移图中,用双线框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在有向边旁用"事件   动作"形式注明。状态迁移图如图2所示。

图2状态迁移图

该公司还制作了一个过程启动表,用以表明状态迁移图中的4个动作与转换图中的4个过程之间的"启动"关系,即说明哪个动作将启动哪个过程。用1表示启动,用0表示不启动。启动的过程将根据获得的输入数据产生输出数据,未启动的过程则不会产生输出数据。该表中没有列出的过程,其执行与否与事件无关。过程启动表见表1:

【问题1】

转换图中缺少哪三条数据流?请指明每条数据流的名称、起点和终点。

【问题2】

在状态迁移图中,a,b,c分别表示什么事件?请用转换图中给出的事件名解答。

【问题3】

在过程启动表中,d,e处应填什么?请分别用4位二进制码表示。

 

问题1

问的是缺少的数据流和起点终点,这里我们需要把数据流图分离出来,即虚线不要,看我们的数据流图相关图示即明白,不再详叙

这里有一个极大的干扰项,我第一次就做错了,上面给了一个售票控制,我把它当做加工了,导致数据流全错,其实不应该出错的,首先图示和其他的加工还是有区别的,我近视700+,我的锅,然后根据题意,这个售票控制应该是转换图的一部分,且没有任何实现的出和入,都是虚线的操作。

如果你没有出现这个问题,那么恭喜你,这题很简单了。

只提出数据流图,很容易发现

接受目的地后到出票,按照系统说明及日常认知,肯定要进行目的地核查

接受的钱肯定需要进行核查,然后进行出票和退钱

返回验证,检查后是有出票操作的。

所以缺少的数据流为  

 

  • 数据流名:目的地; 起点:"接收目的地";终点:"核查"。
  • 数据流名:投入的钱;起点"接收钱";终点:"核查"。
  • 数据流名:剩余的钱;起点"核查";终点:"退还钱"。

问题2

首先这个迁徙图,我们没见过,不过有相关的说明,我们需要获得的信息是啥?

引起状态迁移的事件以及由该事件引起的动作,在有向边旁用"事件   动作"形式注明

我们的问题就能转化为

1.在接受投钱的时候,什么事件发生可以退钱,并等待重新选择目的地

2.在接受投钱的时候,什么事件发生可以出票

3.在正在出票的时候,什么事件发生可以接收新目的地

结合题意

a - "取消"操作

b - 核查正确

c - 出票结束。

 

问题3

哪个动作将启动哪个过程

这个我们可以理解为 哪个过程会包含相关动作(接收钱,出票,退钱,接收新目的地)

这样理解就好填多了

首先

接收目的地的过程,可能接受新目的地,刚出票结束或取消,可能退钱,票价不够或没有票

收钱的过程不会有接受目的地和退钱的动作

出票的过程中也不会有接受目的地和退钱的动作

退还钱的过程中肯定会退钱,没有接受新目的地的动作,只有等退钱结束后才能接受新目的地

最后答案

d - 1001

e – 1000

实例解读2

阅读下列说明和数据流图,回答问题1~问题3。

【说明】

某考务处理系统主要功能是考生管理和成绩管理:

1.对考生送来的报名表进行检查。

2.对合格的报名表编好准考证号码后将准考证送给考生,将汇总后的考生名单送给阅卷站。

3.对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者。

4.填写考生通知单(内容包含该考生的准考证号、姓名、各课程成绩及最终合格/不合格标志),送给考生。

5.根据考生信息及考试成绩,按地区、年龄、文化程度和职业进行成绩分类统计及试题难度分析,产生统计分析表。

考务处理系统的顶层图如图1所示,第0层图如图2所示,加工2子图如图3所示。

【数据流图】

图1顶层图

图2  0层图

图3加工2子图

【问题1】

指出哪张图的哪些文件可以不必画出。

【问题2】

数据流图1-3中缺少3条数据流,请直接在图中添加。

【问题3】

根据系统功能和数据流图填充下列数据字典条目中的  (1)    (2) 

试题得分表=准考证号+{课程名+成绩}

考生名册=报名号+准考证号+姓名+通信地址+出生年份+文化程度+职业

考生通知单=  (1) 

报名表=  (2) 

问题1

哪张图的哪些文件,可以解读为图示的双横线内(文件),即这题的答案就是图2或者图3的试卷得分表和考生名册

即四选一的问题,我们直接开始分析,

图2的考生名册连接图中的1登记报名表,2统计成绩,显然不能去掉,虽然从图3可以看出考生名册是输入,但考生名册的输入成谜,且根据题意,显然不是最好的答案

图2的试卷得分表,结合图3的加工子图,可以直接去掉,此时图2的试卷得分表的输入输出都是针对2统计成绩,在图2中显得多余,所以这应该是最好答案

图3,的两种表,都是加工的细节,显然不能去掉,即并不多余

上述比较啰嗦,这种问题碰到,我们肯定优先选择带文件的0层图,原因之一,细节暴露在加工内肯定比在0层图好,原因之二,针对加工的数据流表文件既有输出也有输入,可以省略,可以当做知识点记住,基础知识内有理论说明。

0层图中的"试卷得分表"是局部文件,可不必画出。

问题2

比较简单,没有第一个例题恶心人,我们直接数 输入和输出

很容易发现

缺少合格标准的输入

错误成绩表的输出

第三个可能麻烦点,不过仔细阅读根据考生信息及考试成绩,按地区、年龄、文化程度和职业进行成绩分类统计及试题难度分析,产生统计分析表这句话,即可明白 分类统计表的输出需要 考生名册的输入

然后就是数据流的起点和终点,第三个已经说出来了,第二个也比较简单,即与正确的成绩表进行分开就好,第一个也很好理解,直接指到审定合格者

(1)分类统计成绩中需要读入考生成绩,缺少从"考生名册"到"2.4分类统计成绩"的数据流。

(2)"2.1检查成绩表"缺少输出数据流"错误成绩表"。

(3)"2.2审定合格者"缺少输入数据流"合格标准"。

问题3

这题应该是这三个中最简单的

4.填写考生通知单(内容包含该考生的准考证号、姓名、各课程成绩及最终合格/不合格标志),送给考生。

已经给出了,需要注意的是数据字典的写法

 (1)准考证号+姓名+{课程名+成绩}+合格/不合格标志

(2)报名号+姓名+通信地址+出生年份+文化程度+职业

留给你们看的

阅读下列说明和数据流图,回答问题1~问题3。

【说明】

某医院收费系统的主要功能是收取病人门诊的各项费用。系统的收费功能分为3个方面:病历收费、挂号收费和根据处方单内容收取检查或药物费用。

1.病人初次来该医院看病,首先购买病历,记录病人基本情况。

2.病人看病前要挂号。根据病人的病历和门诊部门(内科、外科等),系统提供相应的挂号单和处方单,并收取费用。

3.病人根据处方单进行进一步检查或取药前需交纳各项费用。系统首先根据病人基本情况检查处方单中病历号是否正确,记录合格的处方单,并提供收据。

4.所有收费都必须依据定价表中的定价来计算,且所有收费都必须写入收费记录中。

医院收费系统的顶层图如图2所示;医院收费系统的第O层DFD图如图3所示。其中,加工1的细化图如图4所示,加工2的细化图如图5所示。

假定顶层图是正确的,"定价表"文件已由其他系统生成。

【数据流图】

图2医院收费系统的顶层图

图3医院收费系统的0层图

图4医院收费系统的加工1子图

图5医院收费系统的加工2子图

【问题1】

指出哪张图的哪些文件可以不必画出。

【问题2】

数据流图4中缺少2条数据流,请直接在图中添加。

【问题3】

数据流图5中缺少4条数据流,请直接在图中添加。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章