[计算机类试卷]2013年上半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc

上传人:王申宇 文档编号:493090 上传时间:2018-11-30 格式:DOC 页数:15 大小:270.50KB
下载 相关 举报
[计算机类试卷]2013年上半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第1页
第1页 / 共15页
[计算机类试卷]2013年上半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第2页
第2页 / 共15页
[计算机类试卷]2013年上半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第3页
第3页 / 共15页
[计算机类试卷]2013年上半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第4页
第4页 / 共15页
[计算机类试卷]2013年上半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、2013年上半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 阅读下列说明和图,回答以下问题,将解答填入答题纸的对应栏内。 【说明】 某慈善机构欲开发一个募捐系统,已跟踪记录为事业或项目向目标群体进行募捐而组织的集体性活动。该系统的主要功能如下所述。 (1)管理志愿者。根据募捐任务给志愿者发送加入邀请、邀请跟进、工作任务;管理志愿者提供的邀请响应、志愿者信息、工作时长、工作结果等。 (2)确定募捐需求和收集所募捐赠 (资金及物品 )。根据需 求提出募捐任务、将活动请求和捐赠请求,获取所募集的资金和物品。 (3)组织募捐活动

2、。根据活动请求,确定活动时间范围。根据活动时间,搜索场馆,即:想场馆发送场馆可用性请求,获得场馆可用性。然后根据活动时间和地点推广募捐活动,根据相应的活动信息举办活动,从募捐机构获取资金并向其发放赠品。获取和处理捐赠,根据捐赠请求,提供所募集的捐赠;处理与捐赠人之间的交互,即: 录入捐赠人信息,处理后存入捐赠人信息表;从捐赠人信息表中查询捐赠人信息,向捐赠人发送募捐请求,并将已联系的捐赠人存入已联系的捐赠人表。根据捐赠请求进行 募集,募得捐赠后,将捐赠记录存入捐赠表;对捐赠记录进行处理后,存入已处理捐赠表,向捐赠人发送致谢函,根据已联系的捐赠人和捐赠记录进行跟踪,将捐赠跟进情况发送给捐赠人。

3、先采用结构化方法对募捐系统进行分析与设计,获得如图 11、图 12、和图 13所示分层数据流图。 1 使用说明中的词语,给出图 11中的实体 E1 E4的名称。 2 在建模 DFD时,需要对有些复杂加工 (处理 )进行进一步精化,图 1-2为图 1-1中处理 3的进一步细化的 1层数据流图,图 1-3为图 1-2中 3 1进一步细化的 2层数据流图。补全 1-2中加工 P1、 P2和 P3的名称和图 1-2与图 1-3中缺少的数据流。 3 使用说明中的词语,给出图 1-3中的数据存储 D1 D4的名称。 3 阅读下列说明,回答以下问题,将解答填入答题纸的对应栏内。 【说明】 某电视台拟开发一套

4、信息管理系统,以方便对全台的员工、栏目、广告和演播厅等进行管理。 【需求分析】 (12)系统需要维护全台员工的详细信息、栏目信息、广告信息和演播厅信息等。员 _丁的信息主要包括:工号、姓名、性别、出生日期、电话、住址等。栏目信息主要包括:栏目名称、播出时间、时长的呢过。广告信息主要包括:广告编号、价格等。演播厅信息包括:房间号、房间面积等。 (13)电视台分局调度单来协调各档栏目、演播厅和场务。一销售档栏目只会占用一个演播厅,但会使用多名场务来进行演出协调。演播厅和场务可以被多个栏目循环使用。 (14)电视台根据栏目来插播广告。每档栏目可以插播多条广告,每条广告也可以在多档栏目插播。 (15)

5、一档栏目可以有多个主持人,但一名支持人只能支持一档栏目。 (16)一名编辑人员可以编辑多条广告,一条广告只能由一名编辑人员编辑。 【概念模型设计】 根据需求阶段收集的信息设计的实体联系图 (不完 整 )如图 21所示。 【逻辑结构设计】 根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整 ): 演播厅 (房间号,房间面积 ) 栏目 (栏目名称,播出时间,时长 ) 广告 (广告编号,销售价格, (1) ) 员工 (工号,姓名,性别,出生日期,电话,住址 ) 主持人 (主持人工号, (2) ) 插播单 ( (3) ,播出时间 ) 调度单 ( (4) ) 4 补充图 21中的联系和联系的

