一起答
主观

根据设计二中关系模式,以下SQL语句是用于“查询从未售出的商品信息”的不完整语句,请填补其中的空缺。

 SELECT Mno, Mname, price

 FROM Merchandise(1)

 WHERE(2)

(SELECT(3)

 FROM lnvoicedetail

 WHERE A. Mno=lnvoicedetail. Mno);

参考答案
查看试卷详情
相关试题
  1. 阅读下列程序说明和C++代码,将应填入(n)处。

     【程序6说明】

     本程序实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数有:

     createList():创建按指数降序链接的多项式链表,以表示多项式。

     reverseList():将多项式链表的表元链接顺序颠倒。

     multiplyList(List L1,List L2):计算多项式L1和多项式L2的乘积多项式。

     【程序6】

     #include<iostream.h>

     class List;

     class |tem{

       friend class List;

     private:

       double quot;

       int exp;

       |tem * next;

     public:

        |tem(double_quot,int_exp)

        { (1) ;}

     };

     class List {

     private:

       |tem * list;

     public:

      List(){list=NULL;}

      void reverseList();

      void multiplyList(List L1,List L2);

      void createList();

     };

     void List::createList()

     { |tem * p,* u,*pre;

      int exp;

      doubte quot;

      list=NULL;

      while(1){

      cout<<"输入多项式中的一项(系数、指数):"<<endl;

      cin>>quot>>exp:

      if(exp<0)break;  //指数小于零,结束输入

      if(quot==0)continue;

      p=list;

      while((2)){  //查找插入点

       pre=p;p=p->next;}

      if(p!=NULL&&exp==p->exp) {p->quot+=quot;continue;}

       u=(3);

       if(p==list) list=u;

       else pre->next=u;

       u->next=p;}

      }

      void List::reverseList()

      { |tem*p,*u;

       if(list==NULL)return;

       p=list->next;list->next=NULL;

        while(p!=NULL)}

        u=p->next;p->next=list;

        list=p;p=u;}

      }

      void List::multiplyList(List L1,List L2)

      {|tem*pLI,*pL2,*u;

      int k,maxExp;

      double quot;

      maxExp=(4);

     L2.reverseList();list=NULL;

     for(k=maxExp;k>=0;k--){

      pL1=L1.list;

      while(pL1!=NULL&&pL1->exp>k)pL1=pL1->next;

      pL2=L2.list;

      while(pL2!=NULL&&(5) pL2=pL2->next;

      quot=0.0;

      while(pL1!=NULL&&pL2!=NULL){

       if(pL1->exp+pL2->exp==k){

       (6);

        pL1=pL1->next;pL2=pL2->next;

       }else if(pL1->exp+pL2->exp>k) pL1=pL1->next;

         else pL2=pL2->next;

     } 

     if(quot!=0.0){

      u=new |tem(quot,k);

      u->next=list;list=u;}

     }

     reverseList(:);L2.reverseList():

     }

     void main()

     { ListL1,L2,L;

      cout<<"创建第一个多项式链表\n";L1.createList();

      cout<<"创建第二个多项式链表\n";L2.createList();

      L.multiplyList(L1,L2);

     }

  2. 【说明】

     下面是一个Applet程序,其功能是根据给出的小时,分钟和秒数计算相等的秒数,即将1分钟化为60秒,依此类推。要求建立一个时间类,时间参数均作为类的成员变量,并且给出换算时间的方法,也作为这个类的成员函数,可以供外部对象进行调用。同时还需要在输出窗口中显示换算结果,并且将结果写到out3_3.txt文件中,本题给出确定的时间为4小时23分47秒,要求换算成以秒做单位的时间。

     程序运行结果如图11所示。

     

     import java.io.*;

     import java.awt.*;

     impOrt java.applet.*;

     /*

      <applet code=ex7_7.class width=800 height=400>

      </applet>

     */

     public class ex7_7 extends APPlet{

      public void paint (Graphics g){

      int nSum;

      class myTime7_7{

       public int h;

       public int m;

       public int s;

       public int out;

       public int caculateSecond(){

          (1);

       return out;

       }

      }

      myTime7_7 objTime7_7=new myTime7_7();

      ObjTime7_7. h=4;

      ObjTime7_7.m=23;

      ObjTime7_7.s=47;

      nSum=objTime7_7.  (2);

      g.drawString("时:"+objTime7_7.h,20,30);

      g.drawString("分:"+objTime7_7.m,20,50);

      g.drawString("秒:"+objTime7_7.s,20,70);

      g.drawString((3));

      try{

      FileOutputStream fos7_7=new FileOutputStream("out7_7.txt");

      BufferedOutputStream bos7_7=new BufferedOutputStream(fos7_7,1024);

      PrintStream ps7_7=new PrintStream(bos7_7,false);

      SyStem.setOut(ps7_7);

      System.out.println((4));

      ps7_7. close();

      }catch(|OException ioe){

       (5) (ioe);

      }

      }

     }

     ex7_7.htm|

     <HTML>

      <HEAD>

       <TITLE>ex7_7</TITLE>

      </HEAD>

      <BODY>

       <appletcode="ex7_7.class"width=800 height=400>

       </applet>

      </BODY>

     </HTML>

  3. 阅读下列程序说明和C代码,将应填入(n)处。

      【程序5说明】

     著名的四色定理指出任何平面区域图均可用四种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过四种颜色的着色方案。

     程序中用1~4表示四种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用 adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻;矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i所着颜色。

     【程序5】

     #include<stdio.h>

     #define N 10

     void output(int color[])/*输出一种着色方案*/

     { int i;

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

       printf("%4d",color[i]);

      printf("\n");

     }

     int back (int * ip,int color[])/*回溯*/

     { int c=4;

       while(c==4){

       if(*ip<=0)return 0;

       --(*ip);

       c=(1);

       color[*ip]=-1;

       }

       return c;

     }

     /*检查区域i,对c种颜色的可用性*/

     int colorOk(int i,int c,int [][N],int color[]}

     { int j;

      for(j=0;j<i;j++)

      if((2))

       return 0;

     return 1;

     }

     /*为区域i选一种可着的颜色*/

     int select (int i,int c,int adj[][N],int color[])

     { int k;

      for(k=c;k<=4;k++)

      if(colorOK((3)))

       return k;

      return 0;

     }

     int coloring(int adj[][N])/*寻找各种着色方案*/

     { int color[N],i,c,cnt;

      for(i=0;i<N;i++)color[i] =-1;

      i=c=0;cnt=0;

      while(1){

       if((c=(4))==0){

        c=back(&i,color);

        if(c==0)return cnt;

       }else{(5);i++;

        if(i==N){

         output(color);

         ++cnt;

         c=back(&i,color);

        }else c=0;

       }

      }

     }

      void main()

      { int adj[N][N]=

           {{0,1,0,1,1,1,1,1,1,1},

            {1,0,1,1,0,1,1,1,1,0},

            {0,1,0,1,0,1,1,0,1,1},

            {1,1,1,0,1,1,0,0,1,1},

            {1,0,0,1,0,1,0,0,0,0},

            {1,1,1,1,1,0,1,0,0,1},

            {1,1,1,0,0,1,0,0,1,0},

            {1,1,0,0,0,0,0,0,1,1},

            {1,1,1,1,0,0,1,1,0,1},

            {1,0,1,1,0,1,0,1,1,0}

           };

      printf("共有%d组解.\n",coloring(adj));

     }

  4. 阅读下列函数说明,将应填入(n)处的字句写在对应栏内。

    【函数1说明】

     函数compare(SqList A, SqList B)的功能是:设A=(al,…,am)和B=(b1,…,bn)均为顺序表,“比较”,两个顺序表A和B的大小。设A’ 和B’ 分别为A和B中除去最大共同前缀后的子表(例如,A=(y,x,x,z,x,z),B=(y,x,x,2,y,x,x,z),则两者中最大的共同前缀为 (y,x,x,z),在两表中除去最大共同前缀后的子表分别为A'=(x,z)和B'=(y,x,x,z))。若 A'=B'=空表,则A=B;若A'=空表,而B'≠空表,或者两者均不为空表,且A'的首元小于 B'首元,则A<B:否则A>B。

     提示:算法的基本思想为:若相等,则j+1,之后继续比较后继元素;否则即可得出比较结果。显然,j的初值应为0,循环的条件是j不超出其中任何一个表的范围。若在循环内不能得出比较结果,则循环结束时有3种可能出现的情况需要区分。

     【函数1】

    int compare ( SqListA, SqList B)

    {

    //若A<B,则返回-1;若A=B,则返回0:若A>B,则返回1

    j =0;

    while(i< (1) &&j<B. length)

    if(A. elem[j] < B. elem[j] )return(-1)

    else if(A. elem[j] > B. elem[j] )return(1);

    else (2);

    if(A. length == B. length) return(0);

    else if(A. length<B. length)return(-1);

    else return(1)

    }//compare

    //函数1的时间复杂度是(3)。

      【函数2说明】

     函数exchanse_L(SLnk&L,int m)的功能是:用尽可能少的辅助空间将单链表中前m个结点和后n个结点的互换。即将单链表(a1、a2…,am,b1,b2,…,bn)改变成(b1,b2,…,bn,a1, a2,…,am,)。

    【函数2】

    void exchange_L(SLink &L, int m)

    {

    if((4)&&L->next)     //链表不空且Lm!=0

    {

     P = L->next; k=1;

     while( k < m&&p)      //查找am,所在结点

     {

       P=(5);++k;

      }

     if( (6) &&p->next)   //n! =0 时才需要修改指针

       ha = L -> next;      //以指针ha记a1结点的位置

       L -> next = p -> next;  //将B1结点链接在头结点之后

       p -> next = NULL;     //设am的后继为空

       q=(7);        //令q指向b1结点

       while(q->next)q =(8); //查找bn结点

       q->>next=(9);     //将a1结点链接到bn结点之后

      }

    }

    }

    //函数2的时间复杂度是(10)。

  5. 设计二中关系Merchandise中由属性price表示商品价格,关系lnvoicedetail中的属性 unitprice也表示商品价格。两个是否有必要同时存在?为什么?

  6. 根据设计二中关系模式,以下SQL语句是用于“查询从未售出的商品信息”的不完整语句,请填补其中的空缺。

     SELECT Mno, Mname, price

     FROM Merchandise(1)

     WHERE(2)

    (SELECT(3)

     FROM lnvoicedetail

     WHERE A. Mno=lnvoicedetail. Mno);

  7. 根据设计二中关系模式,以下SQL语句是用于“建立2005年1月期间每张发票的发票号,交易日期,交易商品件数和交易总金额的视图”的不完整语句,请填补其中的空缺。

     CREATE VIEW Invoice -total(1)

     SELECT Invoice. ino, ldate,(2),(3)

     FROM Invoice, lnvoicedetail

     WHERE(4)AND

     ldate BETWEEN '2005-01-01'AND '2005-01-31'

     GROUPBY(5);

  8. 请从下面的选项中选择相应的判断逻辑填补【算法2-1】中的“判断条件1”至“判断条件3”。注意,若“判断条件2”的逻辑判断结果为假,就无需对“判断条件3”进行判断。

    (a)字符是括号

    (b)字符是左括号

    (c)字符是右括号

    (d)栈空

    (e)栈不空

    (f)栈顶元素表示的是与当前字符匹配的左括号

    (R)栈顶元素表示的是与当前字符匹配的右括号

  9. 阅读下列说明,回答问题1~问题4。

    【说明】

     某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表6所示。

          

     对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计(下划线表示主关键字)

     设计一:

     顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)

     收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话 phone)

     商品Merchandise(商品代码Mno,商品名称Mname,价格price)

     发票Invoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno,商品代码 Mno,单价unitpfice,数量amount)

     设计二:

     顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)

     收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话 phone)

     商品Memhandise(商品代码Mno,商品名称Mname,价格price)

     发票Ivoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno)

     发票明细Invoicedetail(发票号码Ino,商品代码Mno,单价unitprice,数量amount)

    设计一的关系模式Invoice最高满足第几范式?为什么?设计一和设计二哪个更加合理?为什么?

  10. UML采用5个互联的视图来描述软件系统的体系结构,即用例视图(Use—case View)、设计视图(Design View)、进程视图(Process View)、实现视图(Implementation View)和展开视图(Deployment View)。系统模型中每一个视图的内容是由一些图来描述的,UML中包含用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、分布图等9种图。对整个系统而言,其功能由用例图描述,静态结构由类图和对象图描述,动态行为由状态图、时序图、协作图和活动图描述,而物理架构则是由组件图和分布图描述。请分别指出用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、分布图的作用。