软件设计师下午2008年上半年(答案) - 月飞侠的日志- 网易博客

软件设计师下午2008年上半年(答案)

2010-04-09 15:22:54 阅读6 评论0 字号:

考试时间:120分钟    满分:16 分    填空题
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼   题 1 - 4
   xx一(共15分)
   阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
   【说明】
   某音像制品出租商店欲开发一个音像管理信息系统,管理音像制品的租借业务。需求如下:
   1.系统中的客户信息文件保存了该商店的所有客户的用户名、密码等信息。对于首次来租借的客户,系统会为其生成用户名和初始密码。
   2.系统中音像制品信息文件记录了商店中所有音像制品的详细信息及其库存数量。
   3.根据客户所租借的音像制品的品种,会按天收取相应的费用。音像制品的最长租借周期为一周,每位客户每次最多只能租借
   6件音像制品。
   4.客户租借某种音像制品的具体流程为:
   (1)根据客户提供的用户名和密码,验证客户身份。
   (2)若该客户是合法客户,查询音像制品信息文件,查看商店中是否还有这种音像制品。
   (3)若还有该音像制品,且客户所要租借的音像制品数小于等于6个,就可以将该音像制品租借给客户。这时,系统给出相应的租借确认信息,生成一条新的租借记录并将其保存在租借记录文件中。
   (4)系统计算租借费用,将费用信息保存在租借记录文件中并告知客户。
   (5)客户付清租借费用之后,系统接收客户付款信息,将音像制品租借给该客户。
   5.当库存中某音像制品数量不能满足客户的租借请求数量时,系统可以接受客户网上预约租借某种音像制品。系统接收到预约请求后,检查库存信息,验证用户身份,创建相应的预约记录,生成预约流水号给该客户,并将,信息保存在预约记录文件中。
   6.客户归还到期音像制品,系统修改记录文件,并查询预约记录文件和客户信息文件,判定是否有客户预约了这些音像制品。若有,则生成预约提示信息,通知系统履行预约服务,系统查询客户信息文件和预约记录文件,通知相关客户前来租借音像制品。
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼  
   1-1
   顶层数据流图
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼  
   1-2
   0层数据流图
1. 图1-1中只有一个外部实体E1。使用【说明】中的词语,给出E1的名称。_______                                                                         [+] [-] [=]
[参考答案] (1分) E1:客户
[您的答案]
2. 使用【说明】中的词语,给出图1-2中的数据存储D1~D4的名称。_______                                                                         [+] [-] [=]
[参考答案] (1分)    D1:客户信息文件
   D2:音像制品信息文件
   D3:租借记录文件
   D4:预约记录文件

[您的答案]
3. 数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,分别指出这三条数据流的起点和终点。 _______                                                                         [+] [-] [=]
[参考答案] (1分)   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
起点终点
E1 或 客户4 或 创建新客户
5 或 创建预约记录 E1 或 客户
6 或 归还音像制品7 或 履行预约服务

[您的答案]
4. 在进行系统分析与设计时,面向数据结构的设计方法(如Jackson方法)也被广泛应用。简要说明面向数据结构设计方法的基本思想及其适用场合。_______                                                                         [+] [-] [=]
[参考答案] (1分)    面向数据结构的设计方法以数据结构作为设计的基础,它根据输入/输出数据结构导出程序的结构。
   面向数据结构的设计方法用于规模不大的数据处理系统。