6、类型。 5 根据图 2-1,将逻辑结构设计阶段生成的关系模式的空 (1) (4)补充完整,并用下划线指出 (1) (4)所在关系模 式的主键。 6 现需要记录广告商信息,增加广告商实体。一个广告商可以提供多条广告,一条广告只由一个广告商提供。请根据该要求,对图 2-1进行修改,画出修改后的实体间联系和联系的类型。 6 阅读下列说明和图,回答以下问题,将解答填入答题纸对应栏内。 【说明】某城市拟开发一个基于 Web的城市黄页,公开发布该城市重要的组织或机构 (一下统称为客户 )的基本信息,方便城市生活。该系统的主要功能描述如下: (1)搜索信息:任何使用 Internet的网络用户都可以搜索发布

7、在城市黄页中的信息,例如客户的名称、地址、联系电 话等。 (2)认证:客户若想在城市黄页上发布信息,需通过系统的认证。认证成功后,该客户成为系统授权用户。 (3)更新信息:授权用户登录系统后,可以更改自己在城市黄页中的相关信息,例如变更联系电话等。 (4)删除客户:对于拒绝继续在城市黄页上发布信息的客户,有系统管理员删除该客户的相关信息。 系统采用面向对象方法进行开发,在开发过程中认定出如表 3-1所示的类。系统的用例图和类图分别如图 3-1和图 3-2所示。 7 根据说明中的描述,给出图 3-1中 A1和 A2出所对应的参与者, UC1和 UC2所对应的用例以及 (1)处的关系。 8 根据说

8、明中的描述,给出图 32中 C1 C5所对应的类名 (表 3-1中给出出的类名 )和 (2) (5)处所对应的多重度。 9 认定类是面向对象分析中非常关键的一个步骤。一般首先从问题域中得到候选类集合,在根据相应的原则从该集合中删除不作为类的,剩余的就是从问题域中认定出来的类。简要说明选择候选类的原则,以及对候选类集合进行删除的原则。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 9 阅读下列说明和 C代码,回答以下问题,将解答写在答题纸的对应栏内。 【说明】 设有 m台完全相同的机器运行 n个独立的任

9、务,运行任务 i所需要的时间为ti,要求确定一个调度方案,是的完成所有任务所需要的时间最短。 假设任务已经按照其运行时间从大到小排序,算法基于最长运行时间作业优先的策略;按顺序先把每个任务分配到一台机器上,然后将剩余的任务一次放入最先空闲的机器。 【 C代码】 下面是算法的 C语言实现。 (1)常量和变量说明 m:机器数。 n:任务数。 t:输入数组,长度为 n,其中每个元素表示任务的运行时间,下标从 0开始。 s:二维数组,长度为 m*n,下标从 0开始,其中元素 sij表示机器 i运行的任务 j的编号。 d:数组,长度为 m其中元素 di表示机器 i的运行时间,下标从 0开始。 count

10、:数组,长度为 m,下标从 0开始,其中元素 counti表示机器 i运行的任务数。 i:循环变量。 j:循环变量。 k:临时变量。 max:完成所有任务的时间。 min:临时变量。 (2)函数 schedule void schedule() int i, j, k max=0; for(i=0; i m; i+) di=0; for(j=0; j n; j+) sij=0; for(i=0; i m; i+) 分配前 m个任务 si0=i; (1) ; counti=1; for( (2) ; i n; i+)( 分配后 n-m个任务 int min=d0; k=0: for(j=1; j

11、 m;j+) 确定空闲机器 if(min dj) min=dj; k=j; 机器 k空闲 (3) ; countk=countk+1; dk=dk+ti; for(i=0; i m; i+) 确定完成所有任务所需要的时间 if( (4) ) max=di; 10 根据说明和 C代码,填充 C代码中的空 (1) (4)。 11 根据说明和 C代码,该问题采用了 (5) 算法设计策略,时间复杂度为(6) (用 O符号表示 ) 12 考虑实例 m=3(编号 0 2), n=7(编号 0 6),各任务的运行时间为 16, 14, 6,5, 4, 3, 2)。则在机器 0、 1和 2上运行的任务分别为

