![](https://lstatic.shangxueba.com/sxbzda/h5/images/m_q_title.png)
数据流图2(网络故障检测系统第0层DFD图)中的数据存储“配置信息”会影响图中的哪些加工?
数据流图2(网络故障检测系统第0层DFD图)中的数据存储“配置信息”会影响图中的哪些加工?
![](https://lstatic.shangxueba.com/sxbzda/h5/images/tips_org.png)
数据流图2(网络故障检测系统第0层DFD图)中的数据存储“配置信息”会影响图中的哪些加工?
第1题
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。
【说明】[程序6说明]单源最短路径的分支限界算法。
const int MAXNUM=29999;
include<iostream>
include<vector>
include<algorithm>
include<functional>
using namespace std;
template <class VertexType,class EdgeType>
class MinNode { //程序中使用的最小化堆的结点说明
friend class Graph<VertexType,EdgeType>
public:
MinNode (int nl, EdgeType length1)
{ VexNum=nl;
length=length1;
}
bool operator>(const MinNode<VertexType,EdgeType>&p)const
{ return (1)>p.length;
}
private:
int VexNum;
//记录源点序号,序号数组p及distance下标相一致。源点为初始扩展顶点
EdgeType length;
//记录源点到本顶点的当前最短路径的长度,源点到自身的长度为0
}
template<class VertexType,classEdgeType>
void Graph<VertexType,EdgeType>:: shortestpath(VertexType start) {
int j,k,source;//source 记录源点的序号。
EdgeType*distance=(2);
int*p=new int[MaxNumVertex];
vector<MinNode<VertexType,EdgeType> >H;
for(source=0;source<MaxNumVertex;source++)
{ if(NodeList[source]==start)break;}
if (source>=MaxNumVertex){cout<<”This is error!”<<end1;return;}
MinNode<VertexType,Edge Type>(3);
for(k=0;k<MaxNumVertex;k++)
{ distance[k]:MAXXUM; //记录源点到本顶点k的最终的最短路径的长度
p[k]=source; //记录最短路径上的本顶点的直接前驱顶点的序号
}
distance[source]=0;p[source]=-1;//m 是源点,前一顶点不存在
vector<MinNode<VertexType, EdgeType>>::iterator q;
while(1){
for(j=0;j<MaxNumVertex;j++)
if((AdjMatrix[E.VexNum* MaxNumVertex+j]<MAXNUM)
&&((4)<distance[j]))
{ distance[j]=E.length+AdjMatrix[E.VexNum* MaxNumVertex+j];
p[j]=E. VexNum; //记录顶点j的前一顶点
MinNode<VertexType, EdgeType>(5);
H.push_ back(N);
push_heap(H. begin(),H.end(),greater<MinNode<VertexType,
EdgeType>>());
}
if(H.empty()=true)break; //若优先队列为空,那么算法结束
else{
pop_ heap(H.begin(),H. end(),greater<MinNode<VertexType,
EdgeType>>());
q=H.end()-1; //从最小化堆中取路径最短的顶点
E=*q;
H.pop_ back(); //删除从最小化堆中“挤”出的顶点
}
} //end while
for(k=0;k<MaxNumVertex;k++){
cout<<"Shorstest path from vertex"<<k<<"is"<<distance[k]<<end1;
j=k;cou
第2题
阅读以下说明和图,回答问题1和问题2,将答案写在答卷的对应栏内。
【说明】
银行客户需要从ATM取100元,他向ATM的读卡机插卡,读卡机读取卡号,然后ATM屏幕初始化,ATM提示输入PIN(密码),客户输入PIN(123456),ATM打开他的账户,密码有效,因此ATM提示选择事务,客户选择取钱,ATM提示输入金额,客户输入100元, ATM验证账户上有足够的钱,就从账上减去100元,ATM吐出100元,并退出客户的卡。
根据上面的描述,完成下述的时序图。
第3题
阅读以下说明,回答问题,将解答填入对应的解答栏内。
. [说明] 请完成流程图以描述在数据A(1)至A(10)中求最大数和次大数的程序的算法。并将此改成PAD图。该算法的流程图如下图:
第4题
阅读以下说明,回答问题1~5,将解答填入对应的解答栏内。
[说明] 编写一个函数根据用户输入的偶对(以输入。表示结束)建立其有向图的邻接表。一个图的邻接表存储结构定义如下:
include < stdio. h >
define MAXVEX 30
struct edgenode
{
int adjvex;
char info;
struct edgenode * next;
}
struct vexnode
{
char data;
struct edgenode * link;
}
typedef struct vexnode adjlist [MAXVEX];
实现要求的函数如下:
void creatadjlist ( adjlist g)
{
int i, j, k;
street vexnode * s;
for( k=1; k< =n; k+ +)
{
(1)
g [k]. link = NULL;
}
printf ( “输一个对:” );
scanf ("%d, %d", &i, &j);
while (2)
{
(3)
s- >adjvex =j;
(4)
g [i].link =s;
(5)
}
}
第7题
阅读以下说明和流程图,回答问题1至问题3,将答案写在对应栏内。
【说明】
下面给出的是某高级公寓管理系统的一套分层数据流图。其功能描述如下所述。
(1)系统随时根据住户送来的入住单更新住户基本信息文件。
(2)每月初系统根据物业管理委员会提供的月附加费(清洁费、保安费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。住户交费时,系统输入交费凭证,核对后输出数据给住户。
(3)系统定期向物业管理委员会提供住房分配表和交费情况表。
(4)住户因分户或换房,在更新账户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分尸或换房前的房租。
假定题中提供的顶层图是正确的,请回答下列问题。
指出哪张图中的哪些文件可不必画出。
第8题
阅读以下说明和Visual Basic代码,将相应文字填入(n)处,并写在对应栏内。
[说明]
以下Visual Basic代码实现了对位图(BMP)进行旋转显示。以下程序共实现了对BMP位图图形进行 180°旋转、90°旋转(顺时针)、90°旋转(逆时针)、水平翻转、垂直翻转共5项处理。显示界面如图12-8所示。仔细阅读[代码7-1]至[代码7-3],完成(n)代码,并写在对应栏内。
[代码7-1]
Begin VB. Form. Form1
AutoRedraw =-1 'True
Caption="图像的施转"
//...窗体描述( 略 )
Begin VB. CommandButton Command7
Caption="退出"
//...窗体描述(略 )
End
Begin VB.CommandButton Command6
Caption = "复位"
//...窗体描述(略)
End
Begin VB.CommandButton Command5
Caption= "垂直翻转"
//...窗体描述(略)
End
Begin VB.CommandButton Command4
Caption="水平翻转"
//...窗体描述(略)
End
Begin VB.CommandButton Command3
Caption= "90°(逆时针)"
//...窗本描述(略)
End
Begin VB.CommandButton Command2
Caption= "90°(顺时针)"
//...窗体描述(略)
End
Begin VB.PictureBox Picture2
//...窗体描述(略)
End
Begin VB.CommandButton Command1
Caption="180°"
//...窗体描述(略)
End
Begin VB.PictureBox Picture 1
//...窗体描述(略)
End
End
[代码7-2]
Private Declare Function BitBlt Lib "gdi32" ( ByVal hDestDC As Long,
ByVal x As Long,
ByVal y As Long,
ByVal n Width As Long,
ByVal nHeight As Long,
ByVal hSrcDC As Long,
ByVal xSrc As Long,
ByVal ySrc As Long,
ByVal dwRop As Long ) As Long
Const srcopy = &HCC0020
Dim h As Integer
Dim w As Integer
Private Sub Form_Load ( )
Picture2.Picture = LoadPicture ( App.Path & "\a01.bmp") '导入图片'
h = Picture 1 .Height
w = Picture 1.Width
End Sub
[代码7-3]
Private Sub Commandl_Click ( ) 旋转180°
Picture2.Picture = LoadPicture ( "" )
For j = 0 To h Step 1
For i = 0 To w Step 1
(1)
Next i
Next j
End Sub
Private Sub Command2_Click ( ) '顺时针施转90°'
Picture2.Picture = LoadPicture ( "" )
For i-h To 0 Step-1
For j - 0 To w Step 1
(2)
Next j
Next i
End Sub
Private Sub Command3_Click ( ) '逆时针旋转90°'
Picture2.Picture = LoadPicture ("")
For j =w To 0 Step -1
For i = 0 To h Step 1
(3)
Next i
Next j
End Sub
Private
第9题
写出如下SQL实现语句。
(1)把对表Zone的INSERT权限授予用户Smith,并允许它再将此权限授予他人。
(2)收回已经授予Tom的对表FlowerInfo中属性ComName的修改权限。
(3)建立视图viewpot,表现问题2的功能。
第10题
阅读以下函数说明、图和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
散列文件的存储单位称为桶(BUCKET)。假如一个桶能存放m个记录,当桶中已有m个同义词(散列函数值相同)的记录时,存放第m+1个同义词会发生“溢出”。此时需要将第m+1个同义词存放到另一个称为“溢出桶”的桶中。相对地,称存放前m个同义词的桶为“基桶”。溢出桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到溢出桶中进行查找。
例如:设散列函数为Hash(Key)=Key mod 7,记录的关键字序列为15,14,21,87,96, 293,35,24,149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件内容如图5-3所示。
为简化起见,散列文件的存储单位以内存单元表示。
函数InsertToHashTable(int NewElemKey)的功能是;若新元素NewElemKey正确插入散列文件中,则返回值1;否则返回值0。
采用的散列函数为Hash(NewElemKey)=NewElemKey % P,其中P为设定的基桶数目。
函数中使用的预定义符号如下:
define NULLKEY-1 /*散列桶的空闲单元标识*/
define P 7 /*散列文件中基桶的数目*/
define ITEMS 3 /*基桶和溢出桶的容量*/
typedef struet BucketNode{ /*基桶和溢出桶的类型定义*/
int KeyData[ITEMS];
struct BucketNode *Link;
}BUCKET;
BUCKET Bucket[P]; /*基桶空间定义*/
【函数5-3】
int InsertToHashTable(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 *)malloc(sizeof(BUCKET));
if(!s)retum -1;
s->Link=NULL;
for(k=0;k<ITEMS;k++)
s->KeyData[k]=NULLKEY;
s->KeyData[0]=NewElemKey;
(6);
}/*if*/
return 0;
}/*InsertToHashTable*/
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!