一起答
主观

阅读下列说明和图,回答问题1至问题3。

 【说明】

 某汽车数字仪表板将完成下述功能:

(1)通过模/数转换,实现传感器和微处理器的接口。

(2)在发光二极管面板上显示数据。

(3)指示速度(mph)、行驶里程、油耗(mpg)等。

(4)指示加速或减速。

 以下是经分析得到的数据流图,有些地方有待填充,假定顶层数据流图是正确的。图9-14是顶层数据流图,图9-15是第0层数据流图,图9-16是第1层数据流图,其中A是加工1的细化图,B是加工2的细化图。图中,△sps表示转速sps的瞬时变化值,若△sps>0则汽车加速,△sps<0则减速,△sps=0则匀速。假定题中提供的顶层图是正确的,请回答下列问题。

第0层数据流图(如图9-15所示)中有一条缺失的数据流,请指出该数据流的起点和终点。

加工1的细化图(如图9-16中的A所示)中有一条缺失的数据流,请指出该数据流的起点和终点。

参考答案
查看试卷详情
相关试题
  1. 阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。

     【说明】

     下面的程序先构造Point类,再顺序构造Ball类。由于在类Ball中不能直接存取类Point中的xCoordinate及yCoordinate属性值,Ball中的toString方法调用Point类中的toStrinS方法输出中心点的值。在MovingBsll类的toString方法中,super.toString调用父类Ball的toString方法输出类Ball中声明的属性值。

     【Java代码】

     //Point.java文件

     public class Point{

        private double xCoordinate;

        private double yCoordinate;

        public Point(){}

        public Point(double x,double y){

           xCoordinate=x;

           yCoordinate=y;

        }

        public String toStrthg(){

           return"("+Double.toString(xCoordinate)+","

           +Double.toString(yCoordinate)+")";

        }

        //other methods

     }

     //Ball.java文件

     public class Ball{

        private (1);//中心点

        private double radius;//半径

        private String color;//颜色

        public Ball(){}

        public Ball(double xValue, double yValue, double r){

           //具有中心点及其半径的构造方法

           center=(2);//调用类Point中的构造方法

           radius=r;

        }

        public Ball(double xValue, double yValue, double r, String c){

           //具有中心点、半径和颜色的构造方法

            (3);//调用3个参数的构造方法

           color=c;

        }

        public String toString(){

           return "A ball with center"+center.toString()

           +",radius "+Double.toString(radius)+",color"+color;

        }

        //other methods

      }

     class MovingBall (4) {

        private double speed;

        public MovingBall(){}

        public MoyingBall(double xValue, double yValue, double r, String c, double s){

            (5);//调用父类Ball中具有4个参数的构造方法

            speed=s;

        }

        public String toString(){

           return super.toString()+",speed"+Double.toString(speed);

        }

        //other methods

     }

     public class test{

        public static void main(String args[]){

           MovingBall mb=new MovingBall(10,20,40,"green",25);

           System.out.println(mb);

        }

     }

  2. 阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。

      【说明】

     以下C++程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类 Triangle、Rectangle和Square分别表示三角形、矩形和正方形:抽象类Figure提供了一个纯虚函数getAxea(),作为计算上述3种图形面积的通用接口。

     【C++代码】

     #include<iostream>

     #include<cmath>

     using namespace std;

     class Figure{

     public:

        virtual double getArea()=0;//纯虚函数

     };

     class Rectangle : (1) {

     protected:

        double height;

        double width;

     public:

        Rectangle(){}

        Rectangle(double height, double width){

           this->height=height;

           this->width=width;

        }

       double getArea(){

          return (2);

       }

    };

    class Square: (3) {

    public:

      Square(double width){

         (4);

      }

    };

    class Triangle: (5) {

    private:

      double la,lb,lc;

    public:

      Triangle(double la,double lb,double lc){

         this->la=la;this->1b=1b;this->lc=lc;

      }

      double getArea(){

         double s=(la+lb+lc)/2.0;

         return sqrt(s*(s-la)*(s-lb)*(s-lc));

      }

    int main()

    {

      Figure *figures[3]={new Triangle(2,3,3),new Rectangle(5,8), new Square(5)};

      for(int i=0;i<3;i++){

          cout<<"figures["<<i<<"]area="<<(figures[i])->getArea()<<endl;

      }

      return 0;

    }

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

      【说明】

     所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。

     应用贪婪法求解该问题。程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择边组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。

     函数中使用的预定义符号如下:

       #define M 100

       typedef struct{/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/

          float x;

          int p1, p2;

       }tdr;

       typedef struct{/*p1、p2为和端点相联系的两个端点,n为端点的度*/

          int n, P1, p2;

       }tr;

       typedef struct{/*给出两点坐标*/

          float x,y;

       }tpd;

       typedef int tl[M];

       int n=10;

     【函数】

     float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/

        void sortArr(tdr a[M], int m);

        /*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/

        int isCircuit(tr[M], int i, int j);

        /*判断边(i, j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/

        void selected(tr r[M], int i, int j);/*边(i,j)选入端点关系表r*/

        void course(tr r[M], tl 1[M]);/*从端点关系表r中得出回路轨迹表*/

        void exchange(tdr a[M], int m, int b);

        /*调整表排序表,b表示是否可调,即是否有边长度相同的边存在*/

        void travling(tpd pd[M], int n, float dist, t1 locus[M])

        /*dist记录总路程*/

        {

           tdr dr[M];/*距离关系表*/

           tr r[M];;/*端点关系表*/

           int i, j, k, h, m;/*h表示选入端点关系表中的边数*/

           int b;/*标识是否有长度相等的边*/

           k=0;

           /*计算距离关系表中各边的长度*/

           for(i=1;i<n;i++){

              for(j=i+1;j<=n;j++){

                 k++;

                 dr[k].x=(1);

                 dr[k].p1=i;

             dr[k].p2=j;

          }

       }

       m=k;

       sortArr(dr,m);/*按距离大小从小到大排序形成排序表*/

       do{

          b=1;

          dist=0;

          k=h=0;

          do{

            k++;

            i=dr[k].p1;

            j=dr[k].p2;

            if((r[i].n<=1)&&(r[j].n<=1)){/*度数不能大于2*/

               if((2)){

                 /*若边(i,j)加入r后形成回路,则不能加入*/

                 (3);

                 h++;

                 dist+=dr[k].x;

               }else if((4)){

                 /*最后一边选入r成回路,则该边必须加入且得到解*/

                 selected(r,i,j);

                 h++;

    &n

  4. 根据题中所述术语,指出图9-19中状态1到状态4分别是什么?

  5. 阅读下列说明和图,回答问题1至问题3。

     【说明】

     C市刚开通了地铁线,为方便乘客,计划开发自动售票系统。

     该公司在每一个地铁站放置了多台自动售票机,每一台售票机有一唯一编号,售票记录统一汇总主机。自动售票机只发售从该站起始的各种地铁票,因此乘客只需输入目的站,起始站默认为该站,售票机给出从该站到达目的站的单程票。打印地铁票时为其编一个唯一的流水号,并同时打印自动售票机的编号及票价。

      售票机的状态变化如下:“空闲”时,显示地铁线路图,等待乘客输入目的站;当乘客输入目的站后,转入“目的站确认/票数输入”状态,同时给出票价,此时若目的站有误,可返回到空闲状态重新输入,否则,输入票数;乘客输入票数后,转入“票数确认/付款”状态,同样此时若票数有误,可返回到上一状态重新输入,否则,投入钱币付款;当付款金额足够时,“出票/找零”(有必要时进行找零);然后转入“空闲”等待输入目的站状态。

     该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,如图9-18所示是该系统类图的一部分,图9-19描述了自动售票机的状态转换图。

    根据题意,给出“自动售票机”类的主要属性。

  6. 根据题意,给出“地铁票”类的主要属性。

  7. 若用表Reader存储读者信息,Book表存储图书信息,Borrow表存储借阅情况。

     以下SQL语句是“查询证号为12345的读者当前所借阅的图书书名(即尚未归还的图书)”,请补充完整。

     SELECT 书名 FROM Book WHERE 流水号(1)

    (SELECT 流水号 FROM(2)WHERE 证号="12345" AND(3))

     以下SQL语句是“查询书名包含‘软件设计师’的图书情况”,请补充完整。

     SELECT * FROM Book WHERE 书名(4)"%软件设计师%"

  8. 由于同一个分类目录号(同一种图书)有多个副本,若用表Book(图书流水号,分类目录号,书名,作者,内容摘要,价格,购书日期)存储图书信息则有很多的冗余信息,该如何分解使之满足BCNF,并指出分解后的关系模式的主键。

  9. 阅读下列说明和图,回答问题1至问题3。

     【说明】

     图书管理系统详细记录图书库存情况、读者信息及读者借阅记录(包括借书日期和还书日期)。

     新书入库时要为该书编制图书卡片,包括分类目录号、图书流水号(要保证每本书都有唯一的流水号,即使同类图书也是如此)、书名、作者、内容摘要、价格和购书日期。同一个书名由于版次、作者等不同有可能存在多“种”图书,其间用“分类目录号”区分。

     系统为每一位合法读者编制一个唯一的借书证号,读者需要提供姓名、单位。

      一个读者最多可以同时借阅5本图书。借阅图书时,新添借阅记录,并将对应的“归还标记”字段置为“false”,表示“尚未归还”;归还图书时,将相应的“归还标记”字段置为“true”,表示“已经归还”。一本书可能供多位读者借阅,同一本书读者可以重复借阅。

     如图9-17所示为该系统的E-R图。

    实体间的联系有“一对一”、“一对多”和“多对多”,指出“借阅”联系属于哪一种?“借阅”关系模式的外键是什么?有主键吗?为什么?

  10. 加工2的细化图(如图9-16中的B所示)中有一条错误的数据流,请指出该数据流的起点或终点(若可以,指出两者)。