一起答
主观

数据库设计的需求分析阶段和概念结构设计阶段的主要任务分别是什么?这两个阶段标志性的成果有哪些?

参考答案
查看试卷详情
相关试题
  1. 阅读以下说明和Visual Basic代码,填入(n)处。

     [说明]

     在一些财务软件中,经常需要将阿拉伯数字的账目转化为汉语习惯中的金额计数方法,例如:

     “3.45”转化为“叁元四角五分”;

     “3.4”转化为“叁元四角”;

     “3.40”转化为“叁元四角零分”;

     “3.456”转化为“叁元四角五分”;

     “345.00”转化为“叁百四十五元零角零分”;

     “345”转化为“叁百四十五元”;

     以下Visual Basic代码实现了小写金额转换为大写金额。界面如图10-9所示。结合实际例子说明,仔细阅读下面代码,将(n)代码补充完整。

    [代码7-1]

     Begin VB.FormForm1

       Caption  = "小写金额转换为大写金额"

      //...窗体描述(略)

       Begin VB.CommandButton Command1

        Caption  = "退出"

        //...窗体描述(略)

       End

       Begin VB.TextBox Text2

       //...窗体描述(略)

       End

       Begin VB.TextBox Text1

        Enabled  = 0 'False

       //…窗体描述(略)

       End

       Begin VB.Labe1 Labe12

        Caption  = "转换为大写金额"

        //...窗体描述(略)

       End

       Begin VB.Labe1 Labe11

        Caphon  = "请输入数字"

       //...窗体描述(略)

       End

     End

     [代码7-2]

     Private Function setdata (num As Integer) As String '数字转换

      Select CaSe num

      Case 0

        setdata="零"

      Case 1

        Setdata="壹"

      Case 2

        Setdata="贰"

      Case 3

        Setdata="叁"

      Case4

        Setdata="肆"

      Case 5

        Setdata="伍"

      Case 6

        Setdata="陆"

      Case 7

        Setdata="柒"

      Case 8

        Setdata="捌"

      Case 9

        Setdata="玖"

      End Select

     End Function

     Private Function chang (aaa As Integer) As String '位数转换

      Select CaSe aaa

      Case 1

        chang=""

      Case 2

        chang="十"

      Case 3

        chang="百"

      Case 4

        chang="千"

      Case 5

        chang="万"

      Case 6

        chang="十"

      Case 7

        chang="百"

      Case 8

        chang="千"

      Case 9

        chang="亿"

      Case 10

        chang="十"

      End Select

     End Function

     [代码7-3]

     Private Sub Text2_Change ( ) '小写转大写

      Dim i As Integer

      Dim j As Integer

      Dim myint As Integer

      Dim myint1 As Integer

      Dim mydoub As Double

      Dim mystr As String

      Dim mystr1 As String

      Dim mystr2 As String

      Dim mystr3 As String

      Dim mystr4 As String

      Dim money As Long

      Dim money1 As Integer

      Dim money2 As Long

      mystr=Text2.Text

      myint=InStr (mystr, ".")

      If myint=0 Then

        mystr=Text2.Text

      Else

       mystr3=Right(Text2.Text, Len (Text2.Text ) - myint)

       If mystr3<>""Then   '转换小数位

          mystr4=Left(mystr3, 1)

          mystr3=Right(mystr3, Len(mystr3 )

  2. 阅读以下说明和C++码,填入(n)处。

      [说明]

     下面代码实现类A、B、C、D的继承定义和应用。仔细阅读[代码5-1],在(n)处写出正确的运行结果。

     [代码5-1]

     #include<iostream.h>

     class A {

     public:

       int a;

       A (int v1): a(v1) {} //构造函数

       void disp ( )

       {

         cout<<"a in class A="<<a<<endl;

       }

     };

     class B: virtual public A {

     public:

       int b;

       B (int v1,int v2): A(v1),b v2) {} //构造函数

       void disp ( )

       {

        cout<<"a in class B="<<a<<endl

        cout<<"b in class B="<<b<<endl;

       }

     };

     class C: virtual public A {

     public:

       int c;

       C (int v1,int v2): A(v1) ,c(v2) {} //构造函数

       void disp ( )

       {

         cout<<"a in class C="<<a<<endl;

         cout<<"c in class C="<<c<<endl;

       }

     };

     class D: public B, public C {

     public:

       int d;

       D (int v1,int v2,int v3,int v4 ): A(v1) ,B(v1,v2) ,C(v1,v3),d(v4) {}  //构造函数

        void disp ( )

       {

        cout<<"a="<<a<<endl;

        cout<<"b="<< b<<endl;

        cout<<"c="<<c<<endl;

        cout<<"d="<<d<<endl;

       }

     };

     void main( )

     {

       D demo (10,20,30,40);

       demo.disp ( );

     }

     [运行结果]

     a=(1)  

     b=(2)  

     c=(3)  

     d=(4)

  3. 阅读以下说明和JAVA 2代码,填入(n)处。

      [说明]

     以下JAVA程序设计了类CSet,使用同一个名称(set)的method来传入数据。仔细阅读[代码6-1)、[代码6-2]和[代码6-3]和相关注释,将程序补充完整。

     [代码6-1]

     import java.io.*;

     class CSet

     {

         private int width;

         private int height;

         (1)  

       public void set(String color)

       {

        col=color; //(a)可输入长方形的颜色

       }

       public void set (iht w, int h)

       {

        width=w; //(b)可输入长方形的宽和高

        height=h;

       }

       public void set (String color, int w, int h)

       {

        col=color; //(c)可输入长方形的颜色、宽和高

        width=w;

        height=h;

       }

       public void show ( )

       {

        System.out.println ("n\长方形的颜色为: "+col);

        System.out.println ("n\长方形宽为: "+width+" 长方形高为: "+height");

       }

     }

     [代码6-2]

     public class hw8_3

     {

       public static void main (String args[]) throws IOException

       {

        intw, h; //声明宽、长变量,并给予赋值

        String color, k;

        CSet rect1;

        rect1=new CSet ( );

        System.out.print ("\n请输入颜色:: ");

        color=input ( );

        System.out.print ("请输入宽度:: ");

        k=input ( );

        w=Integer.parseInt (k);

        System.out.print ("请输入高度:: ");

        k=input( );

        h=Integer.parseInt (k);

         (2)//设置长方形的颜色

         (3)//设置长方形的宽、高

        rectl.show ( );

         (4)//设置长方形的颜色和宽、高

        rectl.show ( );

       }

     [代码6-3]

       public static String input( ) throws IOException//输入函数

       {

        String str;

        BufferedReader buf;

         (5)  

        str=buf.readLine ( )

        return str;

       }

     }

  4. 阅读下列函数说明和C代码,填入(n)处。

     [说明]

     以下C语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下:

     7  6  5  16

     8  1  4  15

     9  2  3  14

     10  11  12  13

     程序的变量说明如下:

       x1:矩阵上边界;

       x2:矩阵下边界;

       y1:矩阵左边界;

       y2:矩阵右边界;

       s:数组元素升降标记,s等于1为升,s等于-1为降;

       a[]:存放矩阵元素的数组。

     仔细阅读C语言程序源码,将(n)处的语句补充完整。(注:每处仅一个语句)

     [C程序]

     #include<stdio.h>

     void main ( )

     {

      const int N=20;

      int i=0,j=0,a[N][N],n;

      int m,x1,x2,y1,y2,s;

      while (1)

      {

       Printf ("\ninput matrix row N( N>=2): ");

       scanf ("%d",&n);

       printf ("\n");

       if (n>=2)

       break;

      }

      m=n*n;

      x1=0; y1=0; x2=n; y2=n;

      if(n%2==0)

     {j=n-1; y2=n-1; s=1;}

      else

     {i=n-1; y1=1; s=-1; }

      while (1)

      {

        if (s==1)

        {

        for (i; i<x2; i++)  a[i][j]=m--;

      i--;

      j--;

       (1) 

        for (j;j>=y1;j--) a[i][j]=m--;

      j++;

      i--;

      y1++;

       (2) 

        }

        else

        {

         for (i;i>=x1;i--)

         a[i][j]=m--;

         i++;

         j++;

         (3) 

         for (j;j<y2;j++)

         (4) 

         (5) 

         i++;

         (6) 

         S=i;

        }

      if (m<1) break;

      }

      for (i=O;i<n; i++)

      {

       for (j=O;j<n;j++)

       printf ("%6d",a[i][j]);

       printf ("\n");

      }

       printf ("\n");

     }

  5. 求解“背包问题”常用的方法有哪几种?各有什么样的特点?

  6. 数据库设计的需求分析阶段和概念结构设计阶段的主要任务分别是什么?这两个阶段标志性的成果有哪些?

  7. 阅读下列函数说明和C代码,填入(n)处字句,并回答相应问题。

     [说明]

     背包问题就是有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的选择方案,使选中物品的总重量不超过指定的限制重量,而且选中物品的价值之和为最大。

     背包问题是一个典型的NP完全难题。对该问题求解方法的研究无论是在理论上,还是在实践中都具有一定的意义。如管理中的资源分配、投资决策、装载问题等均可建模为背包问题。

     常用的背包问题求解方法很多,但本题中采用了一种新的算法来求解背包问题。该算法思想为:首先要对物品进行价重比排序,然后按价重比从大到小依次装进包裹。这种方法并不能找到最佳的方案,因为有某些特殊情况存在,但只要把包中重量最大的物品取出,继续装入,直到达到limitweight,这时的物品就是limit weight的最大价值。这种算法不需要逐个进行试探,所以在数据非常大时,执行效率主要由排序的时间复杂度决定。该算法的流程图为图11-4。

     仔细阅读程序说明和C程序流程图及源码,回答问题1和问题2。

     [流程图11-4]

    [程序说明]

     struct Thing:物品结构

       typedef struct Bag:背包结构类型

       input ( ):将物品按序号依次存入数组函数

       inbag ( ):物品按物价比入包函数

       init ( ):初始化函数

       sort ( ):对物品按价格重量比排序函数

       outbag ( ):取出包中weiht最大的物品函数

       print ( ):最佳方案输出函数

     [C程序]

     #define N 255

     struct Thing {

         double weight;

         double value;

         double dens;

        }thing[N];

     typedef stmct Bag {

         Thing thing [N];

         double weighttmp;

         double sumvalue;

       }bag,best;

     inbag ( )

     {

     do{

       bag.thing[i]=thing[i]

         (1)  

         (2)  

       i++;

     }while (  (3)  )

     }

     init ( )

     {

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

     {

       input (thing[i].weight, thing [i].value)

       thing [i].dens=thing[i].value/thing [i].weight;

     };

     }

     main ( )

     {

     init ( );

     sort ( );

     inbag ( );

     do {

       best=bag; //把包中物品放入暂存数组

       outbag ( ); //取出包中weight最大的物品

        (4)  

       }while ( (5))

     print (best); //输出temp因为是最佳方案

     }

    根据程序说明及流程图、部分C源码,充分理解算法思想,填入(n)处。

  8. 阅读以下说明和表,回答问题1~3问题。

     [说明]

     在学校中,存在以下关系:

     (a)一个系有若干学生,但一个学生只能在一个系;

     (b)一个学生可以选修多门课程,每门课程有若干学生选修;

     (c)每个学生所学的每门课程都有一个成绩。

     该校在学生信息管理数据库设计了三个基本表,分别为表一、表二、表三。

     (a)表一:学生信息表STUDENT(STID,NAME,AGE,DEPTNO),其中,STID表示学号,NAME表示学生姓名,AGE表示年龄,DEPTNO表示系号。

     (b)表二:课程表COURSE(COID,NAME),其中,COID表示课程号,NAME表示课程名。

     (c)表三:成绩表SCORE(SCID,COID,GRADE),其中,SCID表示学号,COID表示课程号, GRADE表示成绩,成绩为空时表示这学期正在上的课程。

    根据要求将SQL语句补充完整。

    (1)查询各系的学生数

     SELECT(1),COUNT(*)(2)

     GROUP BY DEPTNO;

    (2)更改课程号为C601的课程名为“大学物理”

     UPDATE(3)SET(4)

    (3)基于学生信息表,建立一个计算机系(系编号为D01)的学生视图。写出命令。

     CREATE OR REPLACE VIEW V_STUDENT

     AS(5)

  9. 请补齐下列数据字典条目:

     导师=__________________________________________

     考试科目=_________________________________________

  10. 数据流图11-3中还依赖于哪个文件?请指出文件名称,并指出与其有关的数据流的起点和终点。