为了忘却的纪念-2008年下半年软件设计师真题

2008.12.21我参加了下半年软件设计师考试,上午题应该会过,下午不太确定,下午题的第三题的《extend》和《include》的尖括号都粗心没填,白白丢了4分,现在把它贴过来,希望留个纪念

  计算机内存一般分为静态数据区、代码区、栈区和堆区,若某指令的操作数之一采用立即数寻址方式,则该操作数位于(1)

  (1)A. 静态数据区 B. 代码区 C. 栈区 D. 堆区

  计算机在进行浮点数的相加()运算之前先进行对阶操作,若x的阶码大于y的阶码,则应将(2)

  (2)A. x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术左移

  B. x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术右移

  C. y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术左移

  D. y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术右移

  CPU中,(3)可用于传送和暂存用户数据,为ALU执行算术逻辑运算提供工作区。

  (3)A. 程序计数器 B. 累加寄存器 C. 程序状态寄存器 D. 地址寄存器

  下面关于在I/O设备与主机间交换数据的叙述,(4)是错误的。

  (4)A. 中断方式下,CPU需要执行程序来实现数据传送任务

  B. 中断方式和DMA方式下,CPUI/O设备都可同步工作

  C. 中断方式和DMA方式中,快速I/O设备更适合采用中断方式传递数据

  D. 若同时接到DMA请求和中断请求,CPU优先响应DMA请求

  下面关于校验方法的叙述,(5)是正确的。

  (5)A. 采用奇偶校验可检测数据传输过程中出现一位数据错误的位置并加以纠正

  B. 采用海明校验可检测数据传输过程中出现一位数据错误的位置并加以纠正

  C. 采用海明校验,校验码的长度和位置可随机设定

  D. 采用CRC校验,需要将校验码分散开并插入数据的指定位置中

  ● Cache用于存放主存数据的部分拷贝,主存单元地址与Cache单元地址之间的转换工作由(6)完成。

  (6)A. 硬件 B. 软件 C. 用户 D. 程序员

  Windows Server 2003下若选择安全登录,则首先需要按(7)组合键。

  (7)A.Shift+Alt+Esc B.Ctrl+Alt+Tab C.Ctrl+Shift D.Ctrl+Alt+Del

  为了防止电子邮件中的恶意代码,应该用(8)方式阅读电子邮件。

  (8)A.文本 B.网页 C.程序 D.会话

  ● TCP/IP 在多个层引入了安全机制,其中TLS 协议位于(9)

  (9)A. 数据链路层 B. 网络层 C. 传输层 D. 应用层

  我国专利申请的原则之一是(10)

  (10)A. 申请在先  B. 申请在先与使用在先相结合  C. 使用在先  D. 申请在先、使用在先或者二者结合

  李某在《电脑与编程》杂志上看到张某发表的一组程序,颇为欣赏,就复印了一百份作为程序设计辅导材料发给了学生。李某又将这组程序逐段加以评析,写成评论文章后投到《电脑编程技巧》杂志上发表。李某的行为(11)

  (11)A. 侵犯了张某的著作权,因为其未经许可,擅自复印张某的程序

  B. 侵犯了张某的著作权,因为在评论文章中全文引用了发表的程序

  C. 不侵犯张某的著作权,其行为属于合理使用

  D. 侵犯了张某的著作权,因为其擅自复印,又在其发表的文章中全文引用了张某的程序

  ● MP3是目前最流行的数字音乐压缩编码格式之一,其命名中“MP”是指(12)“3”是指(13)

  (12)A. media player B. multiple parts C. music player D. MPEG-1 Audio

  (13)A. MPEG-3 B. version 3 C. part 3 D. layer 3

  某数码相机内置128MB的存储空间,拍摄分辨率设定为1600×1200像素,颜色深度为24位,若不采用压缩存储技术,使用内部存储器最多可以存储(14)张照片。

  (14)A. 12 B. 22 C. 13 D. 23

  在面向对象系统中,用(15)关系表示一个较大的整体类包含一个或多个较小的部分类。

  (15)A. 泛化 B. 聚合 C. 概化 D. 合成

  若一个项目由9个主要任务构成,其计划图(如下图所示)展示了任务之间的前后关系以及每个任务所需天数,该项目的关键路径是(16),完成项目所需的最短时间是(17)天。

  

  (16)A. A→B→C→D→I  B. A→B→C→E→I  C. A→B→C→F→G→I  D. A→B→C→F→H→I

  (17)A. 16 B. 17 C. 18 D. 19

  ● RUP(Rational Unified Process)分为4个阶段,每个阶段结束时都有重要的里程碑,其中生命周期架构是在(18)结束时的里程碑。

  (18)A. 初启阶段 B. 精化阶段 C. 构建阶段 D. 移交阶段

  在软件工程环境中进行风险识别时,常见的、已知的及可预测的风险类包括产品规模、商业影响等,与开发工具的可用性及质量相关的风险是(19)

  (19)A. 客户特性 B. 过程定义 C. 开发环境 D. 构建技术

  编译程序对高级语言源程序进行翻译时,需要在该程序的地址空间中为变量指定地址,这种地址称为(20)

  (20)A. 逻辑地址 B. 物理地址 C. 接口地址 D. 线性地址

  程序设计语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体的while语句和先执行循环体再判断循环条件的do-while语句。关于这两种循环语句,在不改变循环体的条件下,(21)是正确的。

  (21)A. while语句的功能可由do-while语句实现

  B. do-while语句的功能可由while语句实现

  C. 若已知循环体的次数,则只能使用while语句

  D. 循环条件相同时,do-while语句的执行效率更高

  表达式(a-b)*(c+5)的后缀式是(22)

  (22)A. a b c 5 + * -  B. a b – c + 5 *  C. a b c - * 5 +  D. a b- c 5 + *

  假设系统中有四类互斥资源R1R2R3R4,可用资源数分别为9633。在T0时刻系统中有 P1P2P3P4四个进程,这些进程对资源的最大需求量和已分配资源数如下表所示。在 T0时刻系统剩余的可用资源数分别为(23)。如果 P1P2P3P4进程按(24)序列执行,那么系统状态是安全的。

