问答题某集团公司拥有多个分公司,为了方便集团公司对分公司各项业务活动进行有效管理,集团公司决定构建一个信息 系统以满足公司的业务管理需求。[需求分析]1.分公司关系需要记录的信息包括分公司编号、名称、经理、联系地址和电话。分公司编号唯一标识分公司信 息中的每一个元组。每个分公司只有一名经理,负责该分公司的管理工作。每个分公司设立仅为本分公司服务的多个业务部门,如研发部、财务部、采购部、销售部等。2.部门
问答题凸多边形是指多边形的任意两点的连线均落在多边形的边界或者内部。相邻的点连线落在多边形边上,称为边,不相邻的点连线落在多边形内部,称为弦。假设任意两点连线上均有权重,凸多边形最优三角剖分问题定义为:求将凸多边形划分为不相交的三角形集合,且各三角形权重之和最小的剖分方案。每个三角形的权重为三条边权重之和。假设N个点的凸多边形,点编号为V1, V2, .. Vn,若在Vk处将原凸多边形划分为一个三角形V
问答题某游戏公司欲开发一款吃金币游戏。游戏的背景为一种回廊式迷宫Maze,在迷宫的不同位置上设置有墙。迷宫中有两种类型的机器人Robos:小精灵PacMan和幽灵Ghost。游戏的目的就是控制小精灵在迷宫内游走,吞吃迷宫路径上的金币,且不能被幽灵抓到。幽灵在迷宫中游走,并会吃掉遇到的小精灵。机器人游走时,以单位距离的倍数计算游走路径的长度。当迷宫中至少存在一个小精灵和一个幽灵时,游戏开始。机器人上有两种
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】堆数据结构定义如下:对于n个元素的关键字序列{a1,a2,…,an},当且仅当满足下列关系时称其为堆。在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则称为小顶堆。堆常用完全二叉树表示,图15.2是一个大顶堆的例子。堆数据结构常用于优先队列中,以维护由一组元素构成的集合。对应于两类堆结构,优先队列也有最大优先队列和最小优先队列,其中最大优先队列采用大顶堆,最小优先队列采用小顶堆。以下考虑最大优先队列。假设现己建好大顶堆A,且已经实现了调整堆的函数heapify(A,n,index)。下面将C代码中需要完善的三个函数说明如下:(1)heapMaximum(A).返回大顶堆A中的最大元素。(2)heapExtractMax(A):去掉并返回大顶堆A的最大元素,将最后一个元素“提前”到堆顶位置,并将剩余元素调整成大项堆。(3)maxHeaplnsert(A,key).把元素key插入到大顶堆A的最后位置,再将A调整成大顶堆。优先队列采用顺序存储方式,其存储结构定义如下:#definePARENT(i)i/2typedefstructarray{int*intarray;//优先队列的存储空间首地址intarraysize;//优先队列的长度intcapacity;//优先队列存储空间的容量}ARRAY;【C代码】(1)函数heapMaximumintheapMaximum(ARRAY*A)(return(1))(2)函数heapExtractMaxintheapExtractMax(ARRAY*A)(intmax;max=A->int—array[0];(2);A一>array_size-一;Heapify(A,A一>array—size,0);//将剩余元素调整成大顶堆returnmax;}(3)函数maxHeaplnsertintmaxHeaplnsert(ARRAY*A,intkey){inti,*P;if(A一>array一size==A一>capacity){//存储空间的容量不够时扩充空间p=(int*)realloc(A一>intarray,A一>capacity*2*sizeof(int));if(!P)return一1;A一>int_array=P;A一>capacity=2*A一>capacity;}A一>array_size++:i=(3);while(i>0&&(4){A一>int_array[i]=A一>int_array[PARENT(i)];i=PARENT(i);}(5);return0;}
某宾馆拟开发一个宾馆客房预订子系统,主要是针对客房的预订和入住等情况进行管理。【需求分析结果】(1)员工信息主要包括员工号、姓名、出生年月、性别、部门、岗位、住址、联系电话和密码等信息。岗位有管理和服务两种。岗位为“管理”的员工可以更改(添加、删除和修改员工表中的本部门员工的岗位和密码,要求将每一次更改前的信息保留;岗位为“服务”的员工只能修改员工表中本人的密码,且负责多个客房的清理等工作。(2)部门信息主要包括部门号、部门名称、部门负责人、电话等信息;一个员工只能属于一个部门,一个部门只有一位负责人。(3)客房信息包括客房号、类型、价格、状态等信息。其中类型是指单人间、三人间、普通标准间、豪华标准间等;状态是指空闲、入住和维修。(4)客户信息包括身份证号、姓名、性别、单位和联系电话。(5)客房预订情况包括客房号、预订日期、预订入住日期、预订入住天数、身份证号等信息。一条预订信息必须且仅对应一位客户,但一位客户可以有多条预订信息。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图(不完整)如图13-3所示。【逻辑结构设计】逻辑结构设计阶段设计的部分关系模式(不完整)如下。员工((4),姓名,出生年月,性别,岗位,住址,联系电话,密码)权限(岗位,操作权限)部门(部门号,部门名称,部门负责人,电话)客房((5),类型,价格,状态,入住日期,入住时间,员工号)客户((6),姓名,性别,单位,联系电话)更改权限(员工号,(7),密码,更改日期,更改时间,管理员号)预订情况((8),预订日期,预订入往日期,预订入住天数)
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQLServer和Access两种数据库以及系统中的数据库表Department为例,其类图如图16—3所示。【C++代码】#includeUSingnamespacestd;classDepartment(/*代码省略*/);ClassIDepartment(public:(1)=0;(2)=0;}ClassSqlserverDepartment:(3){public:voidInsert(Department*department)(cout
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某物流公司为了整合上游供应商与下游客户,缩短物流过程,降低产品库存,需要构建一个信息系统以方便管理其业务运作活动。【需求分析结果】(1)物流公司包含若干部门,部门信息包括部门号、部门名称、经理、电话和邮箱。一个部门可以有多名员工处理部门的日常事务,每名员工只能在一个部门工作。每个部门有一名经理,只需负责本部门的事务和人员。(2)员工信息包括员工号、姓名、职位、电话号码和工资;其中,职位包括:经理、业务员等。业务员根据托运申请负责安排承运货物事宜,例如:装货时间、到达时间等。一个业务员可以安排多个托运申请,但一个托运申请只由一个业务员处理。(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号,其中,客户号唯一标识客户信息的每一个元组。每当客户要进行货物托运时,先要提出货物托运申请。托运申请包括申请号、客户号、货物名称、数量、运费、出发地、目的地。其中,一个申请号对于唯一的一个托运申请;一个客户可以有多个货物托运申请,但一个托运申请对应唯一的一个客户号。【概念设计模型】根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图14.11所示。【关系模式设计】部门(部门号,部门名称,经理,电话,邮箱)员工(员工号,姓名,职位,电话号码,工资,(a))客户((b),单位名称,通信地址,所属省份,联系人,联系电话,银行账号)托运请求((c),货物名称,数量,运费,出发地,目的地)安排承运((d),装货时间,达到时间,业务员)
阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。【说明】欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表16—2所示。该绘图软件的扩展性要求,将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接(Bridge)模式来实现上述要求,得到如图16—2所示的类图。【C++代码】ClassDPI{public:staticvoiddraw_aline(doublexl,doubleyl,doublex2,doubley2){/*代码省略*/)staticvoiddraw—a—circle(doublex,doubley,doubler)(/*代码省略*/)};C1assDP2(public:staticvoiddrawline(doublexl,doublex2,doubleyl,doubley2)(/*代码省略*/)staticvoiddrawcircle(doubleX,doubleY,doubler)(/*代码省略*/)};classDrawing(public:(1);(2);};classvodrawing:publicDrawing(public:voiddrawLine(doublex1,doubley1,doublex2,doubley2)(/*代码省略*/)voiddrawCircle(doubleX,doubleY,doubler)((3);)};Classvidrawing:publicDrawing{public:voiddrawLine(doublexl,doubleyl,doublex2,doubley2)(/*代码省略*/)voiddrawCircle(doubleX,doubleY,doubler)((4))};C1assShape{public:(5);Shape(Drawing*dp)(_dp=dp;)voiddrawLine(doublex1,doubleyl,doublex2,doubley2){dp一>drawLine(x1,y1,x2,y2);)voiddrawCircle(doubleX,doubleY,doubler)(一dp一>drawCircle(X,Y,r);}private:Drawing。dp;};classRectangle:publicShape{public:voiddraw()(/*代码省略*/}//其余代码省略};classcircle:publicShape{private:doubleX,—y,一r;public:Circle(Drawing*dp,doublex,doubley,doubler):(6)(x=x;_y=y;_r=r;)voiddraw(){drawCircle(mX,_y,_r);)};
阅读下列说明和有关的图表,回答问题1至问题3。[说明]A公司决定为该市车站开发自动售票系统,系统的要求如下:1.乘客能按以下三步操作购票:选定目的地;投入钱币;获得一张票。2.当且仅当乘客选定目的地后,系统才接收投钱,每次投入的钱只购买一张票。3.只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快出票。4.如需找钱,则在出票的同时应退还多余的钱。5.如果乘客投入的钱不够票价,或者票库中没有所要求的票时,系统将全额退钱,并允许乘客另选目的地,继续购票。6.出票前乘客可以按“取消”按钮取消购票,系统将全额退出该乘客投入的钱,并允许乘客另选目的地,继续购票。7.出票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚线表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。转换图如图1所示。对售票全过程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移图中,用双线框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在有向边旁用“”形式注明。状态迁移图如图2所示。该公司还制作了一个过程启动表,用以表明状态迁移图中的4个动作与转换图中的4个过程之间的“启动”关系,即说明哪个动作将启动哪个过程。用1表示启动,用。表示不启动。启动的过程将根据获得的输人数据产生输出数据,未启动的过程则不会产生输出数据。该表中没有列出的过程,其执行与否与事件无关。过程启动表见表1:
某集团公司拥有多个大型连锁商场,公司需要构建一个数据库系统以方便管理其业务运作活动。【需求分析结果】(1)商场需要记录的信息包括商场编号(编号唯一)、商场名称、地址和联系电话。某商场信息如表13-1所示。(2)每个商场包含不同的部门,部门需要记录的信息包括部门编号(集团公司分配)、部门名称、位置分布和联系电话。某商场的部门信息如表13-2所示。(3)每个部门雇佣多名员工处理日常事务,每名员工只能隶属一个部门(新进员工在培训期不隶属于任何部门)。员工需要记录的信息包括员工编号(集团公司分配)、姓名、岗位、电话号码和工资。员工信息如表13-3所示。(4)每个部门的员工中有一名是经理,每个经理只能管理一个部门,系统需要记录每个经理的任职时间。【概念模型设计】根据需求阶段搜集的信息,设计实体联系图(如图13-2所示)和关系模式(不完整)。【关系模式设计】商场(商场编号,商场名称,地址,联系电话)部门(部门编号,部门名称,位置分布,联系电话,(a))员工(员工编号,员工姓名,岗位,电话号码,工资,(b))经理((c),任职时间)
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表17—2所示。现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图17—5所示的类图。[Java代码]importjava.util.*;(1)classBeverage(//饮料Stringdescription=“UnknownBeverage”;public(2)()(returndescription;)public(3);}abstractclassCondimentDecoratorextendsBeverage{//配料(4);}classEspressoextendsBeverage(//蒸馏咖啡privatefinalintESPRESSO—PRICE=25;pubiicEspresso()(description=”Espresso”;*}publicintcost()(returnESPRESSO—PRICE;)}classDarkRoastextendsBeverage(//深度烘焙咖啡privatefinalintDARKROAST—PRICE=20;publicDarkRoast()(description=“DarkRoast”;}publicintcost()(rcturnDARKROASTPRICE;}}classMochaextendsCondimentDecorator{//摩卡privatefinalintMOCHA_PRICE=10;publicMocha(Beveragebeverage){this.beverage=beverage;}publicStringgetDescription(){returnbeverage.getDescription0+“,Mocha”;}publicintcost(){returnMOCHA—PRICE+beverage.cost();}}classWhil3extendscondimentDecorator(//奶泡privatefinalintWHIP_PRICE=8;publicWhip(Beveragebeverage)(this.beverage=beverage;)publiCStringgetDescrip七ion()(returnbeverage.getDescrip七ion()+”,Whip”;}publicintcost()(returnWHIP—PRICE+beverage.cost();}}publicClasSCoffee{publicstaticvoidmain(Stringargs[]){Beveragebeverage=newDarkRoast();beverage=newMocha((5));beverage=newWhip((6));System.out.printin(beverage.getDescrip七ion()+。“¥”+beverage.cost());}}编译运行上述程序,其输出结果为:DarkRoast,Mocha,Whip¥38
阅读下列说明和Java代码,将应填入__________(n)处的字句写在答题纸的对应栏内。【说明】某大型购物中心欲开发一套收银软件,要求其能够支持购物中心在不同时期推出的各种促销活动,如打折、返利(例如,满300返100)等。现采用策略(Strategy)模式实现该要求,得到如图6-1所示的类图。[Java、代码]importjava.util.*;enumTYPE{NORMAL,CASHDISCOUNT,CASHRETURN);interfaceCashSuper{public___________(1);}classCashNormalimplementsCashSuper{//正常收费子类publicdoubleacceptCash(doublemoney){returnmoney;}}classCashDiscountimplementsCashSuper{privatedoublemoneyDiscount;//折扣率publicCashDiscount(doublemoneyDiscount){this.moneyDiscount=moneyDiscount;}publicdoubleacceptCash(doublemoney){returnmoney*moneyDiscount;}}classCashReturnimplementsCashSuper{//满额返利privatedoublemoneyCondition;privatedoublemoneyReturn;publicCashReturn(doublemoneyCondition,doublemoneyReturn){this.moneycondition=moneyCondition;//满额数额this.moneyReturn=moneyReturn;//返利数额}publicdoubleacceptCash(doublemoney){doubleresult=money;if(money>=moneyCondition)result=money-Math.floor(money/moneyCondition)*moneyReturn;returnresult;}}ClassCashContext{privateCashSupercs;privateTYPEt;publicCashContext(TYPEt){switch(t){caseNORMAL://”正常收费”___________(2);break;caseCASHDISCOUNT://"打8折"___________(3);break;caseCASHRETURN://"满300返100"____________(4);break;}}publicdoubleGetResult(doublemoney){___________(5);}//此处略去main()函数}
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表17—3所示。为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图17—11所示。图17—11中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法fly()和takeOff()分别表示不同飞机都具有飞行特征和起飞特征类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行为与起飞行为;类SubSonicFly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff与L0ngDistanceTakeoff分别描述垂直起飞与长距离起飞的行为。[Java代码]interfaceFlyBehavior(publiCVOidfly();};classSubSonicFlyimplementsFlyBehaVior(publicvoidfly()(System.out.printin(“亚音速飞行!”);)};ClassSuperSonicFlyimplementsFlyBehaVior(publicvoidfly()(System.out.println(”超音速飞行!”);)};interfaceTakeOffBehavior{publicvoidtakeOff();};ClassVerticalTakeOffimplementsTakeOffBehavior(publicvoidtakeOff()(System.out.println(“垂直起飞!”);)};ClassLongDistanceTakeOffimplementsTakeOffBehavior{publicvoidtakeOff()
阅读下列说明C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表16.3所示。现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图16—5所示的类图。【C++代码】#include{}includeUSingnamespacestd;constintESPRESSO_PRICE=25;constintDRAKROAST_PRICE=20;constintMOCHA—PRICE=10;constintWHIP_PRICE=8;classBeverage(//饮料(1):stringdescription;public:(2)()(returndescription;)(23);};classCondimentDecorator:publicBeverage(//配料protected:(4);};classEspresso:publicBeverage(//蒸馏咖啡public:EspresSO(){description:”Espresso”;}intcost()(returnESPRESSO_PRICE;}};classDarkRoast:publicBeverage(//深度烘焙咖啡public:DarkRoast()(description=”DardRoast”;)intcost()(returnDRAKROAST_PRICE;));classMocha:publicCondimentDecorator{//摩卡public:Mocha(Beverage‘beverage)(thiS一>beverage=beverage;)stringgetDescription()(returnbeverage一>getDescription()+”,Mocha”;)intcost()(returnMOCH@A@-pRICE+beverage一>cost();));classWhip:publicCondimentDecorator{//奶泡public:Whip(Beverage‘beverage)(thiS一>beverage=beverage;)stringgetDescription()(returnbeverage一>getDescription()+”,Whip”;)intcost()(returnWHIP_PRICE+beverage一>cost();));intmain(){Beverage*beverage=newDarkRoast();beVerage=newMocha((15));beVerage=newWhip((6));coutgetDescription()
阅读下列说明C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】用两台处理机A和B处理n个作业。设A和B处理第i个作业的时间分别为ai和bi。由于各个作业的特点和机器性能的关系,对某些作业,在A上处理时间长,而对某些作业在B上处理时间长。一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现要找出一个最优调度方案,使得n个作业被这两台处理机处理完毕的时间(所有作业被处理的时间之和)最少。算法步骤:(1)确定候选解上界为最短的单台处理机处理所有作业的完成时间m,(2)用p(x,y,k)=1表示前k个作业可以在A用时不超过x且在B用时不超过y时间内处理完成,则p(x,y,k)=p(x—ak,Y,k一1)∥p(x,y.bk,k一1)(11表示逻辑或操作)。(3)得到最短处理时间为min(max(x,y))。【C代码】下面是该算法的C语言实现。(1)常量和变量说明n:作业数m:候选解上界a:数组,长度为n,记录n个作业在A上的处理时间,下标从0开始b:数组,长度为n,记录n个作业在B上的处理时间,下标从0开始k:循环变量p:三维数组,长度为(m+1)*(m+1)*(n+1)temp:临时变量max:最短处理时间(2)C代码#includeintn,m;inta[60],b[60],P[100][100][60];voidread()(/*输入rl、a、b,求出m,代码略*/)voidschedule()(/(求解过程*/intX,Y,k;for(x=0;xfor(y=0;y=0)(2);if((3))p[x][y][k]=(pIx][y][k]lIP[X][y—b[k一1\]\][k一1]);}}}}voidwrite(){/*确定最优解并输出*/intXY,temp,max:m;for(x=0;xfor(y=0;yif((4)){temp=(5);if(temp
阅读下列说明、流程图和算法,将应填(n)处的字句写在对应栏内。[说明]下面的流程图(如图3所示)用N-S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:[流程图][算法说明]将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数intp(intA[],intlow,inthieh)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数voidsort(intA[],intL,intH)的功能是实现数组A中元素的递增排序。[算法]voidsort(intA[],intL,intH){if(L<H){k=p(A,L,R);//p()返回基准数在数组A中的下标sort((4));//小于基准敷的元素排序sort((5));//大于基准数的元素排序}}
某高校欲开发一个成绩管理系统。记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下。(1)每门课程都由3~6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。(2)学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。(3)在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。(4)对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。(5)若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。(6)在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告退还系统。(7)根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。现采用结构化方法对这个系统进行分析与设计,得到如图12-10所示的顶层数据流图和图12-11所示的0层数据流图。
阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某公司拟开发一套小区物业收费管理系统。初步的需求分析结果如下:(1)业主信息主要包括:业主编号,姓名,房号,房屋面积,工作单位,联系电话等。房号可唯一标识一条业主信息,且一个房号仅对应一套房屋;一个业主可以有一套或多套的房屋。(2)部门信息主要包括:部门号,部门名称,部门负责人,部门电话等;一个员工只能属于一个部门,一个部门只有一位负责人。(3)员工信息主要包括:员工号,姓名,出生年月,性别,住址,联系电话,所在部门号,职务和密码等。根据职务不同员工可以有不同的权限,职务为“经理”的员工具有更改(添加、删除和修改)员工表中本部门员工信息的操作权限;职务为“收费”的员工只具有收费的操作权限。(4)收费信息包括:房号,业主编号,收费日期,收费类型,数量,收费金额,员工号等。收费类型包括物业费、卫生费、水费和电费,并按月收取,收费标准如表14—4所示。其中:物业费=房屋面积(平方米)×每平米单价,卫生费=套房数量(套)×每套庆单价,水费=用水数量(吨)×每吨水单价,电费=用电数量(度)×每度电单价。(5)收费完毕应为业主生成收费单,收费单示例如表14.5所示。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图(不完整)如图14.17所示。图14.17中收费员和经理是员工的子实体。【逻辑结构设计】根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整);业主((1),姓名,房屋面积,工作单位,联系电话)员工((2),姓名,出生年月,性别,住址,联系电话,职务,密码)部门((3),部门名称,部门电话)权限(职务,操作权限)收费标准((4))收费信息(5),收费类型,收费金额,员工号)
根据以上C代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过100字);若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某出版社拟开发一个在线销售各种学术出版物的网上商店(ACShop),其主要的功能需求描述如下:(1)ACShop在线销售的学术出版物包括论文、学术报告或讲座资料等。(2)ACShop的客户分:为两种:未注册客户和注册客户。(3)未注册客户可以浏览或检索出版物,将出版物添加到购物车中。未注册客户进行注册操作之后,成为ACShop注册客户。(4)注册客户登录之后,可将待购买的出版物添加到购物车中,并进行结账操作。结账操作的具体流程描述如下:①从预先填写的地址列表中选择一个作为本次交易的收货地址。如果没有地址信息,可以添加新地址信息。②选择付款方式。ACShop支持信用卡付款或银行转账两种方式。注册客户可以从预先填写的信用卡或银行账号中选择一个付款,若没有付款方式信息,则可以添加新付款方式。③确认提交购物车中待购买的出版物,ACShop会自动生成与之相对应的订单。(5)管理员负责维护在线销售的出版物目录,包括添加新出版物或者更新在售出版物信息等操作。现采用面向对象方法分析并设计该网上商店ACShop,得到如图3-1所示的用例图和图3-2所示的类图。