12、(7) 、 (8) 和 (9) (给出任务编号 )。从任务开始运行到完成所需要的时间为 (10) 。 13 阅读下列说明和 C+代码,将应填入 _处的字句写在答题纸的对应栏内。 【说明】 现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。 现采用原型模式 (Prototype)来实现上述要求,得到如 图 5-1所示的类图。 【 C+代码】 #include string Using namespace std; Class Cloneable Public: (1) ; ; Class

13、WorkExperience: public Cloneable 工作经历 Private: String workDate; String company; Public: Cloneable*Clone() (2) ; Obj workDate=this-workDate: Obj company=this-company; Return obj; 其余代码雀略 ; Class Resume: public Cloneable 简历 Private: String name; string sex; string age; WorkExperience* work; Resume(work

14、Experience*work) This work= (3) ; Public: Resume(string name) *实现省略 * Vold SetPersonalInfo(string sex, string age) *实现省略 * Vold setWorkExperience(string workDate, string company) *实现省略 * Cloneable*Clone() (1) ; Obj name=thisname: Obj sex=this sex: Obj age=this age; Return obj; ; Int main()Resume*a n

15、ew Resume(“张三 ”); A setPers。 nal工 nfo(“男 ”, “29”); A SetworkExperience(“1998 2000”, “XXX公司 ”); Resume*b= (5) ; BSetWorkExperience(“2001 2006”, “YYY公司 ”); Return 0; 14 阅读下列说明和 Java代码,将应填入 _处的字句写在答题纸的对应栏内。 【说明】 现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。 现采用原 型模式 (P

16、rototype)来实现上述要求,得到如图6-1所示的类图。 Java代码】 Class work Experience (1) Cloneable 工作简历 Private String work Date; Private String company; Public Object Clone() (2) ; obj work Date=this Work Date; Obj company-this company; Return obj; Class Resume (3) Cloneable 简历 Private String name; Private String sex; Pri

17、vate String age; Private Work Exper ience work; Public Resume(String name) This name=name; work=new Work Experience(); Private Resume(Work Experience work) This woek= (4) ; Public void Set Personal Info(String sex, String age)( *代码省略 * Public void Set Work Experience(String work Date, String company

18、) *代码省略 * ) Public Object Clone() Resume obj= (5) ; 其余代码省略 Return obj; Class Work ResumePublic static void main(stringargs) Resume a=new Resume(“张三 ”); a Set Personal Info(“男 ”, “29”); a Set Work Experience(“1998 2000”, “XXX公司 ”); Resume b= (6) ; b Set Work Experience(“2001 2006”, “YYY公司 ”); 2013年上半

19、年软件水平考试(中级)软件设计师下午(应用技术)真题试卷答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 E1志愿者 E2捐赠人 E3募捐机构 E4场馆。 【试题解析】 根据 0层数据流管理志愿者中的募捐任务给志愿者发送加入邀请,邀请跟进, 工作任务和管理志愿者提供的邀请响应等可知 E1为志愿者;从录入捐赠人信息,向捐赠人发送募捐请求,向捐赠人发送致谢函等可知 E2为捐赠人;从根据说明中从募捐机构获取资金并向其发放赠品可知 E3为募捐机构;根据向场馆发送可用性请求和获得场馆可用性可知 E4为场馆。 2 【正确答案】 P1确定活动时间范围 P2搜索场馆 P3推广募捐活动

20、 缺少的数据流: 名称:活动请求起点:确定募款需求收集所募捐赠终点: P1 【试题解析】 根据 1层数据流图中 P1 的输出流活动时间再结合说明可知 P1 为确定活动时间范围;从 加工 P2 的输入流活动时间和输出流场馆可用性请求和活动时间和地点可知 P2 为搜索场馆;说明中根据活动时间和地点推广募捐活动,根据相应的活动信息举办活动,在结合 P3 的输入输出流可知 P3 为推广募捐活动。比较0层和 1层中的数据流可知, P1 加工只有输出流,故缺少输入流,根据说明可知需要根据活动请求才能确定 P1,故该数据流为活动请求,在 0 层数据流中活动请求的起始加工为确定募款需求收集所募捐赠,故可知答案