进程\资源

最大需求量

R1  R2  R3  R4

已分配资源数

R1  R2  R3  R4

P1

P2

P3

P4

6    4   2   1

2    2   2   1

8    1   1   1

2    2   1   1

1    1   1   1

2    1   1   1

2    1   0   0

1    2   1   1

  (23)A. 2101  B. 3100  C. 3111  D. 3011

  (24)A. P1→P2→P4→P3  B. P2→P1→P4→P3  C. P3→P4→P1→P2  D. P4→P2→P1→P3

  某文件管理系统为了记录磁盘的使用情况,在磁盘上建立了位示图(bitmap)。若系统中字长为16位,磁盘上的物理块依次编号为:012,那么8192号物理块的使用情况在位示图中的第(25)个字中描述。

  (25)A. 256 B. 257 C. 512 D. 513

  在操作系统设备管理中,通常临界资源不能采用(26)分配算法。

  (26)A. 静态优先级 B. 动态优先级 C. 时间片轮转 D. 先来先服务

  某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法。假定系统为每个作业分配3个页面的主存空间,其中一个页面用来存放程序。现有某作业的部分语句如下:

  Var A: Array[1..128,1..128] OF integer;

  i,j: integer;

  FOR i:=1 to 128 DO

  FOR j:=1 to 128 DO

  A[i,j]:=0;

  设每个页面可存放128个整数变量,变量ij放在程序页中,矩阵A按行序存放。初始时,程序及变量ij已在内存,其余两页为空。在上述程序片段执行过程中,共产生(27)次缺页中断。最后留在内存中的是矩阵A的最后(28)

  (27)A. 64 B. 128 C. 256 D. 512

  (28)A. 2 B. 2 C. 1 D. 1

  软件能力成熟度模型(CMM)将软件能力成熟度自低到高依次划分为初始级、可重复级、定义级、管理级和优化级。其中(29)对软件过程和产品都有定量的理解与控制。

  (29)A. 可重复级和定义级 B. 定义级和管理级 C. 管理级和优化级 D. 定义级、管理级和优化级

  极限编程(XP)包含了策划、设计、编程和测试四个活动,其十二个最佳实践中的持续集成实践在(30)活动中进行。

  (30)A. 策划和设计 B. 设计和编程 C. 设计和测试 D. 编程和测试

  ● ISO/IEC 9126 软件质量模型中第一层定义了六个质量特性,并为各质量特性定义了相应的质量子特性。子特性(31)属于可靠性质量特性。

  (31)A. 准确性 B. 易理解性 C. 成熟性 D. 易学性

  ● UP(统一过程)是用例驱动的、以架构为核心、迭代和增量的软件过程框架,它提供了一种(32)的特性。

  (32)A. 演进 B. 敏捷 C. 测试驱动 D. 持续集成

  系统测试人员与系统开发人员需要通过文档进行沟通,系统测试人员应根据一系列文档对系统进行测试,然后将工作结果撰写成(33),交给系统开发人员。

  (33)A. 系统开发合同 B. 系统设计说明书 C. 测试计划 D. 系统测试报告

  系统的可维护性可以用系统的可维护性评价指标来衡量。系统的可维护性评价指标不包括(34)

  (34)A. 可理解性 B. 可修改性 C. 准确性 D. 可测试性

  某程序根据输入的三条线段长度,判断这三条线段能否构成三角形。以下6个测试用例中,(35)两个用例属于同一个等价类。

  6713; 4710; 92035; 91121; 554; 444

  (35)A. ①② B. ③④ C. ⑤⑥ D. ①④

  在模拟环境下,常采用黑盒测试检验所开发的软件是否与需求规格说明书一致。其中有效性测试属于(36)中的一个步骤。

  (36)A. 单元测试 B. 集成测试 C. 确认测试 D. 系统测试

  面向对象分析与设计中的(37)是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;(38)是指子类应当可以替换父类并出现在父类能够出现的任何地方。

  (37)A. 开闭原则 B. 替换原则 C. 依赖原则 D. 单一职责原则

  (38)A. 开闭原则 B. 替换原则 C. 依赖原则 D. 单一职责原则

  在选择某种面向对象语言进行软件开发时,不需要着重考虑的因素是,该语言(39)

  (39)A. 将来是否能够占据市场主导地位

  B. 类库是否丰富

  C. 开发环境是否成熟

  D. 是否支持全局变量和全局函数的定义

  ● (40)限制了创建类的实例数量,而(41)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

  (40)A. 命令模式(Command) B. 适配器模式(Adapter) C. 策略模式(Strategy) D. 单例模式(Singleton)

  (41)A. 命令模式(Command) B. 适配器模式(Adapter) C. 策略模式(Strategy) D. 单例模式(Singleton)

  ● (42)是指在运行时把过程调用和响应调用所需要执行的代码加以结合。

  (42)A. 绑定 B. 静态绑定 C. 动态绑定 D. 继承

  ● (43)设计模式允许一个对象在其内部状态改变时改变它的行为。下图为这种设计模式的类图,已知类State为抽象类,则类(44)的实例代表了Context对象的状态。

  

  (43)A. 单件(Singleton) B. 桥接(Bridge) C. 组合(Composite) D. 状态(State)

  (44)A. Context  B. concreteStateA  C. Handle  D. State

  UML的各种视图中,(45)显示外部参与者观察到的系统功能;(46)从系统的静态结构和动态行为角度显示系统内部如何实现系统的功能;(47)显示的是源代码以及实际执行代码的组织结构。

  (45)A. 用例视图 B. 进程视图 C. 实现视图 D. 逻辑视图

  (46)A. 用例视图 B. 进程视图 C. 实现视图 D. 逻辑视图

  (47)A. 用例视图 B. 进程视图 C. 实现视图 D. 逻辑视图

  给定文法G[S]及其非终结符AFIRST(A)定义为:从A出发能推导出的终结符号的集合(S 是文法的起始符号,为非终结符)。对于文法G[S]

  S→[L] | a

  L→L, S| S

  其中,G[S]包含的四个终结符号分别为:

  a , [ ]

  则FIRST(S)的成员包括 (48)

  (48)A. a  B. a[  C. a[]  D. a[]和,

  高级语言源程序的编译过程分若干个阶段,分配寄存器属于(49)阶段的工作。

  (49)A. 词法分析 B. 语法分析 C. 语义分析 D. 代码生成

  设某上下文无关文法如下:S→11 | 1001 | S0 |SS,则该文法所产生的所有二进制字符串都具有的特点是(50)

  (50)A. 能被3整除  B. 01出现的次数相等  C. 01的出现次数都为偶数  D. 能被2整除

  希赛公司学生、教师和课程实体对应的关系模式如下:

  学生(学号,姓名,性别,年龄,家庭住址,电话)

  课程(课程号,课程名)

  教师(职工号,姓名,年龄,家庭住址,电话)

  如果一个学生可以选修多门课程,一门课程可以有多个学生选修;一个教师只能讲授一门课程,但一门课程可以有多个教师讲授。由于学生和课程之间是一个(51)的联系,所以 (52) 。又由于教师和课程之间是一个(53)的联系,所以(54)

  (51)A. 11 B. 1对多 C. 多对1 D. 多对多

  (52)A. 不需要增加一个新的关系模式

  B. 不需要增加一个新的关系模式,只需要将1端的码插入多端

  C. 需要增加一个新的选课关系模式,该模式的主键应该为课程号

  D. 需要增加一个新的选课关系模式,该模式的主键应该为课程号和学号

  (53)A. 11 B. 1对多 C. 多对1 D. 多对多

  (54)A. 不需要增加一个新的关系模式,只需要将职工号插入课程关系模式

  B. 不需要增加一个新的关系模式,只需要将课程号插入教师关系模式

  C. 需要增加一个新的选课关系模式,该模式的主键应该为课程号

  D. 需要增加一个新的选课关系模式,该模式的主键应该为课程号和教师号

  关系 RS 如下图所示,关系代数表达式π1,5,6(σ2=5(R×S))=(55),该表达式与(56)等价。

A

B

C

3

2

5

8

0

5

8

11

3

6

9

12

  R

A

B

C

3

4

5

6

10

11

10

11

11

6

13

14

  S

  (55)A.

A

B

C

3

5

0

8

3

9

  B.

A

B

C

8

8

11

11

6

14

  C.

A

B

C

5

5

10

10

11

13

  D.

A

B

C

2

2

11

11

6

14

  (56)A.πA,B,CB=B(R×S))

  B. πR.A,R.B,R.CR.B=S.B(R×S))

  C.πR.A,S.B,S.CR.B=S.B(R×S))

  D. πR.A,S.B,S.CR.B=S.C(R×S))

  一个具有m个结点的二叉树,其二叉链表结点(左、右孩子指针分别用leftright表示)中的空指针总数必定为 (57) 个。为形成中序(先序、后序)线索二叉树,现对该二叉链表所有结点进行如下操作:若结点p的左孩子指针为空,则将该左指针改为指向p在中序(先序、后序)遍历序列的前驱结点; p 的右孩子指针为空,则将该右指针改为指向p在中序(先序、后序)遍历序列的后继结点。假设指针s指向中序(先序、后序)线索二叉树中的某结点,则(58)

  (57)A. m+2  B. m+1  C. m  D. m-1

  (58)A. s->right指向的结点一定是s所指结点的直接后继结点

  B.s->left指向的结点一定是s所指结点的直接前驱结点

  C.s所指结点出发的right链可能构成环

  D.s所指结点的leftright指针一定指向不同的结点

  ● (59)的邻接矩阵是一个对称矩阵。

  (59)A. 无向图 B. AOV C. AOE D. 有向图

  将一个无序序列中的元素依次插入到一棵(60),并进行中序遍历,可得到一个有序序列。

  (60)A. 完全二叉树 B. 最小生成树 C. 二叉排序树 D. 最优二叉树

  广义表中的元素可以是原子,也可以是表,因此广义表的适用存储结构是(61)

  (61)A. 链表 B. 静态数组 C. 动态数组 D. 散列表

  某一维数组中依次存放了数据元素12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素54时,所经历比较运算的数据元素依次为(62)

  (62)A. 41, 52, 54  B. 41, 76, 54  C. 41, 76, 52, 54  D. 41, 30, 76, 54

  具有n个顶点、e条边的图采用邻接表存储结构,进行深度优先遍历和广度优先遍历运算的时间复杂度均为(63)

  (63)A. O(n2)  B. O(e2)  C. O(n*e)  D. O(n+e)

  给定一组长度为n的无序序列,将其存储在一维数组a[0..n-1]中。现采用如下方法找出其中的最大元素和最小元素:比较 a[0] a[n-1],若 a[0]较大,则将二者的值进行交换;再比较a[1]a[n-2],若a[1]较大,则交换二者的值;然后依次比较a[2]a[n-3]a[3] a[n-4],使得每一对元素中的较小者被交换到低下标端。重复上述方法,在数组的前 n/2 个元素中查找最小元素,在后n/2个元素查找最大元素,从而得到整个序列的最小元素和最大元素。上述方法采用的算法设计策略是(64)

  (64)A. 动态规划法 B. 贪心法 C. 分治法 D. 回溯法

  设某算法的计算时间表示为递推关系式T(n)= T(n-1) + n (n>0) T(0)=1,则该算法的时间复杂度为(65)

  (65)A.O(lgn)  B. O(n lgn)  C.O(n)  D. O(n2)

  ● ADSL是一种宽带接入技术,这种技术使用的传输介质是(66)

  (66)A. 电话线 B. CATV电缆 C. 基带同轴电缆 D. 无线通信网

  下面关于网络系统设计原则的论述,正确的是(67)

  (67)A. 应尽量采用先进的网络设备,获得最高的网络性能

  B. 网络总体设计过程中,只需要考虑近期目标即可,不需要考虑扩展性

  C. 网络系统应采用开放的标准和技术

  D. 网络需求分析独立于应用系统的需求分析

  下面的选项中,属于本地回路地址的是(68)

  (68)A. 120.168.10.1  B. 10.128.10.1  C. 127.0.0.1  D. 172.16.0.1

  下面关于防火墙的说法,正确的是(69)

  (69)A. 防火墙一般由软件以及支持该软件运行的硬件系统构成

  B. 防火墙只能防止未经授权的信息发送到内网

  C. 防火墙能准确地检测出攻击来自哪一台计算机

  D. 防火墙的主要支撑技术是加密技术

  ● Internet上的DNS服务器中保存有(70)

  (70)A. 主机名 B. 域名到IP地址的映射表 C. 所有主机的MAC地址 D. 路由表

  ● It should go without saying that the focus of UML is modeling. However, what that means, exactly, can be an open-ended question. (71)is a means to capture ideas, relationships, decisions, and requirements in a well-defined notation that can be applied to many different domains. Modeling not only means different things to different people, but also it can use different pieces of UML depending on what you are trying to convey. In general, a UML model is made up of one or more(72). A diagram graphically represents things, and the relationships between these things. These (73) can be representations of real-world objects, pure software constructs, or a description of the behavior of some other objects. It is common for an individual thing to show up on multiple diagrams; each diagram represents a particular interest, or view, of the thing being modeled. UML 2.0 divides diagrams into two categories: structural diagrams and behavioral diagrams. (74)are used to capture the physical organization of the things in your system, i.e., how one object relates to another. (75)focus on the behavior of elements in a system. For example, you can use behavioral diagrams to capture requirements, operations, and internal state changes for elements.

  (71)A.Programming B. Analyzing C. Designing D. Modeling

  (72)A.views B. diagrams C. user views D. structure pictures

  (73)A. things B. pictures C. languages D. diagrams

  (74)A. Activity diagrams B. Use-case diagrams C. Structural diagrams D. Behavioral diagrams

  (75)A. Activity diagrams B. Use-case diagrams C. Structural diagrams D. Behavioral diagrams

 

 

  试题一(共15 分)

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

  【说明】

  希赛公司拟开发一个销售管理系统,其主要功能描述如下:

  1.接受客户订单,检查库存货物是否满足订单要求。如果满足,进行供货处理:即修改库存记录文件,给库房开具备货单并且保留客户订单至订单记录文件;否则进行缺货处理:将缺货订单录入缺货记录文件。

  2.根据缺货记录文件进行缺货统计,将缺货通知单发给采购部门。

  3.根据采购部门提供的进货通知单进行进货处理:即修改库存记录文件,并从缺货记录文件中取出缺货订单进行供货处理。

  4.根据保留的客户订单进行销售统计,打印统计报表给经理。

  现采用结构化方法对销售管理系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。

  图1-1 顶层数据流图

  图1-2  0层数据流图

 【问题1】(4 分)

  使用说明中的词语,给出图1-1的外部实体E1~E4的名称。

  【问题2】(3 分)

  使用说明中的词语,给出图1-2的数据存储D1~D3的名称。

  【问题3】(8 分)

  数据流图1-2缺少了四条数据流,根据说明及数据流图1-1提供的信息,分别指出这四条数据流的起点和终点。

