2024年中级软件设计师上半年下午试题和答案解析_第1页
2024年中级软件设计师上半年下午试题和答案解析_第2页
2024年中级软件设计师上半年下午试题和答案解析_第3页
2024年中级软件设计师上半年下午试题和答案解析_第4页
2024年中级软件设计师上半年下午试题和答案解析_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

试題壹(15分)阅讀下列阐明和图,回答問題1至問題4。某醫疗器械企业作為复杂醫疗产品的集成商,必须保持高质量部件的及時供应。為了实現這壹目的,该企业欲開发壹采购系统。系统的重要功能如下:1.检查库存水平。采购部门每天检查部件库存量,當特定部件的库存量降至其订货點時,返回低存量部件及库存量。2.下达采购订單。采购部门针對低存量部件及库存量提交采购祈求,向其供应商(通過供应商文献访問供应商数据)下达采购订單,并存储于采购订單文献中。3.交运部件。當供应商提交提單并交运部件時,运送和接受(S/R)部门通過执行如下三步過程接受货品:(1)验证装运部件。通過访問采购订單并将其与提單進行比较来验证装运的部件,并将提單信息发給S/R职工。假如收货部件项目出目前采购订單和提單上,则已验证的提單和收货部件项目将被送去检查。否则,将S/R职工提交的装运錯误信息生成装运錯误告知发送給供应商。(2)检查部件质量。通過访問质量原则来检查装运部件的质量,并将已验证的提單发給检查员。假如部件满足所有质量原则,则将其添加到接受的部件列表用于更新部件库存。假如部件未通過检查,则将检查员创立的缺陷装运信息生成缺陷装运告知发送給供应商。(3)更新部件库存。库管员根据收到的接受的部件列表添加本次采购数量,与原有库存量累加来更新库存部件中的库存量。標识订單采购完毕。現采用构造化措施對该采购系统進行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。1-1上下文数据流图1-20层数据流图1使用阐明中的詞語,給出图1-1中的实体E1~E5(5分)2使用阐明中的詞語,給出图1-2中的数据存储D1~D4的名称。(4分)3根听阐明和图中术語,补充图1-2中缺失的数据流及其起點和终點。(4分)4用200字以内文字,阐明建模图1-1和图1-2時怎样保持数据流图(2分)试題二(15)1至問題3,将解答填入答題紙的對应栏内。某房屋租赁企业拟開发壹种管理系统用于管理其持有的房屋、租客及员工信息。請根据下述需求描述完毕系统的数据库设计。

