题目内容 (请给出正确答案)
[主观题]

阅读以下说明和C++代码,将应填入(n)处。[说明] 在一公文处理系统中,开发者定义了一个公文类Office

阅读以下说明和C++代码,将应填入(n)处。

[说明]

在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorcr对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个C++源文件中,能够正确编译通过。

[C++代码]

include <iostream>

const OBS_MAXNUM=20;//最多与OfficeDoc对象相关联的DocExplorer对象的个数

(1);

class DocExplorer{ //关注OfficeDoc公文对象的类

public:

DocExplorer((2) *doc); //构造函数

(3) void update(OfficeDoc *doc)=0;//更新自身状态的函数

//其他相关属性和方法省略

};

class OfficeDoc{ //公文类

private:

DocExplorer *myObs[OBS_MAXNUM];

//关注此公文类的DocExplorer类对象指针数组

int index; //与OfficeDoc对象关联的DocExplorer对象的个数

public:

OfficeDoe()

index=0;

}

void attach(DocExplorer *o){

//将一DoeExplorer对象与OfficeDoe对象相关联

if(index >=OBS_MAXNUM ||o=NULL)return;

for(int loop=0; loop<index; loop++)

if(myObs[loop]==o) return;

myObs[index]=o;

index++;

}

void detaeh(DocExplorer *o){

//接触某DoeExplorer对象与OfficeDoc对象的关联

if(0==NULL) return;

for(int loop=0; loop<index; loop++){

if(myObs[loop]==o){

if(loop<=index-2)myObs[loop]=myObs[index-1];

myObs[index-1]=NULL;

index--;

break;

}

}

}

private:

void notifyObs(){ //通知所有的DocExplorer对象更改自身状态

for(int loop=0; loop<index; loop++){

myObs[loop]->(4); //DocExplorer对象更新自身状态

}

}

//其他公文类的相关属性和方法

};

DocExplorer::DocExplorer(OfficeDoc *doc){//DocExplorer 类对象的构造函数

doc->(5); //将此DocExplorer对象与doc对象相关联

}

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“阅读以下说明和C++代码,将应填入(n)处。[说明] 在一公…”相关的问题

第1题

阅读下列函数说明、图和C代码,将应填入(n)处的字句。[说明] 散列文件的存储单位称为桶(BUCKET)。假

阅读下列函数说明、图和C代码,将应填入(n)处的字句。

[说明]

散列文件的存储单位称为桶(BUCKET)。假如一个桶能存放m个记录,当桶中已有 m个同义词(散列函数值相同)的记录时,存放第m+1个同义词会发生“溢出”。此时需要将第m+1个同义词存放到另一个称为“溢出桶”的桶中。相对地,称存放前m个同义词的桶为“基桶”。溢出桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到溢出桶中进行查找。

例如:设散列函数为Hash(Key)=Key mod 7,记录的关键字序列为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(int NewElemKey)的功能是:将元素NewEIemKey插入散列桶中,若插入成功则返回0,否则返回-1。

采用的散列函数为Hash(NewElemKey)=NewElemKey % P,其中P为设定的基桶数目。

函数中使用的预定义符号如下:

define NULLKEY -1 /*散列桶的空闲单元标识*/

define P 7 /*散列文件中基桶的数目*/

define ITEMS 3 /*基桶和溢出桶的容量*/

typedef struct BucketNode{ /*基桶和溢出桶的类型定义*/

int KcyData[ITEMS];

struct BucketNode *Link;

}BUCKET;

BUCKET Bucket[P]; /*基桶空间定义*/

[函数]

int lnsertToHashTable(int NewElemKey){

/*将元素NewElemKey插入散列桶中,若插入成功则返回0,否则返回-1*/

/*设插入第一个元素前基桶的所有KeyData[]、Link域已分别初始化为NULLKEY、

NULL*/

int Index; /*基桶编号*/

int i,k;

BUCKET *s,*front,*t;

(1) ;

for(i=0; i<ITEMS;i++)/*在基桶查找空闲单元,若找到则将元素存入*/

if(Bucket[Index].KeyData[i]=NULLKEY){

Bucket[Index].KeyData[i]=NewElemKey; break;

}

if( (2) ) return 0;

/*若基桶已满,则在溢出桶中查找空闲单元,若找不到则申请新的溢出桶*/

(3) ; 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( (4) )t=t->Link;

else break;

}/*while*/

}/*if*/

if( (5) ) {/*申请新溢出桶并将元素存入*/

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;

(6) ;

}/*if*/

