主观

阅读以下说明,回答问题1至问题3,将答案写在答卷的对应栏内。

【说明】

 下面是某ERP系统中零件供应模块的3个关系模式。

 供应商:S(SNO,SNAME,CITY,STATUS)

 零件:P(PNO,PNAME,WEIGHT,COLOR,CITY)

 供应单:SP(SNO,PNO,PTY,SP Date)

 属性说明:

 SNO—供应商编号,SNAME—供应商名称,CITY—地址,STATUS—供应商状态

 PNO—零件编号,PNAME—零件名称,WEIGHT—零件重量,COLOR—零件颜色, CITY—地址,PTY—数量,SP Date—订单日期

 问题:

 用SQL语句完成以下操作。

求供应红色零件北京供应商的编号、名称和状态。

参考答案
您可能感兴趣的试题

阅读下列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

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

【说明】用克鲁斯卡尔算法求解给定图的最小生成树。

 #include <stdio. h>

 #include <stdlib. h>

 #define MAXN 30

 typedef struct

 {  int v1,v2;  /*一条边依附的两个顶点*/

    int weight;  /*边上的权值*/

 }EDGE;

 typedef struct

 {  int Vnum;   /*图中的顶点数目*/

    EDGE e[MAXN*(MAXN-1)/2]; /*图中的边*/

 }Graph;

 typedef struct node{  /*用链表存储同一个连通分量的顶点*/

   int v;

   struct node *next;

 }Alist;

 void heapadjust(EDGE data[], int s, int m)

 {  /*将元素序列data[s..m]调整为小顶堆, 堆顶元素(最小元素)为data[s]*/

  int j;

  EDGE t;

  t=data[s];  /*备份元素data[s], 为其找到适当位置后再插入*/

  for(j=2*s+1; j<=m; j=j*2+1){/*沿值较小的子结点向下筛选*/

    if(j<m &&(1)) ++j;

    if(!(t. weight>data[j]. weight)) break;

    data[s]=data[j];s=j;  /*用s记录待插入元素的位置(下标)*/

  }/*for*/

  data[s]=t;    /*将备份元素插入由s所指出的插入位置*/

 }/*heapadjust*/

 int creat_graph(Graph *p)  /*输入图中的顶点及边, 返回图中边的数目*/

 {  int k=0;  /*记录图中边的数目*/

  int n;

  int v1,v2;

  int w;

  printf("vertex number of the graph:");

  scanf("%d", &n);  /*输入图中的顶点数目*/

  if(n<1) return 0;

  p->Vnum=n;

  do{  printf("edge(vertex1,vertex2,weight):");

      scanf("%d %d %d", &V1, &v2, &w);

      if(v1>=0 && v1<n && v2>=0 && v2<n){

        p->e[k]. v1=v1; p->e[k]. v2=v2; p->e[k]. weight=w;

        k++;

      }/*if*/

  }while(!( (2) ));

  return k;  /*返回图中边的数目*/

 }/*creat_graph*/

 int kruskal(Graph G, int enumber, int tree[][3])

 {  /*用kruskal算法求无向连通图G的最小生成树, 图中边所得数目为enumber, */

    /*数组tree[][3]中存放生成树中边的顶点和边上的权值, 函数返回生成树的代价*/

     int i, k, m, c=0;

     int v1, v2;

     Alist *p, *q, *a[MAXN];

     for(i=0; i<G.Vnum; ++i){  /*将每个连通分量中的顶点存放在一个单链表中*/

       a[i]=(Alist*)malloc(sizeof(Alist));

       if(!a[i]) {

         printf("\n mernory allocation error!");

           exit(0);

         }/*if*/

       a[i]->v=i; a[i]->next=NULL;

     }/*for*/

     for(i=enumber-1; i>=0; --i)/*按照边上的权值建立小顶堆*/

       heapadjust( (3) );

   k=G. Vnum;  /*k用于计算图中的连通分量数目*/

   m=enumber-1;

   i=0;

   do{

     v1=G. e[0]. v1; v2=G. e[0]. v2;

      p=a[v1];

     while(p && p->v!=v2){  /*判断当前选择的边的顶点是否在一个连通分量中*/

       q=p; p=p->next;

     }

     if(!p){  /*当前边的顶点不在一个连通分量中*/

       p=q;

       p->next=a[G. e[0]. v2];

 &nb

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服