21、。 3 【正确答案】 D1:捐赠人信息表 D2:已联系的捐赠人信息表 D3:捐赠表 D4:已经处理的捐赠表 【试题解析】 根据最后的说明和 2层数据流可知 D1为捐赠人信息表, D2为已联系的捐赠人信息表, D3 为捐赠表, D4为已经处理的捐赠表。 4 【正确答案】 【试题解析】 由说明每档栏目可以插播多条广告,每条广告可以在多档栏目中插播,可知广告和栏目之间是插播关系且为多比多;一个主持人可以主持一个栏目,一个栏目可以被多个主持人所主持,故主持人和栏目之间为多比 1的关系;多名场务来进行栏目的演出协调,而场务又可以被多个栏目循环使用,故其关系为多比多。补充联系如图 1所示。 5 【正确答案

22、】 (1)广告时 长 主键:广告编号 (2)栏目名称 主键:主持人工号 (3)栏目名称、广告编号 主键:栏目名称、广告编号 (4)栏目名称、房间号、场务工号主键:栏目名称、场务工号 【试题解析】 逻辑结构设计中,广告实体中缺少广告时长,主键为广告编号;主持人实体与栏目实体为多比一的关系,故将栏目中主键栏目名称加入到主持人实体中,主键为主持人工号;插播单为栏目实体和广告实体这种多对多的关系所派生出的实体,其中记录了栏目和广告的主键信息,故插播单中缺少栏目名称和广告编号信息,主键为 栏目名称和广告编号;调度单为场务、栏目和演播厅实体这种多对对的关系所派生的实体,故其记录了栏目名称,房问号,场务工号

23、,主键为栏目名称、房间号和场务工号。 6 【正确答案】 【试题解析】 因为一个广告商可以提供多条广告,一条广告只能由一个广告商提供,故广告商和广告之间的关系为一比多,其关系下图所示。 7 【正确答案】 A1网络用户 A2授权用户 UCl认证 I-JC2更新信息 (1)extend 【试题解析】 用例图中, A1可以搜索信息, A2由 A1派生且 A2参与了两个用例,根据题中的说明 (1)和 (2),可知 A1为网络用户, A2为授权用户;由用例 UC1和登录用例之间存在关系,可知 UC1为认证用例,因为用户登录必须先认证,所以登录用例是认证的扩展,所以他们之间的关系为 extend。对于授权用

24、户还可以更新信息,故 UC2 为更新信息用例。 8 【正确答案】 C1: InternetClient C2: Customer。 C3: RegisteredClient C4: Administrator C5: CustomerList (2)1 (3)0* (4)1 ( 5)0* 【试题解析】 本问题考查类图。考查类图的层次结构和多重度。图中更有两个非常明显的继承结构,即 C3和 C4继承于 C1,且 C1与 C2是多比一的关系,根据说明 (1)中任何网络用户都可以搜索客户信息,即 C1为网络用户, C2为客户信息,由此很明显的得出 C3和 C4在授权用户和系统管理员中选取。根据 C2

25、和 C5之间存在聚合关系,且 C2为客户信息,可以推断 C5为客户集。再由 C4和 C5之间的关联关系,且 C5为客户集,能对客户集进行批量操作的用户 C4 显然就是系统管理员,由此得出 C3 为授权用户。由此 (2) (5)的 多重度就显而易见, (2)为1, (3)为 0* , (4)为 1, (5)为 0* 。 9 【正确答案】 候选类的选择运用了良性依赖原则 “不会在实际中造成危害的依赖关系,都是良性依赖 ”和接口隔离原则 (ISP)。 【试题解析】 候选类的选择运用了良性依赖原则 “不会在实际中造成危害的依赖关系,都是良性依赖 ”。通过分析不难发现,本原则的核心思想是 “务实 ”,很

