2008年上半年软件设计师下午试题分析与解答

更新时间:2023-10-30 13:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2008年上半年软件设计师下午试题分析与解答

试题一(共15分)

阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】

某音像制品出租商店欲开发一个音像管理信息系统,管理音像制品的租借业务。需求如下:

1.系统中的客户信息文件保存了该商店的所有客户的用户名、密码等信息。对于首次来租借的客户,系统会为其生成用户名和初始密码。

2.系统中音像制品信息文件记录了商店中所有音像制品的详细信息及其库存数量。 3.根据客户所租借的音像制品的品种,会按天收取相应的费用。音像制品的最长租借周期为1周,每位客户每次最多只能租借6件音像制品。

4.客户租借某种音像制品的具体流程如下。

(1)根据客户提供的用户名和密码,验证客户身份。

(2)若该客户是合法客户,查询音像制品信息文件,查看商店中是否还有这种音像制品。

(3)若还有该音像制品,且客户所要租借的音像制品数小于等于6个,就可以将该音像制品租借给客户。这时,系统给出相应的租借确认信息,生成一条新的租借记录并将其保存在租借记录文件中。

(4)系统计算租借费用,将费用信息保存在租借记录文件中并告知客户。

(5)客户付清租借费用之后,系统接收客户付款信息,将音像制品租借给该客户。 5.当库存中某音像制品数量不能满足客户的租借请求数量时,系统可以接受客户网上预约租借某种音像制品。系统接收到预约请求后,检查库存信息,验证用户身份,创建相应的预约记录,生成预约流水号给该客户,并将信息保存在预约记录文件中。

6.客户归还到期的音像制品,系统修改租借记录文件,并查询预约记录文件和客户信息文件,判定是否有客户预约了这些音像制品。若有,则生成预约提示信息,通知系统履行预约服务,系统查询客户信息文件和预约记录文件,通知相关客户前来租借音像制品。

(a) (点击查看大图) (b) 【问题1】

图(a)中只有一个外部实体E1。使用【说明】中的词语,给出E1的名称。 【问题2】

使用【说明】中的词语,给出图(b)中的数据存储D1~D4的名称。

【问题3】 数据流图(b)缺少了3条数据流,根据说明及数据流图(a)提供的信息,分别指出这3条数据流的起点和终点。 起 点 终 点 【问题4】

在进行系统分析与设计时,面向数据结构的设计方法(如Jackson方法)也被广泛应用。简要说明面向数据结构设计方法的基本思想及其适用场合。

试题一分析

本题考查数据流图的设计和应用。

根据题目说明,本系统的外部实体仅仅涉及到客户,因此系统的顶层数据流图中E1应该对应为客户。

题目的第二个问题在于识别系统中的数据文件D1~D4,根据0层数据流图中的数据文件与处理之间的关系分析可以得知:

D1为创建新客户加工的输出,并且为加工1、6和7的输入,再根据题目中的描述,客户信息文件与创建客户信息、预约、归还和履行预约都相关,因此D1便是客户信息文件。同理可分析出D2为音像制品信息文件、D3为租借记录文件、D4为预约记录文件。

图(b)中缺少了3条数据流,我们先检查顶层数据流图和0层数据流是否一致。首先,从顶层数据流图中可以看出,与E1直接相关的数据流共有9条,而在0层数据流图中与E1直接关联的只有7条,因此可以直接断定,图(b)中至少缺少直接与E1相关的两条数据流:新客户创建请求和预约流水号。新客户创建请求通过创建新客户加工将客户的信息写入客户信息文件中,因此其起点和终点分别为:E1和4。同理,预约流水号的起点和终点为5和E1。在说明中,客户归还到期的音像制品,系统修改租借记录文件,并查询预约记录文件和客户信息文件,判定是否有客户预约了这些音像制品。若有,则生成预约提示信息,通知系统履行预约服务,系统查询客户信息文件和预约记录文件,通知相关客户前来租借音像制品。因此,在客户归还和履行预约服务之间存在着数据上的联系。

面向数据结构的设计方法以数据结构作为设计的基础,它根据输入/输出数据结构导出程序的结构。面向数据结构的设计方法用于规模不大的数据处理系统。

参考答案 【问题1】 E1:客户

【问题2】 D1: 客户信息文件 D2: 音像制品信息文件 D3: 租借记录文件 D4: 预约记录文件 【问题3】 起 点 E1 或 客户 5 或 创建预约记录 6 或 归还音像制品 终 点 4 或 创建新客户 E1 或 客户 7 或 履行预约服务 注意:3条数据流无前后顺序区分。 【问题4】

面向数据结构的设计方法以数据结构作为设计的基础,它根据输入/输出数据结构导出程序的结构。

