重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
找答案首页 > 全部分类 > 计算机类考试
搜题
网友您好, 请在下方输入框内输入要搜索的题目:
搜题
题目内容 (请给出正确答案)
[主观题]

阅读以下说明和C代码(代码13-4),将应填入(n)处的字句写在对应栏内。 【说明】在一公文处理系统中,开

阅读以下说明和C代码(代码13-4),将应填入(n)处的字句写在对应栏内。

【说明】

在一公文处理系统中,开发者定义了一个公文结构OfficeDoc,其中定义了公文应该具有的属性。当公文的内容或状态发生变化时,与之相关联的DocExplorer结构的值都需要发生改变。一个OfficeDoc结构能够关联一组DocExplorer结构。当OfficeDoc结构的内容或状态发生变化时,所有与之相关联的DocExplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。

【代码13-4】

include<stdio.h>

define OBS_MAXNUM 20 /*一个OfficeDoc变量最多能够关联的DocExplorer变量的个数*/

typedef void((1) )(struc OffieeDoc*, struct DoeExplorer*)I;

struct DocExplorer{

func update;/*DocExplorer结构采用的更新函数*/

/*其它的结构字段省略*/

};

struet OffieeDoc{

(2) myObs[OBS_MAXNUM];

/*存储所有与OfficeDoc相关联的DocExplorer结构指针*/

int index;/*与OffieeDoc结构变量相关联的DoeExplorer结构变量的个数*/

};

void attaeh(struct OfficeDoc*doc, struct DocExplorer*ob){

/*关联Observer结构ob与OffieeDoe结构doe*/

int loop=0;

if(doc->index>=OBS_MAXNUM||ob==NULL)return;

for(loop=0, loop<doc->index; loop++)

if(doc->myObs[loop]==ob)return;

doc->myObs[doe->index]=ob;

doc->index++;

}

void detaeh(struct OfficeDoc*doc, struct DocExplorer*ob){

/*解除doc结构与ob结构间的关联*/

int loop;

if(ob==NULL)return;

for(loop=0;loop<doc->index; loop++){

if(doe->myObs[loop]==ob){

if(loop<=doc->index-2)

doc->myObs[loop]=doc->myObs[(3)];

doc->myObs[doc->index-1]=NULL;

doc->index——;

breack;

}

}

}

void updatel(struct OfficeDoe*doe, struct DoeExplorer *ob){

/*更新ob结构的值,更新代码省略*/

} void update2(struct OffieeDoc*doc,struet DocExplorer *ob){

/*更新ob结构的值,更新代码省略*/

}

void notifyObs(struct OfficeDoc* doc){

/*当doc结构的值发生变化时,通知与之关联的所有DocExplorer结构变量*/

int loop;

for(loop=0; loop<doc->index; loop++){

(doc->myObs[loop])->update((4));

}

}

void main(){

struct OfficeDoc doc; /*定义一了OfficeDoe变量*/

struct DocExplorer explorer1, explorer2; /*定义两个DocExplorer变量*/

/*初始化与OfficeDoc变量相关的DocExplorer变量个数为0*/

doc.index=0;

explorer1.update=update1; /*设置explorer1变量的更新函数*/

explorer2. update=update2; /*设置explorer2变量的更新函数*/

attach(&doc, &explorer1); /*关联explorer1与doc对象*/

attach(&doc, &explorer2); /*关联explorer2与doc对象*/

/*其它代码省略*/

(5); /*通知与OfficeDoe相关的所有DoeExploer变量*/

return;

}

查看答案
更多“阅读以下说明和C代码(代码13-4),将应填入(n)处的字句写在对应栏内。 【说明】在一公文处理系统中,开”相关的问题

第1题

阅读以下某仓储超市进、销、存数据库管理系统的设计说明,根据要求回答问题1~问题5。 [说明] 某仓储

阅读以下某仓储超市进、销、存数据库管理系统的设计说明,根据要求回答问题1~问题5。

[说明]

某仓储超市采用POS(Point Of Sale)收银机负责前台的销售收款,为及时掌握销售信息,并依此指导进货,拟建立商品进、销、存数据库管理系统。该系统的需求分析已经基本完成,紧接着将进入概念模型的设计。

[需求分析结果]

1.销售业务由POS收银机来辅助实现。POS机外接条码阅读器,结账时收银员将商品的条码通过阅读器输入POS机中。所售商品数量默认值为1,可以由收银员修改。POS机根据输入的商品信息,打印出如图4-11所示的购物清单。

2.将经销的商品分为直销商品和库存商品两大类。直销商品的保质期较短,如食品类,由供应商直接送达超市,管理员将过期的商品返还给供应商处理;库存商品由采购员向供应商提交订购单,供应商根据订购单送货。超市会不定期对库存商品按照折扣率进行打折优惠。

直销商品和库存商品送货单的样单分别如图4-12和图4-13所示,其中直销商品生产批号的前6位表示生产日期。

3.超市的硬件系统拓扑结构如图4-14所示。

