软件设计师考试大纲

一、考 试 说 明

1.考试目标

通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平。

2.考试要求

(1)掌握计算机内的数据表示、算术和逻辑运算方法;

(2)掌握相关的应用数学及离散数学基础知识;

(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;

(4)掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;

(5)熟练掌握常用数据结构和常用算法;

(6)熟悉数据库、网络和多媒体的基础知识;

(7)掌握C程序设计语言,以及C++、Java中的一种程序设计语言;

(8)熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;

(9)掌握软件设计的方法和技术;

(10)了解信息化、常用信息技术标准、安全性,以及有关法律、法规的基础知识;

(11)正确阅读和理解计算机领域的英文资料。

3.考试科目设置

(1)计算机与软件工程知识,考试时间为150分钟,笔试,选择题;

(2)软件设计,考试时间为150分钟,笔试,问答题。

二、考 试 范 围

考试科目1:计算机与软件工程知识

1.计算机科学基础知识

1.1  数制及其转换

  • 二进制、八进制、十进制和十六进制等常用数制及其相互转换

1.2  计算机内数据的表示

  • 数的表示
  • 非数值表示(字符和汉字表示、声音表示、图像表示)

1.3  算术运算和逻辑运算

  • 计算机中的二进制数运算方法
  • 逻辑代数的基本运算

1.4  其他数学基础知识

  • 常用数值计算
  • 排列组合,概率论应用,应用统计(数据的统计分析)
  • 编码基础
  • 命题逻辑、谓词逻辑、形式逻辑的基础知识
  • 运筹基本方法

2.计算机系统知识

2.1  计算机硬件基础知识

2.1.1  计算机系统的组成、体系结构分类及特性

  • CPU、存储器的组成、性能和基本工作原理
  • 常用I/O设备、通信设备的性能以及基本工作原理
  • I/O接口的功能、类型和特性
  • CISC/RISC,流水线操作,多处理机,并行处理

2.1.2  存储系统

  • 虚拟存储器基本工作原理,多级存储体系
  • RAID类型和特性

2.1.3  可靠性与系统性能评测基础知识

  • 诊断与容错
  • 系统可靠性分析评价
  • 计算机系统性能评测方法

2.2  计算机软件知识

2.2.1  数据结构与算法知识

  • 数组
  • 链表
  • 队列、栈
  • 图的定义、存储和基本操作
  • 杂凑(Hash表)
  • 常用的排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法
  • 算法描述和分析

2.2.2  操作系统知识

  • 操作系统的内核
  • 处理机管理
  • 存储管理
  • 设备管理
  • 文件管理
  • 作业管理
  • 网络操作系统和嵌入式操作系统基础知识
  • 操作系统的配置

2.2.3  程序设计语言和语言处理程序知识

  • 汇编、编译、解释系统的基础知识和基本工作原理
  • 程序设计语言的基本成分(数据、运算、控制和传输),程序调用的实现机制
  • 各类程序设计语言的主要特点和适用情况

2.2.4  数据库知识

  • 数据库模型(概念模式、外模式、内模式)
  • 数据模型,ER图,规范化
  • 数据操作
  • 数据库语言
  • 数据库管理系统的功能和特征
  • 数据库的控制功能
  • 数据仓库和分布式数据库基础知识

2.3  计算机网络知识

  • 网络体系结构
  • 传输介质,传输技术,传输方法,传输控制
  • 常用网络设备和各类通信设备的特点
  • Client-Server结构,Browser-Server结构
  • LAN(拓扑,存取控制,组网,网间互连)
  • Internet 和Intranet 基础知识以及应用
  • 网络软件
  • 网络管理,网络性能分析

2.4  多媒体基础知识

  • 多媒体系统基础知识
  • 简单图形的绘制,图像文件的处理方法
  • 音频和视频信息的应用
  • 多媒体应用开发过程

3.系统开发和运行知识

3.1  软件工程知识

  • 软件生存周期与软件生存周期模型
  • 软件开发方法
  • 软件开发项目管理
  • 软件工具与软件开发环境

3.2  系统分析基础知识

  • 系统分析的主要步骤
  • 结构化分析方法

3.3  系统设计基础知识

  • 概要设计与详细设计的基本任务
  • 系统设计的基本原理
  • 系统模块结构设计
  • 结构化设计方法
  • 面向数据结构的设计方法
  • 系统详细设计

3.4  系统实施基础知识

  • 系统实施的基本内容
  • 程序设计方法
  • 程序设计的基本模块
  • 系统测试
  • 系统转换

3.5  系统运行和维护基础知识

  • 系统可维护性的概念
  • 系统维护的类型
  • 系统评价的概念与类型

3.6  软件质量管理基础知识

  • 软件质量特性(ISO/IEC 9126软件质量模型)
  • 软件质量保证
  • 软件复杂性的概念及度量方法(McCabe度量法)
  • 软件评审(设计质量评审、程序质量评审)
  • 软件容错技术

3.7  软件过程改进基础知识

  • 软件能力成熟度模型CMM
  • 统一过程(UP)与极限编程(XP)的基本概念

4.面向对象基础知识

  • 面向对象的基本概念
  • 面向对象分析与设计知识
  • 分析模式与设计模式知识
  • 面向对象程序设计知识
  • 面向对象数据库、分布式对象基础知识

5.信息安全知识

  • 信息系统安全基础知识
  • 信息系统安全管理
  • 保障完整性与可用性的措施
  • 加密与解密机制基础知识
  • 风险管理(风险分析、风险类型、抗风险措施和内部控制)
  • 计算机安全相关的法律、法规基础知识

6.标准化、信息化和知识产权基础知识

6.1  标准化基础知识

  • 标准化意识,标准化组织机构,标准的内容、分类、代号与编号规定,标准制订过程
  • 国际标准、国家标准、行业标准、企业标准
  • 代码标准、文件格式标准、安全标准、互联网相关标准、软件开发规范和文档标准、基于构件的软件标准

6.2  信息化基础知识

  • 全球信息化趋势、国家信息化战略、企业信息化战略和策略
  • 互联网相关的法律、法规知识
  • 个人信息保护规则
  • 远程教育、电子商务、电子政务等基础知识
  • 企业信息资源管理基础知识

6.3  知识产权基础知识

  • 保护知识产权有关的法律、法规

7.计算机专业英语

  • 具有工程师所要求的英语阅读水平
  • 理解本领域的英语术语

考试科目2:软件设计

1.外部设计

1.1  理解系统需求说明

1.2  准备进行系统开发

  • 选择开发方法、准备开发环境、制订开发计划

1.3  设计系统功能

  • 选择系统结构
  • 设计各子系统的功能和接口
  • 设计安全性策略、需求和实现方法
  • 制订详细的工作流和数据流

1.4  设计数据模型

  • 设计ER模型及其他数据模型

1.5  编写外部设计文档

  • 系统配置图、各子系统关系图
  • 系统流程图、系统功能说明书
  • 输入输出规格说明、数据规格说明、用户手册框架
  • 设计系统测试要求

1.6  外部设计的评审

2.内部设计

2.1  设计软件结构

  • 按构件分解,确定构件功能、规格以及构件之间的接口
  • 数据结构与算法设计
  • 采用中间件和工具

2.2  设计输入输出

2.3  设计物理数据

2.4  构件的创建和重用

  • 创建构件、重用构件
  • 使用子程序库或类库

2.5  编写内部设计文档

  • 构件划分图、构件间的接口、构件处理说明
  • 屏幕界面设计文档、报表设计文档、文件设计文档、数据库设计文档

2.6  内部设计的评审

3.数据库应用分析与设计

  • 设计关系模式
  • 数据库语言(SQL)
  • 数据库访问

4.程序设计

4.1  模块划分

4.2  编写程序设计文档

4.3  程序设计评审

5.系统实施

5.1  配置计算机系统及环境

5.2  选择合适的程序设计语言

5.3  用C程序设计语言以及C++、Java中的任一种程序设计语言进行程序设计

5.4  系统测试

  • 指导程序员进行模块测试,并进行验收
  • 准备系统集成测试环境和测试工具
  • 准备测试数据
  • 写出测试报告

6.软件工程应用

6.1  软件开发周期模型

6.2  需求分析

6.3  软件设计

  • 软件设计的基本原则
  • 软件设计方法
  • 程序设计(结构化程序设计、面向对象程序设计)

6.4  软件测试的原则与方法

6.5  软件质量(软件质量特性、软件质量控制)

6.6  软件过程评估基本方法、软件能力成熟度评估基本方法

6.7  软件开发环境和开发工具

6.8  面向对象技术

  • 面向构件技术
  • 统一建模语言(UML)
  • 软件过程改进模型和方法

6.9  网络环境软件技术

题型举例

考试科目1:计算机与软件工程知识

1.在计算机中,最适合进行数字加减运算的数字编码是(1),最适合表示浮点数阶码的数字编码是(2)

(1)A.原码       B.反码        C.补码        D.移码

(2)A.原码       B.反码        C.补码        D.移码

2.某计算机系统由下图所示的部件构成,假定每个部件的千小时可靠度都为R,则该系统的千小时可靠度为(3)

(3)A.R+2R/4    B.R+R2/4        C.R(1-(1-R)2)     D.R(1-(1-R)2)2

3.指令系统中采用不同寻址方式的目的是(4)。

(4)A.提高从内存获取数据的速度      B.提高从外存获取数据的速度

C.降低操作码的译码难度          D.扩大寻址空间并提高编程灵活性

4.用户A从CA获得用户B的数字证书,并利用(5)验证数字证书的真实性

(5)A.B的公钥        B.B的私钥       C.CA的公钥    D.CA的私钥

5.模块A直接访问模块B的内部数据,则模块A和模块B的耦合类型为(6)

(6)A.数据耦合       B.标记耦合        C.公共耦合        D.内容耦合

6.某软件公司研发的财务软件产品在行业中技术领先,具有很强的市场竞争优势。为确保其软件产品的技术领先及市场竞争优势,公司采取相应的保密措施,以防止软件技术秘密的外泄。并且,还为该软件产品冠以“用友”商标,但未进行商标注册。此情况下,公司仅享有该软件产品的(7)。

(7)A.软件著作权和专利权              B.商业秘密权和专利权

C.软件著作权和商业秘密权           D.软件著作权和商标权

7.某进程有5个页面,页号为0~4,页面变换表如下所示。表中状态位等于0和1分别表示页面不在内存或在内存。若系统给该进程分配了3个存储块,当访问的页面3不在内存时,应该淘汰表中页号为(8)的页面。假定页面大小为4K,逻辑地址为十六进制2C25H,该地址经过变换后,其物理地址应为十六进制(9)。

(8)A.0        B.1        C.2        D.4

(9)A.2C25H     B.4096H        C.4C25H       D.8C25H

8.假设某磁盘的每个磁道划分成9个物理块,每块存放1个逻辑记录。逻辑记录RO,R1,…,R8存放在同一个磁道上,记录的安排顺序如下表所示:

如果磁盘的旋转速度为27ms/周,磁头当前处在RO的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为3ms,则处理这9个记录的最长时间为(10);若对信息存储进行优化分布后,处理9个记录的最少时间为(11)。

(10)A.54ms        B.108ms        C.222ms        D.243ms

(11)A.27ms        B.54ms         C.108ms        D.216ms

9.下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边的权重表示活动的持续时间,则里程碑(12)在关键路径上。活动GH的松弛时间是(13)。

(12)A.B       B.E       C.C        D.K

(13)A.0       B.1       C.2        D.3

10.一个功能模块M1中的函数F1有一个参数需要接收指向整型的指针,但是在功能模块M2中调用F1时传递了一个整型值,在软件测试中,(14)最可能测出这一问题。

(14)A.Ml的单元测试             B.M2的单元测试

C.Ml和M2的集成测试        D.确认测试

11.编译程序对C语言源程序进行语法分析时,可以确定(15)。

(15)A.变量是否定义(或声明)        B.变量的值是否正确

C.循环语句的执行次数         D.循环条件是否正确

12.不同的对象收到同一消息可以产生完全不同的结果,这一现象叫作(16)。绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定在编译时进行,叫作(17);而(18)则在运行时进行,即一个给定的过程调用和执行代码的结合直到调用发生时才进行。

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

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

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

13.在统一建模语言(UML)中,(19)用于描述系统与外部系统及用户之间的交互。

(19)A.类图         B.用例图         C.对象图         D.协作图

14.下列设计模式中,(20)模式既是类结构型模式又是对象结构型模式。此模式与(21)模式类似的特征是,都给另一个对象提供了一定程度上的间接性,都涉及从自身以外的一个接口向这个对象转发请求

(20)A.桥接(Bridge)   B.适配器(Adapter)   C.组成(Composite)   D.装饰器(Decorator)

(21)A.桥接(Bridge)   B.适配器(Adapter)   C.组成(Composite)   D.装饰器(Decorator)

15.(22)表示了系统与参与者之间的接口。在每个用例中,该对象从参与者处收集信息,并将之转换为一种被实体对象和控制对象使用的形式

(22)A.边界对象       B.可视化对象      C.抽象对象      D.实体对象

16.如下UML类图表示的是(23)设计模式。以下关于该设计模式的叙述中,错误的是(24)。

(23)A.工厂方法       B.策略        C.抽象工厂      D.观察者

(24)A.提供创建一系列相关或相互依赖的对象的接口,而无须指定这些对象所属的具体类

B.可应用于一个系统要由多个产品系列中的个来配置的时候

C.可应用于强调一系列相关产品对象的设计以便进行联合使用的时候

D.可应用于希望使用已经存在的类,但其接口不符合需求的时候

17.UML中有多种类型的图,其中,(25)对系统的使用方式进行分类,(26)显示了类及其相互关系(27)显示人或对象的活动,其方式类似于流程图,通信图显示在某种情况下对象之间发送的消息,(28)与通信图类似,但强调的是顺序而不是连接。

(25)A.用例图        B.顺序图         C.类图         D.活动图

(26)A.用例图        B.顺序图         C.类图         D.活动图

(27)A.用例图        B.顺序图         C.类图         D.活动图

(28)A.用例图        B.顺序图的          C.类图         D.活动图

18.为了保证数据库中数据的安全可靠和正确有效,系统在进行事务处理时,对数据的插入、删除或修改的全部有关内容先写入(29);当系统正常运行时,按一定的时间间隔,把数据库缓冲区内容写入(30);当发生故障时根据现场数据内容及相关文件来恢复系统的状态

(29)A.索引文件       B.数据文件        C.日志文件        D.数据字典

(30)A.索引文件       B.数据文件        C.日志文件        D.数据字典

19.要使4个连续的C类网络汇聚成一个超网,则子网掩码应该为(31)。

(31)A.255.240.0.0      B.255.255.0.0    C.255.255.252.0       D.255.255.255.252

20.Ravi, like many project(32),had studied the waterfall model of softwaredevelopment as theprimary software life-cycle(33).He was allset to use it for an upcoming project, his first assignment. However, Ravifound that the waterfall model couldnot be used because the customer wanted thesoftware delivered in stages, something that implied that the system had to bedelivered and built in(34)and not as(35).

The situationin many other projects is not very different.The real world rarely presents aproblem in which a standard process, or the process used in a previous project,is the best choice. To be the most suitable, an existing process must be(36)to the new problem.

A developmentprocess, even after tailoring, generally cannot handle change requests.Toaccommodate change requests without losing control of the project, you mustsupplement the development process with a requirement change managementprocess.

(32)A.customers         B.managers         C.users          D.administrators

(33)A.activity         B.procedure         C.process           D.progress

(34)A.parts           B.modules             C.software           D.a whole

(35)A.parts           B.modules             C.software           D.a whole

(36)A.modified         B.used               C.suited            D.tailored

考试科目2:软件设计

试题一(15分)

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

【说明】

某慕课教育平台欲添加在线作业批改系统,以实现高效的作业提交与批改,并进行统计。学生和讲师的基本信息已经初始化为数据库中的学生表和讲师表。系统的主要功能如下。

(1)提交作业。验证学生标识后,学生将电子作业通过在线的方式提交,并进行存储。系统给学生发送通知表明提交成功,通知中包含唯一编号,并通知讲师有作业提交

(2)下载未批改作业。验证讲师标识后,讲师从系统中下载学生提交的作业。下载的作业将显示在屏幕上。

(3)批改作业。讲师按格式为每个题目进行批改打分并进行整体评价

(4)上传批改后的作业。将批改后的作业(包括分数和评价)返回给系统,进行存储

(5)记录分数和评价。将批改后的作业的分数和评价记录在学生信息中,并通知学生作业已批改

(6)获取已批改作业。根据学生标识,给学生查看批改后的作业,包括提交的作业、分数和评价

(7)作业抽检。根据教务人员标识抽取批改后的作业样本,给出抽检意见,并形成抽检报告给讲师。

现采用结构化方法对在线作业批改系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

【问题1】(3分)

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

【问题2】(4分)

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

【问题3】(6分)

根据说明和图中术语,补充图1-2中缺失的数据流及其起点和终点

【问题4】(2分)

若发送给学生和讲师的通知是通过第三方Email系统进行的,则需要对图1-1和图1-2进行哪些修改?用100字以内文字加以说明

试题二(共15分)

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

【说明】

某集团公司在全国不同城市拥有多个大型超市,为有效管理各个超市的业务工作,需要构建一个超市信息管理系统

【需求分析结果】

(1)超市信息包括:超市名称、地址、经理和电话,其中超市名称唯一确定超市关系的每一个元组。每个超市只有一名经理

(2)超市设有计划部、财务部、销售部等多个部门,每个部门只有一名部门经理,有多名员工,每个员工只属于一个部门。部门信息包括:超市名称、部门名称、部门经理和联系电话。超市名称、部门名称唯一确定部门关系的每一个元组

(3)员工信息包括:员工号、姓名、超市名称、部门名称、职位、联系方式和工资。其中职位信息包括:经理、部门经理、业务员等。员工号唯一确定员工关系的每一个元组

(4)商品信息包括:商品号、商品名称、型号、单价和数量。商品号唯一确定商品关系的每一个元组。一名业务员可以负责超市内多种商品的配给种商品可以由多名业务员配给

【概念模型设计】

根据需求分析阶段收集的信息,设计的实体联系图和关系模式(不完整)如下:

【关系模式设计】

超市(超市名称,经理,地址,电话)

部门( (a) ,   部门经理,联系电话)

员工( (b) ,    姓名,联系方式,职位,工资)

商品( 商品号,商品名称,型号,单价,数量)

配给( (c)  ,   配给时间,配给数量,业务员)

【问题1】(4分)

根据问题描述,补充四个联系,完善图2-1的实体联系图。联系名可用联系1、联系2、联系3和联系4代替,联系的类型分为1:1、1:n和mn(或1:1、1:*和*:*)

【问题2】(7分)

(1)根据实体联系图,将关系模式中的空(a) ~(c)补充完整

(2)给出部门和配给关系模式的主键和外键

【问题3】(4分)

(1)超市关系的地址可以进一步分为邮编、省、市、街道,那么该属性是属于简单属性还是复合属性?请用100字以内文字说明

(2)假设超市需要增设一个经理的职位,那么超市与经理之间的联系类型应修改为(d) ,超市关系应修改为(e)  .

试题三(共15分)

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

【说明】

某物品拍卖网站为参与者提供物品拍卖平台,组织拍卖过程,提供在线或线下交易服务。网站主要功能描述如下:

(1)拍卖参与者分为个人参与者和团体参与者两种。不同的团体也可以组成新的团体参与拍卖活动。网站记录每个参与者的名称

(2)一次拍卖中,参与者或者是买方,或者是卖方。

(3)一次拍卖只拍出来自一个卖方的一件拍卖品;多个买方可以出价;卖方接受其中一个出价作为成交价,拍卖过程结束。

(4)在拍卖结算阶段,买卖双方可以选择两种成交方式:线下成交,买卖双方在事先约定好的成交地点,当面完成物价款的支付和拍卖品的交付;在线成交,买方通过网上支付平台支付物价款,拍卖品由卖方通过快递邮寄给买方。

一次拍卖过程的基本事件流描述如下:

(1)卖方在网站上发起一次拍卖,并设置本次拍卖的起拍价

(2)确定拍卖标的以及拍卖标的保留价(若在拍卖时间结束时,所有出价均低于拍卖标的保留价,则本次拍卖失败)

(3)在网站上发布本次拍卖品的介绍

(4)买方参与拍卖,给出竞拍价。

(5)卖方选择接受一个竞拍价作为成交价,结束拍卖。

(6)系统记录拍卖成交价,进入拍卖结算阶段。

(7)卖方和买方协商拍卖品成交方式,并完成成交

现采用面向对象方法对系统进行分析与设计,得到如表3-1所示的类列表以及如图3-1所示的类图,类中关键属性与方法如表3-2所示

【问题1】(7分)

根据说明中的描述,给出图3-1中(1) ~(7)所对应的类名(类名使用表3-1中给出的序号)。

【问题2】(5分)

根据说明中的描述,确定表3-2中的属性/方法分别属于哪个类(类名、方法/属性名使用表3-1、3-2中给出的序号)。

【问题3】(3分)

在图3-1采用了何种设计模式?以100字以内文字说明采用这种设计模式的原因

试题四(共15分)

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内

【说明】

计算一个整数数组a的最长递增子序列长度的方法描述如下:

假设数组a的长度为n,用数组b的元素b[i]记录以a[i] (0≤i≤n)为结尾元素的最长递增子序列的长度,则数组a的最长递增子序列的长度为;其中b[i]满足最优子结构,可递归定义为:

【C代码】

下面是算法的C语言实现

(1)常量和变量说明

a:长度为n的整数数组,待求其最长递增子序列

b:长度为n的数组,b[i]记录以a[i](0≤i<n)为结尾元素的最长递增子序列的长度,其中0≤i<n

len:最长递增子序列的长度

i,j:循环变量

tmp:临时变量

(2)C程序

#include<stdio.h>

Int maxL(int*b,int n){

inti, temp=0;

for(i=0;i<n; i++){

if(b[i]> temp)

temp=b[i];

}

returntemp;

}

int main(){

intn, a[100],  b[100] ,  i,  j, len;

scanf(%"d", &n);

for(i=0; i<n;  i++){

scanf(%"d", &a[i]);

}

( 1)  ;

for(i=0; i<n; i++){

for(j=0, len=0;(2) ; j++){

if( (3)   &&len<b[j] )

len=b[i];

}

(4)   ;

}

printf("len:%d\n" ,  maxl(b,n));

printf("\n");

}

【问题1】(8分)

根据说明和C代码,填充C代码中的空(1)~(4)。

【问题2】(4分)

根据说明和C代码,算法采用了( 5 ) 设计策略,时间复杂度为( 6 )  (用O符号表示)

【问题3】(3分)

已知数组a={3,10,5,15,6,8},根据说明和C代码,给出数组b的元素值

面向对象程序设计样题【从试题五、六中任选一题】

试题五(共15分)

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

【说明】

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求到如图5-1所示的类图。

【C++代码】

class  Libraryvisitor;

class  LibraryItemInterface {

public:

1  ;

class Article : public LibraryItemInterface{

private:

string m_title;    //论文名

string m_ author ; //论文作者

int m_start_page;

intm_ end_ page;

Public:

Article ( string p_author , string p_title , intp_start_page , int p_end_page );

int   getNumber0fpages();

void accept ( Libraryvisitor * visitor ) ;

};

class Book : public  LibraryItemInterface {

private:

string m_title;         //书名

string m_author;       //作者

string m_pages;       //页数

public:

Book ( string p_author , string p_title,int p_pages );

intgetNumberOfpages ();

void accept ( libraryvisitor*visitor);

};

class Libraryvisitor{

public:

(2)  ;

(3)  ;

Virtual void printSum()=0;

};

class LibrarySumPrintVisitor : public

Libraryvisitor {  //打印总页数

Private:

intsum;

public:

LibrarySumPrintVisitor();

void visit ( Book * p_ book );

void visit ( Article * p_article ) ;

void printSum();

}

//visitor . cpp

int Article : :getNumberofpages ( ){

return m_end_page - m_start_page;

}

void Article : accept ( Libraryvisitor * visitor)

{ 4 ;}

Book : Book ( string p_author , string p_title , intp_pages){

m_title=p_title;

m_author=p_author;

m_pages=p_pages;

}

int Book::getNumberOfPages(){  return m_pages; }

void Book:accept( Libraryvisitor*visitor)

{  (5)  ; }   //其余代码省略

试题六(共15分)

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

【说明】

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求得到如图6-1所示的类图。

【Java  代码】

import  java . util.*;

interface  Libraryvisitor {

(1)  ;

(2)  ;

voidprintSum();

}

class LibrarySumPrintVisitor implements

Libraryvisitor {  //打印总页数

private int sum = 0;

public void visit(Book p_book){

sum = sum+ p_book . getnumberOfpages();

}

public void visit ( Article p_article){

sum = sum + p_article . getnumberOfPages ( );

}

public void printsum () {

system out printin (" SUM ="+ sum );

}

}

interface LibraryItemInterface {

(3) ;

}

class Article implements LibraryItemInterface{

private string m_title;       / / 论文名

private string m_author;    / / 论文作者

private int m_start_page

private Int m_end_page

public Article ( String p_author , Stringp _ title , int p_start_page , int p_end_page ){

m_title=p_title;

m_author=p_author;

m_start_page=p_start_page;

m_end_page-p_end_page;

}

public int getNumberOfPages(){

return m_end_page-m_statr_page;

}

public void accept (LibraryVisitor visitor){

(4)  ;

}

}

class Book implementsLibrarryItemInterface{

private  String m_title;   //书名

private  String m_author;   //书作者

private  int m_pages;       //页数

publicBook(String p_author,  String p_title,  int p_pages ){

m_title=p_title;

m_author=p_author;

m_pages=p_pages;

}

publicint getNumberOfPages(){

returnm_pages;

}

publicvoid accept(LibraryVisitor Visitor){

(5)  ;

}

}

软考软件设计师中级考试大纲(附题型举例)相关推荐

  1. 一个月过软考|软件设计师中级考试经验分享

    掌握好学习方法,中级一次必过. 基础情况:软考--计算机技术与软件专业资格(水平)考试.考试分为上午试题和下午试题,上午下午分数均在45分以上为合格.上午试题是75道选择题,一题一分:下午是案例分析题 ...

  2. 【软考-软件设计师】 考试大纲

    一.考试说明   1.考试要求:    (1) 掌握数据表示.算术和逻辑运算:    (2) 掌握相关的应用数学.离散数学的基础知识:    (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原 ...

  3. 软考---------软件设计师(中级)我的备考经历

    开头------我的碎碎念 转眼已经大三了,发现自己也没有考什么证书,计算机二级什么的作为一名计算机专业的感觉没有什么考的必要,因此没有去报名,后来为了创新学分,有直接报名了计算机三级的计算机网络,由 ...

  4. 计算机软件水平考试英语试题,计算机软考软件设计师英语试题及答案解析(3)

    计算机软考软件设计师英语试题及答案解析(3) 分类:软考 | 更新时间:2016-07-08| 来源:转载 ●The Semantic Web is a web of dat a There is l ...

  5. 2010软考软件设计师冲刺精选【专家压轴模拟•下】

    2010软考软件设计师冲刺精选[专家压轴模拟•下] 自测简介:       为迎战2010年软考,51CTO特邀请软考专家为网友出了一系列模拟冲刺题.其中包括网络规划设计师.网络工程师.网络管理员.软 ...

  6. 软考-软件设计师 笔记一(计算机组成与体系结构)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  7. 视频教程-2020软考软件设计师-上午真题解析视频课程-软考

    2020软考软件设计师-上午真题解析视频课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在<计 ...

  8. 视频教程-2020软考软件设计师下午案例分析视频培训课程-软考

    2020软考软件设计师下午案例分析视频培训课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在< ...

  9. 【软考-软件设计师】目录

    [软考-软件设计师] 软考中级-软件设计师 废话中 好像又到了软考季节,在此分享下我当时的笔记.... 当时本来是没想要考这个证的,但是看到周围同学好多去报名,所以... 我们的做法基本都是: 视频 ...

  10. java写exe程序实例_2012软考软件设计师辅导:利用JAVA执行本地EXE文件

    曾经为了这样一个需求找了很多资料,今天终于学习到了!如何利用java执行exe文件?使用java类Runtime,每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接. ...

最新文章

  1. V2V-PoseNet算法和应用详解(3D关节点估计领域)
  2. 计算机网络的定义分类性能指标,第1章 计算机网络基础
  3. 【新年礼物】pmcaff会员大放送!
  4. idea实现抽象类的所有抽象方法_深入理解Java的接口和抽象类
  5. ASP.NET Core 单元测试:如何 Mock HttpContext.Features.Get()
  6. python切换消息窗_用Python切换窗口
  7. 重磅!2021年考研国家线公布!
  8. PHP中基本符号及使用方法
  9. PoolTogether 奖池开奖一名用户赢得 43,760 美元,本金仅为 73 美元
  10. 爬取小说《重生之狂暴火法》 1~140章
  11. 我的编程学习日志(9)--交换A,B值得方法(相加,异或,swap函数)
  12. 海伯利安发布首个区块链红包RP
  13. 在VMware16中安装 Win10操作系统
  14. 需求与商业模式分析-6-五个课题
  15. python关键字匹配_python正则表达式同时匹配多个关键字(多关键字匹配)
  16. 项目记录——ANSYS Fluent入门翼型风洞模型计算
  17. 狂神——通过EasyExcel来操作Excel
  18. 如何在PCB中放置禁止触摸标志
  19. 【专栏集合】ConcurrentHashMap
  20. zzulioj:1168: 账单(指针专题)

热门文章

  1. oracle和plsqldev的安装,win7x64下成功安装ORACLE客户端和PLSQLDEV!
  2. 小米音箱蓝牙连不上_小米蓝牙音箱怎样 小米蓝牙音箱如何连接电脑
  3. 【软件开发规范五】《用户需求及规格说明书》
  4. 解决Excel 闪退问题(如果你最近装了visio的话点进来)
  5. 麻省理工18年春软件构造课程阅读15“相等”
  6. Shopee跨境电商开店高频问题解答
  7. IDEA设置代码背景豆沙色
  8. 【操作系统】代码实践:先来先服务调度算法(FCFS),短进程优先调度算法(SJF),高响应比优先调度算法(HRRN)
  9. 利用project编制进度计划
  10. 追溯计算机的本源,读电路与系统简史