[您的答案]
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼   题 5 - 7
   xx二(共15分)
   阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
   【说明】
   某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。
   【需求分析结果】
   1.登记参赛球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。
   2.安排球队的训练信息。比赛组织者为球队提供了若干个场地,供球队进行适应性训练。系统记录现有场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如表2-1所示。系统记录训练地安排的信息。
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
球队名称场地名称训练时间
解放军一号球场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

   2-1
   训练安排表
   3.安排比赛。该赛事聘请专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别成为甲队和乙队)。记录参赛球队名称、比赛时间、比分、比赛场地等信息,如表2-2所示。
   4.所有球员、教练和裁判可能出现重名情况。
   2-2比赛安排表
  
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼  
   【概念模型设计】
   根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下:
   1.实体联系图
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼
   2-1
   实体联系图
   2.关系模式
   教练(教练编号,姓名,年龄)
   队员(队员编号,姓名,年龄,身高,体重,(a))
   球队(球队名称,代表地区,成立时间,(b))
   场地(场地名称,场地规模,位置)
   训练记录((c))
   裁判(裁判编号,姓名,年龄,级别)
   比赛记录((d))
5. 根据问题描述,补充联系及其类型,完善实体联系图2-1。(联系及其类型的书写格式参照教练与球队之间的联系描述,联系名称也可使用联系1、联系2、…)_______                                                                         [+] [-] [=]
[参考答案] (1分) 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼
[您的答案]
6. 根据实体联系图2-1,填充关系模式中的(a)、(b)、(c)和(d),并给出训练记录和比赛记录关系模式的主键和外键。_______                                                                         [+] [-] [=]
[参考答案] (1分)    (a)球队名称
   (b)教练编号
   (c)球队名称,场地名称,开始时间,结束时间
   (d)甲队,乙队,比赛时间,场地名称,比分,裁判,分组
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
训练记录主键

(球队,开始时间)或(场地名称,开始时间)或(球队,结束时间)或(场地名称,结束时间)


  
外键球队名称,场地名称
比赛记录主键

(甲队,比赛时间)或(场地名称,比赛时间)或(裁判,比赛时间)或(乙队,比赛时间)


  
外键甲队,乙队,场地名称,裁判

[您的答案]
7. 如果考虑记录一些特别资深的热心球迷的情况,每个热心球迷可能支持多个球队。热心球迷包括:姓名、住址和喜欢的俱乐部等基地信息。根据这一要求修改图2-1的实体联系,给出修改后的关系模式。(仅给出增加的关系模式描述)_______                                                                         [+] [-] [=]
[参考答案] (1分) 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼
   关系模式:热心球迷(球迷编号,姓名,住址、俱乐部)支持球队(球迷编号,球队)

[您的答案]
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼   题 8 - 11
   xx三(共15分)
   阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
   【说明】
   某汽车停车场欲建立一个信息系统,已经调查到的需求如下:
   1.在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器,示意图如下:
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼  
   2.当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知袭用发出命令,栏杆自动放下。
   3.在停车场内分布着若干个付款器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。
   4.当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出警告信号。
   5.系统自动记录停车场内空闲的停车为的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不在出卡,只允许场呢汽车出场。
   根据上述描述,采用面向对象方法对其进行分析与设计,得到了表3-1所示的类/用例/状态列表、图3-1所示的用例图、图3-2所示的初始的描述入口自动栏杆行为的UML状态图。
   表3-1类/用例/状态列表
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼  
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼  
   图3-1 用例图 图3-2 初始类图
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼  
   图3-3入口护栏的状态图
8. 根据说明中的描述,使用表3-1给出的用例名称,给出图3-1中U1、U2和U3所对应的用例。_______                                                                         [+] [-] [=]
[参考答案] (1分)    U1:Car entry
   U2:Car exit
   U3:Car entry when full

[您的答案]
9. 根据说明中的描述,使用表3-1给出的类的名称,给出图3-2中的A~D所对应的类。_______                                                                         [+] [-] [=]
[参考答案] (1分)    A:CarPark
   B:Barrier
   C:EntryBarrier
   D:ExitBarrier

[您的答案]
10. 根据说明中的描述,使用表3-1给出的状态名称,给出图3-3中S1~S4所对应的状态。_______                                                                         [+] [-] [=]
[参考答案] (1分)    S1:Idle
   S2:Await Ticket Take
   S3:Await Enable
   S4:Await Entry