4.业务处理过程。

由POS机存储每一笔销售记录,在每个工作日结束前汇总当日各商品的销售量至中心数据库(销售日汇总);根据当日的销售日汇总更新存货表;每笔进货记入进货表中,并及时更新存货表。

[概念模型设计]

根据需求阶段收集的信息,设计的实体—联系图和关系模式(不完整)如图4-15所示。

1.实体联系图

2.关系模式

存货表(商品编码,数量)

进货表(送货号码,商品编码,数量,日期)

销售详单(销售流水号,商品编码,数量,金额,收银员,时间)

销售日汇总(商品编码,日期,数量)

3.关系模式

存货表(商品编码,数量)

进货表(送货号码,商品编码,数量,日期)

销售详单(销售流水号,商品编码,数量,金额,收银员,时间)

销售日汇总(商品编码,日期,数量)

商品( (1) )

请将图4-15中各实体之间的联系补充完整。

点击查看答案

第2题

除了表4-11和表4-12给出的用例之外,从以上[说明]陈述中还可以获取哪些由信用卡客户发起的用例?(

请使用[说明]中的词汇,给出用例名称即可)

点击查看答案

第3题

阅读以下说明和流程图,回答问题1至问题3,将解答写在对应栏内。 【说明】 (1)流程图描述某大型商店商

阅读以下说明和流程图,回答问题1至问题3,将解答写在对应栏内。

【说明】

(1)流程图描述某大型商店商品销售的数据处理流程。

(2)商店设有若干柜台,同一种商品可能在几个柜台上销售,各柜台每天提供一组日销售数据,其格式如下:

日期、柜台号、商品代码、销售数量、商品代码、销售数量……

(3)数据处理系统每日产生一份反映各柜台当日销售金额和商店日销售金额的“日销售金额报告”,必要时还产生一份“商品请购报告”,给出那些低于最低库存量的商品代码、商品名称、最低库存量和实际库存量。处理过程中产生存档的“日销售文件”和临时工作文件“日销售量文件”和“旧销售金额文件”。

(4)系统中所用到的数据均来自数据文件。

(5)流程图中的商品库存文件的记录已按关键字“商品代码”排序。

①指出商品库存文件的记录中必须包括哪些数据项?

②分别指出在日销售文件,日销售量文件和日销售金额文件的记录中至少应包括哪些数据项,同时不产生数据冗余?

③错误清单可能指出哪些错误?

点击查看答案

第4题

读下列程序说明和C程序,将应填入(n)处。 【程序说明】 该程序定义了两个子函数strsort和strmerge。它

读下列程序说明和C程序,将应填入(n)处。

【程序说明】

该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。

【程序】

include<stdio.h>

void strmerge(char,a,char *b,char *c) //将字符串a,b合并到字符串c中

