[计算机类试卷]2008年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2008年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2008年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc(20页珍藏版)》请在麦多课文档分享上搜索。
1、2008年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读以下说明和图,回答问题 1至问题 4,将解答填入对应栏内。【说明】 某音像制品出租商店欲开发一个音像管理信息系统,管理音像制品的租借业务。需求如下: 1系统中的客户信息文件保存了该商店的所有客户的用户名、密码等信息。对于首次来租借的客户,系统会为其生成用户名和初始密码。 2系统中音像制品信息文件记录了商店中所有音像制品的详细信息及其库存数量。 3根据客户所租借的音像 制品的品种,会按天收取相应的费用。音像制品的最长租借周期为 1周,每位客户每次最多只能租
2、借 6件音像制品。 4客户租借某种音像制品的具体流程如下。 (1)根据客户提供的用户名和密码,验证客户身份。 (2)若该客户是合法客户,查询音像制品信息文件,查看商店中是否还有这种音像制品。 (3)若还有该音像制品,且客户所要租借的音像制品数小于等于 6个,就可以将该音像制品租借给客户。这时,系统给出相应的租借确认信息,生成一条新的租借记录并将其保存在租借记录文件中。 (4)系统计算租借费用,将费用信息保存在租借记录文件中并 告知客户。 (5)客户付清租借费用之后,系统接收客户付款信息,将音像制品租借给该客户。 5当库存中某音像制品数量不能满足客户的租借请求数量时,系统可以接受客户网上预约租借
3、某种音像制品。系统接收到预约请求后,检查库存信息,验证用户身份,创建相应的预约记录,生成预约流水号给该客户,并将信息保存在预约记录文件中。 6客户归还到期的音像制品,系统修改租借记录文件,并查询预约记录文件和客户信息文件,判定是否有客户预约了这些音像制品。若有,则生成预约提示信息,通知系统履行预约服务,系统查询客户信息文件和预约记录文件 ,通知相关客户前来租借音像制品。1 图 (a)中只有一个外部实体 E1。使用【说明】中的词语,给出 E1的名称。 2 使用【说明】中的词语,给出图 (b)中的数据存储 D1 D4的名称。 3 数据流图 (b)缺少了 3条数据流,根据说明及数据流图 (a)提供的
4、信息,分别指出这3条数据流的起点和终点。 4 在进行系统分析与设计时,面向数据结构的设计方法 (如 Jackson方法 )也被广泛应用。简要说明面向数据结构设计方法的基本思想及其适用场合。 5 阅读下列说明,回答问题 1至问题 3,将解答填入对应栏内。【说 明】 某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。【需求分析结果】 1登记参赛。球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。 2安排球队的训练信息。比赛组织者为球队提
5、供了若干块场地,供球队进行适应性训练。系统记录现有的场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如下表所示。系统记录训练场地安 排的信息。 3安排比赛。该赛事聘请专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛 (每场比赛的对阵双方分别称为甲队和乙队 )。记录参赛球队名称、比赛时间、比分、比赛场地等信息,如下表所示。4所有球员、教练和裁判可能出现重名情况。【概念模型设计】 根据需求阶段收集的信息,设计的实体联系图和关系模式 (不完整 )如下: 1实体联系图 (图
6、2-1) 2关系模式 教练 (教练编号,姓名,年龄 ) 队员 (队员编号,姓名,年龄, 身高,体重, (a) 球队(球队名称,代表地区,成立时间, (b) 场地 (场地名称,场地规模,位置 ) 训练记录(c) 裁判 (裁判编号,姓名,年龄,级别 ) 比赛记录 (d) 5 根据问题描述,补充联系及其类型,完善实体联系图 2-1。 (联系及其类型的书写格式参照教练与球队之间的联系描述,联系名称也可使用联系 1、联系 2、 ) 6 根据实体联系图,填充关系模式中的 (a)、 (b)、 (c)和 (d),并给出训练记录和比赛记录关系模式的主键和外键。 7 如果考虑记录一些特别资深的热心球迷的情况,每个
7、热心 球迷可能支持多个球队。热心球迷包括:姓名、住址和喜欢的俱乐部等基本信息。根据这一要求修改上图的实体联系图,给出修改后的关系模式 (仅给出增加的关系模式描述 )。 8 阅读下列说明和图,回答问题 1至问题 4,将解答填入对应栏内。【说明】 某汽车停车场欲建立一个信息系统,已经调查到的需求如下: 1在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器,示意图如下: 2当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通 过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。 3在停车场内分布着若干
8、个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。 4当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。 5系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示 “车位已满 ”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。 根据上述描述,采用面向对象方法对其进行分析与设计,得到了如下表所示的类 /用例 /状态列表、下图 (a)所示的用
9、例图、图 (b)所示的初始类图以及图 (c)所示的描述入口自动栏杆行为的 UML状态图。8 根据说明中的描述,使用上页表给出的用例名称,给出图 (a)中 U1、 U2和 U3所对应的用例。 9 根据说明中的描述,使用上页表给出的类的名称,给出图 (b)中的, A D所对应的类。 10 根据说明中的描述,使用上页表给出的状态名称,给出图 (c)中 S1S4所对应的状态。 11 简要解释图 (a)中用例 U1和 U3之间的 extend关系的内涵。 12 阅读下列说明,回答问题 1至问题 3,将解答填入对应栏内。 【说明】 快速排序是一种典型的分治算法。采用快速排序对数组 Apr排序的 3个步骤如
10、下。 1分解:选择一个枢轴 (pivot)元素划分数组。将数组 Apr划分为两个子数组 (可能为空 )Apq-1和 Aq+1r,使得 Aq大于等于 Apq-1)中的每个元素,小于 Aq+1r中的每个元素。 q的值在划分过程 中计算。 2递归求解:通过递归的调用快速排序,对子数组 Apq-1和 Aq+1r分别排序。 3合并:快速排序在原地排序,故不需合并操作 12 下面是快速排序的伪代码,请填补其中的空缺;伪代码中的主要变量说明如下。 A:待排序数组 p, r: 数组元素下标,从 p到 r q: 划分的位置 x:枢轴元素 i:整型变量,用于描述数组下标。下标小于或等于 i的元素的值小于或等于枢轴
11、元素的值 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=Ar; i=p-1; for(j=p; jr-1; j+) if (Ajx) i=i+1; 交换 Ai和 Aj 交 (1)和 (2)/注:空 (1)和空 (2)答案可互换,但两空全部答对方可得分 return (3) 13 (1)假设要排序包含 n个元素的数组,请给出在各种不同的划分情况下,快速排序的时间复杂度,用 O
12、记号。最佳情况为 (4),平均情况为 (5),最坏情况为 (6)。 (2)假设要排序的 n个元素都具有相同值时,快速排序的运行时间复杂度属于哪种情况 ?(7)。 (最佳,平均、最坏 ) 14 (1)待排序数组 是否能被较均匀地划分对快速排序的性能有重要影响,因此枢轴元素的选取非常重要。有人提出从待排序的数组元素中随机地取出一个元素作为枢轴元素,下面是随机化快速排序划分的伪代码 利用原有的快速排序的划分操作,请填充其中的空缺处。其中, RANDOM(i, j)表示随机取 i到 j之间的一个数,包括 i和 j。 RANDOMIZED- PARTITION(A, p, r) i=RANDOM(p,
13、rl); 交换 (8)和 (9); /注:空 (8)和空 (9)答案可互换,但两空全部答对方可得分 return PARTITION (A, p, r); (2)随机化快速排序是否能够消除最坏情况的发生 ?(10)。 (是或否 ) 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 15 阅读下列说明和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明】 栈(Stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶 (Stock Top),而另一端称为栈底 (
14、Stock Bottom)。栈的基本 操作包括:创建栈 (NewStack)、判断栈是否为空 (IsEmpty)、判断栈是否已满 (IsFull)、获取栈顶数据 (Top)、压栈 /入栈 (Push)、弹栈 /出栈 (Pop)。 当设计栈的存储结构时,可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必连续存储(如下图所示 )。 以下 C代码采用链式存储结构实现一个整数栈操作。【 C代码】 typedef struct List int data; /栈数据 struct List* next; /上次入栈的数据地址 List; typedef struct Stack List*
15、pTop; /当前栈顶指针 Stack; Stack* NewStack() return (Stack*) calloc(1/sizeof(Stack); int IsEmpty(Stack* S)/判断栈 S是否为空栈 if(1)return 1; return 0; int Top(Stack* s)/获取栈顶数据。若栈为空,则返回机器可表示的最小整数 if(IsEmpty(S)return INT_ MIN; return (2); void Push(Stack* S, int theData) /将数据 theData压栈 List* newNode; newNode=(List*
16、)calloc(1/sizeof (List); newNode- data=theData; newNode- 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= NewStack(); Push(myStack, MD(1); Push(myStack,MD
17、(2); Pop(myStack); Push(myStack, MD(3)+1); while( !IsEmpty(myStack) ) printf(“%d“, Top(myStack); Pop(myStack); return 0; 以上程序运行时的输出结果为 :(5) 16 阅读下列说明和 C+代码,将应填入 (n)处的字句写在对应栏内。 【说明】 已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如左下所示。该遥控器共有 4个按钮,编号分别是 0至 3,按钮0和 2能够遥控打开电器 1和电器 2,按钮 1和 3则能遥控关闭电器 1和电器 2
18、。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如右下所示。 右上图中,类 RomoteController的方法 onPressButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号; Command接口中 on和 off方法分别用于控制电器的开与关; Light中 turnLight(int degree)方法用于调整电灯灯光的强弱,参数 degree值为 0时表示关灯,值为 100时表示开灯并且将灯光亮度调整到最大; TV中 setChannel(int chann
19、el)方法表示设置电视播放的频道,参数 channel值为0时表示关闭电视,为 1时表示开机并将频道切换 为第 1频道。【 C+代码】 class Light /电灯类 public: void trunLight(int degree)/调整灯光亮度, 0表示关灯,100表示亮度最大 ); ; class TV/电视机类 public: vold setChannel(int channel/调整电视频道, 0表示关机, 1表示开机并切换到 1频道 ; ; class Command/抽象命令类 public: virtual void on()=0; virtual void off()=
20、0; ; class RemoteController /遥控器类 protected: Command* commands 4; /遥控器有 4个按钮,按照编号分别对应 4个 Command对象 public: void onPressButton(int button) /按钮被按下时执行命令对象中的命令 if(button % 2=0)commandsbutton- on(); else commandsbutton- off(); void setCommand(int button, Command* command) (1)=command; /设置每个按钮对应的命令对象 ; cl
21、ass LightCommand: public Command /电灯命令类 protected: Light* light; /指向要控制的电灯对象 public: void On()light- trunLight(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(
22、)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)和类
23、 (6)、类 (7)之间的耦合性降至最小。 17 阅读下列说明和 Java代码,将应填入 (n)处的字句写在对应栏内。【说明】 已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如下图 (a)所示。该遥控器共有 4今按钮 ,编号分别是 0至 3,按钮 0和 2能够遥控打开电器 1和电器 2,按钮 1和 3则能遥控关闭电器 1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如下图 (b)所示。 图 (b)中,类 RomoteController的方法 on
24、PrcssButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号; command接口中 on和 off方法分别用于控制电器的开与关; Light中 turnLight(int degree)方法用于调整电灯灯光的强弱,参数 degree值为 0时表示关灯,值为 100时表示开灯并且将灯光亮度调整到最大; TV中 sctChannel(int channel)方法表示设置电视播放的频道,参数 channel值为 0时表示关闭电视,为 1时表示开机并将频道切换为第 1频道。【 Java代码】 class Light /电灯类 public void trunLig
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2008 上半年 软件 水平 考试 中级 设计师 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-492727.html