下半年软考软件设计师试题下午题

合集下载

软考下午试题答案

软考下午试题答案

软考下午试题答案近年来,软件工程师的需求量逐渐增加,软考成为了衡量软件开发人员能力的重要指标。

下午试题作为软考的一部分,考查了考生在软件工程领域的知识和技能。

本文将为大家提供软考下午试题的参考答案,希望对考生有所帮助。

一、题型一:单项选择题1. A software development project is divided into iterations. Each iteration starts with a ____________ and ends with a _______.A) milestone, releaseB) release, milestoneC) milestone, deliveryD) delivery, milestone答案:C) milestone, delivery2. In the software development life cycle, the integration testing is performed after _________ testing and before _________ testing.A) unit, systemB) system, unitC) unit, acceptanceD) acceptance, unit答案:A) unit, system3. What is the primary purpose of version control in software configuration management?A) To track changes made to softwareB) To manage software development teamsC) To document software requirementsD) To review software defects答案:A) To track changes made to software二、题型二:简答题1. 请简述敏捷开发方法中Scrum的核心概念和流程。

下半年软件设计师下午试卷

下半年软件设计师下午试卷
系统提供了3种行驶卡。常规卡(RegularCard)有效期(Valid Period)为一年,可以在整个道路交通网内使用。季卡(SeasonCard)有效期为三个月,可以在整个道路交通网内使用。单次卡(MinitripCard)在指定的行程内使用,且只能使用一次。其中,季卡和单次卡都是预付卡(PrepaidCard),需要客户(Customer)预存一定的费用。
【说明】
Pay&Drive系统(开多少付多少)能够根据驾驶里程自动计算应付的费用。
系统中存储了特定区域的道路交通网的信息。道路交通网由若干个路段(Road Segment)构成,每个路段由两个地理坐标点(Node)标定,其里程数(Distance)是已知的。在某些地理坐标点上安装了访问控制(Access Control)设备,可以自动扫描行驶卡(Card)。行程(Trajectory)由一组连续的路段构成。行程的起点(Entry)和终点(Exit)都装有访问控制设备。
【问题3】(6分)
使用说明和图中的术语,给出图1-3中加工P1~P3的名称。
【问题4】(4分)
解释说明图1-2和图1-3是否保持平衡,若不平衡请按如下格式补充图1-3中数据流的名称以及数据流的起点或终点,使其平衡(使用说明中的术语或图中符号)。
数据流名称
起点
终点
试题二(共15分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
5.解答时字迹务必清楚,字迹不清时,将不评分。
6.仿照下面例题,将解答写在答题纸的对应栏内。
例题
2011年下半年全国计算机技术与软件专业技术资格(水平)考试日期是(1)月(2)日。
因为正确的解答是“11月12日”,故在答题纸的对应栏内写上“11”和“12”(参看下表)。

中级软件设计师下半下午试题附答案解析

中级软件设计师下半下午试题附答案解析

中级软件设计师下半下午试题附答案解析WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】试题一(15分)阅读下列说明和图,回答问题1至4,将答案填入答题纸的对应栏内。

【说明】某公司拟开发一个共享单车系统,采用北斗定位系统进行单车定位,提供针对用户的APP以及微信小程序,基于Web的管理与监控系统。

该共享单车系统的主要功能如下。

1)用户注册登录。

用户在APP段端输入手机号并获取验证码后进行注册,将用户信息进行存储。

用户登录后显示用户所在位置周围的单车。

2)使用单车。

①扫码/手动开锁。

通过扫描二维码或手动输入编码获取开锁密码,系统发送开锁指令进行开锁,系统修改单车状态,新建单车行程。

②骑行单车。

单车定时上传位置,更新行程。

③锁车结账。

用户停止使用或手动锁车并结束行程后,系统根据已设置好的计费规则及使用时间自动结算,更新本次骑行的费用并显示给用户,用户确认支付后,记录行程的支付状态,系统还将重置单车的开锁密码和单车状态。

3)辅助管理。

①查询。

用户可以查看行程列表和行程详细信息。

②保修。

用户上报所在位置或单车位置以及单车故障信息并进行记录。

4)管理与监控①单车管理及计费规则设置。

商家对单车基础信息,状态等进行管理,对计费规则进行设置并存储。

②单车监控。

对单车,故障,行程等进行查询统计。

③用户管理。

管理用户信用与状态信息,对用户进行查询统计。

现采用结构化方法对共享单车系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