[您的答案]
11. 简要解释图3-1中用例U1和U3之间的extend关系的内涵。_______                                                                         [+] [-] [=]
[参考答案] (1分) 用例之间的延伸关系用于对被用户看作是可选系统行为的用例的一部分建摸。通过正方式,可以把可选行为从必需的行为中分离出来。
[您的答案]
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼   题 12 - 14
   xx四(共15分)
      阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
   【说明】
   快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的三个步骤如下:
   分解:选择一个枢轴(pivot)元素划分数组。将数组A[p..r]划分为两个子数组(可能为空)A[p..q-1]和A[q+1..r],使得A[p]大于等于A[p..q-1]中的每个元素,小于A[q+1..r]中的每个元素。q的值在划分过程中计算。
   递归求解:通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。
   合并:快速排序在原地排序,故不需合并操作。
12.    下面是快速排序的伪代码,请填补其中的空缺。为代码中的主要变量说明如下:
   A:待排序数组
   p, r:数组元素下标,从p到r
   q:划分的位置
   x:枢轴元素
   i:整型变量,用于描述数组下标。下标小于或等于i的元素的值小于或等于枢轴元素的值
   j:循环控制变量,表示数组元素下标
   QUICKSORT(A, p, r){
   if (p < r){
         q = PARTITION(A,p,r) ;
         QUICKSORT(A, p, q-1);
         QUICKSORT(A, q+1, r);
      }
   }
   PARTITION(A, p, r){
      x = A[r]; i = p?C1;
      for (j = p ; j≤r?C1; j++){
         if (A[j]≤x){
                  i=i+1;
                  交换A[i]和A[j]
         }
   }
   交换(1)和(2)//注:空(1)和空(2)答案可互换,但两空全部答对方可得分
   return(3)
   }
   _______                                                                         [+] [-] [=]
[参考答案] (1分) (1)A[i + 1] (2)A[r] (3)i + 1
[您的答案]
13.    (1)假设要排序含n个元素的数组,请给出在各种不同的划分情况下,快速排序的时间复杂度,用O记号。{zj0}情况为 (4) ,平均情况为 (5) ,最坏情况为 (6)。
   (2) 假设要排序的n个元素都具有相同值时,快速排序的运行时间复杂度属于哪种情况?(7)。({zj0}、平均、最坏)
   _______                                                                         [+] [-] [=]
[参考答案] (1分)    (4)O(nlgn)或O(nlog2n) 或O(nlbn)
   (5)O(nlgn)或O(nlog2n) 或O(nlbn)
   (6)O(n2)
   (7)最坏

[您的答案]
14.    (1)待排序数组是否能有重要影响,因此枢轴元素的选取非常重要。有人提出从待排序的数组元素中随机地取出一个元素作为枢轴元素,下面是随机化快速排序划分的伪代码——利用原有的快速排序的划分操作,请填充其中的空缺处。其中,RANDOM(i,j)表示随机取i到j之间的一个数,包括i和j。
   RANDOMIZED-PARTITION(A,p,r){
   i = RANDOM(p,r);
   交换(8)和(9);//注:空(8)和空(9)答案可互换,但两空全部答对方可得分
   return PARTITION(A,p,r);
   }
   (2)随机化快速排序是否能够xx最坏情况的发生?(10)。(是或否)
   _______                                                                         [+] [-] [=]