return 0;

}/*InsertToHashTable*/

点击查看答案

第2题

阅读以下算法说明和问题模型图,根据要求回答问题1、问题2。 [说明] 某大学城图书馆需要在无线阅览

阅读以下算法说明和问题模型图,根据要求回答问题1、问题2。

[说明]

某大学城图书馆需要在无线阅览厅的某些位置上放置无线接入点AP(Access Poin)。假设每个无线 AP覆盖范围的半径是6米,因此必须使得每台笔记本电脑上的无线网卡到某个无线AP的直线距离不超过6米。为了简化问题,假设所有无线网卡在同一直线上,并且无线AP沿该直线放置。该问题可以建模为如图1-13所示,其中直线表示无线网卡所在的直线,实心正方形表示无线网卡。现采用贪心策略实现用尽可能少的无线AP覆盖所有的无线网卡。

实现贪心算法的流程如图1-14所示。其中,①d[i](1≤i≤N)表示第i张无线网卡到通道A端的距离,N表示无线网卡的总数,无线网卡的编号按照无线网卡到通道A端的距离从小到大进行编号:②s[k]表示第k(k≥1)个无线AP到通道A端的距离。算法结束后k的值为无线AP的总数。

请填补图1-14流程图中(1)~(4)空缺处的内容。

点击查看答案

第3题

使用[说明]中给出的词汇,将数据流图10-2中的(5)~(8)补充完整。

点击查看答案

第4题

该市政府各委、办、局已经分别投资立项建设了业务自动化系统和信息管理系统,仅从保护投资的角度出

发,也难以一下子按企业基础数据集中管理的方案来实现信息整合共享。一个基于Web Service技术实现跨部门信息共享的方案如下,请将方案中(6)~(8)空缺处的内容填写完整。

工商局、质监局和地税局等部门的业务系统不变的情况下,应用Web Service技术,只提供基于(6)的数据访问接口,该接口使用(7)规范准确地描述为共享数据发布服务,并将该描述发布到(8)供服务请求者查找绑定和使用,通过这种方式来实现各个部门共享数据。

点击查看答案

第5题

请用200字以内文字简要说明Web Service涉及到的主要协议及其作用(XML、HTTP等除外)。

点击查看答案

第6题

试题六(共15分)阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲开

试题六(共15分)

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两种数据库以及系统中的数据库表Department为例,其类图如图6-1所示。

【Java代码】

import java.util.*;

class Department{/*代码省略*/}

interface IDepartment{

(1) ;

(2) ;

}