26、好地揭示了极限编程 (Extreme Programming)中 “简单设计 ”和 “重构 ”的理论基础。本原则可以帮助我们抵御 “面向对象设计五大原则 ”以及设计模式的诱惑 ,以免陷入过度设计 (Over_engineering)的尴尬境地,带来不必要的复杂候选类的删除使用的是接口隔离原则候选类的删除运用了接口隔离原则 (ISP):不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。这个说得很明白了,再通俗点说不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。 二、选答题(共 3道大题,每道大

27、题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有 效。 10 【正确答案】 (1)di=di+ti (2)i=m (3)sk0=i(4)Max di 【试题解析】 根据上述思想和题中的说明,首先将是 s和 d数组初始化为0,然后将前 m个运行时间最长的任务分给 m个机器, (1)中需要表示此时每个机器运行的时间,即当前已经运行的时间加上此时所运行任务的时间,可以推断 (1)处为 di=di+ti,此后需将剩下的 nm个任务按顺序分配给空闲的机器,故 (2)处将 i初始化为以 m为起始的任务,即 i=m, (3)处 根据空闲的机器分配任务,所

28、以需记录第 k个空闲机器所运行任务的编号,即 sk0=i, (4)处已经完成了任务的运行,此处需要统计所有机器所运行任务的最长时间,对于每个机器 i的运行时间为 di,存在 di大于当前的最大时间 Max,就将当前机器的运行时间 di赋给Max,即 Max di。 11 【正确答案】 (5)贪心 (6)O(2m*n+2m) 【试题解析】 根据以上分析, (5)处采用了贪心算法的策略,而时间复杂度由算法中的两个嵌套 for循环和两个非嵌套 for循环确定,即为 O(2m*n+2m), 12 【正确答案】 (7)0 (8)1、 5 (9)2、 3、 4、 6 (10)17 【试题解析】 根据题中算

29、法的思想将任务将前三个任务分给三个机器,再将接下来的任务分给最先空闲的机器,故可知机器 0运行任务 0,机器 1运行任务 1、5,机器 3运行任务 2、 3、 4、 6;且运行的最长时间为 17。 13 【正确答案】 (1)virtual Cloneable*Clone()=0 (2)Work Experience*obj (3)Work (4)Resume*obj (5)a-Clone() 【试题解析】 本题考查原型模式的概念及应用,原型模型是一种对象创建模型,用原型实体指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模型允许一个对象再创建另一个可定制的对象,无须知道任何创建的细节

30、。 Prototype模式其实就是常说的 “虚拟构造函数 ”一个实现, C+的实现机制中并没有支持这个特性,但是通过不同派生类实现的 Clone接口函数可以完成与 “虚拟构造函数 ”同样的效果 题中声明一个虚拟基类,所有的原型都从这个基类继承, (1)所代表的就 是这个基类中的纯虚函数,需要供继承者自行实现,即为 virtual Cloneable*Clone()=0, 1、声明一个抽象基类,并定义 clone()函数为纯虚函数。然后根据基类实例化各个子类,并且实现复制构造函数,并实现 Clone()函数,由此可知 (2)处为 Work Experience*obj, (3)处为 Work,

31、(4)处为 Resume*obi在main 函数中实现 Resume*b 对 *a的复制,故根据 C+语法 (5)中为 a Clone()。 14 【正确答案】 (1)implements (2)Work Experience obj=new Work Experience() (3)implements (4)(Work Experence)work Clone() (5)new Resume(this work) (6)a Clone() 【试题解析】 本题考查原型模式的概念及应用,原型模型是一种对象创建模型,用原型实体指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模型允许一个

32、对象再创建另一个可定制的对象,无需知道任何创建的细节。 所 有的 Java类都继承自 java lang Object,而 object类提供一个 Clone()方法,可以将一个 Java对象复制一份。因此在 Java中可以直接使用 Object提供的Clone()方法来实现对象的克隆。能够实现克隆的 java类必须实现一个标识接口Cloneable,表示这个 java类支持复制。 题中 Work Experience类和 Resume类需要实现 Clone-able接口,故 (1)和 (3)为 implements, Work Experience中需要实现 Clone方法,并将自身复制一 份,由下面的代码可知 (2)为 Work Experience obj=new Work Experience()。Resume类中的私有构造方法实现 Work Expeiience的深复制,故 (4)中为 (Work Experence)work Clone(),而 Resume类中 Clone方法 实现自身的复制,故 (5)中为 new Resume(this work) 在 main 中实现 Resume b 对 a的复制,故 (6)中为 a Clone()。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1