【问题1】(3分)使用说明中的词语,给出图1-1中的实体E1~E3的名称。

【问题2】(5分)使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。

【问题3】(5分)根据说明和图中术语及符号,补充图1-2中缺失的数据流及其起点和终点。

【问题4】(2分)根据说明中术语,说明“使用单车”可以分解为那些子加工?试题二(共15分)阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

中级软件设计师下半年下午试题和答案

中级软件设计师下半年下午试题和答案
2021年下半年软件设计师考试下午真题
试题一(共15分)
阅读下列说明和图,回答问题l至问题4,将解答填入答题纸的对应栏内。
【说明】
某慕课教育平台欲添加在线作业批改系统,以实现高效的作业提交与批改,并进行统计。学生和讲师的大体信息已经初始化为数据库中的学生表和讲师表。系统的主要功能如下:
(1)提交作业。验证学生标识后,学生将电子作业通过在线的方式提交,并进行存储。系统给学生发送通知表明提交成功,通知中包括唯一编号;并通知讲师有作业提交。
caseNORMAL://正常收费
(2)
caseCASH;:RETURN//满30返100
(3)
Break;
caseCASHDISCOUNT://打八折
(4)
break;
}
}
doubleGetResult(double money) { (5)
}
};
//此处略去main()函数
试题六(共15分)
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
If((1)){
c[il[j] =c[i - l][j - i] + 1; if(max<c[il[j] {
(2):
maxi = i; maxj =j;
}
}
else(3);
}
}
retummax;
}
voidprintLCS(int max, char *x) { int i= 0;
if (max=0)retum;
②选择付款方式。ACShop支持信用卡付款和银行转账两种方式。注册客户可以从预先填写的信用卡或银行账号当选择一个付款。若没有付款方式信息,则可以添加新付款方式。

10-下半年-下午真题及参考答案

10-下半年-下午真题及参考答案

10-下半年-下午真题及参考答案-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN2010 年下半年软件设计师下午试卷试题一(共15 分)阅读以下说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】某时装邮购提供商拟开发订单处理系统,用于处理客户通过电话、传真、邮件或 Web站点所下订单。

其主要功能如下:(1)增加客户记录。

将新客户信息添加到客户文件,并分配一个客户号以备后续使用。

(2)查询商品信息。

接收客户提交商品信息请求,从商品文件中查询商品的价格和可订购数量等商品信息,返回给客户。

(3)增加订单记录。

根据客户的订购请求及该客户记录的相关信息,产生订单并添加到订单文件中。

(4)产生配货单。

根据订单记录产生配货单,并将配货单发送给仓库进行备货;备好货后,发送备货就绪通知。

如果现货不足,则需向供应商订货。

(5)准备发货单。

从订单文件中获取订单记录,从客户文件中获取客户记录,并产生发货单。

(6)发货。

当收到仓库发送的备货就绪通知后,根据发货单给客户发货;产生装运单并发送给客户。

(7)创建客户账单。

根据订单文件中的订单记录和客户文件中的客户记录,产生并发送客户账单,同时更新商品文件中的商品数量和订单文件中的订单状态。

(8)产生应收账户。

根据客户记录和订单文件中的订单信息,产生并发送给财务部门应收账户报表。

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

图1-1 顶层数据流图【问题 1】(3 分)使用说明中的词语,给出图1-1 中的实体E1~E3 的名称。

【问题 2】(3 分)使用说明中的词语,给出图1-2 中的数据存储D1~D3 的名称。

【问题 3】(9 分)(1)给出图1-2 中处理(加工)P1 和P2 的名称及其相应的输入、输出流。

(2)除加工P1 和P2 的输入输出流外,图1-2 还缺失了1条数据流,请给出其起点和终点。

下半年软件设计师下午试题以及标准答案

下半年软件设计师下午试题以及标准答案
};
class RemoteCo ntrol{ //遥控器
private:
Comma nd* on Comma nds[7];
Comma nd* offComma nds[7];
public:
RemoteCo ntrol() { /*代码省略*/ }
void setComma nd(i nt slot, Comma nd* on Comma nd. Comma nd* offComma nd) {
public void execute() {(2); }
}
class LightOffCommand implements Command { //关灯命令
关灯
//其余代码省略
}
(1){
public void execute。;
}
class LightOnCommand implements Command { //开灯命令
Light light;
public LightOnCommand(Light light) { this.light=light;}
(4)采购。根据所需原材料及库存量,确定采购数量,向供应商发送采购订单,并将其记录在采购订 单表中;得到供应商的供应量,将原材料数量记录在库存表中,在采购订单表中标记已完成采购的订单。
(5)运送。根据销售订单将披萨交付给客户,并记录在交付记录表中。
(6)财务管理。在披萨交付后,为客户开具费用清单,收款并岀具收据;依据完成的采购订单给供应 商支付原材料费用并岀具支付细节;将收款和支付记录存入收支记录表中。
令)模式实现该遥控器的软件部分。Command模式的类图如图1-1所示。
图1-1 Command模式类图

2021年下半年软件设计师下午试卷及答案

2021年下半年软件设计师下午试卷及答案试题一(共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.部门信息主要包括:部门号、部门名称、部门负责人、电话等信息;一个员工只能属于一个部门,一个部门只有一位负责人。

2023年下半年软件设计师下午真题试卷

2023年下六个月软件设计师下午试卷试题一(共15分)阅读下列阐明,回答问题l至问题4,将解答填入答题纸旳对应栏内。

【阐明】某证券交易所为了以便提供证券交易服务,欲开发一证券交易平台,该平台旳重要功能如下:(1)开户。

根据客户服务助理提交旳开户信息,进行开户,并将客户信息存入客户记录中,账户信息(余额等)存入账户记录中;(2)存款。

客户可以向其账户中存款,根据存款金额修改账户余额;(3)取款。

客户可以从其账户中取款,根据取款金额修改账户余额;(4)证券交易。

客户和经纪人均可以进行证券交易(客户通过在线方式,经纪人通过),将交易信息存入交易记录中;(5)检查交易。

平台从交易记录中读取交易信息,将交易明细返回给客户。

现采用构造化措施对该证券交易平台进行分析与设计,获得如图1-1所示旳上下文数一据流图和图1-2所示旳O层数据流图。

图1-1所示旳上下文数一据流图图1-2所示旳O层数据流图【问题1](3分)使用阐明中旳词语,给出图1-1中旳实体E1-E3旳名称。

【问题2】(3分)使用阐明中旳词语,给出图1-2中旳数据存储D1-D3旳名称。

【问题3】(4分)根听阐明和图中旳术语,补充图1-2中缺失旳数据流及其起点和终点。

【问题4】(5分)实际旳证券交易一般是在证券交易中心完毕旳,因此,该平台旳“证券交易”功能需将交易信息传递给证券交易中心。

针对这个功能需求,需要对图1-1和图1-2进行哪些修改,请用200字以内旳文字加以阐明。

1。

答案解析参照答案:问题1 E1:客户服务助理,E2:客户,E3:经纪人。

问题2 D1:客户记录,D2:账户记录,D3:交易记录。

问题3数据流名称:修改账户余额,起点:存款,终点:D2。

数据流名称:修改账户余额,起点:取款,终点:D2。

数据流名称:交易信息存入交易记录(在线),起点:证券交易(在线),终点:D3。

数据流名称:交易信息存入交易记录( ),起点:证券交易( ),终点:D3。

最新中级软件设计师下半年下午试题附答案解析资料

试题一(15分)阅读下列说明和图,回答问题1至4,将答案填入答题纸的对应栏内。

【说明】某公司拟开发一个共享单车系统,采用北斗定位系统进行单车定位,提供针对用户的APP以及微信小程序,基于Web的管理与监控系统。

该共享单车系统的主要功能如下。

1)用户注册登录。