【需求描述】1、企业拥有多幢公寓楼,每幢公寓楼有唯壹的楼编号和地址。每幢公寓楼中有(不壹样公寓楼内的公寓号可相似)。系统需记录每套公寓的卧室数和卫生间数。2、员工和租客在系统中有唯壹的编号(员工编号和租客编号)。3、對于每個租客,系统需记录姓名、多种联络電话、壹种银行账号(以便自動扣房租)、壹种紧急联络人的姓名及联络電话。4、系统需记录每個员工的姓名、壹种联络電话和月工资。员工类别可以是經理或维修工,也可兼任。每個經理可以管理多幢公寓楼。每幢公寓楼必须由壹种經理管理。系统需记录每個维修工的业务技能,例如:水暖维修,電工,木工等。5、租客租赁公寓必须和企业签订租赁协议。壹份租赁协议壹般由壹种或多种租客(合租)与该公寓楼的經理签订,壹种租客也可租赁多套公寓。协议内容应包括签订曰期,開始時间,租期,押金和月租金。【概念模型设计】根据需求阶段搜集的信息,设计的实体联络图(不完整)如图2-1所示。【逻辑构造设计】根据概念模型设计阶段完毕的实体联络图,得出如下关系模式(不完整):联络電话(電话号码,租客编号)租客(租客编号,姓名,银行账户,联络人姓名,联络人電话)员工(员工编号,姓名,联络電话,类别,月工资,(a))公寓楼((b),地址,經理编号)公寓(楼编号,公寓号,卧室数,卫生间数)协议(协议编号,租客编号,楼编号,公寓号,經理编号,签订曰期,起始曰期,(c),押金)1补充图2-1中的“签约”联络所关联的实体及联络类型。(4.5分)2补充逻辑构造设计中的(a)、(b)、(c)三处空缺。(4.5分)3在租期内,公寓内设施如出現問題,租客可在系统中進行故障登记,填写故障描述,每项故障由系统自動生成唯壹的故障编号,由企业派维修工進行故障维修,系统需记录每次维修的维修曰期和维修内容。根据此需求,對图2-1進行补充,并将所补充的ER图内容转换為壹种关系模式,請給出该关系模式。试題三(15分)1至問題3,将解答填入答題紙的對应栏内。某玩具企业正在開发壹套電動玩具在线销售系统,用于向注册會员提供端到端的玩具定制和销售服务。在系统设计阶段,"创立新订單(NewOrder)"的设计用例详细描述如表3-1所示,候选设计类分类如表3-2所示,并根据该用例设计出部分类图如图3-1所示。表3-1创立新订單(NewOrder)设计用例用例名称创立新订單NewOrder用例编号ETM-R002参与者會员前提条件會员已經注册并成功登录系统經典事件流1.會员(C1)點击“新的订單”按钮;2.系统列出所有正在销售的電動玩具清單及价格(C2)3.會员點击复选框选择所需電動玩具并输入對应数量,點击“結算”按钮;4.系统自動计算總价(C3),显示销售清單和會员预先设置個人资料的收货地址和支付方式(C4);5.會员點击“确认支付”按钮;6.系统自動调用支付系统(C5)接口支付该账單;7.若支付系统返回成功標识,系统生成完整订單信C6)中;8.系统将以表格形式显示完整订單信息(C7),同(C8)至會员预先配置的邮C9)。候选事件流3a(1)會员點击“定制”按钮;(2)系统以列表形式显示所有可以定制的電動玩具清單和定制属性(如尺寸、颜色等)(C10);(3)會员點击單项选择按钮选择所需要定制的電動點击“結算”4)回到环节4。7a(1)若支付系统返回失败標识,系统显示會员目前默认支付方式(C11)让會员确认;(2)若會员點击“修改付款”按钮,调用“修改付款”用例,可以新增并存储為默认支付方式C12),回到环节4;(3若會员點击“取消订單”,则该用例终止执3-2候选设计类分类Interface,负责系统与顾客之间的(a)Control,负责业务逻辑的处理)(b)Entity,负责持久化数据的存储)(c)在订單处理的過程中,會员可以點击“取消订單"取消该订單。假如支付失败,该订單将被標识為挂起状态,可後续重新支付,假如挂起超時30分钟未支付,系统将自動取消该订單。订單支付成功後,系统判断订單类型:(1)對于常规订單,標识為备货状态,订單信息发送到货运部,完毕打包後交付;快递发货(2)對于定制定單,會自動進入定制状态,定制完毕後交付快递发货。會员在系统中點击”收货"按钮变為收货状态,結束整個订單的处理流程。根据订單处理過程所设计的状态图如图3-2所示。1根据表3-1中所標识的候选设计类,請按照其类别将编号C1~C12分别填入3-2中的(a)、(b)和(c)处。(6分)2根据创立新订單的用例描述,請給出图3-1中X1~X4处對应类的名称。(4分)3根据订單处理過程的描述,在图3-2中S1~S5处分别填入對应的状态名称。(5分)试題四:C代码,回答問題1至問題3,将解答写在答題紙的對应栏内。假币問題n枚硬币,其中有壹枚是假币,已知假币的重量较轻。現現只有壹种天平,规定用尽量少的比较次数找出這枚假币。

【分析問題】

将n枚硬币提成相等的两部分:

(1)當n為偶数時,将前後两部分,即1...n/2和n/2+1...n,放在天平的两端,较轻的壹端裏有假币,继续在较轻的這部分硬币中用同样的措施找出假币:

(2)當n為奇数時,将前後两部分,即1..(n-1)/2和(n+1)/2+1...n,放在天平的两端,较轻的壹端裏有假币,继续在较轻的這部分硬币中用同样的措施找出假币:若两端重量相等,则中间的硬币,即第(n+1)/2枚硬币是假币。【C代码】下面是算法的C語言实現,其中:

