阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。现采用原型模式(Prototype)来实现上述要求,得到如图16.1所示的类图。【C++代码】#includeUsingnamespacestd;ClasSCloneable{public:(1);};ClassworkExperience:publicCloneable{//工作经历Private:StringworkDate;Stringcompany;PubliC:Cloneable’Clone(){(2);Obj一>workDate=this一>workDate;Obj一>company=this一>company;Returnobj;}//其余代码省略};ClassResume:publicCloneable{//简历Private:Stringname;stringsex;stringage;WorkExperience。work;Resume(WorkExperience*work)(This->work:(3);}PubliC:Resume(stringname)(/*实现省略*/)VoidSetPersonalInfo(stringsex,stringage)(/*实现省略*/)VoidsetworkExperience(stringworkDate,stringcompany)(/*实现省略*/)Cloneable*Clone(){(4);Obj一>name:this一>name;Obj一>sex=this一>sex;Obj一>age=this一>age;Returnobj;}};Intmain(){Resume*a=newResume(”张三”);A一>SetPersonalInfo(”男”,”29”);A一>setworkExperience(”1998~2000”,“XXX公司”);Resume*b=(5);B一>SetWorkExperience(“2001~2006”,“YYY公司”);Return0;}
阅读以下说明和C代码,根据要求回答问题1~问题3。【说明】某工程计算中要完成多个矩阵相乘(链乘)的计算任务。两个矩阵相乘要求第一个矩阵的列数等于第二个矩阵的行数,计算量主要由进行乘法运算的次数决定。采用标准的矩阵相乘算法,计算Am×n*Bn×p,需要m*n*p次乘法运算。矩阵相乘满足结合律,多个矩阵相乘,不同的计算顺序会产生不同的计算量。以矩阵A110×100,A2100×5,A35×50三个矩阵相乘为例,若按(A1*A2)*A3计算,则需要进行10*100*5+10*5*50=7500次乘法运算;若按A1*(A2*A3)计算,则需要进行100*5*50+10*100*50=75000次乘法运算。可见不同的计算顺序对计算量有很大的影响。矩阵链乘问题可描述为:给定n个矩阵n>,矩阵Ai的维数为Pi-1×Pi,其中i=1,2,…,n。确定一种乘法顺序,使得这n个矩阵相乘时进行乘法的运算次数最少。由于可能的计算顺序数量非常庞大,对较大的n,用蛮力法确定计算顺序是不实际的。经过对问题进行分析,发现矩阵链乘问题具有最优子结构,即若AI*A2*…*An的一个最优计算顺序从第k个矩阵处断开,即分为A1*A2*…*Ak和Ak+1*Ak+2*…*An两个子问题,则该最优解应该包含A1*A2*…*Ak的一个最优计算顺序和Ak+1*Ak+2*…*An的一个最优计算顺序。据此构造递归式,其中,cost[i][j]表示Ai+1*Ai+2*…*Aj+1的最优计算的计算代价。最终需要求解cost[0][n—1]。【C代码】算法实现采用自底向上的计算过程。首先计算两个矩阵相乘的计算量,然后依次计算3个矩阵、4个矩阵……n个矩阵相乘的最小计算量及最优计算顺序。下面是该算法的C语言实现。(1)主要变量说明n:矩阵数seq[]:矩阵维数序列cost[][]:二维数组,长度为n*n,其中元素cost[i][j]表示Ai+1*Ai+2*……*Aj+l的最优计算的计算代价trace[][]:二维数组,长度为n*n,其中元素trace[i][j]表示Ai+1*Ai+2:i:…*Aj+1的最优计算对应的划分位置,即k(2)函数cmm#defineN100intcost[N]IN];inttrace[N][N];intcmm(intn,intseq[]){inttempCost;inttempTrace;inti,j,k,P;inttemp;for(i=0;itemp){tempCost=temp;(4)}}cost[i][j]=tempCost;trace[i][j]=tempTrace:}}returncost[0][n—1];}
阅读下列说明和图,回答问题1~问题4,将解答填入答题纸的对应栏内。【说明】某学校开发图书管理系统,以记录图书馆藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表,借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。(3)处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图12-8所示的项层数据流图和图12-9所示的0层数据流图。
阅读下列说明和图,回答问题l至问题3,将解答填入答题纸的对应栏内。【说明】一个简单的图形编辑器提供给用户的基本操作包括:创建图形、创建元素、选择元素以及删除图形。图形编辑器的组成及其基本功能描述如下:(1)图形由文本元素和图元元素构成,图元元素包括线条、矩形和椭圆。(2)图形显示在工作空间中,一次只能显示一张图形(即当前图形,current)。(3)编辑器提供了两种操作图形的工具:选择工具和创建工具。对图形进行操作时,一次只能使用一种工具(即当前活动工具,active)。①创建工具用于创建文本元素和图形元素。②对于显示在工作空间中的图形,使用选择工具能够选定其中所包含的元素,可以选择一个元素,也可以同时选择多个元素。被选择的元素成为当前选中元素(selected)。③每种元素都具有相应的控制点。拖拽选定元素的控制点,可以移动元素或者调整元素的大小。现采用面向对象方法开发该图形编辑器,使用UML进行建模。构建出的用例图和类图分别如图13一11和13一12所示。
阅读下列算法说明和算法,将应填入(n)的字句写在对应的栏内。[说明]下列最短路径算法的具体流程如下:首先构造一个只含n个顶点的森林,然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通网的最小生成树。该算法的基本思想是:为使生成树上总的权值之和达到最小,则应使每一条边上的权值尽可能地小,自然应从权值最小的边选起,直至选出n-1条互不构成回路的权值最小边为止。[算法]/*对图定义一种新的表示方法,以一维数组存放图中所有边,并在构建图的存储结构时将它构造为一个“有序表”。以顺序表MSTree返回生成树上各条边。*/typedefstruct{VertexTypevex1;VertexTypevex2;VRTypeweight;}EdgeType;typedefElemTypeEdgeType;typedefstruct{//有向网的定义VertexTypevexs[MAX_VERTEX_NUM];//顶点信息EdgeTypeedge[MAX_EDGE_NUM];//边的信息intvexnum,arcnum;//图中顶点的数目和边的数目IELGraph;voidMiniSpanTree_Kruskal(ELGraphG,SqListInitSet(F,G.vexnum);//将森林F初始化为N棵树的集合InitList(MSTree,G.vexnum);//初始化生成树为空树i=0;k=1;while(k<(1)){e=G.edge[i];//取第i条权值最小的边/*函数fix_mfset返回边的顶点所在树的树的根代号,如果边的两个顶点所在树的树根相同,则说明它们已落在同一棵树上。*/ri=fix_mfset(F,LocateVex(e.vex1));r2=(2);//返回两个顶点所在树的树根if(r1(3)r2){//选定生成树上第k条边if(Listlnsert(MSTree,k,e){(4);//插入生成树mix_mfset(E,r1,r2);//将两棵树归并为一棵树}(5);//继续考察下一条权值最小边}DestroySet(F);}}
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某会议策划公司为了方便客户,便于开展和管理各项业务活动,需要构建一个基于网络的会议预定系统。【需求分析】(1)会议策划公司设有受理部、策划部和其他部门,部门信息包括部门号、部门名称、部门主管、电话和邮箱号,每个部门有多名员工处理部门的日常事务,每名员工只能在一个部门工作,每个部门有一名主管负责管理本部门的事务和人员。(2)员工信息包括员工号、姓名、部门号、职位、联系方式和工资;其中,职位包括主管、业务员、策划员等。业务员负责受理会议申请,若申请符合公司规定,则置受理标志并填写业务员的员工号,策划部主管为已受理的会议申请制定策划任务,包括策划内容、参与人数、要求完成时间等。一个已受理的会议申请对应一个策划任务,一个策划任务只对应一个已受理的会议申请,但一个策划任务可由多名策划员参与执行,且一名策划员可以参与多项策划任务。(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号。其中,一个客户号唯一标识一个客户。一个客户可以提交多个会议申请,但一个会议申请对应唯一的一个客户号。(4)会议申请信息包括申请号、开会日期、会议地点、持续天数、会议人数、预算费用、会议类型、酒店要求、会议室要求、客房类型、客房数、联系人、联系方式、受理标志和业务员的员工号等。客房类型有豪华套房、普通套房、标准间、三人间等,且申请号和客房类型决定客房数.【概念模型设计】根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图14-6所示。【关系模式设计】部门(部门号,部门名称,主管,电话,邮箱号)员工(员工号,姓名,(a),联系方式,工资)客户(客户号,单位名称,通信地址,所属省份,联系人,联系电话,银行账号)会议申请((b),开会日期,会议地点,持续天数,会议人数,预算费用,会议类型,酒店要求,会议室要求,客房数,联系人,联系方式,受理标志,员工号)策划任务((c),策划内容,参与人数,要求完成时间)执行策划((d),实际完成时间)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某企业拟构建一个高效、低成本、符合企业实际发展需要的办公自动化系统。工程师小李主要承担该系统的公告管理和消息管理模块的研发工作。公告管理模块的主要功能包括添加、修改、删除和查看公告。消息管理模块的主要功能是消息群发。小李根据前期调研和需求分析进行了概念模型设计,具体情况分述如下。【需求分析结果】(1)该企业设有研发部、财务部、销售部等多个部门,每个部门只有一名部门经理,有多名员工,每名员工只属于一个部门。部门信息包括:部门号、名称、部门经理和电话,其中部门号唯一确定部门关系的每一个元组。(2)员工信息包括:员工号、姓名、岗位、电话和密码。员工号唯一确定员工关系的每一个元组;岗位主要有经理、部门经理、管理员等,不同岗位具有不同的权限。一名员工只对应一个岗位,但一个岗位可对应多名员工。(3)消息信息包括:编号、内容、消息类型、接收人、接收时间、发送时间和发送人。其中(编号,接收人)唯一标识消息关系中的每一个元组。一条消息可以发送给多个接收人,一个接收人可以接收多条消息。(4)公告信息包括:编号、标题、名称、内容、发布部门、发布时间。其中编号唯一确定公告关系的每一个元组。一份公告对应一个发布部门,但一个部门可以发布多份公告;一份公告可以被多名员工阅读,一名员工可以阅读多份公告。【概念模型设计】根据需求分析阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。【逻辑结构设计】根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):部门(____________(a),部门经理,电话)员工(员工号,姓名,岗位号,部门号,电话,密码)岗位(岗位号,名称,权限)消息(__________(b),消息类型,接收时间,发送时间,发送人)公告(__________(c),名称,内容,发布部门,发布时间)阅读公告(__________(d),阅读时间)
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】计算两个字符串x和y的最长公共子串(LongestCommonSubstring)。假设字符串x和字符串y的长度分别为m和n,用数组c的元素c[i][j]记录x中前i个字符和y中前j个字符的最长公共子串的长度。c[i][j]满足最优子结构,其递归定义为:计算所有c[i][j](O≤i≤m,0≤j≤n)的值,值最大的c[i][j]即为字符串x和y的最长公共子串的长度。根据该长度即i和j,确定一个最长公共子串。【C代码】(1)常量和变量说明x.y:长度分别为m和n的字符串。c[i][j]:记录x中前i个字符和y中前j个字符的最长公共子串的长度。max:x和y的最长公共子串的长度。maxi,maxj:分别表示x和y的某个最长公共子串的最后一个字符在x和y中的位置(序号)。(2)C程序#include#includeintc[50][50];intmaxi;intmaxj;int1cs(char*x,intm,char*y,intn){inti,j;intmax=0;maxi=0;maxj=0;for(i=0;i<=m;i++)c[i][0]=0;for(i=1;i<=n;i++)C[0][i]=0;for(i=1;i<=m;i++){for(j=1;j<=n;j++){if(___________(1)){c[i][j]=C[i—1][j一1]+1;if(max<c[i][j]){___________(2);maxi=i;maxj=j;}}else___________(3);}}returnmax;}voidprintLCS(intmax,char*x){inti=0;if(max==0)return;for(___________(4);i<maxi;i++)printf("%c",x[i]);}voidmain(){char*x="ABCADAB";cnar*y="BDCABA";intmax=0;intm=strlen(x);intn=strlen(y);max=lcs(x,m,y,n);printLCS(max,x);}
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某学校拟开发一套实验管理系统,对各课程的实验安排情况进行管理。【需求分析】一个实验室可进行多种类型不同的实验。由于实验室和实验员资源有限,需根据学生人数分批次安排实验室和实验员。一门课程可以为多个班级开设,每个班级每学期可以开设多门课程。一门课程的一种实验可以根据人数、实验室的可容纳人数和实验类型,分批次开设在多个实验室的不同时间段。一个实验室的一次实验可以分配多个实验员负责辅导实验,实验员给出学生的每次实验成绩。(1)课程信息包括:课程编号、课程名称、实验学时、授课学期和开课的班级等信息;实验信息记录该课程的实验进度信息,包括:实验名、实验类型、学时、安排周次等信息,如表14—6所示。(2)以课程为单位制定实验安排计划信息,包括:实验地点,实验时间、实验员等信息,实验计划如表14.7所示。(3)由实验员给出每个学生每次实验的成绩,包括:实验名、学号、姓名、班级、实验成绩等信息,实验成绩如表14—8所示。(4)学生的实验课程总成绩根据每次实验的成绩以及每次实验的难度来计算。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图(不完整)如图14一19所示。【逻辑结构设计】根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):课程(课程编号,课程名称,授课院系,实验学时)班级(班级号,专业,所属系)开课情况((1),授课学期)实验((2),实验类型,难度,学时,安排周次)实验计划((3),实验时间,人数)实验员((4),级别)实验室(实验室编号,地点,开放时间,可容纳人数,实验类型)学生((5),姓名,年龄,性别)实验成绩((6),实验成绩,评分实验员)
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某网上购物平台的主要功能如下:(1)创建订单。顾客(Customer)在线创建订单(Order),主要操作是向订单中添加项目、从订单中删除项目。订单中应列出所订购的商品(Product)及其数量(quantities)。(2)提交订单。订单通过网络来提交。在提交订单时,顾客需要提供其姓名(name)、收货地址(address)以及付款方式(formofpayment)(预付卡、信用卡或者现金)。为了制订送货计划以及安排送货车辆,系统必须确定订单量(volume)。除此之外,还必须记录每种商品的名称(name)、造价(costprice)、售价(saleprice)以及单件商品的包装体积(cubicvolume)。(3)处理订单。订单处理人员接收来自系统的订单,根据订单内容,安排配货,制订送货计划。在送货计划中不仅要指明发货日期(deliverydate),还要记录每个订单的限时发送要求(DeliveryTimeWindow)。(4)派单。订单处理人员将已配好货的订单转交给派送人员。(5)送货/收货。派送人员将货物送到顾客指定的收货地址。当顾客收货时,需要在运货单(deliveryslip)上签收。签收后的运货单最终需交还给订单处理人员。(6)收货确认。当订单处理人员收到签收过的运货单后,会和顾客进行一次再确认。现采用面向对象方法开发上述系统,得到如图13—7所示的用例图和图13—8所示的类图。
阅读下列说明,回答问题1至问题4。[说明]甲公司的经营销售业务目前是手工处理的,随着业务量的增长,准备采用关系数据库对销售信息进行管理。经销业务的手工处理主要涉及三种表:订单表、客户表和产品表(见表2,表3和表4)。为了用计算机管理销售信息,甲公司提出应达到以下要求:产品的单价发生变化时,应及时修改产品表中的单价数据。客户购货计价采用订货时的单价?订货后,即使单价发生变化,计算用的单价也不变。在设计数据库时,经销部的王先生建立了如图4所示的数据模型。其中,方框表示实体,单向箭头表示1对多的联系,双向箭头表示多对多的联系。由于上述模型对建立关系数据库是不合适的,因此王先生又修改了数据模型,并设计了如下几个关系(带下划线的数据项是关键项,最后一个关系中没有指出关键项):Customer(CustomerNo,CustomerName,Address,Phone)Product(productNo,ProductName,UnitPdce)Order(Orderno,CustomerNo,Date)OrderDetail(OrderNo,ProductNo,Quantity)
某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表16—4所示。为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图16一12所示。图16—12中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法ny()和takeOff()分别表示不同飞机都具有飞行特征和起飞特征;类FlyBehavior与TakeOffiehaVior为抽象类,分别用于表示抽象的飞行为与起飞行为;类SubSonicFly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff与LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。【C++代码】#includeUSingnamespacestd;ClasSFlyBehaVior{public:virtualvoidfly()=0;};classSubSonicFly:publicFlyBehavior(public:voidfly()(cout
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。现采用原型模式(Prototype)来实现上述要求,得到如图17—1所示的类图。[Java代码]ClassWorkExperience(1)Cloneable(//工作简历PrivateStringworkDate;PrivateStringcompany;PublicObjectClone(){(2);obj.workDate=this.workDate;Obj.company—this.company;Returnobj;}}ClassResume(3)Cloneable(//简历PrivateStringname;PrivateStringsexjPrivateStringage;PrivateWorkExperiencework;PublicResume(Stringname){This.name=name;work=newWorkExperience();}PrivateResume(WorkExperiencework){This.woek=(4);}PublicvoidSetPersonalInfo(Stringsex,Stringage)(/*代码省略*/)PublicvoidSetWorkExperience(StringworkDate,Stringcompany)(/*代码省略*/)PublicObjectClone()(Resumeobj=(5);//其余代码省略Returnobj;}}ClassWorkResume(Publicstaticvoidmain(String[]args)(Resumea=newResume(“张三”);@A@SetPersonalInfo(“男”,“29”);a.setworkExperience(“1998~2000”,“XXX公司”);Resumeb=(6);b.SetWorkExperience(”2001~2006”,”YYY公司”};}}
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某网上药店允许顾客凭借医生开具的处方,通过网络在该药店购买处方上的药品。该网上药店的基本功能描述如下:(1)注册。顾客在买药之前,必须先在网上药店注册。注册过程中需填写顾客资料以及付款方式(信用卡或者支付宝账户)。此外顾客必须与药店签订一份授权协议书,授权药店可以向其医生确认处方的真伪。(2)登录。已经注册的顾客可以登录到网上药房购买药品。如果是没有注册的顾客,系统将拒绝其登录。(3)录入及提交处方。登录成功后,顾客按照“处方录入界面”显示的信息,填写开具处方的医生的信息以及处方上的药品信息。填写完成后,提交该处方。(4)验证处方。对于已经提交的处方(系统将其状态设置为“处方已提交”),其验证过程为:①核实医生信息。如果医生信息不正确,该处方的状态被设置为“医生信息无效”,并取消这个处方的购买请求;如果医生信息是正确的,系统给该医生发送处方确认请求,并将处方状态修改为“审核中”。②如果医生回复处方无效,系统取消处方,并将处方状态设置为“无效处方”。如果医生没有在7天内给出确认答复,系统也会取消处方,并将处方状态设置为“无法审核”。③如果医生在7天内给出了确认答复,该处方的状态被修改为“准许付款”。系统取消所有未通过验证的处方,并自动发送一封电子邮件给顾客,通知顾客处方被取消以及取消的原因。(5)对于通过验证的处方,系统自动计算药品的价格并邮寄药品给已经付款的顾客。该网上药店采用面向对象方法开发,使用UML进行建模。系统的类图如图13一13所示。
阅读下列说明和图,回答问题1至问题3。【说明】某会议策划公司为了方便客户,便于开展和管理各项业务活动,需要构建一个基于网络的会议预定系统。【需求分析】(1)会议策划公司设有受理部、策划部和其他部门。部门信息包括部门号、部门名称、部门主管、电话和邮箱号。每个部门有多名员工处理部门的日常事务,每名员工只能在一个部门工作。每个部门有一名主管负责管理本部门的事务和人员。(2)员工信息包括员工号、姓名、部门号、职位、联系方式和工资。其中,职位包括主管、业务员、策划员等。业务员负责受理会议申请。若申请符合公司规定,则置受理标志并填写业务员的员工号。策划部主管为已受理的会议申请制定策划任务,包括策划内容、参与人数、要求完成时间等。一个已受理的会议申请对应一个策划任务,一个策划任务只对应一个已受理的会议申请,但一个策划任务可由多名策划员参与执行,且一名策划员可以参与多项策划任务。(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号。其中,一个客户号唯一标识一个客户。一个客户可以提交多个会议申请,但一个会议申请对应唯一的一个客户号。(4)会议申请信息包括申请号、开会日期、会议地点、持续天数、会议人数、预算费用、会议类型、酒店要求、会议室要求、客房类型、客房数、联系人、联系方式、受理标志和业务员的员工号等。客房类型有豪华套房、普通套房、标准间、三人间等,且申请号和客房类型决定客房数。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图13-1所示。【关系模式设计】部门(部门号,部门名称,主管,电话,邮箱号)员工(员工号,姓名,(a),联系方式,工资)客户(客户号,单位名称,通信地址,所属省份,联系人,联系电话,银行账号)会议申请((b),开会日期,会议地点,持续天数,会议人数,预算费用,会议类型,酒店要求,会议室要求,客房数,联系人,联系方式,受理标志,员工号)策划任务((c),策划内容,参与人数,要求完成时间)执行策划(d),实际完成时间)
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和若干个区域售票处。游客若想租用小木屋或营地,必须前往中心售票处进行预定并用现金支付全额费用,所有的预定操作全部由售票处的工作人员手工完成。现欲开发一信息系统,实现小木屋和营地的预定及管理功能,以取代手工操作。该系统的主要功能描述如下:(1)管理预定申请。游客可以前往任何一个售票处提出预定申请,系统对来自各个售票处的预定申请进行统一管理。(2)预定。预定操作包含登记游客预定信息、计算租赁费用、付费等步骤。(3)支付管理。游客付费时可以选择现金和信用卡付款两种方式。使用信用卡支付可以享受3%的折扣,现金支付没有折扣。(4)游客取消预定。预定成功之后,游客可以在任何时间取消预定,但需支付赔偿金,剩余部分则退还给游客,赔偿金的计算规则是,在预定入住时间之前的48小时内取消,支付租赁费用10%的赔偿金;在预定入住时间之后取消,则支付租赁费用50%的赔偿金。(5)自动取消预定。如果遇到恶劣天气(如暴雨、山洪等),系统会自动取消所有的预定,发布取消预定消息,全额退款。(6)信息查询。售票处工作人员查询小木屋和营地的预定情况和使用情况,以判断是否能够批准游客的预定申请。现采用面向对象方法开发上述系统,得到如表13—2所示的用例列表和表13—3所示的类列表,对应的用例图和类图分别如图13—5和图13—6所示。
现准备为某银行开发一个信用卡系统CCMS,该系统的基本功能如下。(1)信用卡申请。非信用卡客户填写信用卡申请表,说明所要申请的信用卡类型及申请者的基本信息,提交CCMS。如果信用卡申请被银行接受,CCMS将记录该客户的基本信息,并发送确认函给该客户,告知客户信用卡的有效期及信贷限额;否则该客户将会收到一封拒绝函。非信用卡客户收到确认函后成为信用卡客户。(2)信用卡激活。信用卡客户向CCMS提交激活请求,用信用卡号和密码激活该信用卡。激活操作结束后,CCMS将激活通知发送给客户,告知客户其信用卡是否被成功激活。(3)信用卡客户信息管理。信用卡客户的个人信息可以在CCMS中进行在线管理。每位信用卡客户可以在线查询和修改个人信息。(4)交易信息查询。信用卡客户使用信用卡进行的每一笔交易都会记录在CCMS中。信用卡客户可以通过CCMS查询并核实其交易信息(包括信用卡交易记录及交易额)。图12-1和图12-2分别给出了该系统的顶层数据流图和0层数据流图的初稿。
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某公司的组织结构图如图17—9所示,现采用组合(Composition)设计模式来设计,得到如图17—10所示的类图。其中Company为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司/办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepament和FinanceDepartment分别表示人力资源部和财务部。[Java代码]importjava.util.*:(1)Company{protectedStringname;publicCompany(Stringname)(2)=name;}DublicabstractvoidAdd(Companyc);//增加子公司、办事处或部门DublicabstractvoidDelete(Companyc);//删除子公司、办事处或部门}C1assConcreteCompanyextendsCompany{privateListchildren=newArrayList();//存储子公司、办事处或部门publicConcreteCompany(Stringname){super(name);)publiCvoidAdd(Companyc)((5).addc;)publicvoidDelete(Companyc)((6).remove(C);)}C1assHRDepartmentextendsCompany(publiCHRDepartment(Stringname)(super(name);)//其他代码省略}C1assFinanceDepartmentextendsCompany(publicFinanceDepartment(Stringname)(super(name);)//其他代码省略}publiCClassTest{publicstatiCvoi‘dmain(String[]args)(c。ncretecompanyroot=newconcretecompany(“北京总公司”);root.Add(newHRDepartment(”总公司人力资源部”));root.Add(newFinanceDepartment(“总公司财务部”));concretecompanycomp=newcOncretecompany(“上海分公司”);comp.Add(newHRDepartment(“上海分公司人力资源部”));comp.Add(newFinanceDepartment(“上海分公司财务部”));(7);ConcreteCompanycompl=newconcretecompany(”南京办事处”);compl.Add(newHRDepartment(”南京办事处人力资源部”));compl.Add(newFinanceDepartment(”南京办事处财务部”);(8);//其他代码省略}}
阅读以下说明,根据要求回答问题1~问题3。【说明】某快递公司为了方便管理公司物品运送的各项业务活动,需要构建一个物品运送信息管理系统。【需求分析结果】(1)快递公司有多个分公司,分公司信息包括分公司编号、名称、经理、办公电话和地址。每个分公司可以有多名员工处理分公司的日常业务,每名员工只能在一个分公司工作。每个分公司由一名经理负责管理分公司的业务和员工,系统需要记录每个经理的任职时间。(2)员工信息包括员工号、姓名、岗位、薪资、手机号和家庭地址。其中,员工号唯一标识员工信息的每一个元组。岗位包括经理、调度员、业务员等。业务员根据客户提交的快件申请单进行快件受理事宜,一个业务员可以受理多个客户的快件申请,一个快件申请只能由一个业务员受理。调度员根据已受理的申请单安排快件的承运事宜,例如:执行承运的业务员、运达时间等。一个业务员可以执行调度员安排的多个快件的承运业务。(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号。其中,客户号唯一标识客户信息的每一个元组。当客户要寄快件时,先要提交快件申请单,申请号由系统自动生成。快件申请信息包括申请号、客户号、发件人、发件人电话、快件名称、运费、发出地、收件人、收件人电话、收件地址。其中,一个申请号对应唯一的一个快件申请,一个客户可以提交多个快件申请,但一个快件申请由唯一的一个客户提交。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图(图14—4)和关系模式(不完整)如下:【关系模式设计】分公司(分公司编号,名称,经理,办公电话,地址)员工(员工号,姓名,(a),岗位,薪资,手机号,家庭地址)客户(客户号,单位名称,通信地址,所属省份,联系人,联系电话,银行账号)申请单((b),发件人,发件人电话,发件人地址,快件名称,运费,收件人,收件人电话,收件地址,受理标志,业务员)安排承运((c),实际完成时间,调度员)
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】设有n个货物要装入若干个容重为C的集装箱以便运输,这n个货物的体积分别为{s1,s2,…,sn],且有si≤C(1≤i≤n)。为节省运输成本,用尽可能少的集装箱来装运这n个货物。下面分别采用最先适宜策略和最优适宜策略来求解该问题。最先适宜策略(firstfit)首先将所有的集装箱初始化为空,对于所有货物,按照所给的次序,每次将一个货物装入第一个能容纳它的集装箱中。最优适宜策略(bestfit)与最先适宜策略类似,不同的是,总是把货物装到能容纳它且目前剩余容重最小的集装箱,使得该箱子装入货物后闲置空间最小。
【C代码】
下面是这两个算法的C语言核心代码。
(1)变量说明
n:货物数
C:集装箱容量
s:数组,长度为n,其中每个元素表示货物的体积,下标从0开始。
b:数组,长度为n,b[i]表示第n+i个集装箱当前已经装入货物的体积,下标从0开始
i,j:循环变量
k:所需的集装箱数
min:当前所用的各集装箱装入了第i个货物后的最小剩余容量
m:当前所需的集装箱数
temp:临时变量
(2)函数firstfit
intfirs七fit()(
inti,j;
k=0;
for(i=0;i
b[i]=0;
}
for(i=0;i
(1);
while(C—b[j]
j++;
}
(2);
k=k>(j+1)?k:(j+1);
}
returnk;
}
(3)函数bestfit
intbestfit(){
inti,j,min,m,temp;
k=0;
for(i=0;i
b[i]=0;
}
for(i=0;i
min=C;
m=k+1:
for(j=0;j
temp=c—b[j]一s[i];
if(temp>O&&temp
(3);
m=j;
}
}
(4) ;
k=k>(j+1)?k:(j+1);
}
return k;
}