用户在APP段端输入手机号并获取验证码后进行注册,将用户信息进行存储。

用户登录后显示用户所在位置周围的单车。

2)使用单车。

①扫码/手动开锁。

通过扫描二维码或手动输入编码获取开锁密码,系统发送开锁指令进行开锁,系统修改单车状态,新建单车行程。

②骑行单车。

单车定时上传位置,更新行程。

③锁车结账。

用户停止使用或手动锁车并结束行程后,系统根据已设置好的计费规则及使用时间自动结算,更新本次骑行的费用并显示给用户,用户确认支付后,记录行程的支付状态,系统还将重置单车的开锁密码和单车状态。

3)辅助管理。

①查询。

用户可以查看行程列表和行程详细信息。

②保修。

用户上报所在位置或单车位置以及单车故障信息并进行记录。

4)管理与监控①单车管理及计费规则设置。

商家对单车基础信息,状态等进行管理,对计费规则进行设置并存储。

②单车监控。

对单车,故障,行程等进行查询统计。

③用户管理。

管理用户信用与状态信息,对用户进行查询统计。

现采用结构化方法对共享单车系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

【问题1】(3分)使用说明中的词语,给出图1-1中的实体E1~E3的名称。

【问题2】(5分)使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。

【问题3】(5分)根据说明和图中术语及符号,补充图1-2中缺失的数据流及其起点和终点。

