1、中级软件设计师下午试题-103 及答案解析(总分:-4.99,做题时间:90 分钟)一、试题一(总题数:1,分数:-1.00)【说明】某供销系统接受顾客的订货单。当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采货单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单并更新了库存后,向顾客发提货单。该系统还可随时向总经理提供销售和库存情况表。该供销系统的分层数据流图中部分数据流和文件的组成如下:【文件】配件库存=配件名+规格+数量+允许的最低率库存量【数据流】订货单配件号+配件名+规格+数量+顾客名+地址提供单=订货单+金额采货单配件号+配件名+规格+数量+供应商名十
2、地址送货单=配件号+配件名+规格+数量+金额假定顶层图是正确的,“供应商”文件已由其他系统生成。【数据流图】(分数:-1.00)_二、试题二(总题数:1,分数:-1.00)【流程图】1. 【问题 1】上面程序的功能是什么?(分数:-1.00)_三、试题三(总题数:1,分数:-1.00)【说明】(分数:-1.00)_四、试题四(总题数:1,分数:-1.00)【说明】中国教育科研网受理了许多用户(高校和研究机构)中请在指定 IP 上开设网络访问业务。网络访问包括国内流量和国际流量。教育科研网管理中心保存了网络访问用户档案和网络访问业务档案。网络访问用户档案的记录格式为:用户编码 用户名 用户地址网
3、络访问业务档案的记录格式为: IP 地址 用户编码 国内流量许可标志 国际流量许可标志用户每次上网流量的计费数据都自动地记录在管理中心的服务器上。计费数据的记录格式为: 日期 IP 地址 受访问的 IP 地址 访问开始时间 持续时间管理中心为了用计算机自动处理流量收费以提高工作效率,开发计费管理系统。该系统每月能为每个用户打印出网络流量缴费通知单。缴费通知单的记录格式为: IP 地址 用户编码 国内流量费用 国际流量费用 总额【流程图】 下面的流程图描述了该系统的数据处理过程。该系统每天对原始的计费数据进行分类排序,并确定每个网络访问记录的访问类型(本地/国内/国际),冉根据流量费用单价文件,
4、算出每个记录应收取的费用。因此,形成的日计费文件中增加了两个数据项:访问类型和话费。该系统每日对日计费文件进行累计(按 IP 地址和访问类型,对该类型的费用进行累计,得到该 p 地址该访问类型的当月费用总计),形成月计费文件。月计费文件经过出账处理形成流量费用账单文件。流量费用账单文件的记录格式为: 月份 用户编码 IP 地址 国内费用 国际费用1. 【问题 1】(1)请说明流程图中的文件 F0、F1 分别是哪个文件。(2)处理 1 和处理 5 分别按照哪些数据项进行分类?(分数:-0.99)_五、试题五(总题数:1,分数:-1.00)1.阅读以下说明,将应填入 (n) 处的字句写在答卷纸的对
5、应栏内。(分数:-1.00)_中级软件设计师下午试题-103 答案解析(总分:-4.99,做题时间:90 分钟)一、试题一(总题数:1,分数:-1.00)【说明】某供销系统接受顾客的订货单。当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采货单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单并更新了库存后,向顾客发提货单。该系统还可随时向总经理提供销售和库存情况表。该供销系统的分层数据流图中部分数据流和文件的组成如下:【文件】配件库存=配件名+规格+数量+允许的最低率库存量【数据流】订货单配件号+配件名+规格+数量+顾客名+地址提供单=订货单+金额采货单配件号+配
6、件名+规格+数量+供应商名十地址送货单=配件号+配件名+规格+数量+金额假定顶层图是正确的,“供应商”文件已由其他系统生成。【数据流图】(分数:-1.00)_正确答案:(0 层中的“采购清单”不必画出。)解析:解析流程图试题的解答较其他类型的试题要直观一些,但要求考生必须特别仔细,白密一疏也会导致严重的失分。首先阅读试题说明,明确供销系统的基本结构。基本结构如顶层图所示,供销系统与顾客、供应商和总经理之间交换数据。供销系统接受顾客的定货单,反馈不合法的定货单,并在适当的时机向顾客发出提货单;供销系统向供应商发出采购单,接受送货单,并反馈不合法的送货单;在以上购销操作的基础上,该系统接受并返回总
7、经理的销售及库存情况表。问题 1 要求指出哪张图中的哪些文件是不必画出的。这是一个难度较高的要求。首先,它要求仔细研究每一张图,确认每张图中每个文件是不必须画出:其次所谓不必画出,其含义是该文件画出也不会导致该流程图发生错误,但不画出该文件将使整个流程图的层次结构更科学、更清晰。一般来说,如果一个元素(如数据流等)只用于一个加工,那么它就不必在其上层流程图中画出。但试题说明中只假定了顶层图的正确性,对于其他流程图,我们首先要确定它们是否完整、是否正确。对照试题说明,顶层图简单明了,甚至没有涉及文件,因此我们可以跳过顶层图不予考虑,直接研究 0 层图。0 层图中涉及到 3 个文件,即配件库存、缺
8、货订单和采购清单。这里缺货订单和配件库存都在销售和采购两个加上中使用,只有采购清单只用于采购加工的似乎应该判断采购清单是不必画的,但由于试题不保证顶层图以外各加工子图的正确性,难道就此确定在 0 层图采购清单文件不必画出吗?不,在各个加工子图中,有可能发生文件、数据流、加工的遗漏或错画,影响我们在此处的判断。因此,只有通过仔细研究以上 3 个文件在各个加工子图中应用才能验证我们的判断。首先看配件库存文件。在加工 1 子图中,配件库存文件经过加工 1.4 更新库存而修改,然后还要为加工 1.1和加工 1.2 提供数据支持。在加工 1.1 中,通过检查订货单订购的配件在配件库存中是否有记录来确定该
9、配件是否属于经销范围,然后以此来确定订货单是否合法。其次,还要在加工 1.2 中根据比较合法订货单的数量与库存数量,以此确定是否需要发出采购请求。再提交,在发出提货单后,如果库存量低于允许的最低库存量,也要发出采购清单。可以看出,在该加工图中,未发现对配件库存文件的不适当的使用。在加工 2 子图中,在加工 2.4 核对送货单后要更新库存文件,然后加工 2.3 计算增量提供数据支持,计算出需要采购配件的数量。应该说这里对配件库存文件的使用是正确的。因此,我们可以确定配件库存文件在加工 1 和加工 2 中都有应用,画在 0 层图中是合适的。缺货订单文件在试题说明中没有提到,具体的应用需要应从阅读中
10、体会。0 层图中显示该文件被加工 1 和加工 2 使用,且在两个加工中也都有所有应用。现在的作务就是确定两个加工中对该文件的使用是正确的。在加工 1 中缺货订单的数据来自加工 1.2 和加工 1.4,在加工 1.2 中,接受合法的订货单后,如果订货单上数量大于配件库存文件的数量,将产生缺货订单文件。在加工 1.4 中,在有货订单送达后,需要文出提货单,然后更新库存。如果库存量低于允许的最低库存量,应该将缺货信息反映到缺货订单中。在加工 2中,缺货订单为加工 2.3 提供部分数据支技,在计算配件增量以明确需要增加的配件的清单时,需要参照缺货订单。结合以上对使用缺化订单文件的分析,可以认为该文件在
11、加工 1 和加工 2 中的应用都是正确的。因此将该文件画在 0 层图中是有必要的。再来看采购清单。0 层图显示该文件只应用于加上 2。采购清单如果就应用在加工 1 中,最有可能的地方是加工 1.2 及其后的采购请求数据流,但在这里采购清单是有必要的吗?从加工 2 中可以看出,采购清单是按供应商对采购单进行汇总来产生的,对采购单进行汇总,显然已经属于加工 2 的工作,不应在加工 1中予以反映。由此可以断定,在加工 1 中不应该有采购清单文件。所以在 0 层图中画采购清单是不合适的。以上考察了 0 层图、加工 1 子图和加工 2 子图中缺货订单、配件库存及采购清单的使用,下面研究加工 1中的销售历
12、史文件。如果没有该文件支持,加工 1.3 是无法制作销售及库存情况表的:而且该文件由加工1.4 更新库存产生,其输入数据流和输出数据流均在加工 1 中,在加工 1 中使用该文件是合适的。问题 2要求指出哪些图中遗漏了哪些元素。一般来说,这类题目的解答首先要考虑各层次图的数据平衡,其次要考虑加工的输入数据流和输出数据流要平衡,即保证加工的输出数据流都有其对应的输入的数据流。所谓数据平衡,就是在多层次数据流程图中,父图和子图的数据流必须保持一致。比如说,在父图中某加工有2 个输入数据流和 1 个输出数据流,那么在该加工的子图中的输入/输出数据流必须在数目上和内容上与父图保持一致。_正确答案:(0
13、层图中遗漏了 1 加工的“提货单”数据流。加工 1 子图中遗漏了“配件库存”文件到 1.3 加工的数据流。加工 1 子图中 1.1 加工遗漏了“不合格订货单”输出数据流。加工 1 子图中 1.4 加工遗漏了“提货单”输出数据流。加工 1 子图中 1.5 加工遗漏了“到货通知”输入数据流。加工 2 子图中 2.4 加工遗漏了“送货通知”输出数据流。)解析:二、试题二(总题数:1,分数:-1.00)【流程图】1. 【问题 1】上面程序的功能是什么?(分数:-1.00)_正确答案:(此程序是一个排序程序。它将数组 a 中的数值进行从小到大的排序。)解析:分析此排序方法称为奇偶交换排序。排序过程为:第
14、 1 趟对所有的奇数 i,将 Ri与 Ri+1进行比较,若 RiRi+1),则将两者交换;第2 趟对所有偶数 i,将 Ri与 Ri+1进行比较,若 RiRi+1,则将两者交换:以后重复上述两趟过程,以此类推直到整个序列有序为止。只要看懂了程序流程图两个问题都比较容易回答。_正确答案:(输出的其实就是排序的前三趟中间结果。第 1 趟:8,2,10,7,15,4,13第 2 趟:2,7,8,4,10,13,15第 3 趟:2,4,7,8,10,13,15)解析:三、试题三(总题数:1,分数:-1.00)【说明】(分数:-1.00)_正确答案:(客户:(客户号,客户名,地址,电话)订单:(订单号,客
15、户号,产品号,订货数,订货日期,交货日期,金额)应收账款:(客户号,订单号,发票号,应收金额,支付日期,支付金额,当前余额)产品描述:(产品号,产品名,单价,重量)折扣规则:(产品号,订货量,折扣)解析:分析这一题主要考查考生对数据表的结构的设计能力。这一步在 MIS 系统的开发中是至关重要的一步,因为数据表的结构是否合理直接影响到整个系统的性能。原题中的订单表,不符合第二范式,因为其中含有部分依赖关系(订单号,产品号)-订货日期,(订单号,产品号)-,交货日期,(由于一张订单有可能订了多种产品,但因为是同一订单所以这几种产品的订货日期,交货日期只要订单号就可以确定了)。_正确答案:(将数据表
16、:订单:(订单号,客户号,产品号,订货数,订货日期,交货日期,金额)拆分为:订单:(订单号,客户号,订货项数(可有可无),订货日期,交货日期)订单细则:(订单号,产品号,订货数,金额)解析:四、试题四(总题数:1,分数:-1.00)【说明】中国教育科研网受理了许多用户(高校和研究机构)中请在指定 IP 上开设网络访问业务。网络访问包括国内流量和国际流量。教育科研网管理中心保存了网络访问用户档案和网络访问业务档案。网络访问用户档案的记录格式为:用户编码 用户名 用户地址网络访问业务档案的记录格式为: IP 地址 用户编码 国内流量许可标志 国际流量许可标志用户每次上网流量的计费数据都自动地记录在
17、管理中心的服务器上。计费数据的记录格式为: 日期 IP 地址 受访问的 IP 地址 访问开始时间 持续时间管理中心为了用计算机自动处理流量收费以提高工作效率,开发计费管理系统。该系统每月能为每个用户打印出网络流量缴费通知单。缴费通知单的记录格式为: IP 地址 用户编码 国内流量费用 国际流量费用 总额【流程图】 下面的流程图描述了该系统的数据处理过程。该系统每天对原始的计费数据进行分类排序,并确定每个网络访问记录的访问类型(本地/国内/国际),冉根据流量费用单价文件,算出每个记录应收取的费用。因此,形成的日计费文件中增加了两个数据项:访问类型和话费。该系统每日对日计费文件进行累计(按 IP
18、地址和访问类型,对该类型的费用进行累计,得到该 p 地址该访问类型的当月费用总计),形成月计费文件。月计费文件经过出账处理形成流量费用账单文件。流量费用账单文件的记录格式为: 月份 用户编码 IP 地址 国内费用 国际费用1. 【问题 1】(1)请说明流程图中的文件 F0、F1 分别是哪个文件。(2)处理 1 和处理 5 分别按照哪些数据项进行分类?(分数:-0.99)_正确答案:(F0 是网络访问业务档案,F1 是网络访问用户档案。(2)处理 1:IP 地址。处理 5:用户编码。)解析:分析本题给出的流程图是网络流量计费管理的处理流程,用来生成缴费通知单。系统的数据源是记录在管理中心的服务器
19、上的原始计费数据,这些数据在处理之前需要先进行分类,以提高系统的效率。原始计费数据记录的是每次网络访问流量的数据,缴费通知单是针对每个用户的,因此在处理 1 中应该按照 P 地址进行分类。F0 是在处理 4(出账)中用未生成流量账单文件所要用到的“网络访问业务档案”。由试题的说明可知,月计费文件中含有各种类型的费用,所以处理 4(出账)的功能是将网络访问费用从月计费文件中分离出来,并进行数据的验证。根据以上分析得知 P0 应该是网络访问业务档案。F1 是在处理 6 中生成缴费通知单所要用到的“用户档案”。因为用户编码是用户在系统中的惟一标识,所以应该先将账单文件按照用户编码分类,再根据 P1
20、用户档案,得到用户名和用户地址,产生缴费通知单。因此 P1 应该是网络访问用户档案。_正确答案:(处理 4 可能发现的错误有:(1)根据月计费文件中的 IP 地址,在业务档案中找不到相应的用户编码。(2)在月计费文件中,某地址有国内流量的费用,但在业务档案中,国内流量许可标志却不许可。(3)在月计费文件中,某 p 地址有国际流量的费用,但在业务档案中,国际流量许可标志却不许可。)解析:_正确答案:(处理 6 的功能是对流量账单文件中的每个记录,根据用户编码查询用户档案,找到相应的用户名和用户地址,形成缴费通知单。)解析:五、试题五(总题数:1,分数:-1.00)1.阅读以下说明,将应填入 (n
21、) 处的字句写在答卷纸的对应栏内。(分数:-1.00)_正确答案:(j+(2)j*=2 或 j=k*2(3)j=n+1 或 break(4)adjust(i,n)(5)adjust(1,k-1)解析:分析函数 adjust(i,n)是把以 Ri(1ii/2)为根的二叉树调整成堆的函数,假定 Ri的左、右子树已经是堆,程序中的 r 是在主函数中说明的结构数组,它含有要排序的 n 个记录。Void adjust(i,n)Int i,n;int k,j;element extr;extr=ri;k=i;j=2*i;while(j=n)if(jn)if(extr.keyrj.key)rk=rj;k=j
22、;j*=2;elsej=n+1;rk=extr;/* 让 i 从i/2 逐步减到 1, 反复调用函数 adjust, 便完成建立初始堆的过程。堆排序程序 heapsort 如下*/void heapsort(r,n)list r;int n;int i,l;element extr;for (i=n/2;i= 1 ;-i)adjust(i,n); /*建立初始堆*/for(k=n;k=2;k-)extr=r1;r1=rk;rk=extr;adjust(1,k-1);函数 heapsoff 的第一个 for 循环建立初始化。没待排序的 n 个记录组成棵深度为 h 的完全二叉树,因此有 2h-1n
23、2h+1-1,即 2hn2h+1。完全二叉树的第 i 层(设根结点的层次为 0)上最多有 2i 个结点,对每个非叶结点,都要调用过程 adjust,同时可能移动结点(向下移动),第 i 层上的结点可能要移动的最大距离为 h-i,若设向下移动一层花费的时间为 c,则第 i 层 2i 个结点调整的时间最多为 c*(h-i)*2i建立初始堆的全部时间应是:令 j=h-1,则 i=h-j,所以有:对第二个 for 循环,调用 adjust 函数 n-1 次,每次总是由根向下调整,调整的最大距离为 log2n(实际上,调整的距离是逐渐变小的),所以总的时间不多于 c*(n-1)log2nO(log 2n)堆排序总的时间为:O(n)+O(nlog2n)=O(max(n,n log2n)=O(n log2n)算法需要的存储空间是存储 n 个记录的数组以及少量暂存单元。堆排序算法是不稳定的。