coins[]:硬币数组

first,last:目前考虑的硬币数组中的第壹种和最终壹种下標

#include<stdio.h>

intgetCounterfeitCoin(intcoins[],intfirst,intlast)

{intfirstSum=0,lastSum=0;inti;

if(first==last-1){/*只剩两枚硬币*/if(coins[first]<coins[last])

returnfirst;

returnlast;

}

if((last-first+1)%2=0){ /*偶数枚硬币*/for(i=first;i<(1);i++){

firstSum+=coins[i];

}

for(i=first+(last-first)/2+1;i<last+1;i++){

lastSum+=coins[i];

}

if( (2) ){

ReturngetCounterfeitCoin(coins,first,first+(last-first)/2;)

}else{ReturngetCounterfeitCoin(coins,first+(last-first)/2+1,last;)

}}

else{ /*奇数枚硬币*/

for(i=first;i<first+(last-first)/2;i++){

firstSum+=coins[i];

}

for(i=first+(last-first)/2+1;i<last+1;i++){

lastSum+=coins[i];

}if(firstSum<lastSum){

returngetCounterfeitCoin(coins,first,first+(last-first)/2-1);

}elseif(firstSum>lastSum){

returngetCounterfeitCoin(coins,first+(last-first)/2-1,last);

}else{

return(3)

}

}}1根据題干阐明,填充C代码中的空(1)-(3)2根据題干阐明和C代码,算法采用了()设计方略。函数getCounterfeitCoin的時间复杂度為()(用O表达)。3若输入的硬币数為30,则至少的比较次数為(),最多的比较次数為()。试題五(共15分)(請從试題五、试題六中选答壹題)

阅讀下列阐明和C++代码,将应填入(n)处的字句写在答題紙的對应栏内。

某快餐厅重要制作并发售小朋友套餐,壹般包括主餐(各类比萨)、饮料和玩具,其餐品种类也許不壹样,但其制作過程相似。前台服务员(Waiter)调度厨師制作套餐。現采用生成器(Builder)模式实現制作過程,得到如图5-1所示的类图。图5-1l类图【C++代码】

#include<iostream>

#include<string>

usingnamespacestd;

classPizza{

private:stringparts;

public:

voidsetParts(stringparts){this->parts=parts;}

stringgetParts(){returnparts;}

};

classPizzaBuilder{

protected:Pizza*pizza;

public:

Pizza*getPizza(){retumpizza;}

voidcreateNewPizza(){pizza=newPizza();}

(1);

}

classHawaiianPizzaBuilder:publicPizzaBuilder{

public:

voidbuildParts(){

pizza->setParts("cross+mild+ham&pineapple");

}

}

classSpicyPizzaBuider:publicPizzaBuilder{

public:

voidbuildParts(){

pizza->setParts("panbaked+hot+ham&pineapple");

}

}

ClassWaiter{

Private:

PizzaBuilder*pizzaBuilder;

public:

voidsetPizzaBuilder(PizzaBuilder*pizzaBuilder){/*设置构建器*/

(2)

}

Pizza*getPizza(){returnpizzaBuilder->getPizza();}

voidconstruct(){/*构建*/

pizzaBuilder->createNewPizza();

(3)

}

};

intmain(){

Waiter*waiter=newWaiter();

PizzaBuilder*hawaiianpizzabuilder=new

HawaiianPizzaBuilder()

(4);

(5);

cout<<"pizza:"<<waiter->getPizza()->getParts()<<endl;

}

程序的输出成果為:

pizza:cross+mild+ham&pineapple试題六(共15分)

阅讀下列阐明和Java代码,将应填入(n)处的字句写在答題紙的對应栏内。

某快餐厅重要制作并发售小朋友套餐,壹般包括主餐(各类比萨)、饮料和玩具,其餐品种类也許不壹样,但其制作過程相似。前台服务员(Waiter)调度厨師制作套餐。現采用生成器(Builder)模式实現制作過程,得到如图6-1所示的类图。6-1类图【Java代码】

classPizza{

privateStringparts;

publicvoidsetParts(Stringparts){

this.parts=parts;

}

publicStringtoString(){

returnthis.parts;

}

}