面向数据结构的设计方法用于规模不大的数据处理系统。

试题二(共15分) 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。 【需求分析结果】 1.登记参赛。球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。 2.安排球队的训练信息。比赛组织者为球队提供了若干块场地,供球队进行适应性训练。系统记录现有的场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如下表所示。系统记录训练场地安排的信息。 球队名称 称 解放军 解放军 解放军 一号球场 一号球场 二号球场 2008-06-09 14:00-18:00 2008-06-12 09:00-12:00 2008-06-11 14:00-18:00 场地名训练时间 山西 一号球场 2008-06-10 09:00-12:00 3.安排比赛。该赛事聘请专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别称为甲队和乙队)。记录参赛球队名称、比赛时间、比分、比赛场地等信息,如下表所示。 A组: 甲队——乙队 解放军——北京 天津——山西 称 一号球场 一号球场 2008-06-17 15:00 2008-06-17 19:00 场地名比赛时间 判 李大明 胡学梅 裁比分 B组: 甲队——乙队 上海——安徽 山东——辽宁 称 二号球场 二号球场 2008-06-17 15:00 2008-06-17 19:00 场地名比赛时间 判 丁鸿平 郭爱琪 裁比分 4.所有球员、教练和裁判可能出现重名情况。 【概念模型设计】 根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下: 1.实体联系图(图2-1) 2.关系模式

教练(教练编号,姓名,年龄)

队员(队员编号,姓名,年龄,身高,体重, (a) ) 球队(球队名称,代表地区,成立时间, (b) ) 场地(场地名称,场地规模,位置) 训练记录( (c) )

裁判(裁判编号,姓名,年龄,级别) 比赛记录( (d) ) 【问题1】

根据问题描述,补充联系及其类型,完善实体联系图2-1。(联系及其类型的书写格式参照教练与球队之间的联系描述,联系名称也可使用联系1、联系2、……)

【问题2】

根据实体联系图,填充关系模式中的(a)、(b)、(c)和(d),并给出训练记录和比赛记录关系模式的主键和外键。

【问题3】

如果考虑记录一些特别资深的热心球迷的情况,每个热心球迷可能支持多个球队。热心球迷包括:姓名、住址和喜欢的俱乐部等基本信息。根据这一要求修改上图的实体联系图,给出修改后的关系模式(仅给出增加的关系模式描述)。

试题二分析

本题考查数据库概念结构设计及向逻辑结构转换的基本方法。

此类题目要求认真阅读题目对现实问题的描述,经过分类、聚集、概括等方法,从中确定实体及其联系。题目已经给出了4个实体,需要根据需求描述,给出实体间的联系。

由\每个球队有一个教练负责管理球队,一个教练仅负责一个球队。\知球队与教练间为1∶1联系;球队与队员之间应为1∶N联系;多个球队使用多个训练场地,球队与场地之间为M∶M联系;比赛是球队、场地与裁判之间的联系,一个球队会与同组的其他多个队之间比赛,有多个场地和裁决,一位裁判会对多场比赛判罚,一个场地会有多场比赛,涉及多个球队和裁判,因此球队、场地与裁判之间的比赛关系为M∶N∶P联系。

根据补充后的E-R图,球队与球员之间的1∶N联系应通过将1端实体(球员)的主码(球队名称)加入到N端实体(球员)对应的关系中来表达。这类联系也可通过独立的一个关系来表达,如球队-球员(球队名称,队员编号),这样会对查询增加多余的连接操作,因此一般不采用这种方法。

同样,球队与教练之间的1∶1联系也应通过将一方的主码增加到另一方实体对应的关系中,来表达联系。 训练和比赛为多对多联系,只能独立成一个关系模式,取与该联系相关联的各实体的码及联系自有的属性构成。例如,比分和分组应该是比赛的属性,再加上球队、裁判、场地的码,即构成\比赛记录\的关系模式。 同理,训练是球队和场地的多对多联系,训练开始时间和结束时间为训练的属性,加上球队的码和场地的码,构成\训练记录\关系模式。 球迷与球队之间为多对多联系,需新增球迷实体和球迷与球队之间的支持联系。 参考答案 【问题1】 (对联系名称不做要求,但不能出现重名,图中的M、N、P也可表示为*) 【问题2】 (1)球队名称 (2)教练编号 (3)球队名称,场地名称,开始时间,结束时间 (4)甲队,乙队,比赛时间,场地名称,比分,裁判,分组 训练记录 主键 外键 主键 外键 (球队,开始时间) 或 (场地名称,开始时间) 或 (球队,结束时间) 或 (场地名称,结束时间) 球队名称,场地名称 (甲队,比赛时间) 或 (场地名称,比赛时间) 或 (裁判,比赛时间) 或(乙队,比赛时间) 甲队,乙队,场地名称,裁判 比赛记录 【问题3】