{

char t,*w;

w=c;

while((1))

{//找到字符串a,b当前字符中较小的字符

if(*a< *b)

{

t= *a;

(2);

{

else if (*a>*b)

{

t= *b;

(3);

}

else //字符串a,b当前字符相等

{

t= *a;

a++;

b++;

}

if((4)) //开始,可直接赋值

*w=t;

else if(t!=*w)

//如果a,b中较小的当前字符与c中当前字符不相等,才赋值(5);

}

if(*a!=\'\0') //如果字符串a还没有结束,则将a的剩余部分赋给C

while(*a!='\0')

if(*a!=*w)

{

*(++w)=*a;

a++;

}

else

(6);

if(*6!='\0') //如果字符串b还没有结束,则将b的剩余部分赋给c

while(*b!='\0')

if(*b! = *w)

{

*(++w)=*b;

b++;

}

else

b++;

(7);

}

void strsort(char*s) //将字符串S中的字符排序

{

int i,j,n;

char t,*w;

W=S;

for(n=0;*w!='\0';n++) //得到字符串长度n

w++;

for(i=0;i<n-1;i++) //对字符串s进行排序,按字母先后顺序

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

if((8))

{

t=s[i];

s[i]=s[j];

(9);

}

}

void main()

{

char s1[100],s2[100],s3[100];

printf("\nPlease,input the first string:");

scanf("%s",s1);

printf("\nPlease input the second string:");

scanf("%s",s2);

strsort(s1); //将字符串s1排序

strsort(s2); //将字符串s2排序

printf("%s\n",s1);

printf("%s\n",s2);

s3[0]='\0'; //字符串s3的第一个字符先置'\0'结束标志

(10) //将s1和s2合并,按照字母顺序排列,

//且要删去相同字符,存入s3中

printf("%s",s3);

}

点击查看答案

第5题

根据题中所述术语,指出图1-2中状态1到状态4分别是什么?

点击查看答案

第6题

指出在哪些图中遗漏了哪些数据流。回答时用如下形式之一。 (1)XX图中遗漏了XX加工(或文件)流向XX加

指出在哪些图中遗漏了哪些数据流。回答时用如下形式之一。

(1)XX图中遗漏了XX加工(或文件)流向XX加工(或文件)的XX数据流;

(2)XX图中XX加工遗漏了XX输入(或输出)数据流。

点击查看答案

第7题

加工2子图(见图1-19)分解成如图所示的4个子加工及相关的文件(即数据存储)。试在此基础上将相关的D

加工2子图(见图1-19)分解成如图所示的4个子加工及相关的文件(即数据存储)。试在此基础上将相关的DFD成分添加在对应栏内,以完成该加工子图。

点击查看答案

第8题

数据流图1-8中缺少3条数据流,请指出这3条数据流的起点和终点。

点击查看答案

第9题

阅读下列函数说明、图和C代码,回答问题[说明] 假定用一个整型数组表示一个长整数,数组的每个元素

阅读下列函数说明、图和C代码,回答问题

[说明]

假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:

m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2]

其中a[1]保存该长整数的位数,a[0]保存该长整数的符号:0表示正数、1表示负数。

运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注意,不考虑溢出情况,即数组足够大。

[函数]

int cmp(int *LA, int *LB);

/*比较长整数LA与LB的绝对值大小*/

/*若LA绝对值较大返回正值,LA较小返回负值,相等则返回0*/

int ADD (int *LA, int *LB, int *LC)

/*计算长整数LA与LB的和,结果存储于LC中*/

/*注意:正数与负数的和相当于正数与负数绝对值的差*/

/*数据有误返回0,正常返回1*/

{

if(LA == NULL || LB == NULL || LC == NULL)return 0;

int *pA, *pB, i, N, carry, flag;

flag = LA[0] + LB[0];

switch(flag){ /*根据参与运算的两个数的符号进行不同的操作*/

case 0:

case 2:

Lc[0] = LA[0];/*LA与LB同号,结果符号与LA(LB)相同*/

pA = LA;

pB = LB;

(1) ;

break;

case 1: /*LA与LB异号*/

/*比较两者的绝对值大小,结果符号与较大者相同*/

flag = (2) ;

if(flag > 0){ /*LA较大*/

LC[0] = LA[0];

pA = LA;

pB = LB;

}

else if(flag < 0)(/*LB较大*/

LC[0] = LB[0];

pA = LB;

pB = LA;

}

else{/*LA与LB相等*/

LC[0] = 0;

LC[1] = 0;

return 1;

}

flag = -1;

break;

default:

return 0;

break;

}/*switch*/

/*绝对值相加减*/

/*注意对于减法pA指向较大数,pB指向较小数,不可能出现不够减情况*/

(3) ;

N = LA[1] > LB[1] ? LA[1] : LB[1];

for(i = 0; i < N; i++){

if(i >= pA[1]){/*LA计算完毕*/

carry += flag * pB[i+2];

}

else if(i >= pB[1]){/*LB计算完毕*/

carry += pA[i+2];

}

else{

carry += pA[i+2] + flag * pB[i+2];

}

LC[i+2] = carry % 10;

carry /= 10;

if( (4) ){/*需要借位,针对减法*/

LC[i+2] += 10;

carry--;

}

}/*for*/

if( (5) ){/*最高进位,针对加法*/

LC[i+2] = carry;

i++;

}

if(LC[i+1] == 0) i--; /*若最高位为零,针对减法*/

LC[1] = i;

return 1;

};/*ADD*/

点击查看答案

第10题

创建人表时,“身份证号”使用INTEGER数据类型,并且要求此列值不能为空、值惟一,姓名列不能为空。请在

下列用于创建表人的SQL语句空缺处填入正确的内容。

CREATE TABLE 人 (身份证号 INTEGER,

姓名CHAR(20) (1) ,

性别CHAR(1),

年龄INTEGER,

地址CHAR(20),

(2) )

点击查看答案
下载上学吧APP
客服
TOP
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案
购买前请仔细阅读《购买须知》
请选择支付方式
微信支付
支付宝支付
选择优惠券
优惠券
请选择
点击支付即表示你同意并接受《服务协议》《购买须知》
立即支付
搜题卡使用说明

1. 搜题次数扣减规则:

功能 扣减规则
基础费
(查看答案)
加收费
(AI功能)
文字搜题、查看答案 1/每题 0/每次
语音搜题、查看答案 1/每题 2/每次
单题拍照识别、查看答案 1/每题 2/每次
整页拍照识别、查看答案 1/每题 5/每次

备注:网站、APP、小程序均支持文字搜题、查看答案;语音搜题、单题拍照识别、整页拍照识别仅APP、小程序支持。

2. 使用语音搜索、拍照搜索等AI功能需安装APP(或打开微信小程序)。

3. 搜题卡过期将作废,不支持退款,请在有效期内使用完毕。

请使用微信扫码支付(元)
订单号:
遇到问题请联系在线客服
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
警告:系统检测到您的账号存在安全风险

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

- 微信扫码关注上学吧 -
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
- 微信扫码关注上学吧 -
请用微信扫码测试
选择优惠券
确认选择
谢谢您的反馈

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

上学吧找答案