起点

终点

 

 

 

 

 

 

 

 

 

  试题二(共15分)

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

  【说明】

  希赛公司拟开发一个宾馆客房预订子系统,主要是针对客房的预订和入住等情况进行管理。

  【需求分析结果】

  1.员工信息主要包括:员工号、姓名、出生年月、性别、部门、岗位、住址、联系电话和密码等信息。岗位有管理和服务两种。岗位为管理的员工可以更改(添加、删除和修改)员工表中的本部门员工的岗位和密码,要求将每一次更改前的信息保留;岗位为服务的员工只能修改员工表中本人的密码,且负责多个客房的清理等工作。

  2.部门信息主要包括:部门号、部门名称、部门负责人、电话等信息;一个员工只能属于一个部门,一个部门只有一位负责人。

  3.客房信息包括:客房号、类型、价格、状态等信息。其中类型是指单人间、三人间、普通标准间、豪华标准间等;状态是指空闲、入住和维修。

  4.客户信息包括:身份证号、姓名、性别、单位和联系电话。

  5.客房预定情况包括:客房号、预定日期、预定入住日期、预定入住天数、身份证号等信息。一条预定信息必须且仅对应一位客户,但一位客户可以有多条预定信息。

 【概念模型设计】

  根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示:

  图 2-1  实体联系图

  【逻辑结构设计】

  逻辑结构设计阶段设计的部分关系模式(不完整)如下:

  员工(   (4)  ,姓名,出生年月,性别,岗位,住址,联系电话,密码)

  权限(岗位,操作权限)

  部门(部门号,部门名称,部门负责人,电话)

  客房(   (5)  ,类型,价格,状态,入住日期,入住时间,员工号)

  客户(   (6)  ,姓名,性别,单位,联系电话)

  更改权限(员工号,(7 ,密码,更改日期,更改时间,管理员号)

  预定情况(  (8)  ,预定日期,预定入住日期,预定入住天数)

  【问题1】(3 分)

  根据问题描述,填写图2-1(1)(3)处联系的类型。联系类型分为一对一、一对多和多对多三种,分别使用1 : 11 : n   1 : *m : n   * : *表示。

  【问题2】(2 分)

  补充图2-1中的联系并指明其联系类型。

  【问题3】(7 分)

  根据需求分析结果和图2-1,将逻辑结构设计阶段生成的关系模式中的空(4)(8)补充完整。(注:一个空可能需要填多个属性)

  【问题4】(3 分)

  若去掉权限表,并将权限表中的操作权限属性放在员工表中(仍保持管理和服务岗位的操作权限规定),则与原有设计相比有什么优缺点(请从数据库设计的角度进行说明)?

  试题三(共15 分)

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

  【说明】

  在线会议审稿系统(ORSOnline Reviewing  System)主要处理会议前期的投稿和审稿事务,其功能描述如下:

  1. 用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人。

  2. 作者登录(login)后提交稿件和浏览稿件审阅结果。提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置(存储位置)。上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。

  3. 审稿人登录后可设置兴趣领域、审阅稿件给出意见以及罗列录用和(或)拒绝的稿件。

  4. 会议委员会主席是一个特殊审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和(或)拒绝的稿件以及关闭审稿过程。其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件。

  系统采用面向对象方法开发,使用 UML 进行建模。在建模用例图时,常用的方式是先识别参与者, 然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。参与者名称、用例和活动名称分别参见表3-1、表3-2和表3-3。系统的部分用例图和提交稿件的活动图分别如图3-1和图3-2所示。

  表3-1参与者列表

名称

说明

名称

说明

User

用户

Author

作者

Reviewer

审稿人

PCChair

委员会主席

  表3-2用例名称列表

名称

说明

名称

说明

login

登录系统

register

注册

submit paper

提交稿件

browse review results

浏览稿件审阅结果

close reviewing process

关闭审稿过程

assign paper to reviewer

分配稿件给审稿人

set preferences

设定兴趣领域

enter review

审阅稿件给出意见

list accepted/rejected papers

罗列录用或/和拒绝的稿件

browse submitted papers

浏览提交的稿件

  表3-3活动名称列表

名称

说明

名称

说明

select paper location

选择稿件位置

upload paper

上传稿件

select subject group

选择主题类型

send notification

发送通知

enter title and abstract

输入标题和摘要

 

 

 

  图 3-1 ORS 用例图

  图 3-2  提交稿件过程的活动图

  【问题1】(4 分)

  根据【说明】中的描述,使用表3-1中的英文名称,给出图3-1A1A4所对应的参与者。

  【问题2】(3 分)

  根据【说明】中的描述,使用表3-2中的英文名称,给出图3-1U1U3所对应的用例。

  【问题3】(4 分)

  根据【说明】中的描述,给出图3-1中(1)和(2)所对应的关系。

  【问题4】(4 分)

  根据【说明】中的描述,使用表3-2和表3-3中的英文名称,给出图3-2Action1Action4对应的活动。

  试题四(共15 分)

  阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

  【说明】

  希赛公司供应各种标准的营养套餐。假设菜单上共有n项食物m1m2mn,每项食物mi的营养价值为vi,价格为pi,其中i=1,2,…,n,套餐中每项食物至多出现一次。客人常需要一个算法来求解总价格不超过M的营养价值最大的套餐。

  【问题1】(9 分)

  下面是用动态规划策略求解该问题的伪代码,请填充其中的空缺(1)(2)(3)处。

  伪代码中的主要变量说明如下:

  n 总的食物项数;

  v 营养价值数组,下标从1n,对应第1到第n项食物的营养价值;

  p 价格数组,下标从1n,对应第1到第n项食物的价格;

  M:总价格标准,即套餐的价格不超过M

  x 解向量(数组),下标从1n,其元素值为01,其中元素值为0表示对应的食物不出现在套餐中,元素值为1表示对应的食物出现在套餐中;

  nvn+1M+1列的二维数组,其中行和列的下标均从0开始,nv[i][j]表示由前i项食物组合且价格不超过 j 的套餐的最大营养价值。问题最终要求的套餐的最大营养价值为nv[n][M]

  伪代码如下:

  MaxNutrientValue(n, v, p, M, x)
  1    for i = 0 to n
  2          nv[i][0] = 0
  3    for j = 1 to M
  4          nv[0][j] = 0
  5    for i = 1 to n
  6          for j = 1 to M
  7                  if j < p[i]    //若食物mi不能加入到套餐中
  8                        nv[i][j] = nv[i - 1][j]
  9                  else if     1
  10                      nv[i][j] =    nv[i - 1][j]
  11                else
  12                      nv[i][j] =    nv[i - 1][j – p[i]] + v[i]
  13    j = M
  14    for i = n downto 1
  15          if       2
  16                x[i] = 0
  17          else
  18                x[i] = 1
  19                     3
  20    return x and nv[n][M]

  【问题2】(4 分)

  现有5项食物,每项食物的营养价值和价格如表4-1所示。

  表 4-1  食物营养价值及价格表

编码

营养价值

价格

m1

200

50

m2

180

30

m3

225

45

m4

200

25

m5

50

5

  若要求总价格不超过100的营养价值最大的套餐,则套餐应包含的食物有(4)(用食物项的编码表示),对应的最大营养价值为 5)。

  【问题3】(2 分)

  【问题1】中伪代码的时间复杂度为(6)(用Ο符号表示)。

  从下列的3道试题(试题五至试题七)中任选1道解答。

  如果解答的试题数超过1道,则题号小的1道解答有效。

  试题五(共15 分)

  阅读下列说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。

  【说明】

  已知集合AB的元素分别用不含头结点的单链表存储,函数Difference()用于求解集合AB的差集,并将结果保存在集合A的单链表中。例如,若集合A={51020152530},集合B={5153525},如图5-1(a)所示,运算完成后的结果如图5-1(b)所示。

  图5-1  集合AB运算前后示意图

  链表结点的结构类型定义如下:

  typedef struct Node{
   ElemType elem;
   struct Node *next;
  }NodeType;

  【C 函数】

  void Difference(NodeType **LA, NodeType *LB)
  {
   NodeType *pa, *pb, *pre, *q;
   pre = NULL;
   (1 ;
   while (pa) {
    pb = LB;
    while ( 2 )
    pb = pb->next;
    if ( 3 ) {
     if (!pre)
     *LA = 4 ;
     else
     5 = pa->next;
     q = pa;
     pa = pa->next;
     free(q);
    }
    else    {
     (6 ;
     pa = pa->next;
    }
   }
  }

  试题六(共15 分)

  阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。

  【说明】

  已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图6-1所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。

  图 6-1  ApplicationDocument关系图

  当开发一个具体的应用程序时,开发者需要分别创建自己的 Application Document子类,例如图6-1中的类 MyApplication 和类 MyDocument,并分别实现 Application Document类中的某些方法。

  已知Application类中的openDocument方法采用了模板方法(Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:

  1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;

  2.创建文档对象;

  3.通过文档对象打开文档;

  4.通过文档对象读取文档信息;

  5.将文档对象加入到Application的文档对象集合中。

  【C++代码】

  #include <iostream>
  #include <vector>
  using namespace std;
  class Document{
   public:
   void save(){ /*存储文档数据,此处代码省略*/ }
   void open(string docName){    /* 打开文档,此处代码省略  */ }
   void close(){  /* 关闭文档,此处代码省略*/    }
   virtual void read(string docName) = 0;
  };
  class Appplication{
   private:
   vector < 1 >    docs;      /*文档对象集合*/
   public:
   bool canOpenDocument(string docName){
    /*判断是否可以打开指定文档,返回真值时表示可以打开,返回假值表示不可打开,此处代码省略*/
   }
   void addDocument(Document * aDocument){
    /*将文档对象添加到文档对象集合中*/
    docs.push_back(   2  );
   }
   virtual Document * doCreateDocument() = 0; /*创建一个文档对象*/
   void openDocument(string docName){ /*打开文档*/
    if (   3  ){
     cout << "文档无法打开 " << endl;
     return;
    }
   (4      adoc =     5  ;
   (6   ;
   (7   ;
   (8   ;
   }
  };

  试题七(共15 分)

  阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

  【说明】

  已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图7-1所示,其中,Application 类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。

  图 7-1  ApplicationDocument关系图

  当开发一个具体的应用程序时,开发者需要分别创建自己的ApplicationDocument子类,例如图7-1中的类MyApplication和类MyDocument,并分别实现ApplicationDocument类中的某些方法。

  已知Application类中的openDocument方法采用了模板方法(Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:

  1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;

  2.创建文档对象;

  3.通过文档对象打开文档;

  4.通过文档对象读取文档信息;

  5.将文档对象加入到Application的文档对象集合中。

  【Java 代码】

  abstract class Document{
   public void save(){ /*存储文档数据,此处代码省略*/  }
   public void open(String docName){    /* 打开文档,此处代码省略  */ }
   public void close(){ /* 关闭文档,此处代码省略*/    }
   public abstract void read(String docName);
  };
  abstract class Appplication{
   private  Vector <   1  >    docs; /*文档对象集合*/
   public  boolean canOpenDocument(String docName){
    /*判断是否可以打开指定文档,返回真值时表示可以打开,返回假值表示不可打开,此处代码省略*/
   }
   public void addDocument(Document aDocument){
    /*将文档对象添加到文档对象集合中*/
    docs.add(   2  );
   }
   public abstract Document doCreateDocument(); /*创建一个文档对象*/
 
  public void openDocument(String docName){ /*打开文档*/
    if (   3  ){
     System.out.println( "文档无法打开 " );
     return;
    }
   (4    adoc =     5  ;
   (6  ;
   (7  ;
   (8  ;
   }
  };

 

posted @ 2009-01-07 10:53  遇到未来的自己  阅读(1704)  评论(0编辑  收藏  举报