问答题[说明]已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器面板如图1-18所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如图1-19所示。在图1-19中,类RomoteController的方法onPressButton(intbutton)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(intdegree)方法用于调整电灯灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中setChannel(intchannel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。[Java代码]本试题应用命令模式能够有效让类{{U}}(5){{/U}}和类{{U}}(6){{/U}}、类{{U}}(7){{/U}}之间的耦合性降至最小。
问答题[说明]
以下C++代码使用虚函数实现了同一基类shape派生出来的Class rectangle、Class triangle、Class circle实现了计算矩形、圆形面积的计算。仔细阅读以下代码,将{{U}} (n) {{/U}}处语句补充完整。
[代码5-1]
#include<iostream.h>
#define PI 3.14159
class shape {//基类
protected:
{{U}}(1) {{/U}};
public:
{{U}} (2) {{/U}};
{{U}} (3) {{/U}};
};
[代码5-2]
class rectangle: public shape {
public:
rectangle (int x2,int y2,int r2): {{U}}(4) {{/U}}{};
double area ( ) {return x*y; };
};
class circle: public shape {
public:
circle (int x3,int y3,int r3): {{U}}(5) {{/U}}{};
double area ( ) {return r*r*PI; };
};
[代码5-3]
void main ( )
{
rectangle r (10,20,0);
circle c (0,0,30);
shape {{U}}(6) {{/U}};
cout<<"长方形面积="<<s1->area ( ) <<endl;
cout<<"圆形面积="<<s2->area ( ) <<endl;
}
[运行结果]
长方形面积=200
圆形面积=2827.43
问答题【说明】StringEditor类的功能是:已知一个字符串,返回将字符串中的非字母字符都删除后的字符串。 public (1) public static String removeNonLetters( (2) ) StringBuffer aBuffer= (3) ; char aCharacter; for(int i=0; i<original.length();i++) aCharacter= (4) ; if(Character.isLetter(aCharacter)) aBuffer.append( (5) ); return new String(aBuffer); public class StringEditorTester public static void main(String args[]) String original="Hi!, My Name is Mark, 234I think you are my classmate?!!"; System.out.println(StringEditor.removeNonLetters(original));
问答题【说明】下面是一个Applet程序,其功能是将完整的图像显示于Applet的区块中,然后可以通过拖动鼠标让图像随着鼠标拖动的轨迹而移动。程序运行结果如图5所示。importjava.applet.*;importjava.awt.*;/*<appletcode="ex4_7.class",width=800height=400></applet>*/publicclassex4_7extendsAppletprivate|mageilmg;privateintxPos,yPos;publicvoidinit()xPos=yPos=(1);ilmg=getlmage((2)"ex4_7.jpg");publicvoidpaint(Graphicsg)g.drawlmage(ilmg,xPos,yPos,(3));publicboolean(4)(Evente,intx,inty)xPos=x;yPos=y;(5);returntrue;ex4_7.html<HTML><HEAD><TITLE>ex4_7</TITLE></HEAD><BODY><appletcode="ex4_7.class"width=800height=400></applet></BODY></HTML>
问答题【说明】 关于一位花商有以下一些事实。 (1)销售在不同地区生长的花,这些地区一年的最低气温在一定范围内变化。 (2)想用编号来表示发货类型。 (3)要出售某些类型的花。 假定已经通过SQL语句建立了基本表: CREATE TABLE Zone(ID CHAR(2) PRIMARY KEY, LowerTemp NUMERIC(3), UpperTemp NUMERIC(3)); CREATE TABLE Delivery(ID CHAR (2) PRIMARY KEY, Category CHAR(5), DelSize NUMERIC(5,3)); CREATE TABLE FlowerInfo(ID CHAR (3), ComName CHAR(25), LatName CHAR(30), Czone NUMERIC(3), Hzone NUMERIC(3), Delivered NUMERIC(3), SunNeed CHAR(3), PRIMARY KEY(ID)); 地区(ID,最高温度,最低温度) 发货(ID,发货类型,发货规格) 花的信息(ID,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)
问答题[说明] 某旅馆的电话服务如下:可以拨分机号和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成。局号可以是455,466,888,552中任意一个号码。分局号是任意长度为4的数字串。要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。
问答题
问答题【问题2】
不考虑数据确认处理(加工2),请指出数据流图中存在的错误。
问答题【问题2】 请从表10-2中选择方法,完成图10-5中的(7)~(10)。{{B}} 表10-2 可选消息列表{{/B}}
功 能 描 述
方 法 名
向促销订单中添加所选的商品
buyCommodities
向促销中添加要促销的商品
addCommodities
查找某个促销的所有促销订单信息列表
getPromotionOrders
生成商品信息
createCommodity
查找某个分类中某商家的所有商品信息列表
getCommodities
生成促销信息
createPromotion
生成促销订单信息
createPOrder
查找某个分类的所有促销信息列表
getCategoryPromotion
查找某商家所销售的所有分类列表
getCategories
查找某个促销所涉及的所有商品信息列表
getPromtionCommodities
问答题【说明】设有关于银行借贷管理系统的E-R图。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。为了答题的方便,图中的实体和属性同时给出了中英文说明,回答问题时只需写出英文名即可。1.【问题1】根据E-R图中给出的词汇,按照“有关模式名(属性1,属性2,…)”的格式,将此E-R图转换为关系模式,并指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。要求其中的关系模式至少属于第三范式。
问答题[说明]下面是某公司开发的电梯管理系统,系统功能如下:1.响应用户召唤指令。当用户需要电梯时可以通过按楼层面板召唤。2.进入电梯后,乘客可以通过电梯面板选择目的楼层。3.当电梯到达调度楼层后,判断是否响应停止运行,开启电梯门,完成调度。4.当电梯到达非调度楼层时,不作响应,继续运行。5.乘客在电梯中能够知道电梯的运动状态,如运动方向、电梯运行到的楼层等。6.电梯超载报警。系统采用面向对象方法进行开发。在开发过程中某设计室设计的电梯管理系统用例如表9-4所示。电梯管理系统用例图如图9-4所示。表9-4系统用例说明{{/B}}用例名称描述 电梯召唤 当用户需要使用电梯时,通过按楼层面板通知电梯管理系统 目的地请求 进入电梯后,乘客可以通过电梯面板选择目的楼层 电梯到达调度楼层 当电梯到达调度楼层后,判断是否响应,如果响应则停止运行,开户电梯门,完成调度,否则继续运行 电梯到达非调度楼层 当电梯到达非调度楼层时,不作响应,继续运行 电梯就绪 电梯不处于忙状态,但符合运行要求,随时可以召唤 电梯超载 电梯所载重量超过额定载荷,给出报警信号,停止运行 电梯不超载 电梯所载重量没有超过额定载荷,可以正常运行根据说明,回答下面问题:1.[问题1]仔细分析系统的用例说明和用例图,从功能要求角度来看,该系统的用例并不完善。请根据功能要求补充至少两个用例,并作简单说明。
问答题[说明]已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器面板如图1-16所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如图1-17所示。在图1-17中,类RomoteController的方法onPressButton(intbutton)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(intdegree)方法用于调整电灯灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中setChannel(intchannel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。[C++代码]本试题应用命令模式能够有效让类{{U}}(5){{/U}}和类{{U}}(6){{/U}}、类{{U}}(7){{/U}}之间的耦合性降至最小。
问答题[问题2]数据流图4-2(住宅安全系统第0层DFD图)中的数据存储“配置信息”会影响图中的哪些加工?[数据流图4-3]
问答题[说明]已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如下图所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对缘表示。当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类,如图中的类MyApplication和类MyDocument,并分别实现Application和Document类中的某些方法。已知APPlication类中的openDocument方法采用了模板方法(TemplateMethod)设计模式,该方法定义了打开文档的每一个主要步骤,具体如下。(1)首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回。(2)创建文档对象。(3)通过文档对象打开文档。(4)通过文档对象读取文档信息。(5)将文档对象加入到Application的文档对象集合中。[Java程序]abstractclassDocument{publicvoidsave(){/*存储文档数据,此处代码省略*/}publicvoidopen(StringdocName){/*打开文档,此处代码省略*/}publicvoidclose(){/*关闭文档,此处代码省略*/}publicabstractvoidread(StringdocName);};abstractclassAppplication{privateVector<______>docs;/*文档对象集合*/publicbooleancanOpenDocument(StringdocName){/*判断是否可以打开指定文档,返回真值表示可以打开,返回假值表示不可打开,此处代码省略*/}publicvoidaddDocument(DocumentaDocument){/*将文档对象添加文档对象集合中*/docs.add(______);}publicabstractDocumentdoCreateDocument();/*创建一个文档对象*/publicvoidopenDocument(StringdocName){/*打开文档*/if(______){System.out.println("文档无法打开!");return;}______adoc=______;______;______;______;}};
问答题【说明】一个图书馆信息管理系统的分析与建模。下面是某图书馆的有关介绍。图书馆雇有若干管理员,各自具有编码、姓名等属性。管理员可上岗,也可下岗。图书馆中备有若干图书,每本图书有书号、书名、出版社、价格等属性。图书馆不定期地购买并注册新图书供读者借阅,也可将报废的旧书注销以停止借阅。图书馆可为众多读者提供服务。每个读者在借阅之前需注册姓名、性别、地址、Email等内容。读者可在终端上查询。每个读者最多可同时借阅5本书。每本图书借期为30天;若有一本书超期,则不可再借其他图书。一本书超期一天罚款0.1元。若一本书超期3个月不归还,则发布通告。若读者的图书丢失,在罚款处理之前不能借书,每本报失的图书罚款该书价的2倍。注册新读者不受限制;在注销读者之前,该读者必须归还所有借阅的图书,或者报失并接受罚款。【用例图】【协作图】
问答题阅读以下关于UML软件系统建模的叙述,根据要求回答下列问题。[说明]车载GPS(GlobalPositionSystem)终端是置于机动车内的实时定位装置,它的应用对象是需要定位和调度的车辆。车辆可以通过终端与GPS进行实时、准确的定位,并能够通过无线通信网络上报远程的车辆调度中心。中心可以通过终端远程监视车行轨迹,并可在特殊情况下通过终端控制车辆。同时,终端还装备车载电话,可以在出现特殊情况时及时地通知车辆调度中心。图7-12所示为车载终端系统的用例图,对于车载GPS终端系统来说,主要的角色有两个:车辆调度中心用户和车载终端用户。图7-13所示为车载终端系统中的GSM无线电通信模块的部分状态图,用于与调度中心进行联系。GSM模块共有4个状态:通话中、有问题、待命、短消息通信中。
问答题[说明]
以下代码实现了对象引用作为函数参数,仔细阅读以下代码,分析运行结果,填入{{U}} (n) {{/U}}处。
[代码]
#include<iostream.h>
class Sample
{
int x,y;
public:
Sample() {x=y=0; }
Sample (int i, int j ) {x=i; y=j; }
void copy ( Sample y=j; }
void print ( {cout<<"x="<<x<<end1 ; cout <<"y="<<y<<end1;
};
void Sample: copy ( Sample
y=s.y;
}
void func ( Sample s1, Sample
s2.setxy ( 30,40 );
}
void main ( )
{
Sample p ( 1,2 ) ,q;
q.copy ( p );
time ( p,q );
p.print ( );
q.print ( );
}
运行结果
{{U}}(1) {{/U}}
{{U}}(2) {{/U}}
{{U}}(3) {{/U}}
{{U}}(4) {{/U}}
问答题【说明】流程图描述了某宽带数据专线管理系统的部分处理流程。(1)凡申请宽带数据专线使用者,均需填写专线申请表。系统把申请表存储在专线申请登记文件中,等待分配专线号。(2)系统为申请者指定专线号,并根据通信距离(按地区计算)、通信计算初装费和月租费,然后发初装通知单送给用户,并产生施工单交有关部门施工。同时产生专线处理文件。专线号是专线的唯一标识。(3)施工结束后,系统更新用户文件,并产生专线计费文件,作为以后收费的依据。(4)一个用户可以租用多条专线,用户可用现金或银行托付两种方式支付租金,但一个用户只能使用一种付款方式。系统每月按用户(而不是专线)为单位计费出账。(5)流程图中各数据文件及有关单据所含的数据项如下。专线申请表及专线中请登记文件:申请号、用户名称、付款方式,开户银行代码、账号、主端名称、主端地址、对端地址、对端所在地区、通信速率、设备接口、申请日期。专线处理文件;申请号、专线号、用户名称、付款方式、开户银行代码、账号、初装费、月租费、完工日期。初装费收据:专线号、初装费、交费日期。施工单:施工单号、专线号、主端名称、主端地址、对端所在地区,通信速率、设备接口、完工期限。完工单:施工单号、专线号、完工日期。用户文件:用户编号、用户名称、付款方式、开户银行代码、账号。专线计费文件:专线号、用户编号、月租金、开通日期。1.【问题1】宽带数据专线价目文件由哪些数据项组成?【问题2】为了避免在用户尚未支付初装费时就去施工,有人提议将图中从处理2产生的施工单改成从处理3产生施工单。试问从处理3能否产生施工单?为什么?【问题3】当一个用户使用多条专线时,若允许该用户对其中的一些专线采用现金支付,对另一些专线采用银行托付方式,则在尽量减少数据冗余的前提下,应如何调整有关的数据文件。
问答题【问题4】
以下SQL语句用于查询没有订购产品代码为“1K10”的产品的所有客户名。请填补其中的空缺。
SELECT CustomerName FROM Customer{{U}} (1) {{/U}}
WHERE{{U}} (2) {{/U}}
(SELECT*FROM OrderDetail B, Order C
WHERE B. ProductNo=C.ProductNo
AND B. ProductNo='1K10'
AND C. CustomerNo=A. CustomerNo)
问答题【说明】 应用Prim算法求解连通网络的最小生成树问题。请阅读程序后填空。 const int MaxInt=INT MAX; //INT MAX的值在<limits.h>中 const int n=6; //图的顶点数,应由用户定义 typedef int AdjMatrix[n][n]; //用二维数组作为邻接矩阵表示 typedef struct //生成树的边结点 int fromVex,to Vex; //边的起点与终点 int weight; //边上的权值 TreeEdSenode; typedef TreeEdgeNode MST[n-1]; //最小生成树定义 void PrimMST (AdjMatrix G,MST T,int rt) //从顶点rt出发构造图G的最小生成树T,rt成为树的根结点 TreeEdgeNode e; int i,k=0,min,minpos,v; for(i=0;i<n;i++) //初始化最小生成树T if(i!=rt) T[k].fromVex=rt; (1) ; T[k++].weight=G[rt][i]; for(k=0;k<n-1;k++) //依次求MST的候选边 (2) ; for(i=k;i<n-1;i++) 八遍历当前候选边集合 if(T[i].weight<min) //选具有最小权值的候选边 min=T[i].weight; (3) ; if(min==MaxInt) //图不连通,出错处理 cerr<<“Graph is disconnected!”<<endl; exit(1); e=T[minpos];T[minpos]=T[k]; (4) ; v=T[k].to Vex; for(i=k+1;i<n-1;i++) //修改候选边集合 if(G[v][T[i].to Vex]<T[i].weight) T[i].weight=G[v][T[i].toVex]; (5) ;
