200611软设下午真题
第 1 题
阅读以下说明以及数据流图,回答问题1至问题5,将解答填入答题纸的对应栏内。
【说明】
某银行已有一套基于客户机/服务器模式的储蓄系统A和一套建帐软件。建帐软件主要用于将储蓄所手工处理的原始数据转换为系统A所需的数据格式。该建帐软件具有以下功能:
(1)分户帐录入:手工办理业务时建立的每个分户帐数据均由初录员和复录员分别录入,以确保数据的正确性;
(2)初录/复录比对:将初录员和复录员录入的数据进行一一比较,并标记两套数据是否一致;
(3)数据确认:当上述两套数据完全一致后,将其中任一套作为最终进入系统A的原始数据;
(4)汇总核对和打印:对经过确认的数据进行汇总,并和会计账目中的相关数据进行核对,以确保数据的整体正确性,并打印输出经过确认的数据,为以后核查可能的错误提供依据;
(5)数据转换:将经过确认的数据转换为储蓄系统A需要的中间格式数据;
(6)数据清除:为加快初录和复录的处理速度,在数据确认之后,可以有选择地清除初录员和复录员录入的数据。
该软件的数据流图如图1-l~图1-3所示。图中部分数据流数据文件的格式如下:
初录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质
复录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质
初录数据 = 手工分户帐 + 一致性标志
复录数据 = 手工分户帐 + 一致性标志
会计账目 = 储蓄所号 + 总户数 + 总余额
操作结果 = 初录操作结果+比对操作结果 + 复录操作结果
软件需要打印的分户帐清单样式如表1-1所示:
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
- 试题解析:
第 2 题
阅读以下说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
S公司开办了在线电子商务网站,主要为各注册的商家提供在线商品销售功能。为更好地吸引用户,S公司计划为注册的商家提供商品(Commodity)促销(Promotion)功能。商品的分类(Category)不同,促销的方式和内容会有所不同。
注册商家可发布促销信息。商家首先要在自己所销售的商品的分类中,选择促销涉及的某一具体分类,然后选出该分类的一个或多个商品(一种商品仅仅属于一种分类),接着制定出一个比较优惠的折扣政策和促销活动的优惠时间,最后由系统生成促销信息并将该促销信息公布在网站上。
商家发布促销信息后,网站的注册用户便可通过网站购买促销商品。用户可选择参与某一个促销(Promotion)活动,并选择具体的促销商品(Commodity),输入购买数量等购买信息。系统生成相应的一份促销订单(POrder)。只要用户在优惠活动的时间范围内,通过网站提供的在线支付系统,确认在线支付该促销订单(即完成支付),就可以优惠的价格完成商品的购买活动,否则该促销订单失效。
系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图3-1是该系统类图中的一部分;系统的动态行为采用UML序列图表示,图3-2是发布促销的序列图。
[问题1](6分)
识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成图3-1中的(1)~(6)。
[问题2](4分)
请从表3-1中选择方法,完成图3-2中的(7)~(10)。
[问题3](5分) 关联(Association)和聚集(Aggregation)是UML中两种非常重要的关系。请说明关联和聚集的关系,并说明其不同点。
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
- 试题解析:
第 3 题
阅读以下说明和图,填补流程图中的空缺,将解答填入答题纸的对应栏内。
[说明]
某汽车制造工厂有两条装配线。汽车装配过程如图4-1所示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完成下线工作。
(1)e0和e1,表示底盘分别进入装配线0和装配线1所需要的时间。
(2)每条装配线有n个工位,第一条装配线的工位为SO,0 ,S0,1,…,SO,n-1,第二条装配线的工位为S1,0 ,S1,1 ,…,S1,n-1 。其中SO,k 和S1,k (O≤k≤n-1)完成相同的任务,但所需时间可能不同。
(3) ai,j 表示在工位Si,j处的装配时间,其中i表示装配线(i=0或i=1),j表示工位号(O≤k≤n-1)。
(4) ti,j 表示从Si,j 处装配完成后转移到另一条装配线下一个工位的时间。
(5) x0和x1表示装配结束后,汽车分别从装配线0和装配线1下线所需要的时间。
(6)在同一条装配线上,底盘从一个工位转移到其下一个工位的时间可以忽略不计。
图4-2所示的流程图描述了求最短装配时间的算法,该算法的输入为:
n:表示装配线上的工位数;
e[i]:表示e1 和e2,i取值为0或1;
a[i][j]:表示ai,j , i的取值为0或1,j的取值范围为0~n-1;
t[i][j]:表示ti,j ,i的取值为0或1,j的取值范围为0~n-1;
x[i]:表示xa,b 和x1 ,i取值为0或1。
算法的输出为:
fi.最短的装配时间;
li.获得最短装配时间的下线装配线号(0或者1)。
算法中使用的f[i][j]表示从开始点到Si,j处的最短装配时间。
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
- 试题解析:
第 4 题
阅读以下说明、图和C代码,将应填入 (n)处的字句写在答题纸的对应栏内。
[说明]
一般的树结构常采用孩子一兄弟表示法表示,即用二义链表作树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图5-1(a)所示的树的孩子一兄弟表示如图5-1(b)所示。
函数LevelTraverse ()的功能是对给定树进行层序遍历。例如,对图5-1所示的树进行层序遍历时,结点的访问次序为:D B A E F P C。
对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如下表所示:
Bool、 Status类型定义如下:
typedef enum {FALSE = 0, TRUE = 1} Bool;
typedef enum {OVERFLOW = -2,UNDERFLOW = -1,ERROR = 0,OK = 1} Status;
树的二叉链表结点定义如下:
typedef struct Node{
char data;
struct Node *firstchild,*nextbrother;
}Node,*TreeNode;
[函数]
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
- 试题解析:
第 5 题
阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、Stay0pen(保持打开)、Closing(正在关闭)五种状态。触发传输门状态转换的事件有click, complete和timeout三种。事件与其相应的状态转换如图6-1所示。
下面的[C++代码1]与[C++代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
- 试题解析:
第 6 题
阅读以下说明以及Java程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有click、 complete和timeout三种。事件与其相应的状态转换如图7-1所示。
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
- 试题解析:
参见试题六,思路一样,只是JAVA的语法跟C++有些区别。