阅读下列说明和图,回答问题1至问题3。[说明]某企业决定开发一个企业仓储管理系统,由李工承担系统设计工作。该系统网络连接如图2-1所示。[图2-1]
该企业有多个仓库,图2-1所示中心数据库存储了各个仓库中每种货物库存信息。每个仓库配备一台前端机,进出货物均由前端机辅助实现。管理员每天上班时,通过前端机从中心数据库库存表中读取本仓库各种货物库存数,每个仓库当日业务数据也都暂存在前端机,当天业务结束后,再将前端机中存储数据传输到主机进行存储与汇总。每个仓库可以存放多种货物,但同一种货物不能存放在不同仓库中。每个仓库有多个管理员,但每个管理员只管理一个仓库。货物出库/入库时,由仓库管理员将货物条码通过阅读器输入前端机中,货物数量默认值为1,可以由管理员修改。前端机根据输入货物信息,打印“出库/入库”清单。出库/入库单中同一种货物最多只出现一次,每份出库/入库单由流水号唯一标识。图2-2是一个出库单实例。[图212]
管理员:01105出库/入库:出库该系统处理业务过程如下。①初始化:前端机根据仓库号从货物表中读取本仓库中每种货物货物编码、库存量、货物名称和单价;②登记出库/入库信息:由前端机存储每一笔“出库/入库”记录;③汇总:在每个工作日结束前汇总当日各种货物“出库/入库”量至日汇总表;④更新库存表:根据当日汇总信息更新货物库存。李工经过分析,设计出如图2-3所示关系模式。[图2-3]出入库单(流水号,出入库标志,管理员号,时间)出入库记录(货物编码,数量,流水号)日汇总表(日期,货物编码,数量,出入库标志)仓库(仓库号,仓库名,仓库电话)管理员(管理员号,姓名,仓库号)货物((a) )注:时间格式为年-月-日时:分;日期格式为年-月-日。实体联系图表示方法如图2-4所示,其中方框表示实体,菱形表示联系,联系类型在实体与联系边上标出。图2-5为与该系统对应实体联系图。[图2-4]
[图2-5]
4、[问题1]根据题意,补充图2-3中(a)处空缺,即货物关系模式属性。
5、[问题2]根据题意,补充图2-5中缺失联系和联系类型,使其成为完善实体联系图。其中,联系名分别取名为联系1,联系2,联系3,……。
6、[问题3]写出每种关系模式主键,将其填写在答题纸对应栏内。
正确答案及解析
正确答案
解析
4、[问题1]货物编码,货物名称,单价,仓库号,库存量5、[问题2]
其中,联系名中序号可任意排列。 若联系3建立在出入库单和日汇总表之间也正确,或者同时建立两个联系也正确。
6、[问题3]出入库单主键:流水号出入库记录主键:流水号,货物编码日汇总表主键:日期,货物编码,出入库标志仓库主键:仓库号管理员主键:管理员号货物主键:货物编码
【解析】
4、[解析] [问题1]货物关系模式要保存货物信息,因此需要有货物编码,这是货物唯一标识。由于其他关系模式中未出现货物名称和单价,因此关系模式需要有单价和货物名称两项。因为每一种货物只能放在一个仓库中,因此需要有仓库号信息。每天前端机获取货物库存信息,还需要有库存量属性。因此,(a)处应填写:货物编码,货物名称,单价,仓库号,库存量5、[解析] 根据题目说明部分描述,一张出/入库单上有多条出库记录,而每条出库记录只能在一张出库单上显示。一条出库记录只能表示一种货物出库或入库,而一种货物可以出、入库多次,因此出入库单与出入库记录之间联系是一对多(1:n),货物与出入库记录之间联系是一对多(1:n)。同时,每条出/入库记录只能汇总到一条日汇总表记录,而一张日汇总表记录对应了多条出入库记录,因此日汇总表与出入库记录之间联系是一对多(1:n)。由于每种货物只能放在一个仓库中,而一个仓库可以存放多种货物,因此仓库与货物之间联系是一对多(1:n)。每个仓库可以有多个管理员,而一个管理员只能管理一个仓库,因此仓库与管理员之间联系是(1:n)。ER图见参考答案。6、[解析] 分析出入库单(流水号,出入库标志,管理员号,时间)属性可知,只有流水号可以标识唯一一张出入库单,因此出入库单主键为流水号。在出入库记录(货物编码,数量,流水号)中,流水号加货物编码可以唯一地标识一条出入库记录,因此出入库记录主键为流水号和货物编码。在日汇总表(日期,货物编码,数量,出入库标志)中,同一货物可在多条记录中出现,在同一时间,相同货物可在多条记录中出现,因此日期、货物编码和出入库标志标识一张日汇总表一条记录,即日汇总表主键为日期、货物编码和出入库标志。显然,从管理角度出发,一个仓库号唯一标识一个仓库,每名管理员被分配唯一管理员号,每种货物都有分配了唯一货物编码。
你可能感兴趣的试题
试题一(共 20 分)阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸对应栏内。【说明】设有二维整数数组(矩阵)A[1:m,1:n],其每行元素从左至右是递增,每列元素从上到下是递增。以下流程图旨在该矩阵中需找与给定整数 X 相等数。如果找不到则输出“false”;只要找到一个(可能有多个)就输出“True”以及该元素下标 i 和 j(注意数组元素下标从 1 开始)。例如,在如下矩阵中查找整数 8,则输出伟:True,4,12 4 6 94 5 9 106 7 10 128 9 11 13流程图中采用算法如下:从矩阵右上角元素开始,按照一定路线逐个取元素与给定整数 X 进行比较(必要时向左走一步或向下走一步取下一个元素),直到找到相等数或超出矩阵范围(找不到)。【流程图】
【问题】该算法时间复杂数是()
供选择答案:A.O(1) B.O(m+n) C.(m*n) D,O(m2+n2)
- 查看答案
阅读以下说明和流程图,填补流程图中空缺,将解答填入答题纸对应栏内。
[说明]
指定网页中,某个关键词出现次数除以该网页长度称为该关键词在此网页中词频。对新闻类网页,存在一组公共关键词。因此,每个新闻网页都存在一组词频,称为该新闻网页特征向量。
设两个新闻网页特征向量分别为:甲(a1,a2,...,ak)、乙(b1,b2,...,bk),则计算这两个网页相似度时需要先计算它们内积S=a1b1+a2b2+...+akbk。一般情况下,新闻网页特征向量维数是巨大,但每个特征向量中非零元素却并不多。为了节省存储空间和计算时间,我们依次用特征向量中非零元素序号及相应词频值来简化特征向量。为此,我们用(NA(i),A(i)|i=1,2,...,m)和(NB(j),B(j)|j=1,2,...,n)来简化两个网页特征向量。其中:NA(i)从前到后描述了特征向量甲中非零元素A(i)序号(NA(1)<NA(2)<...),NB(j)从前到后描述了特征向量乙中非零元素B(j)序号(NB(1)<NB(2)<...)。
下面流程图描述了计算这两个特征向量内积S过程。
- 查看答案
试题(15 分)阅读以下说明和流程图,填补流程图中空缺,将解答填入答题纸对应栏 内。【说明】设有整数数组 A[1:N](N>1),其元素有正有负。下面流程图在该数组 中寻找连续排列若干个元素,使其和达到最大值,并输出其起始下标 K、元素 个数 L 以及最大和值 M。例如,若数组元素依次为 3,-6,2,4,-2,3,-1,则输出 K=3,L=4,M=7。 该流程图中考察了 A[1:N]中所有从下标 i 到下标 j(j≥i)各元素之和 S,并动态地记录其最大值 M。【流程图】
注:循环开始框内应给出循环控制变量初值和终值,默认递增值为 1,格式为:循环控制变量=初值,终值
- 查看答案
阅读以下说明和流程图,填补流程图中空缺,将解答填入答题纸对应栏内。
[说明]
本流程图旨在统计一本电子书中各个关键词出现次数。假设已经对该书从头到尾依次分离出各个关键词{A(i)|i=1,…,n}(n>1)},其中包含了很多重复项,经下面流程处理后,从中挑选出所有不同关键词共m个{K(j)|j=1,…,m},而每个关键词K(j)出现次数为NK(j),j=1,…,m。
[流程图]
- 查看答案
阅读下列说明、C++代码和运行结果,填补代码中空缺,将解答填入答题纸对应栏内。
[说明]
对部分乐器进行建模,其类图如下图所示,包括:乐器(Instrument)、管乐器(Wind)、打击乐器(Percussion)、弦乐器(Stringed)、木管乐器(Woodwind)、铜管乐器(Brass)。
类图
下面是实现上述设计C++代码,其中音乐类(Music)使用各类乐器(Instrument)进行演奏和调音等操作。
using namespace std; enum Note(/*枚举各种音调*/ MIDDLE_C,C_SHARP,B_FLAT }; classInstrument{/*抽象基类,乐器*/ public: ______; //play函数接口 virtual voidadjust()=0; //adjust函数接口 }; class Wind ______{ public: void play(Note n) { cout<<"Wind.play() "<<n<<endl; } void adjust(){cout<<"Wind.adjust()"<<endl; } ); /*类Percussion和Stringed实现代码略*/ class Brass ______{ public: void play(Note n) {cout<<"Brass.play() "<<n<<endl; } void adjUSt(){cout<<"Brass.adjust()"<<endl;) }; classWoodwind:public Wind{ public: void play(Note n) { cout<<"Woodwind.play()"<<n<<endl; } }; class MusiC { public: voidtune(Instrument*i) { i->play(MIDDLE_C.; } voidadjust(Instrument*i){ i->adjust(); } void tuneAll(______ e[],int numIns){ /*为每个乐器定调*/ for(int i=0; i<numIns; i++){ this->tune(e[i]); this->adjust(e[i]); } } }; /*使用模板定义一个函数size,该函数将返回数组array元素个数,实现代码略*/ int main(){ Music*music=______ Music(); Instrument*orchestra[]={new Wind(),new Woodwind() }; music->tuneAll(orchestra,size(orchestra));/*size返回数组orchestra元素个数*/ for(int i=0;i<size(orchestra);i++) deleteorchestra[i]; delete music; }
本程序运行后输出结果为:
Wind.play()0 Wind.adjust() Woodwind.play()0 Wind.adjust()
- 查看答案