【问题4】(2分)根据说明中术语,说明“使用单车”可以分解为那些子加工?试题二(共15分)阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】M公司为了便于开展和管理各项业务活动,提高公司的知名度和影响力,拟构建一个基于网络的会议策划系统。

中级软件设计师下半年下午试题附答案解析完整版

中级软件设计师下半年下午试题附答案解析 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】试题一(15分)阅读下列说明和图,回答问题1至4,将答案填入答题纸的对应栏内。

【说明】某公司拟开发一个共享单车系统,采用北斗定位系统进行单车定位,提供针对用户的APP以及微信小程序,基于Web的管理与监控系统。

该共享单车系统的主要功能如下。

1)用户注册登录。

用户在APP段端输入手机号并获取验证码后进行注册,将用户信息进行存储。

用户登录后显示用户所在位置周围的单车。

2)使用单车。

①扫码/手动开锁。

通过扫描二维码或手动输入编码获取开锁密码,系统发送开锁指令进行开锁,系统修改单车状态,新建单车行程。

②骑行单车。

单车定时上传位置,更新行程。

③锁车结账。

用户停止使用或手动锁车并结束行程后,系统根据已设置好的计费规则及使用时间自动结算,更新本次骑行的费用并显示给用户,用户确认支付后,记录行程的支付状态,系统还将重置单车的开锁密码和单车状态。

3)辅助管理。

①查询。

用户可以查看行程列表和行程详细信息。

②保修。

用户上报所在位置或单车位置以及单车故障信息并进行记录。

4)管理与监控①单车管理及计费规则设置。

商家对单车基础信息,状态等进行管理,对计费规则进行设置并存储。

②单车监控。

对单车,故障,行程等进行查询统计。

③用户管理。

管理用户信用与状态信息,对用户进行查询统计。

现采用结构化方法对共享单车系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

【问题1】(3分)使用说明中的词语,给出图1-1中的实体E1~E3的名称。

【问题2】(5分)使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。

【问题3】(5分)根据说明和图中术语及符号,补充图1-2中缺失的数据流及其起点和终点。

【问题4】(2分)根据说明中术语,说明“使用单车”可以分解为那些子加工?试题二(共15分)阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全国计算机技术与软件专业技术资格(水平)考试2007年下半年软件设计师下午试卷(考试时间14:00~16:30 共150分钟)1.在答题纸的指定位置填写你所在的省、自治区、直辖市、计划单列市的名称。

2.在答题纸的指定位置填写准考证号、出生年月日和姓名。

3.答题纸上除填写上述内容外只能写解答。

4.本试卷共7道题,试题一至试题四是必答题,试题五至试题七选答1道。

每题15分,满分75分。

5.解答时字迹务必清楚,字迹不清时,将不评分。

6.仿照下面例题,将解答写在答题纸的对应栏内。

例题2007年下半年全国计算机技术与软件专业技术资格(水平)考试日期是(1)月(2)日。

因为正确的解答是“11月3日”,故在答题纸的对应栏内写上“11”和“3”(参看下表)。

试题一(共15分)阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。

课程结束后进行期末考试,其成绩作为这门课程的考试成绩。

2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。

3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。

首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。

4. 对于有效成绩,系统将其保存在课程成绩文件中。

对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。

在教务处没有给出具体处理意见之前,系统不会处理这些成绩。

5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。

教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。

6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。

主讲教师须将核对之后的成绩报告返还系统。

7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。

考试委员会在审查之后,上交一份成绩审查结果给系统。

对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。

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

图1-1 顶层数据流图图1-2 0层数据流图【问题1】(4分)使用说明中的词语,给出图1-1中的外部实体E1~E4的名称。

【问题2】(3分)使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。

【问题3】(6分)数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,分别指出这【问题4】(2分)数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流程图也是软件开发过程中比较常用的图形化工具。

简要说明程序流程图的适用场合与作用。

试题二(15分)阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】某汽车维修站拟开发一套小型汽车维修管理系统,对车辆的维修情况进行管理。