abstractclassPizzaBuilder{

protectedPizzapizza;

publicPizzagetPizza(){returnpizza;}

publicvoidcreateNewPizza(){pizza=newPizza();}

public(1);

}

classHawaiianPizzaBuilderextendsPizzaBuilder{

publicvoidbuildParts(){

pizza.setParts("cross+mild+ham&pineapp1e”);

}

}

classSpicyPizzaBuilderextendsPizzaBuilder{

publicvoidbuildParts(){

pizza.setParts("panbaked+hot+pepperoni&salami");

}

}

classWaiter{

privatePizzaBuilderpizzaBuilder;

publicvoidsetPizzaBuilder(PizzaBuilderpizzaBuilder){/*设置构建器*/

(2);

}

publicPizzagetPizza(){returnpizzaBuilder.getPizza();}

publicvoidconstruct(){/*构建*/

pizzaBuilder.createNewPizza();

(3);

}}

ClassFastFoodOrdering{publicstaticviodmainSting[]args){

Waiterwaiter=newWaiter();

PizzaBuilderhawaiian_pizzabuilder=newHawaiianPizzaBuilder();

(4);

(5);

System.out.println("pizza:"+waiter.getPizza());

}

}

程序的输出成果為:

Pizza:cross+mild+ham&pineapple试題壹答案解析:1:E1供应商E2采购部门E3检查员E4库管员E5职工2:D1库存表D2采购订單表D3质量原则表D4供应商表3: P3(验证装运部件)-----E1(客户) P4(校验部件质量)-----E1(客户)P3(验证装运部件)------P4(校验部件质量) P1(检查库存水平)-----D1(库存表)4:父图中某個加工的输入输出数据流必须与其子图的输入输出数据流在数量上和内容上保持壹致,即数据不會凭空产生,也不能凭空消失。父图的壹种输入(或输出)数据流应對应子图中几种输入(或输出)数据流,而子图中构成的這些数据流的数据项全体恰好是父图中的這個数据流。试題二答案解析:12 a)业务技能b)楼编号c)月租金3 新增维修关系,维修工维修公寓,关系模式為维修状况

维修状况(故障编号,员工编号,楼编号,公寓号,维修曰期,维修内容)试題三答案解析:a):C4、C5、C7、C8、C10、C11b):C3c):C1、C2、C6、C9、C12壹、实体类

实体类是用于對必须存储的信息和有关行為建模的类。实体對象(实体类的实例)用于保留和更新某些現象的有关信息,例如:事件、人员或者某些現实生活中的對象。实体类壹般都是永久性的,它們所具有的属性和关系是長期需要的,有時甚至在系统的整個生存期都需要。

二、边界类

边界类是系统内部与系统外部的业务主角之间進行交互建模的类。边界类依赖于系统外部的环境,例如业务主角的操作习惯、外部的条件的限制等。它或者是系统為业务主角操作提供的壹种GUI,或者系统与其他的系统之间進行壹种交互的接口,因此當外部的GUI变化時,或者是通信协议有变化時,只需要修改边界类就可以了,不用再去修改控制类和实体类。业务主角通過它来与控制對象交互,实現用例的任务。边界类调用用例内的控制类對象,進行有关的操作。壹种系统也許會有多种边界类:

顾客界面类-协助与系统顾客進行通信的类

系统接口类-协助与其他系统進行通信的类

设备接口类-為用来监测外部事件的设备(如传感器)提供接口的类

三、控制类

控制类用于對壹种或几种用例所特有的控制行為進行建模,它描述的用例的业务逻辑的实現,控制类的设计与用例实既有著很大的关系。在有些状况下,壹种用例也許對应多种控制类對象,或在壹种控制类對象中對应著對個用例。它們之间没有固定的對应关系,而是根据详细状况進行分析判断,控制类有效将业务逻辑独立于实体数据和边界控制,专注于处理业务逻辑,控制类會将特有的操作和实体类分离,者有助于实体类的统壹化和提高复用性。當业务主角通過边界类来执行用例的時候,产生壹种控制类對象,在用例被执行完後,控制类對象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论