class SqlserverDepartment (3) {

public voidInsert(Department department){

System.out.println(”Insert a record into Department in SQL Server!");

∥其余代码省略

}

public Department GetDepartment(int id){

/*代码省略*/

}

}

classAccessDepartment(4) {

public void Insert(Department department){

System.out.println("Insert a record into Department in ACCESS!”);

∥其余代码省略

}

public Department GetDepartment(int id){

/*代码省略*/

}

}

(5) {

(6) ;

}

class SqlServerFactory implements IFactory{

public IDepartment CreateDepartment(){

retum new SqlserverDepartment();

}

∥其余代码省略

}

class AccessFactory implements IFactory{

public IDepartment CreateDepartment(){

return new AccessDepartment();

}

∥其余代码省略

}

点击查看答案

第7题

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】下面是一个用C编写的快速排序

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。

【说明】下面是一个用C编写的快速排序算法。为了避免最坏情况,取基准记录pivot时,采用从left、right和mid=[(left+right)/2]中取中间值,并交换到right位置的办法。数组a存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。

void quicksort (int a[], int left, int right) {

int temp;

if (left<right) {

hat pivot = median3 (a, left, right); //三者取中子程序

int i = left, j = right-1;

for(;;){

while (i <j && a[i] < pivot) i++;

while (i <j && pivot < a[j]) j--;

if(i<j){

temp = a[i]; a[j] = a[i]; a[i] = temp;

i++; j--;

}

else break;

}

if (a[i] > pivot)

{temp = a[i]; a[i] = a[right]; a[right] = temp;}

quicksort( (1) ); //递归排序左子区间

quieksort(a,i+1 ,right); //递归排序右子区间

}

}

void median3 (int a[], int left, int right)

{ int mid=(2);

int k = left;

if(a[mid] < a[k])k = mid;

if(a[high] < a[k]) k = high; //选最小记录

int temp = a[k]; a[k] = a[left]; a[left] = temp; //最小者交换到 left

if(a[mid] < a[right])

{temp=a[mid]; a[mid]=a[right]; a[right]=temp;}

}

消去第二个递归调用 quicksort (a,i+1,right)。 采用循环的办法:

void quicksort (int a[], int left, int right) {

int temp; int i,j;

(3) {

int pivot = median3(a, left, right); //三者取中子程序

i = left; j = righi-1;

for (;; ){

while (i<j && a[i] < pivot)i++;

while (i<j && pivot <a[j]) j--;

if(i <j) {

temp = a[i]; a[j]; = a[i]; a[i]=temp;

i++; j--;

}

else break;

}

if(a[i]>pivot){(4);a[i]=pivot;}

quicksoft ((5)); //递归排序左子区间

left = i+1;

}

}

点击查看答案

第8题

UML用例间的关系主要有4种:继承关联、扩展关联、包含关联和使用关联。请说明并举例。

点击查看答案

第9题

阅读下列说明和有关图表,回答问题1至问题3。【说明】 A公司决定开发一套公共交通自动售票系统,系统

阅读下列说明和有关图表,回答问题1至问题3。

【说明】

A公司决定开发一套公共交通自动售票系统,系统要求如下所述。

(1)乘客能按以下3步操作购票:选定目的地,投入钱币,获得一张票。

(2)并且仅当乘客选定目的地后,系统才接收投钱;每次投入的钱只购买一张票。

(3)只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快出票。

(4)如需找钱,则在出票的同时应退还多余的钱。

(5)如果乘客投入的钱不够票价,或者票库中没有所需要的票时,系统将全额退钱,并允许乘客另选目的地,继续购票。

(6)出票前乘客可以单击“取消”按钮取消购票,系统将全额退出该乘客投入的钱,并允许乘客另选目的地,继续购票。

(7)出票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。

该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚

线表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。

对售票全过程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移图中,用双线框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在有向边旁用“”形式注明。

该公司还制定了一个过程启动表,用以表明状态迁移图中的4个动作与转换图中的4个过程之间的“启动”关系,即说明哪个动作将启动哪个过程。用1表示启动,用0表示不启动。启动的过程将根据获得的输入数据产生输出数据,未唐动的过程则不会产生输出数据,该表中没有列出的过程,其执行与否与事件无关。

【问题1】

转换图中缺少哪3条数据流?请指明每条数据流的名称、起点和终点。

【问题2】

在状态迁移图中,a、b、c分别表示什么事件?请用转换图中给出的事件名解答。

【问题3】

在过程启动表中,d、e处应填什么?请分别用4位二进制码表示。

根据以下关于学校构成的说明回答问题1至问题3。

【说明】

学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授各带有若干研究生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。

【问题1】

用E-R图画出此学校的概念模型,用文字写出各实体和联系的属性。

【问题2】

将E-R图转换成关系模型。

【问题3】

指出各关系模型的候选键。

点击查看答案

第10题

阅读下列Java程序和程序说明, 将应填入(n)处的字句写在答题纸的对应栏内。【说明】数据排序。将给定

阅读下列Java程序和程序说明, 将应填入(n)处的字句写在答题纸的对应栏内。

【说明】数据排序。将给定的n个整数分别按照升序和降序进行排列。

class SortInt_1

{

int i, j, k, temp;

void SortInt(int a1, a2[]){//升序排序

for(i=0; i<a1-1; i++){

k=i;

for(j=i+1 ;j<a1 ;j++)

if ((1)) k=j;

if(k!=i){

temp=a2[i];a2[i]=a2[k];a2[k]=temp;

}

}

}

}

class Sortlnt_2 (2)

{

int i, j, k, temp;

void Sortlnt(int a1,a2[]){//降序排序

for(i=0;i<a1-1 ;i++) {

k=i;

for(j=i+1 ;j<a1 ;j++)

if ((3)) k=j;

if(k!=i){

temp=a2[i];a2[i]=a2[k];a2[k]=temp;

}

}

}

}

Class TestOverLoad {

Public static void main(String args[])

{

int a[]={10,55,100,35,87,90,100,16};

Sortlnt_1 newlnt1=(4);

Newlnt1. SortInt(a. length, a);//调用SortInt_1类的方法

System. out. println("升序排列的数据");

For(int i=0;i<8;i++)

System. out. print(a[i]+" ");

system. out. println();

SortInt_2 newInt2=new sortint_2(); //创建类SortInt_2的对象

(5);

System. out. println("降序排列的数据: ");

For(int i=0;i<8;i++)

System. out. print(a[i]+" ");

}

}

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信