1.对于新客户及车辆,汽车维修管理系统首先登记客户信息,包括:客户编号、客户名称、客户性质(个人、单位)、折扣率、联系人、联系电话等信息;还要记录客户的车辆信息,包括:车牌号、车型、颜色等信息。

一个客户至少有一台车。

客户及车辆信息如表2-1所示。

2.记录维修车辆的故障信息。

包括:维修类型(普通、加急)、作业分类(大、中、小修)、结算方式(自付、三包、索赔)等信息。

维修厂的员工分为:维修员和业务员。

车辆维修首先委托给业务员。

业务员对车辆进行检查和故障分析后,与客户磋商,确定故障现象,生成维修委托书。

如表2-2所示。

表2-2 维修委托书No.20070702003 登记日期:2007-07-023.维修车间根据维修委托书和车辆的故障现象,在已有的维修项目中选择并确定一个或多个具体维修项目,安排相关的维修工及工时,生成维修派工单。

维修派工单如表2-3所示。

表2-3 维修派工单4.客户车辆在车间修理完毕后,根据维修项目单价和维修派工单中的工时计算车辆此次维修的总费用,记录在委托书中。

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

图2-1中业务员和维修工是员工的子实体。

【概念结构设计】图2-1 实体联系图【逻辑结构设计】客户( (5) ,折扣率,联系人,联系电话)车辆(车牌号,客户编号,车型,颜色,车辆类别)委托书( (6) ,维修类型,作业分类,结算方式,进厂时间,预计完工时间,登记日期,故障描述,总费用)维修项目(维修项目编号,维修项目,单价)派工单( (7) ,工时)员工( (8) ,工种,员工类型,级别)【问题1】(4分)根据问题描述,填写图2-1中(1)~(4)处联系的类型。

联系类型分为一对一、一对多和多对多三种,分别使用1 : 1,1 : n 或1 : *,m : n 或* : *表示。

【问题2】(4分)补充图2-1中的联系并指明其联系类型。

联系名可为:联系1,联系2,…。

【问题3】(4分)根据图2-1和说明,将逻辑结构设计阶段生成的关系模式中的空(5)~(8)补充完整。

【问题4】(3分)根据问题描述,写出客户、委托书和派工单这三个关系的主键。

试题三(共15分)阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。

连接电脑的过程中还可自动完成充电。

关于唱片,还有以下描述信息:1.每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。

只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。

艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。

一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。

2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。

3. 每条音轨都有一个开始位置和持续时间。

一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么(如果存在的话)。

根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表3-1所示的类列表、如图3-1所示的初始类图以及如图3-2所示的描述播放器行为的UML状态图。

表3-1 类列表图3-2 播放器行为UML状态图【问题1】(3分)根据说明中的描述,使用表3-1给出的类的名称,给出图3-1中的A~F所对应的类。

【问题2】(6分)根据说明中的描述,给出图3-1中(1)~(6)处的多重度。

【问题3】(4分)图【问题4根据图3-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的)。

试题四(共15分)阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】某机器上需要处理n个作业job1, job2, …, job n,其中:(1) 每个作业job i(1≤i≤n)的编号为i,job i有一个收益值p[i]和最后期限值d[i];(2) 机器在一个时刻只能处理一个作业,而且每个作业需要一个单位时间进行处理,一旦作业开始就不可中断,每个作业的最后期限值为单位时间的正整数倍;(3) job1~job n的收益值呈非递增顺序排列,即p[1]≥p[2]≥…≥p[n];(4) 如果作业job i在其期限之内完成,则获得收益p[i];如果在其期限之后完成,则没有收益。

为获得较高的收益,采用贪心策略求解在期限之内完成的作业序列。

图4-1是基于贪心策略求解该问题的流程图。

(1) 整型数组J[]有n个存储单元,变量k表示在期限之内完成的作业数,J[1..k]存储所有能够在期限内完成的作业编号,数组J[1..k]里的作业按其最后期限非递减排序,即d[J[1]]≤…≤d[J[k]]。

(2) 为了方便于在数组J中加入作业,增加一个虚拟作业job0,并令d[0] = 0,J[0] = 0。

(3) 算法大致思想:先将作业job1的编号1放入J[1],然后,依次对每个作业job i (2≤i≤n)进行判定,看其能否插入到数组J中,若能,则将其编号插入到数组J的适当位置,并保证J中作业按其最后期限非递减排列,否则不插入。