[参考答案] (1分) (8)A[i] (9)A[r]   (10)否
[您的答案]
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼   题 15
   xx五(共15分)
   阅读下列说明和 C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
   【说明】
   栈(Stack)结构是计算语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶机(Stack Top),而另一端称为栈底(Stack Bottom)。栈的基本操作包括:
   创建栈(NewStack)、判断栈是否为空(IsEmpty)、判断栈是否已满(IsFull)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。
   当设计的存储结构时可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必栈连续存储(如图,5-1)。
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼
15.    以下C代码采用链式存储结构实现一个整数栈操作。
   【C代码】
   typedef struct List{
   int data;            //栈数据
   struct List*next      //上次入栈的数据地址
} List;
   typedef struct Stack{
   List*pTop;         //当前栈顶指针
   }Stack;
   Stack*NewStack(){return (Stack*)calloc(1,sizeof(Stack));}
   int IsEmpty(Stack*S){//判断栈S是否为空栈
   if( (1) )return 1;
   return0
}
   int Top(Stack*S){//获取栈顶数据。若栈为空,则返回机器可表示的最小整数
   if(IsEmpty(S))return INT_MIN;
   return (2)
   }
   Void Push(Stack*S,int theData){//将数据theData压栈
   List*nowNode;
   nowNode=(List*)calloc(1,sizeof(List));
   nowNode->data=theData
   nowNode->next=S->pTop;
   S->pTop=(3)
   }
   Void Pop(Stack*S){//弹栈
   List*lastTop;
   if(IsEmpty(S))return;
   lastTop=S->pTop;
   S->pTop=(4)   ;
   free(lastTop);
   }
   #define MD(a)   a<<2
   int main(){
   int i;
   Stack*myStack;
   myStack=NewmyStack();
   Push(myStack,MD(1));
   Push(myStack,MD(2));
   Pop(myStack);
   Push(myStack,MD(3)+1);
   while(!IsEmpty(myStack)){
         printf("%d",Top(myStack));
         Pop(myStack);
   }
   return0
   }
   以上程序运行时的输出结果为:(5)
   _______                                                                         [+] [-] [=]
[参考答案] (1分)    (1)S==NULL‖S->pTop==NULL
   (2)S->pTop->data
   (3)newNode
   (4)S->pTop->next
   (5)24 4

[您的答案]
软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼   题 16
16. 已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如图6-1所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如6-2所示。 软件设计师下午2008年上半年(答案) - 月飞侠 - 理查德.克莱德曼 图6-2中,类RomoteController的方法onPressButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关; Light中turnLight(int degree)方法用于调整电灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到{zd0};TV中setChannel(int channel方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。【C++代码】 class Light{ //电灯类 public: void turnLight(int degree){ //调整灯光亮度,0表示关灯,100表示亮度{zd0}}; }; class TV{ //电视机类 public: void setChannel(int channel){//调整电视频道,0表示关机,1表示开机并切换到1频道}; }; class Command{ //抽象命令类 public: virtual void on()=0; virtual void off()=0; }; class RemoteController{ //遥控器类 protected: Command *commands[4]; //遥控器有4个按钮,按照编号分别对应4个Command对象 public: void onPressButton(int button){ //按钮被按下时执行命令对象中的命令 if(button % 2 == 0)commands[button]->on(); else commands[button]->off(); } void setCommand(int button,Command * command){ (1)= command; //设置每个按钮对应的命令对象 } }; class LightCommand : public Command{ //电灯命令类 protected: Light *light; //指向要控制的对象 public: void on(){light->turnLight(100);}; void off(){light->(2);}; LightCommand(Light * light){this->light = light;}; }; class TVCommand : public Command{ //电视机命令类 protected: TV * tv; //指向要控制的对象 public: void on(){tv->(3);}; void off(){tv->setChannel(0);}; TVCommand(TV * tv){ this->tv = tv; }; }; void main(){ Light light; TV tv; //创建电灯和电视对象 LightCommand lightCommand(&light); TVCommand tvCommand(&tv); RemoteController remoteController; remoteController.setCommand(0,(4)); //设置按钮0的命令对象 …//此处省略设置按钮1、按钮2和按钮3的命令对象代码 } 本题中,应用命令模式能够有效让类 (5) 和类 (6) 、类 (7) 之间的耦合性降至最小。_______                                                                         [+] [-] [=]
[参考答案] (1分)    (1)command[button]
   (2)trunLight(0)或turnLight(0)
   (3)setChannel(1)
   (4)&lightCommand
   (5)RemoteController
   (6)Light
   (7)TV

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【软件设计师下午2008年上半年(答案) - 月飞侠的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——