轻松应对高程软件设计题(2)

发表于:2007-05-26来源:作者:点击数: 标签:
在轻松应对高程软件设计题(1)中,我们对高级 程序员 软件设计题的解题方法做了分析,现在我们来分析一道例题。 ★解答实例 2000年试题3:阅读以下说明和流程图(如图1~图4所示),回答问题1和问题2。 【说明】 某供销系统接受顾客的订货单。当库存中某配件
在轻松应对高程软件设计题(1)中,我们对高级程序员软件设计题的解题方法做了分析,现在我们来分析一道例题。

  ★解答实例

  2000年试题3:阅读以下说明和流程图(如图1~图4所示),回答问题1和问题2。

  【说明】

  某供销系统接受顾客的订货单。当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采购单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。该供销系统的分层数据流图中部分数据流和文件的组成如下:

  文件

  配件库存=配件号+配件名+规格+数量+允许的最低率库存量

  数据流

  订货单=配件号+配件名+规格+数量+顾客名+地址

  提货单=订货单+金额

  采货单=配件号+配件名+规格+数量+供应商名+地址

  送货单=配件号+配件名+规格+数量+金额

  假定顶层图是正确的,“供应商”文件已由其他系统生成。

  问题1:指出哪张图中的哪些文件可不必画出。


图1 顶层图



  问题2:指出哪些图中遗漏了哪些数据流。

  回答时用如下形式之一:

  1. 图中遗漏了××加工(或文件)流向××加工(或文件)的××数据流;

  2. 图中××加工遗漏了××输入(或输出)数据流。

  【解析】

  首先阅读试题说明,明确供销系统的基本结构。基本结构如顶层图(图1)所示,供销系统与顾客、供应商和总经理之间交换数据。供销系统接受顾客的订货单,反馈不合法的订货单,并在适当的时机向顾客发出提货单;供销系统向供应商发出采购单,接受送货单,并反馈不合法的送货单;在以上购销操作的基础上,该系统接受总经理的查询并返回销售及库存情况表。

  问题1要求指出哪张图中的哪些文件是不必画出的。这是一个难度较高的要求。首先,它要求仔细研究每一张图,确认每张图中每个文件是否必须画出;其次所谓“不必画出”,其含义是该文件画出也不会导致该流程图发生错误,但不画出该文件将使整个流程图的层次结构更科学、更清晰。一般来说,如果一个元素(文件如数据流等)只用于一个加工,那么它就不必在其上层流程图中画出。但试题说明中只假定了顶层图的正确性,对于其他流程图,我们首先要确定它们是否完整、是否正确。


图2 0层图


  顶层图简单明了,甚至没有涉及任何文件,因此我们可以跳过顶层图不予考虑,直接研究0层图(图2)。0层图涉及3个文件,即配件库存、缺货订单和采购清单。这里缺货订单和配件库存都在销售和采购两个加工中使用,而采购清单只用于采购加工,似乎应该判断采购清单是不必画的,但在各个加工子图中,有可能发生文件、数据流、加工的遗漏或错画,影响我们在此处的判断。因此,只有通过仔细研究以上3个文件在各个加工子图中的应用来印证我们的判断。

  首先看配件库存文件。在加工1子图(图3)中,配件库存文件经过加工1.4更新库存而修改,然后还要为加工1.1和加工1.2提供数据支持,在加工1.1中,通过检查订货单中订购的配件在配件库存中是否有记录,来确定该配件是否属于经销范围,然后以此来确定订货单是否合法。其次,还要在加工1.2中比较合法订货单的数量与库存数量,以此确定是否需要发出采购请求。再次,在发出提货单后,如果库存量低于允许的最低库存量,也要发出采购单。可以看出,在该加工图中,未发现对配件库存文件的不适当的使用。


图3 加工1子图



图4 加工2子图


  在加工2子图(图4)中,在加工2.4核对送货单后要更新库存文件然后加工2.3计算增量提供数据支持,计算出需要采购的配件的数量。应该说这里对配件库存文件的使用是正确的。因此我们可以确定配件库存文件在加工1和加工2中都有应用,画在0层图中是合适的。

  缺货订单文件在试题说明中没有提到,具体的应用需要我们自己分析。0层图中显示该文件被加工1和加工2使用。现在的任务就是确定两个加工中对该文件的使用是正确的。在加工1中缺货订单的数据来自加工1.2和加工1.4,在加工1.2中,接受合法的订货单后,如果订货单上数量大于配件库存文件的数量,将产生缺货订单文件。在加工1.4中,在有货订单送达后,需要交出提货单,然后更新库存。如果库存量低于允许的最低库存量,应该将缺货信息反映到缺货订单中。在加工2中,缺货订单为加工2.3提供部分数据支持,在计算配件增量以明确需要增加的配件的清单时,需要参照缺货订单。结合以上对使用缺货订单文件的分析,可以认为,因此将该文件画在0层图中是有必要的。(未完待续)

原文转自:http://www.ltesting.net