一起答

软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷28

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 阅读下列Java程序和程序说明,将应填入(n)处的字句写在对应栏内。

    【说明】本程序实现功能:读入两个整数,第1个数除以第2个数,声明当除数为零时抛出异常类DivideByZeroException。

    public class DivideByZeroException (1) {

     public DivideByZeroException ( ) {

       super("Attcmpted to divide by zero");

       }

     }

    import java.io. *;

    public class Example {

     private static int quotient(int numerator, in)\”}t denominator) throws

       DivideByZeroException {

        if (denominator==0)

          throw (2);

        return(numerator / denominator);

     }

     public static void main(String args[]) {

        int number1=0, number2=0, result0;

        try{

          System.out.print1n("Enter the first number:");

          number1 = Integer. valueOf(Keyboard.getString()).intValue();

          System.out.print1n("Enter the second number:");

          number2 = Integer. Va1ueOf(Keyboard.getString()).intValue();

          result = quotient(number1,number2);

        }

        catch (NumberFormatException e) {

          System.out.print1n("Invalid integer entered!");

          System. exit(-1);

        }

        catch ((3)) {

          System.out.print1n(e.to String());

          System.exit(-1);

        }

        Systcm.out.pfint1n(number1 + "/" + number2 + "=" + result);

      }

    }

    其中, Keyboard类的声明为:

      import java.io.*;

     public class Keyboard{

     static BufferedReader inputStream =(4) 

                (new InputStreamReader(System.in));

     public static int getInteger() {

        try(

          return (Intoger.valueOf(inputStream.readLine().trim()).intValue());

        } catch (Exception e) {

          e.printStackTrace();

          return 0;

        }

     }

     public static String getString() {

      try{

      return (inputStream.readLine());

      } catch ((5))

       { return "0";}

     }

    }

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

     【说明】设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。本程序,输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。

     程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j>。如果这样,从站点x至站点y的最少上车次数便对应图G中从点x到点y的最短路径长度。而程序要求的换车次数就是上车次数减1。

     #include <stdio.h>

     #define  M  20

     #define  N  50

     int a[N+1];  /*用于存放一条线路上的各站编号*/

     int g[N][N]; /*严存储对应的邻接矩阵*/

     int dist[N]; /*严存储站0到各站的最短路径*/

     int m, n;

     void buildG()

     { int i, j, k, sc, dd

       printf(“输入公交线路数,公交站数\n”);

       scanf("%d%d",&m,&n);

       for (i=0;i<n;i++)  /*邻接矩阵清0*/

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

         g[i][j]=0;

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

     {  printf("沿第%d条公交线路的各站编号(0<=编号<=%d,-1结束):\n)",i+1,n-1);

        sc=0;  /* 当前线路站计数器*/

        while(1)

        { scanf("%d",&dd);

          if(dd=-1)break;

          if(dd>=0 && dd<n) (1);

        }

        a[sc]=-1;

        for(k=1;a[k]>=0;k++)  /*处理第i+1条公交线路*/

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

             g (2)=1;

     }

    }

    int minLen()

    { int j,k;

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

        dist[j]=g[0][j];

     dist[0]=1;

     do{

        for(k=-1,j=0;j<n;j++)   /*找下一个最少上车次数的站*/

           if(dist[j]>0 &&(k==-1||dist[j]<dist[k]))

              k=j;

        if(k<0||k==n-1)

           break;

        dist[k]=-dist[k];   /*设置k站已求得上车次数的标记*/

        for (j=1;j<n;j++)  /*调整经过k站能到达的其余各站的上车次数*/

            if((3)&& (dist[j]=0||-dist[k]+1<dist[j]))

               dist[j]=(4);

     }while(1);

     j=dist[n-1];

     return (5);

    }

    void main()

    { int t;

     buildG();

     if((t=minLen())<0)

        printf("无解!\n");

    else

      printf(“从0号站到%d站需换车%d次\n”,n-1,t);

    }

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

    【说明】本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类Node描述,而链表由类List描述。类List的成员函数有以下几个。

     ①createList():创建从小到大的有序链表。

     ②multiplyList(List L1,List L2):将链表L1和链表L2合并。

     ③print();打印链表。

    # include <iostream.h>

    class List;

    class Node {

      friend class List;

      public:

         Node(int data)

          {(1); }

      private:

         int data;

         Node *next;

    };

    class List {

       public:

         List( ) {list = NULL;}

         void multiplyList(List L1, List L2);

         void createList( );

         void print( );

      private:

         Node *list;

    };

    void List::createList( )

    { Node *p, *u, *pm;

      int data;

      list = NULL;

      while (1) 

      { cout<<"输入链表的一项: (小于零,结束链表)"<<end1;

          cin >> data;

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

         p = list;

         while (p != NULL && data > p->data)  //查找插入点

          { pre = p;

             p = p->next;

        }

         u=(2):

          if(p==list)

             list = u;

          else

             pre->next = u;

          (3):

    }

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

    { Node *pL1, *pL2, *pL, *u;

      list = NULL;

      pL1 = L1.list;

      pL2 = L2.1ist;

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

      {

          if (pL1->data < pL2->data)

          { u = new Node (pL1->data);

             pL1 = pL1 ->next;

        }

         else

         { u = new Node (pL2->data));

               pL2 = pL2->next;

         }

         if (list==NULL)

           list=(4);

         else

         { pL->next = u;

           pL =u;

         }

      }

      pL1 = (pL1 != NULL) ? pL1:pL2;

      while (pL1 != NULL)

      { u =(5);

         pL1 = pL1->next;

         if (list==NULL)

           list=pL=u;

         else

         { pL->next = u;

           pL = u;

         }

      }

    }

    void List::print( )

    { Node *p;

      p = list;

      while (p != NULL)

      {  cout << p->data << "\t";

        p = p->next;

      }

      cout << end1;

    }

    void main ( )

    { List L1, L2, L;

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

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

      L1.print ( ); L2.print ( );

      L.multiplyList (L1, L2);

      L.print ( );

    }

  4. 说明用例模型的功能,用例图的主要组成部分,用例建模的步骤。

  5. 阅读以下说明和图,回答问题1和问题2,将答案写在对应栏内。

    【说明】

     某教学管理系统的用户是教学管理人员、教师和学生。系统主要提供学生选课管理和学生成绩管理两方面的功能。

      (1)学生选修课管理

     主要功能是管理新学期开始时,学生对选修的课程进行选课注册工作。新学期开始后的前两周为学生试听、选课注册时间;允许校内各院系学生跨专业跨年级选修课程;学生可以在校园网的任何一个终端进行选课。

     ①新学期选修课程表生成:各学院教学管理人员在新学期开始前,将准备开设的选修课程名称、课程代码、总课时、上课时间、学分、任课教师和上课教室录入系统,供学生选课使用。新学期开学两周后,系统自动将实际选课学生少于10人的课程停开,并删除该课程;教学管理人员打印学生选课注册名单和开课通知书,送交有关部门和任课教师。

     ②学生选课注册:新学期开学前两周为学生试听、选课注册时间,并允许改变或取消注册申请。学生调用待选课程表,系统显示课程名、课程代码、任课教师、上课时间、总课时、上课教室、学分和本课程己选修人数。学生所选几门课程在上课时间上不能冲突:若一门课程实际选课学生已达到40人时,停止选课。当学生退出系统时,系统提示该学生所选的几门课程、任课教师、上课时间、教室、学分和学分总计。

     ③选修课程查询:选修课程表信息查询,用户是教师、学生和教学管理人员。系统显示课程名、课程代码、任课教师、上课时间、总课时、上课教室、学分和本课程已选修人数。查询关键词可为学院名称、专业、授课教师等。

     学生选课情况查询:教师和教学管理人员可以查看学生的选课情况。查询关键词可以为学生姓名(学号)、课程名称(课程代码)、授课教师等。学生只能查自己所选课程内容,不允许查其他同学选课情况。

     教师简历查询:用户是学生、教师和教学管理人员。查询关键词可为教师姓名、性别、职称、年龄等单关键词或组合关键词。

     ④信息统计与报表生成:各学院教学管理人员对学生选课注册信息进行统计(按课程、专业等),打印汇总报表。

     ⑤把学生选课注册信息传送到财务管理系统,计算学生应交纳的费用。

     (2)学生成绩管理

     ①学生考试成绩录入:各学院教学管理人员将学生考试成绩录入系统。录入学生成绩时,系统自动检查财务系统传来的选课交费信息,核对该学生是否已经交纳本门课程的费用,没有交纳费用者,不给成绩。

     ②成绩查询;教师和教学管理人员可查询学生各门课程的成绩。查询关键词可为学生姓名(学号),课程名(课程代码)等。学生只能查自己各门课程的成绩,不允许查其他同学成绩。

     ③成绩汇总与报表生成:教学管理人员对学生考试成绩信息进行统计(按学生、课程、专业等),打印汇总报表。向学校教务管理系统发送汇总信息表格等,不反馈信息。

    完成下面的教学管理系统最高层用例图。

  6. (1)把对表ZONE的INSERT权限授予用户Smith,并允许他再将此权限授予其他人。

    (2)收回已经授予Tom的对FlowerInfo中属性ComName的修改权限。

    (3)建立视图viewpot,表现问题2的功能。

  7. 写出实现语句:查询以花瓶(pot)形式发货的所有鲜花的ID,普通名以及花瓶的规格。得到结果表按普通名的字母逆序打印。

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

    【说明】

     关于一位花商有以下一些事实。

     (1)销售在不同地区生长的花,这些地区一年的量低温度在一定范围内变化。

     (2)想用编号来表示发货类型。

     (3)要出售某些类型的花。

     假定已经通过SQL语句建立了基本表:

     CREATE TABLE Zone

     (

     ID Char(2) PRIMARY KEY,

     LowerTemp Number (3),

     UpperTemp Number (3)

     );

     CREATE TABLE Delivery

     (

     ID char(2)PRIMARY KEY,

     Category VarChar (5),

     DelSize Number (5,3)

     ):

     CREATE TABLE FlowerInfo

     (

     ID Char(3) CONSTRAINT

         Flowerinfo_ id _ pk PRIMARY KEY,

     ComName VarChar (25),

     LatName VarChar (30),

     Czone Number (3),

     Hzone Number (3),

     Delivered Number (3),

     SunNeed Char (3),

     PRIMARY KEY (ID)

     ):

     地区(ID,最高温度,最低温度)

     发货(ID,发货类型,发货规格)

     花的信息(ID,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)

    写出语句,将(ID=1,Category=pot,DelSize=1.5)的数据插入DELIVERY表中。

  9. 指出加工图2子图中加工2.3能检查出哪些不合格交费凭证。

  10. 指出在哪些图中遗漏了哪些数据流,回答时请用如下形式之一:

    XX图中遗漏了XX加工(或文件)流向XX加工(或文件)的XX数据流。

    XX加工XX遗漏了输入(或输出)数据流XX。

  11. 阅读以下说明和流程图,回答问题1至问题3,将答案写在对应栏内。

    【说明】

     下面给出的是某高级公寓管理系统的一套分层数据流图。其功能描述如下所述。

     (1)系统随时根据住户送来的入住单更新住户基本信息文件。

     (2)每月初系统根据物业管理委员会提供的月附加费(清洁费、保安费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。住户交费时,系统输入交费凭证,核对后输出数据给住户。

     (3)系统定期向物业管理委员会提供住房分配表和交费情况表。

     (4)住户因分户或换房,在更新账户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分尸或换房前的房租。

     假定题中提供的顶层图是正确的,请回答下列问题。

    指出哪张图中的哪些文件可不必画出。