关系模式: 热心球迷(球迷编号,姓名,住址,俱乐部) 支持球队(球迷编号,球队) 试题三(共15分) 阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 某汽车停车场欲建立一个信息系统,已经调查到的需求如下: 1.在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器,示意图如下: 2.当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。

3.在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。

4.当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。 5.系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示\车位已满\信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。 根据上述描述,采用面向对象方法对其进行分析与设计,得到了如下表所示的类/用例/状态列表、下图(a)所示的用例图、图(b)所示的初始类图以及图(c)所示的描述入口自动栏杆行为的UML状态图。 类/用例/状态列表 用 例 名 Car entry Car exit 汽车进入停车场 汽车离开停车场 CentralComputer PaymentMachine CarPark 记录停车场的相关信息 Barrier EntryBarrier ExitBarrier 自动护栏 停车场信息系统 说 明 类 名 说 明 名 状 态 明 空闲Idle 状态,汽车可以进入停车场 付款机器 停车场,保存车位信息 Disable Await Entry Await Ticket Take Car entry when full 没有车位时,汽车请求进入停车场 入口的护栏 出口的护栏 Await Enable 卡 等待停车场内有空闲 车位 没有车位 等待汽车 进入 等待打印停车说 Report Statistics (a) 用例图 (b) 初始类图

【说明】 已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如下图(a)所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。 现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如下图(b)所示。 (点击查看大图)(a) (点击查看大图)(b) 图(b)中,类RomoteController的方法onPressButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(int degree)方法用于调整电灯灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中setChannel(int channel)

方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。 【Java代码】 class Light{ //电灯类 public void trunLight(int degree){ //调整灯光亮度,0表示关灯,100表示亮度最大} }; class TV{ //电视机类 public void setChannel(int channel){// 0表示关机,1表示开机并切换到1频道 } }; interface Command{ //抽象命令类 void on(); void off(); }; class RemoteController{ //遥控器类 protected Command []commands = new Command[4]; //遥控器有4个按钮,按照编号分别对应4个Command对象 public void onPressButton(int button){ //按钮被按下时执行命令对象中的命令 if(button % 2 == 0)commands[button].on(); else commands[button].off(); } public void setCommand(int button, Command command){ (1) = command; //设置每个按钮对应的命令对象 } }; class LightCommand implements Command{ //电灯命令类 protected Light light; //指向要控制的电灯对象 public void on(){light.trunLight(100);}; public void off(){light. (2);}; public LightCommand(Light light){this.light = light;}; }; class TVCommand implements Command{ //电视机命令类 protected TV tv; //指向要控制的电视机对象 public void on(){tv. (3);}; public void off(){tv.setChannel(0);}; public TVCommand(TV tv){this.tv = tv;}; }; public class rs{ public static void main(String []args){ Light light = new Light(); TV tv = new TV();//创建电灯和电视对象 LightCommand lightCommand = new LightCommand(light); TVCommand tvCommand = new TVCommand(tv); RemoteController remoteController = new RemoteController(); //设置按钮和命令对象 remoteController.setCommand(0, (4)); …//此处省略设置按钮1、按钮2和按钮3的命令对象代码 } } 本题中,应用命令模式能够有效让类 (5) 和类 (6) 、类 (7)之间的耦合性降至最小。

试题七分析

本题考查的是设计模式中的命令模式。

在设计时,为了保证遥控器和家用电器之间的独立性,定义了Command类,当用户按下遥控器上的按钮时,触发Command上的On或者Off方法,因此,一对按钮分别对应一个Command对象。题目中的LightCommand以及与TVCommand分别为Command的子类,该子类用于控制实际的Light以及TV对象,将On与Off方法委托给Light以及TV实现。空(1)表示要设置遥控器上按钮控制的对象,其参数传递的是某一个命令对象,因此只需将该命令对象存储下来即可;空(2)表示关闭电灯,根据说明,关闭电灯的方法为turnLight(0);空(3)表示打开电视机,因此需要调用打开电视的方法。空(4)表示将按钮0和相应的Command对象相关联,根据题目描述,按钮0用于控制灯或者电视,因此,应该设置灯或者电视的命令对象。本题中应用命令模式的目的是为了使为了让遥控器和类Light与TV之间的耦合性降至最低。

参考答案

(1)commands[button] (2)trunLight(0) (3)setChannel(1) (4)lightCommand (5)RemoteController (6)Light (7)TV

本文来源:https://www.bwwdw.com/article/nki2.html

Top