job i能插入数组J的充要条件是:job i和数组J中已有作业均能在其期限之内完成。

(4) 流程图中的主要变量说明如下:i:循环控制变量,表示作业的编号;k:表示在期限内完成的作业数;r:若job i能插入数组J,则其在数组J中的位置为r+1;q:循环控制变量,用于移动数组J中的元素。

图4-1 贪心策略流程图【问题1】(9分)请填充图4-1中的空缺(1)、(2)和(3)处。

【问题2】(4分)假设有6个作业job1, job2, …, job6;完成作业的收益数组p=(p[1],p[2],p[3],p[4],p[5],p[6]) = (90,80,50,30,20,10);每个作业的处理期限数组d=(d[1],d[2],d[3],d[4],d[5],d[6]) = (1,2,1,3,4,3)。

请应用试题中描述的贪心策略算法,给出在期限之内处理的作业编号序列 (4) (按作业处理的顺序给出),得到的总收益为 (5) 。

【问题3】(2分)对于本题的作业处理问题,用图4-1的贪心算法策略,能否求得最高收益? (6) 。

用贪心算法求解任意给定问题时,是否一定能得到最优解? (7) 。

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

【说明】在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape_t、point_t 和circle_t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。

[C代码]typedef enum { point,circle } shape_type; /* 程序中的两种图形:点和圆*/typedef struct { /* 基本的图形类型*/shape_type type; /* 图形种类标识:点或者圆*/void (*destroy)(); /* 销毁图形操作的函数指针*/void (*draw)(); /* 绘制图形操作的函数指针*/} shape_t;typedef struct { shape_t common; int x; int y; } point_t; /* 定义点类型,x、y为点坐标*/ void destroyPoint(point_t* this) { free(this); printf("Point destoryed!\n"); } /* 销毁点对象*/ void drawPoint(point_t* this) { printf("P(%d,%d)", this->x, this->y); } /* 绘制点对象*/ shape_t* createPoint(va_list* ap) { /* 创建点对象,并设置其属性*/point_t* p_point;if( (p_point = (point_t*)malloc(sizeof(point_t))) == NULL ) return NULL;p_point->common.type = point; p_point->common.destroy = destroyPoint;p_point->common.draw = drawPoint;p_point->x = va_arg(*ap, int); /* 设置点的横坐标*/p_point->y = va_arg(*ap, int); /* 设置点的纵坐标*/return (shape_t*)p_point; /* 返回点对象指针*/}typedef struct { /* 定义圆类型*/shape_t common;point_t *center; /* 圆心点*/int radius; /* 圆半径*/} circle_t;void destroyCircle(circle_t* this){free( (1)); free(this); printf("Circle destoryed!\n");}void drawCircle(circle_t* this) {printf("C(");(2).draw( this->center ); /* 绘制圆心*/printf(",%d)", this->radius);}shape_t* createCircle(va_list* ap) { /* 创建一个圆,并设置其属性*/circle_t* p_circle;if( (p_circle = (circle_t*)malloc(sizeof(circle_t))) == NULL ) return NULL;p_circle->common.type = circle; p_circle->common.destroy = destroyCircle;p_circle->common.draw = drawCircle;(3)= createPoint(ap); /* 设置圆心*/p_circle->radius = va_arg(*ap, int); /* 设置圆半径*/return p_circle;}shape_t* createShape(shape_type st, ...) { /* 创建某一种具体的图形*/va_list ap; /* 可变参数列表*/shape_t* p_shape = NULL;(4)(ap, st);if( st == point ) p_shape = createPoint( &ap); /* 创建点对象*/if( st == circle ) p_shape = createCircle(&ap); /* 创建圆对象*/va_end(ap);return p_shape;}int main( ) {int i; /* 循环控制变量,用于循环计数*/shape_t* shapes[2]; /* 图形指针数组,存储图形的地址*/shapes[0] = createShape( point, 2, 3); /* 横坐标为2,纵坐标为3 */shapes[1] = createShape( circle, 20, 40, 10); /* 圆心坐标(20,40),半径为10 */for(i=0; i<2; i++) { shapes[i]->draw(shapes[i]); printf("\n"); } /* 绘制数组中图形*/ for( i = 1; i >= 0; i-- ) shapes[i]->destroy(shapes[i]); /* 销毁数组中图形*/ return 0;}[运行结果]P(2,3)(5)Circle destoryed!Point destoryed!试题六(共15分)阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。

相关文档
最新文档