问答题[函数5-2]
bool Isgrowing(BTreeNode* root, ElernKeyType akey)
{ BTreeNode *t, *f;
if( !SearchBtree( {{U}}(4) {{/U}}) ) {
t=f;
while ({{U}} (5) {{/U}}) {
t=t -> parent;
}
if( !t )
return TRUE;
}
return FALSE;
}
问答题阅读以下说明和图,回答问题1至问题3。【说明】某房屋租赁公司欲建立一个房屋租赁服务系统,统一管理房主和租赁者的信息,从而快速地提供租赁服务。该系统具有以下功能:1.登记房主信息。对于每名房主,系统需登记其姓名、住址和联系电话,并将这些信息写入房主信息文件。2.登记房屋信息。所有在系统中登记的房屋都有一个唯一的识别号(对于新增加的房屋,系统会自动为其分配一个识别号)。除此之外,还需登记该房屋的地址、房型(如平房、带阳台的楼房、独立式住宅等)、最多能够容纳的房客数、租金及房屋状态(待租赁、已出租)。这些信息都保存在房屋信息文件中。一名房主可以在系统中登记多个待租赁的房屋。3.登记租赁者信息。所有想通过该系统租赁房屋的租赁者,必须首先在系统中登记个人信息,包括:姓名、住址、电话号码、出生年月和性别。这些信息都保存在租赁者信息文件中。4.租赁房屋。已经登记在系统中的租赁者,可以得到一份系统提供的待租赁房屋列表。一旦租赁者从中找到合适的房屋,就可以提出看房请求。系统会安排租赁者与房主见面。对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。5.收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单交纳相应的费用。6.变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。数据流图10-1和图10-2分别给出了该系统的顶层数据流图和0层数据流图。
问答题【说明】某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-6所示:{{B}}表10-6{{/B}}为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图10-11所示:其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck、CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;类FlyBehavior与QuackBehavior为抽象类,分别用于表示抽象的飞行行为与发声行为:类FlyNoWay与FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;类Quack、Squeak与QuackNoWay分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。【C++代码】#include<iostream>usingnamespace{{U}}(1){{/U}};classFlyBehavior{public:{{U}}(2){{/U}}fly()=0;};classQuackBehavior{public:{{U}}(3){{/U}}quack()=0;};classFlyWithWings:publicFlyBehavior{public:voidfly(){cout<<“使用翅膀飞行!”<<endl;}};classFlyNoWay:publicFlyBehavior{public:voidfly(){cout<<“不能飞行!”<<endl;}};classQuack:publicQuackBehavior{public:voidquack(){cout<<“发出/‘嘎嘎/’声!”<<endl;}};classSqueak:publicQuackBehavior{public:voidquack(){cout<<“发出空气与橡皮摩擦声!”<<endl;}};classQuackNoWay:publicQuackBehavior{public:voidquack(){cout<<“不能发声!”<<endl;}};classDuck{protected:FlyBehavior*{{U}}(4){{/U}};QuackBehavior*{{U}}(5){{/U}};public:voidfly(){{{U}}(6){{/U}};}voidquack(){{{U}}(7){{/U}};);virtualvoiddisplay()=0;};classRubberDuck:publicDuck{public:RubberDuck(){flyBehavior=new{{U}}(8){{/U}};quackBehavior=new{{U}}(9){{/U}};}~RubberDuck(){if(!flyBehavior)deleteflyBehavior;if(!quackBehavior)deletequackBehavior;}voiddisplay(){/*此处省略显示橡皮鸭的代码*/}};//其他代码省略
问答题[说明]某宾馆拟开发一个宾馆客房预订子系统,主要是针对客房的预订和入住等情况进行管理。[需求分析结果](1)员工信息主要包括员工号、姓名、出生年月、性别、部门、岗位、住址、联系电话和密码等信息。岗位有管理和服务两种。岗位为“管理”的员工可以更改(添加、删除和修改)员工表中本部门员工的岗位和密码,要求将每一次更改前的信息保留;岗位为“服务”的员工只能修改员工表中本人的密码,且负责多个客房的清理等工作。(2)部门信息主要包括部门号、部门名称、部门负责人、电话等信息。一个员工只能属于一个部门,一个部门只有一位负责人。(3)客房信息包括客房号、类型、价格、状态等信息。其中,类型是指单人间、三人间、普通标准间、豪华标准间等;状态是指空闲、入住和维修。(4)客户信息包括身份证号、姓名、性别、单位和联系电话。(5)客房预订情况包括客房号、预订日期、预订入住日期、预订入住天数、身份证号等信息。一条预订信息必须且仅对应一位客户,但一位客户可以有多条预订信息。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图(不完整)如下图所示。[逻辑结构设计]逻辑结构设计阶段设计的部分关系模式(不完整)如下。员工(______,姓名,出生年月,性别,岗位,住址,联系电话,密码)权限(岗位,操作权限)部门(部门号,部门名称,部门负责人,电话)客房(______,类型,价格,状态,入住日期,入住时间,员工号)客户(______,姓名,性别,单位,联系电话)更改权限(员工号,______,密码,更改日期,更改时间,管理员号)预订情况(______,预订日期,预订入住日期,预订入住天数)
问答题例如:设散列函数为Hash(Key)=Keymod7,记录的关键字序列为15,14,21,87,97,293,35,24,149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件内容如图4-1所示。[图4-1]为简化起见,散列文件的存储单位以内存单元表示。函数InsertToHashTable(intNewElemKey)的功能是:将元素NewEIemKey插入散列桶中,若插入成功则返回0,否则返回-1。采用的散列函数为Hash(NewElemKey)=NewElemKey%P,其中P为设定的基桶数目。函数中使用的预定义符号如下:#defineNULLKEY-1/*散列桶的空闲单元标识*/#defineP7/*散列文件中基桶的数目*/#defineITEMS3/*基桶和溢出桶的容量*/typedefstructBucketNode{/*基桶和溢出桶的类型定义*/intKcyData[ITEMS];structBucketNode*Link;}BUCKET;BUCKETBucket[P];/*基桶空间定义*/[函数]intlnsertToHashTable(intNewElemKey){/*将元素NewElemKey插入散列桶中,若插入成功则返回0,否则返回-1*//*设插入第一个元素前基桶的所有KeyData[]、Link域已分别初始化为NULLKEY、NULL*/intIndex;/*基桶编号*/inti,k;BUCKET*s,*front,*t;{{U}}(1){{/U}};for(i=0;i<ITEMS;i++)/*在基桶查找空闲单元,若找到则将元素存入*/if(Bucket[Index].KeyData[i]=NULLKEY){Bucket[Index].KeyData[i]=NewElemKey;break;}if({{U}}(2){{/U}})return0;/*若基桶已满,则在溢出桶中查找空闲单元,若找不到则申请新的溢出桶*/{{U}}(3){{/U}};t=Bucket[Index].Link;if(t!=NULL){/*有溢出桶*/while(t!=NULL){for(k=0;k<ITEMS;k++)if(t->KeyData[k]=NULLKEY){/*在溢出桶链表中找到空闲单元*/t->KeyData[k]=NewElemKey;break;}/*if*/front=t;if({{U}}(4){{/U}})t=t->Link;elsebreak;}/*while*/}/*if*/if({{U}}(5){{/U}}){/*申请新溢出桶并将元素存入*/s=(BUCKET*)malloe(sizeof(BUCKET));if(!s)return-1;s->Link=NULL;for(k=0;k<ITEMS;k++)s->KeyData[k]=NULLKEY;s->KeyData[0]=NewElemKey;{{U}}(6){{/U}};}/*if*/return0;}/*InsertToHashTable*/
问答题【问题1】
对文法G进行改写,然后对每个非终结符写出不带回溯的递归于程序。
问答题[说明]某汽车维修站拟开发一套小型汽车维修管理系统,对车辆的维修情况进行管理。(1)对于新客户及车辆,汽车维修管理系统首先登记客户信息,包括客户编号、客户名称、客户性质(个人、单位)、折扣率、联系人、联系电话等信息;还要记录客户的车辆信息,包括车牌号、车型、颜色等信息。一个客户至少有一台车。客户及车辆信息如表1所示。(2)记录维修车辆的故障信息,包括维修类型(普通、加急)、作业分类(大、中、小修)、结算方式(自付、三包、索赔)等信息。维修厂的员工分为维修员和业务员。车辆维修首先委托给业务员。业务员对车辆进行检查和故障分析后,与客户磋商,确定故障现象,生成维修委托书,如下表2所示。表1 客户及车辆信息客户编号GS0051客户名称××公司客户性质单位折扣率95%联系人杨浩东联系电话82638779车牌号**0765车型帕萨特颜色白色车辆类别微型车表2 维修委托书No.20070702003 登记日期:2007-07-02车牌号**0765客户编号GS0051维修类型普通作业分类中修结算方式自付进厂时间2007070211:09业务员张小江业务员编号012预计完工时间故障描述车头损坏,水箱漏水(3)维修车间根据维修委托书和车辆的故障现象,在已有的维修项目中选择并确定一个或多个具体维修项目,安排相关的维修工及工时,生成维修派工单。维修派工单如下表所示。维修派工单No.200700702003维修项目编号维修项目工时维修员编号维修员工种012维修车头5.00012机修012维修车头2.00023漆工015水箱焊接补漏1.00006焊工017更换车灯1.00012机修(4)客户车辆在车间修理完毕后,根据维修项目单价和维修派工单中的工时计算车辆此次维修的总费用,并记录在委托书中。[概念结构设计]根据需求阶段收集的信息,设计的实体联系图(不完整)如下图所示。图中的业务员和维修工是员工的子实体。[逻辑结构设计]逻辑结构设计阶段设计的关系模式(不完整)如下。客户(______,折扣率,联系人,联系电话)车辆(车牌号,客户编号,车型,颜色,车辆类别)委托书(______,维修类型,作业分类,结算方式,进厂时间,预计完工时间,登记日期,故障描述,总费用)维修项目(维修项目编号,维修项目,单价)派工单(______,工时)员工(______,工种,员工类型,级别)
问答题
阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。 [说明]
某汽车数字仪表系统将完成下述功能: (1)通过模一数转换,实现传感器和微处理器的接口。
(2)在发光二极管面板上显示数据。 (3)指示速度(mph)、行驶里程、油耗(mpg)等。
(4)指示加速或减速。
以下是经分析得到的数据流图,有些地方有待填充,假定顶层数据流图是正确的。图1-1是顶层数据流图,图1-2是第0层数据流图,图1-3是第1层数据流图,其中A是加工1的细化图,B是加工2的细化图。图中,△sps表示转速sps的瞬时变化值,若△sps>0则汽车加速,△sps<0则减速,△sps=0则匀速。假定题中提供的顶层图是正确的,请回答下列问题。
[图1-1]
[图1-2] [图1-3]
问答题【说明】 本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式 (A-(B*C+D)*E)/(F+G)) 的后缀表示为 ABC*D+E*-FG+/ 为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下: 数组 IN[]存储中缀表达式; 数组 POLISH[]存储其后缀表达式; 数组 S[]是一个后进先出栈; 函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2: 表2 CHAR PRIOR(XHAR) */ + - ( ) 4 3 2 1
问答题【说明】 流程图描述了某高校图书订购与编目系统的处理流程。全校的图书典藏在校图书馆和各系的资料室中。学校每年分若干批向出版单位订购图书,同一批订购的图书将陆续邮寄到学校。出版单位在寄出图书的同时附上到书清单和发票,发票上仅给出一份到书清单中书的总册数和总金额。学校收到图书和发票后,先参照订购单验收,然后进行编目,并把有关信息存放在书种文件、书名文件、作者文件和复本文件中,以供读者检索。 书种文件记录了每种书的有关信息。所谓一种书是指同一作者、同一书名、同一出版单位和同一出版年份出版的书。例如,2004年张明在科技出版社出版了《软件工程》(印数8000册)和《数据库基础》(印数5000册),则张明在2004年出版了两种书。在全校的藏书中,如果一种书只有一册,则该书的信息存放在书种文件中:如果一种书有多册,则其中一册书的信息存放在书种文件中,其余的书作为复本将信息存放在复本文件中。复本文件的结构与书种文件的结构相同,每种书都有一个书号,书号唯一地标识了一种书。在书库中,每册书有一个登录号,登录号唯一地标识了一册书。此外,为了图书检索的方便,将图书按学科分类,分类号用来标识不同的学科领域。 各类单据和文件的结构如下所示。 订购单:订购批号、书名、作者名、出版单位、出版年份、单价、订购册数、订购部门代码、订购日期。 到书清单:订购批号、书名、作者名、出版单位、出版年份、单价、册数。 发票:订购批号、发票号、总册数、总金额。 书种文件:分类号、登录号、书名代码、作者代码、出版单位、出版年份、单价、复本标志、典藏部门代码、借出标志。 其中,复本标志用来指示该种书在书库中有没有复本:对于书名相同的若干种书,书名代码是相同的。 书名文件:书名代码、书名。 作者文件:作者代码、作者名。
问答题层次模型不能直接表示多对多联系,为什么?可采用哪些方法进行多对多联系的表示。
问答题【说明】下面是一个Applet程序,其功能是建立2个文本区域,一个为编辑区,一个为只读区;建立2个按钮,一个实现将编辑区中被鼠标选定的文本内容拷贝到只读区中,一个实现将只读区的全部文本内容清空。程序运行结果如图3所示。importjava.awt.*;importjava.applet.*;/*<appletcode="ex3_6.class"width=800height=400></applet>*/publicclassex3_6extendsAppletprivateButtonokBtn,clearBtn;privateStringstrMessage;privateTextAreatArea1,tArea2;publicvoidinit()strMessage="Hello!Welcometothetest!/n"+"Wishyougoodluck!";tArea1=newTextArea(10,25);(1);tArea2=newTextArea(10,25);(2);OkBtn;newButton("Copy");dearBtn=(3);add(tArea1);add(tArea2);add(okBtn);add(clearBtn);publicbooleanaction(Evente,Objecto)if(e.target==okBtn)tArea2,setText((4));elseif(e.target==clearBtn)(5);returntrue;ex3_6.htm|<HTML><HEAD><TITLE>ex3_6</TITLE></HEAD><BODY><appletcode="ex3_6.class"Width=800height=400></applet></BODY></HTML>
问答题【说明】某汽车数字仪表板将完成下述功能:(1)通过模/数转换,实现传感器和微处理器的接口。(2)在发光二极管面板上显示数据。(3)指示速度(mph)、行驶里程、油耗(mpg)等。(4)指示加速或减速。以下是经分析得到的数据流图,有些地方有待填充,假定顶层数据流图是正确的。图9-14是顶层数据流图,图9-15是第0层数据流图,图9-16是第1层数据流图,其中A是加工1的细化图,B是加工2的细化图。图中,△sps表示转速sps的瞬时变化值,若△sps>0则汽车加速,△sps<0则减速,△sps=0则匀速。假定题中提供的顶层图是正确的,请回答下列问题。1.【问题1】第0层数据流图(如图9-15所示)中有一条缺失的数据流,请指出该数据流的起点和终点。加工1的细化图(如图9-16中的A所示)中有一条缺失的数据流,请指出该数据流的起点和终点。
问答题【说明】
①定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。
②完成类Table的成员函数print()的定义,该函数以“x*y=z”的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现。
③完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕。
④补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。
源程序文件test8_3.cpp清单如下:
#include <iostream, h >
#include < stdio, h >
class Table
}
{{U}} (1) {{/U}}
int z;
public:
void print (int x,int y,int z);
};
void Table::print (int x,int y,int z)
{
{{U}} (2) {{/U}}
}
Class Table9:public Table
{
public:
void print();
};
void Table9::print()
{
{{U}} (3) {{/U}}
int x,y,z;
for(i=1;i<10;i++)
{
for(j=1;j<i+1;j++)
{
x=i;
y=j;
z=i*j;
Table::print(y,x,z);
}
printf("/n");
}
}
main()
{
//* *4* *
return 0;
}
问答题阅读以下说明,回答问题1至问题3,将解答写在对应栏内。
【说明】 有如下关系数据库:
S(SNO,SN,STATUS,CITY) P(PNO,PN,COLORS,WEIGHT)
J(JNO,JN,CITY) SPJ(SNO,PNO,JNO,QTY)
其中,S为供应单位,P为零件,J为工程项目,SPJ为工程订购零件的订单,其语义为:某供应单位供应某种零件给某个工程,请用SQL完成下列操作。
问答题[问题3]根据数据流图的设计原则,阅读下图所示的数据流图,找出其中的错误之处。
问答题[说明]已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万~10万元(不包括10万元)的采购单,董事长可以审批10万~50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。采用责任链设计模式(ChainofResponsibility)对上述过程进行设计后得到的类图如下图所示。[Java程序]classPurchaseRequest{publicdoubleAmount;//一个采购的金额publicintNumber;//采购单编号publicStringPurpose;//采购目的};classApprover//审批者类{publicApprover(){successot=null;}publicvoidProcessRequest(PurchaseRequestaRequest){if(successor!=null){successor.______;}}publicvoidSetSuccessor(ApproveraSuccesssor){successor=aSuccesssor;}private______successor;};classCongressextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){if(aRequest.Amount>=500000){/*决定是否审批的代码省略*/}else______.ProcessRequest(aRequest);}};classDirectorextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};classPresidentextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};classVicePresidentextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};publicclassrs{publicstaticvoidmain(String[]args)throwsIOException{CongressMeeting=newCongress();VicePresidentSam=newVicePresident();DirectorLarry=newDirector();PresidentTammy=newPresident();//构造责任链Meeting.SetSuccessor(null);Sam.SetSuccessor(______);Tammy.SetSuccessor(______);Larry.SetSuccessor(______);//构造一采购审批请求PurchaseRequestaRequest=newPurchaseRequest();BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));aRequest.Amount=Double.parseDouble(br.readLine());______.ProcessRequest(aRequest);//开始审批return;}}
问答题[说明]已知对某载客车辆(Car)进行类建模,如图4-20所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。[Java代码]
问答题[问题3](7 分)
根据系统功能和数据流图填充下列数据字典条目中的(1)和(2):
查询请求信息=[查询读者请求信息| 查询图书请求信息]
读者情况=读者号+姓名+所在单位+{借书情况}
管理工作请求单= (1)
入库单= (2)
问答题【说明】 (1)流程图描述某大型商店商品销售的数据处理流程。 (2)商店设有若干柜台,同一种商品可能在几个柜台上销售,各柜台每天提供一组日销售数据,其格式如下: 日期、柜台号、商品代码、销售数量、商品代码、销售数量…… (3)数据处理系统每日产生一份反映各柜台当日销售金额和商店日销售金额的“日销售金额报告”,必要时还产生一份“商品请购报告”,给出那些低于最低库存量的商品代码、商品名称、最低库存量和实际库存量。处理过程中产生存档的“日销售文件”和临时工作文件“日销售量文件”和“旧销售金额文件”。 (4)系统中所用到的数据均来自数据文件。 (5)流程图中的商品库存文件的记录已按关键字“商品代码”排序。