资源描述
下六个月软件设计师 下午试卷
试题一(共15分)
阅读以下说明以及数据流图,回答下列问题1至问题5,将解答填入答题纸对应栏内。
[说明]
某银行已经有一套基于客户机/服务器模式储蓄系统A和一套建帐软件。建帐软件主要用于将储蓄所手工处理原始数据转换为系统A所需数据格式。该建帐软件具备以下功效:
(1)分户帐录入:手工办理业务时建立每个分户帐数据均由初录员和复录员分别录入,以确保数据正确性;
(2)初录/复录比对:将初录员和复录员录入数据进行一一比较,并标识两套数据是否一致;
(3)数据确认:当上述两套数据完全一致后,将其中任一套作为最终进入系统A原始数据;
(4)汇总查对和打印:对经过确认数据进行汇总,并和会计账目中相关数据进行查对,以确保数据整体正确性,并打印输出经过确认数据,为以后核查可能错误提供依据;
(5)数据转换:将经过确认数据转换为储蓄系统A需要中间格式数据;
(6)数据去除:为加紧初录和复录处理速度,在数据确认之后,能够有选择地去除初录员和复录员录入数据。
该软件数据流图如图1-l~图1-3所表示。图中部分数据流数据文件格式以下:
初录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质
复录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质
初录数据 = 手工分户帐 + 一致性标志
复录数据 = 手工分户帐 + 一致性标志
会计账目 = 储蓄所号 + 总户数 + 总余额
操作结果 = 初录操作结果+比对操作结果 + 复录操作结果
软件需要打印分户帐清单样式如表1-1所表示:
[问题1](4分)
请采取说明中词汇,给出数据确认处理所需数据流在第1层图中全部可选起点(第0层图和第1层图中均未给出)。
[问题2](2分)
不考虑数据确认处理(加工2),请指出数据流图中存在错误。
[问题3](2分)
打印分户帐清单时,必须以以下哪一组数据作为关键字进行排序,才能满足需求?请从下面选项中选择,并将对应序号填入答题纸对应栏。
①储蓄所 ②帐号 ③开户日 ④总户数和总余额
[问题4](4分)
加工1(录入比对处理)除能够检验出初录数据和复录数据不一致外,还应该检测出以下哪些错误,请将对应序号填入答题纸对应栏。
①输入无效字符 ②输入半个汉字 ③显示器无法显示 ④初录员重复录入同一帐户 ⑤汇总数据与会计账目不符 ⑥打印机卡纸
[问题5](3分)
请使用数据字典条目定义形式,给出第0层DFD中”手工分户帐”数据流和第1层DFD中”初录分户帐”、”复录分户帐”关系。
试题二(共15分)
阅读以下说明,回答下列问题1至问题4,将解答填入答题纸对应栏内。
[说明]
某宾馆需要建立一个住房管理系统,部分需求分析结果以下:
(1)一个房间有多个床位,同一房间内床位具备相同收费标准。不一样房间床位收费标准可能不一样。
(2)每个房间有房间号(如201, 202等)、收费标准、床位数目等信息。
(3)每位客人有身份证号码、姓名、性别、出生日期和地址等信息。
(4)对每位客人每次住宿,应该统计其入住日期、退房日期和预付款额信息。
(5)管理系统可查询出客人所住房间号。
依照以上需求分析结果,设计一个关系模型如图2-1所表示:
[问题1](1分)
依照上述说明和实体一联络图,得到该住房管理系统关系模式以下所表示,请补充住宿关系。
房间(房间号,收费标准,床位数目)
客人(身份证号,姓名,性别,出生日期,地址)
住宿( (1) ,入住日期,退房日期,预付款额)
[问题2](4分)
请给出问题1中住宿关系主键和外键。
[问题3](4分)
若将上述各关系直接实现为对应物理表,现需查询在1月1日到12月31日期间,在该宾馆住宿次数大于5次客人身份证号,而且按照入住次数进行降序排列。下面是实现该功效SQL语句,请填补语句中空缺。
SELECT住宿.身份证号,count(入住日期)
FROM住宿,客人
WHERE入住日期>=’0101’AND入住日期<=’1231'
AND住宿.身份证号 = 客人.身份证号
GROUP BY(2)
(3)count(入住日期)>5
(4)
[问题4](6分)
为加紧SQL语句执行效率,可在对应表上创建索引。依照问题3中SQL语句,除主键和外键外,还需要在哪个表哪些属性上创建索引,应该创建什么类型索引,请说明原因。
试题三(共15分)
阅读以下说明和图,回答下列问题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中两种非常主要关系。请说明关联和聚集关系,并说明其不一样点。
试题四(共15分)
阅读以下说明和图,填补流程图中空缺,将解答填入答题纸对应栏内。
[说明]
某汽车制造工厂有两条装配线。汽车装配过程如图4-1所表示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完成下线工作。
(1) e0和e1,表示底盘分别进入装配线0和装配线1所需要时间。
(2)每条装配线有n个工位,第一条装配线工位为S0,0 ,S0,1,…,S0,n-1,第二条装配线工位为S1,0 ,S1,1 ,…,S1,n-1 。其中S0,k 和S1,k (0≤k≤n-1)完成相同任务,但所需时间可能不一样。
(3) ai,j 表示在工位Si,j处装配时间,其中i表示装配线(i=0或i=1), j表示工位号(0≤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]:表示x0 和x1,i取值为0或1。
算法输出为:
fi:最短装配时间;
li:取得最短装配时间下线装配线号(0或者1)。
算法中使用f[i][j]表示从开始点到Si,j处最短装配时间。
试题五(15分)
阅读以下说明、图和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;
试题六(共15分)阅读以下说明和C++代码,将应填入 (n) 处字句写在答题纸对应栏内。
[说明]
传输门是传输系统中主要装置。传输门具备Open(打开)、Closed(关闭)、Opening(正在打开)、Stay0pen(保持打开)、Closing(正在关闭)五种状态。触发传输门状态转换事件有click, complete和timeout三种。事件与其对应状态转换如图6-1所表示。
下面[C++代码1]与[C++代码2]分别用两种不一样设计思绪对传输门进行状态模拟,请填补代码中空缺。
试题七(共15分)
阅读以下说明以及Java程序,将应填入 (n) 处字句写在答题纸对应栏内。
[说明](代码不一样,其余相同)
展开阅读全文