2026上半年软件设计师《应用技术》考试真题及答案_第1页
2026上半年软件设计师《应用技术》考试真题及答案_第2页
2026上半年软件设计师《应用技术》考试真题及答案_第3页
2026上半年软件设计师《应用技术》考试真题及答案_第4页
2026上半年软件设计师《应用技术》考试真题及答案_第5页
已阅读5页,还剩22页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2026上半年软件设计师《应用技术》考试真题及答案试题一(共15分)阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】某社区生鲜电商平台拟开发线上订单管理系统,主要功能描述如下:1.会员管理:用户提交注册/个人信息修改申请,系统验证信息格式与合法性,若信息合法则保存会员信息,生成会员账号返回给用户;若信息不合法则返回错误提示给用户。2.商品维护:平台运营人员录入或修改生鲜商品信息,商品信息包括商品ID、商品名称、分类、单价、库存余量、产地、上架状态,系统验证信息完整性后保存更新商品信息。3.订单生成:会员将选中商品加入购物车后确认下单,系统验证会员有效身份,计算订单总金额,计算规则为:总金额=商品单价×购买数量之和+配送费,订单满39元免5元配送费,计算完成后锁定对应商品的库存,生成订单记录返回给会员。4.订单支付:会员完成支付后,系统更新订单状态为“已支付”,生成配送任务发送给配送端。5.库存更新:配送员完成配送确认后,系统扣减对应商品的已售库存,更新库存余量。现采用结构化方法对该系统进行分析与设计,获得顶层数据流图(DFD)和0层数据流图。【问题1】(4分)顶层DFD中缺失2条数据流,请给出这两条数据流的起点和终点。【问题2】(3分)0层DFD中的数据存储为D1~D3,根据说明给出三个数据存储的名称。【问题3】(4分)根据说明,列出加工“订单生成”的所有输入数据流和输出数据流。【问题4】(4分)平台拟新增功能“退换货处理”:会员对已完成配送的订单提交退换货申请,运营人员审核申请,审核通过后为会员退还货款,恢复对应商品的库存。请说明新增该功能后,是否需要新增外部实体?新增加工有哪些?需要新增哪些与数据存储的交互数据流?【试题一答案】【问题1】缺失的两条数据流分别为:1.起点:订单管理系统,终点:用户,内容:错误提示;2.起点:配送端,终点:订单管理系统,内容:配送完成通知;(每条2分,共4分)【问题2】D1:会员信息表D2:商品信息表D3:订单表(每个1分,共3分)【问题3】输入数据流:下单请求(起点:会员)、会员身份信息(起点:会员信息表)、商品库存信息(起点:商品信息表)输出数据流:订单详情(终点:会员)、订单记录(终点:订单表)、库存锁定指令(终点:商品信息表)(输入答对2个得2分,输出答对2个得2分,共4分,含义正确即可得分)【问题4】不需要新增外部实体,原有外部实体(会员、运营人员)已经覆盖新功能的所有参与者(2分)。新增加工为“退换货申请处理”“退换货审核”(1分);新增数据流包括:会员到“退换货申请处理”的退换货申请数据流、“退换货审核”到商品信息表的库存恢复数据流、审核通过后“退换货审核”到会员的退款通知数据流(1分,答对3个及以上即可得满分)。试题二(共15分)阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】承接上述社区生鲜电商平台项目,进行数据库设计,需求分析结果如下:1.门店信息:平台在城市布局多个自提/配送门店,每个门店有唯一的门店编号,门店信息包含门店编号、门店名称、门店地址;一个门店可以管理多名配送员,一名配送员只属于一个门店。2.配送员信息:配送员编号唯一,信息包含姓名、联系方式、入职时间。3.会员信息:会员编号唯一,信息包含会员姓名、绑定手机号、注册时间、默认收货地址。4.订单信息:一个会员可以创建多个订单,一个订单对应一名会员,一个订单分配给一名配送员完成配送;订单信息包含订单编号、订单总金额、订单状态(待支付/已支付/配送中/已完成/已退换)、下单时间;一个订单包含多种商品,一种商品可以出现在多个不同订单中。5.商品信息:商品编号唯一,信息包含商品名称、商品分类、单价、当前库存,商品存储在对应门店,归属于一个门店管理。根据上述需求,设计关系模式如下:门店(门店编号,门店名称,门店地址,__①__)配送员(配送员编号,姓名,联系方式,入职时间,__②__)会员(__③__,会员姓名,绑定手机号,注册时间,收货地址)订单(__④__,订单总金额,订单状态,下单时间)订单商品(__⑤__,购买数量,实付单价)商品(__⑥__,商品名称,商品分类,单价,当前库存)【问题1】(6分)根据需求,补充关系模式中①~⑥处空缺的属性。【问题2】(3分)请分别给出配送员、订单商品、商品三个关系模式的主键。【问题3】(3分)原来的需求设计中,一个会员可以绑定多个不同的收货地址,若要支持该需求,对原会员关系模式应如何调整?请写出调整后的关系模式,并分别注明每个关系的主键。【问题4】(3分)平台运营部门需要统计分析不同门店每个月的订单成交额,以及不同分类商品的销量,以此调整门店备货策略。为此设计人员建立了数据立方体用于多维分析,请指出该数据立方体的维度和度量分别是什么。【试题二答案】【问题1】①:联系电话②:门店编号③:会员编号④:订单编号,会员编号,配送员编号⑤:订单编号,商品编号⑥:商品编号,门店编号(每个空1分,共6分,含义正确即可得分)【问题2】配送员主键:配送员编号(1分)订单商品主键:(订单编号,商品编号)(1分)商品主键:商品编号(1分)(共3分)【问题3】原会员关系模式中,将收货地址属性拆分,新增独立的会员收货地址关系模式,调整后:会员(会员编号,会员姓名,绑定手机号,注册时间),主键:会员编号会员收货地址(地址编号,会员编号,收货人姓名,联系电话,详细地址),主键:地址编号,外键:会员编号(关联会员关系的会员编号)(说明调整逻辑1分,写出两个关系1分,主键正确1分,共3分)【问题4】维度:门店、时间(月份)、商品分类(1分,答对两个维度即可得1分)度量:订单成交额、商品销量(2分,答对一个度量得1分,共2分)(共3分)试题三(共15分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某智能售货厂商开发自动咖啡售卖系统,支持用户自助购买咖啡,可售卖黑咖啡、拿铁、卡布奇诺三种咖啡,不同咖啡定价不同,用户操作流程为:用户向机器投币,选择需要购买的咖啡,系统判断当前投币总额是否满足咖啡定价:若金额足够则制作咖啡,完成后出咖啡并退还找零;若金额不足则提示用户,并退还已投金额。设计人员采用状态模式对该系统进行设计,类结构描述如下:抽象类`CoffeeMachineState`为所有状态定义公共接口,包括`insertCoin()`、`selectCoffee()`、`dispense()`、`returnCoin()`四个抽象方法,所有具体状态继承该抽象类;上下文类`CoffeeMachine`维护当前状态实例,定义不同状态对应的操作,属性包括当前投币总额`currentTotal`、选中咖啡的价格`price`;具体状态包括:无投币状态`NoCoinState`、投币不足状态`NoEnoughCoinState`、投币足够状态`HasEnoughCoinState`、已售出状态`SoldState`,所有具体状态都持有`CoffeeMachine`上下文的引用,以便切换状态和调用上下文方法。【问题1】(6分)根据上述描述,补充以下(1)~(6)处空缺:(1)`CoffeeMachine`类中,存储当前状态实例的属性,类型为`CoffeeMachineState`,写出属性名称;(2)~(3)写出`NoEnoughCoinState`和`HasEnoughCoinState`的父类名称;(4)写出所有具体状态类中,持有`CoffeeMachine`上下文引用的属性名称;(5)~(6)分别写出对应“尚未投币”和“已完成出餐”的具体状态类名称。【问题2】(6分)请补充用户投币购买咖啡、金额足够场景下,交互流程的(1)~(6)处消息内容:流程顺序:用户→CoffeeMachine→NoCoinState→HasEnoughCoinState→CoffeeMachine→用户用户发起操作后,第一步发送消息(1)给CoffeeMachine;CoffeeMachine将投币请求转发给当前状态NoCoinState,发送`insertCoin(coinAmount)`给NoCoinState;NoCoinState累加投币金额到`currentTotal`,判断`currentTotal≥coffeePrice`,发送消息(2)给CoffeeMachine;CoffeeMachine更新当前状态后,发送消息(3)给用户,提示投币成功;用户选择咖啡后,发送`selectCoffee()`给CoffeeMachine,CoffeeMachine转发给当前状态HasEnoughCoinState;HasEnoughCoinState完成前置校验后,发送消息(4)切换当前状态为SoldState;切换完成后,HasEnoughCoinState发送消息(5)通知CoffeeMachine出餐;CoffeeMachine出餐完成后,SoldState计算找零,最终发送消息(6)给用户,完成交易。【问题3】(3分)请简要说明状态模式的核心设计思想,以及在本题中使用状态模式的优点。【试题三答案】【问题1】(1)`currentState`(2)`CoffeeMachineState`(3)`CoffeeMachineState`(4)`coffeeMachine`(5)`NoCoinState`(6)`SoldState`(每个空1分,共6分)【问题2】(1)`insertCoin(coinAmount)`(2)`changeState(HasEnoughCoinState.getInstance())`(3)`promptCoinSuccess`(4)`changeState(SoldState.getInstance())`(5)`dispenseCoffee()`(6)`outputCoffeeAndReturnChange`(每个空1分,共6分,含义正确即可得分)【问题3】核心设计思想:状态模式允许一个对象在内部状态改变时改变自身行为,将不同状态对应的行为封装到独立的状态类中,上下文通过持有当前状态的引用来完成不同状态下的行为切换,避免了大量的硬编码分支判断(2分)。本题中使用状态模式的优点:将不同投币状态的行为隔离,符合开闭原则,后续新增状态或修改状态行为无需修改原有代码,提升了代码的可维护性和扩展性(1分,答对核心即可得分)。试题四(共15分)阅读下列说明和C语言代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】给定一个无序的整数数组`nums`,要求找出该数组中最长严格递增子序列的长度,其中子序列不要求元素在原数组中连续。例如输入数组`nums=[10,9,2,5,3,7,101,18]`,最长递增子序列为`[2,3,7,101]`,长度为4,输出结果为4。本题采用动态规划算法求解,算法基本思路为:定义`dp[i]`表示以数组中第i个元素结尾的最长递增子序列的长度,初始状态下每个元素本身就是一个长度为1的子序列,因此所有`dp[i]`初始化为1。对于位置i的元素,遍历所有`0≤j<i`的位置j,如果`nums[j]<nums[i]`,说明`nums[i]`可以接在`nums[j]`对应的子序列之后,此时`dp[i]`可以更新为`dp[j]+1`,最终dp数组中的最大值就是整个数组的最长递增子序列长度。【C代码】```cintlengthOfLIS(int*nums,intnumsSize){if(numsSize==0){return0;}intdp[numsSize];for(inti=0;i<numsSize;i++){(1)__________;}intmaxLen=1;for(inti=1;i<numsSize;i++){for(intj=0;(2)__________;j++){if(nums[j]<nums[i]&&(3)__________){dp[i]=dp[j]+1;}}if((4)__________){maxLen=dp[i];}}(5)__________;}```【问题】(15分,每空3分)请填补代码中的(1)~(5)处空缺。【试题四答案】(1)`dp[i]=1`解释:根据算法思路,初始状态下每个元素自身构成一个长度为1的子序列,因此每个`dp[i]`初始化为1,符合动态规划的初始条件要求。(2)`j<i`解释:计算`dp[i]`只需要遍历所有位置在i之前的j,因此循环条件为`j<i`,符合算法逻辑。(3)`dp[j]+1>dp[i]`解释:只有当新得到的长度`dp[j]+1`大于当前`dp[i]`已有的长度时,才需要更新`dp[i]`,保证`dp[i]`存储的始终是以i结尾的最长递增子序列长度。(4)`dp[i]>maxLen`解释:每次计算完`dp[i]`后,需要比较`dp[i]`和当前记录的最大长度`maxLen`,如果`dp[i]`更大则更新`maxLen`,保证`maxLen`始终是全局最长递增子序列的长度。(5)`returnmaxLen`解释:函数最终需要返回计算得到的最长递增子序列长度,因此返回`maxLen`,符合函数定义的要求。(每个空3分,含义正确即可得分,共15分)试题五(共15分)阅读下列说明和Java代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】某在线教育平台需要开发考试资讯推送功能,支持用户订阅不同分类的考试资讯(软件设计师、系统架构设计师、网络工程师等),当平台更新对应分类的资讯后,自动通知所有订阅该分类的用户。设计人员采用观察者模式实现该需求,其中`Subject`为抽象主题,`Observer`为抽象观察者,资讯发布类`QuestionPublisher`实现`Subject`接口,用户类`User`实现`Observer`接口。【Java代码】```javainterfaceObserver{publicvoidupdate(Stringmessage);}interfaceSubject{publicvoidregisterObserver(Observero);publicvoidremoveObserver(Observero);publicvoidnotifyObservers(Stringmessage);}classQuestionPublisherimplementsSubject{privateList<(1)__________>observerList=newArrayList<>();privateStringquestionType;@OverridepublicvoidregisterObserver(Observero){(2)__________;}@OverridepublicvoidremoveObserver(Observero){observerList.remove(o);}@OverridepublicvoidnotifyObservers(Stringmessage){for(Observero:observerList){(3)__________;}}publicvoidpublishNewQuestion(Stringmessage){(4)__________;}}classUserimplements(5)__________{privateStringuserName;privateStringinterestType;publicUser(StringuserName,StringinterestType){this.userName=userName;erestType=interestType;}@Overridepublicvoidupdate(Stringmessage){System.out.println("用户"+userName+",您订阅的"+interestType+"有新资讯:"+message);}}publicclassObserverDemo{publicstaticvoidmain(String[]args){QuestionPublishersdPublisher=newQues

温馨提示

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

最新文档

评论

0/150

提交评论