您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 2019年软件设计师下半年下午真题与答案
2019软件设计师下半年下午答案问答题(共6题,共60分)第一题:1.[说明]某公司欲开发一款二手车物流系统,以有效提升物流分发效率,系统功能是:(1).订单管理。系统抓取线索,将车辆交易系统中的交易信息抓取为线索,帮买家看到有买车线索后,电话询问买家是否需要物流,若需要。线索发起订单,并在存储系统中存储,系统帮买家找物流商运;(2).路线管理。对物流商路线管理,存储路线信息,包括:路线类型,物流商,起止地点。路线分为:固定路线,包车路线,竞拍体系。固定路线和包车路线是合约制,包车路线,发车时间由公司自行管理,订单优先采用合约制。(3).合约管理。合约信息包括物流商信息,路线起止城市,价格有效期;(4).寻找物流商。根据订单类型,起止城市,服务模式进行自动分发或竞拍体系方式选择合适物流商。(5).物流商注册问题1:使用说明中的词语,给出图1-1中的实体E1-E3名称;问题2:使用说明中的词语,给出图1-2中的数据存储,D1-D5名称;问题3:根据说明和图中术语,补充图1-2中缺失的数据流及其起点和终点;问题4:根据说明采用结构化语言对“P5寻找物流商”的加工逻辑进行描述。参考答案问题1:E1:系统帮买商;E2:车辆交易系统;E3:物流商问题2:D1:交易线索信息表;D2:订单信息表D3:路线信息表;D4:合约信息表;D5:物流商信息表问题3:发送物流信息:起点P5终点E2自动分配:起点P5终点E3更新物流信息:起点P5终点D2问题4:略第二题:2.[说明]公司拟开发新入职员工的技能培训管理系统以便使新员工快速胜任新岗位。(1).部门信息包括:部门号、名称、部门负责人、电话等,部门号唯一标识部门门关系中的每一-个元组,--个部门有多个员工,但一名员工只属于一个部门,每个部门只有一名负责人,负责部门工作。(2).员工信息包括员工号、姓名、部门号、岗位、基本工资、电话、家庭住址等,其中员工号是唯一标示员工关系中的每一个元组。岗位有新入职员工,培训师、部门负责人等不同岗位设置不同的基本工资,新入职员工要选择多门课程进行培训,并通过考试取得课程成绩,名培训师可以讲授多门课程、一门课程可由多名培训师讲授。(3).课程信息包括课程号,课程名称、学时等;其中课程号唯一标识课程关系的每一-个元组。关系模式设计:部门(部门号,部门名,部门负责人,电话)员工(员工号,姓名,部门号,d,电话,家庭住址)课程(c,e,课程名称,学时)讲授(课程号,培训师,培训地点)培训(课程号,(f))根据需求阶段收集的信息,设计的实体联系图如图2-1所示。(1)补充图2--1中的空(a)-(c)(2)图2-1中是否存在缺失联系,若存在,则说明所缺失的联系和联系类型问题2:根据题意,将关系模式中的空(d)-(f)补充完整问题3:员工关系模式的主键为(g),外键为(h),讲授关系模式的主键为(i),外键为(j)问题4:员工关系是否存在传递依赖?用100字以内的文字说明理由参考答案问题1:(1)a:部门负责人b:培训师c:新员工(2)存在缺失数据流,部门和员工之间:1:m(一个部门对应多有员工)问题2:d:岗位基本工资e:课程号f:员工号问题3:员工关系表:g:主键:员工号外健:部门号讲授关系模式:i主健:课程号培训师培训地点外健:课程号问题4:不存在传递依赖第三题:试题三(共15分)[说明]说明了列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。某牙科诊所拟开发一套信息系统,用于管理病人的基本信息和就信息。诊所工作人负包括:医护人员(DentaDentalStaff)、接待员(Receptionist)和办公人员(ficestaff)等。系统主要功能需求记描述如下(1).记采病人基本信息(Maintainpatientinfo)。初次就诊的病人,由接待员将病人基本方总来入系统。病人基本信息包括病人姓名、身份证号、出生日期、性别、首次就诊时间和最后次就诊时间等。每位病人与其医保信息(Meialnsurance)关联。(2).记录就诊信息(RecordOfficeVisitinfo)录入系病人在诊所的每一一次就诊,由接员将就诊信息(OfficeVisit)录入系统。就诊信息包括就诊时间、就诊费用、支付代码、病人支付费用和医支付费用等。(3).记录治疗信息(Recorddentalprocedure)。病人在就诊时,可能需要接受多项治疗,每项治疗(Procedure)可能由多位医护人员为其服务。治疗信息包括:治疗项目名称、治疗项目描述、治疗的牙齿和费用等。治疗信息由每位参与治疗的医护人员分别向系统中录入。(4).打印发票(Printinvoices)。发票(Invoice)由办公人员打印。发票分为两种:给医保机构的发票(InsuranceInvoice)和给病人的发票(PatientInvoice)。两种发票内容相同,只是支付的费用不同。当收到治疗费用后,办公人员在系统中更新支付状态(Enterpayment)。(5).记录医护人员信息(Maintaindentalstaffinfo)。办公人员将医护人员信息录入系统。医护人员信息包括姓名、职位、身份证号、家庭住址和联系电话等。(6).医护人员可以查询并打印其参与的治疗项目相关信息(Searchandprintprocedureinfo)。现采用面向对象方法开发该系统,得到如图3-1所示的用例图和3-2所示的初始类图。[问题1](6分)根据说明中的描述,给出图3-1中A1~A3所对应的参与者名称和U1~U3所对应的用例名称。[问题2](5分)根据说明中的描述,给出图3-2中C1~C5所对应的类名。[问题3](4分)根据说明中的描述,给出图3-2中类C4、C5、Patient和DentalStaf的必要属性。A1:Receptionist(接待人员)A2:Dentalstaff(医护人员).A3:offhcestaff(办公人员)U1:Maintainpatientinfo(记录病人基本信息)U2:Recordofficevisitinfo(记录就诊信息)U3:Printinvoices(打印发票)问题2:C1:PatientInvoice(病人发票)C2:Insurancelnvoice(机构发票)C3:Invoice(发票)C4::Procedure(治疗信息)C5:OfnceVisit(就诊信息)问题3:C4:项目名称、项目描述、治疗的牙齿和费用C5:就诊时间、就诊费用、支付代码、病人支付费用和医保支付费用Patient:病人姓名、身份证号、出生日期、性别、首次就诊时间、最后就诊时间等Dentalstaff:病人姓名、身份证号、出生日期、性别、首次就诊时间、最后就诊时间第四题:阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。[说明]0-1背包问题定义为:给定i个物品的价值:...i小.重量wl...]和背包容量T,每个物品装到背包里或者不装到背包里。求最优的装包方案,使得所得到的价值最大。0-1背包问题具有最优子结构性质。定义el[IT]为最优装包方案所获得的最大价值,则可得到如下所示的递归式。][且0i若][T若0T或0i若])][1[],[]][][1[max(]][1[0]][[ciwtiwTiciviwTicticTi[C代码]下面是算法的C语言实现。(1)常量和变量说明T:背包容量v[]:价值数组w[]:重量数组c[i][j]:c[i][j]表示前i个物品在背包容量为j的情况下最优装包方案所能获得的最大价值(2)C程序#includestdio.h#includemath.h#defineN6#definemaxT1000intc[N][maxT]={0};intMemoizedKnapsack(intv[N],intw[N],intT){inti;intj;for(i=0;iN;i++){↓for(j=0;j=T;j++){c[i][i]=-1;returnCalculateMax_Value(v,w,N-I,T);}intCalculateMax_Value(intv[N],intw[N],intI,intj){inttemp=0;,if(c[i][i]!=-1;){return(1);}If(i==0||j==0){c[i][i]=0;}else{c[i][i]=CalculateMax_Value(v,w,i-1,j);if((2)){temp=(3);if(c[i][j]temp){(4);}}}returc{i][j];}[问题1](8分)根据说明和C代码,填充C代码中的空(1)~(4)。[问题2](4分)根据说明和C代码,算法采用了(5)设计策略。在求解过程中,采用了(6)(自底向上或者自顶向下)的方式。[问题3](3分)若5项物品的价值数组和重量数组分别为v[]=(0.1,6,18,22,28)和w[]=(0,1,2,5,6,7)背包容量为T=11,则获得的最大价值为(7)。参考答案:问题1:1.c[i][j]2.w[i]=j3.CalculateMax_Value(v,w,i-1,j-w[i]+v[j]);4.c[i][j]=temp问题2:动态规划自顶向下问题3:40第六题:试题六(共15分)阅读下列说明和Java代码,将应填入_(n)处的字句写在答题纸的对应栏内。[说明]某文件管理系统中定义了类fficeDoc和DocExplorer,当OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态。现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。[Java代码]importjava.util.*;interfaceObserver{public(1);};interfaceSubject{publicvoidAttach(Observerobs);doxentduepublicvoidDetach(Observerobs);publicvoidNotify(;publicvoidsetStatus(intstatus);publicintgetStatus(;classOfficeDocimplementsSubject{privateList(2)myObs;privateStringmySubjectName;privateintmstatus;publicOfficeDoc(Stringname){mySubjectName=name;this.myObs=newArrayListObserver0;m_status=0;publicvoidAttach(Observerobs){this.myObsadd(obs);}publicvoidDetach(Observerobs){this.myObsremove(obs);}publicvoidNotify){for(Observerobs:this.myObs){_(3)_;}publicvoidsetStatus(intstatus){m_status=status;System.out,printn(SetStatussubject[+mySubjectName+]status.+status);publicintgetStatus({returnmstatus;}};classDocExplorerimplementsObserver{privateStringmyObsName;publicDocExplorer(Stringname,(4)sub){myObsName=name;sub.(5);publicvoidupdate(){System.out.printIn(updateobserver[+myObsName+I]);}};classObserverTest{publicstaticvoidmain(String[]args){Subjectsu
本文标题:2019年软件设计师下半年下午真题与答案
链接地址:https://www.777doc.com/doc-5241283 .html