一起答

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

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

    [说明]

     以下Visual Basic代码实现了对位图(BMP)进行旋转显示。以下程序共实现了对BMP位图图形进行 180°旋转、90°旋转(顺时针)、90°旋转(逆时针)、水平翻转、垂直翻转共5项处理。显示界面如图12-8所示。仔细阅读[代码7-1]至[代码7-3],完成(n)代码,并写在对应栏内。

      

     [代码7-1]

     Begin VB. Form. Form1

       AutoRedraw =-1  'True

       Caption="图像的施转"

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

       Begin VB. CommandButton Command7

         Caption="退出"

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

       End

       Begin VB.CommandButton Command6

         Caption = "复位"

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

       End

       Begin VB.CommandButton Command5

        Caption= "垂直翻转"

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

       End

       Begin VB.CommandButton Command4

        Caption="水平翻转"

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

       End

       Begin VB.CommandButton Command3

        Caption= "90°(逆时针)"

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

       End

       Begin VB.CommandButton Command2

        Caption= "90°(顺时针)"

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

       End

       Begin VB.PictureBox Picture2

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

       End

       Begin VB.CommandButton Command1

         Caption="180°"

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

       End

       Begin VB.PictureBox Picture 1

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

       End

     End

     [代码7-2]

     Private Declare Function BitBlt Lib "gdi32" ( ByVal hDestDC As Long,

        ByVal x As Long,

        ByVal y As Long,

        ByVal n Width As Long,

        ByVal nHeight As Long,

        ByVal hSrcDC As Long,

        ByVal xSrc As Long,

        ByVal ySrc As Long,

        ByVal dwRop As Long ) As Long

     Const srcopy = &HCC0020

        Dim h As Integer

        Dim w As Integer

     Private Sub Form_Load ( )

        Picture2.Picture = LoadPicture ( App.Path & "\a01.bmp")  '导入图片'

        h = Picture 1 .Height

        w = Picture 1.Width

     End Sub

     [代码7-3]

     Private Sub Commandl_Click ( )  旋转180°

      Picture2.Picture = LoadPicture ( "" )

      For j = 0 To h Step 1

        For i = 0 To w Step 1

         (1) 

        Next i

      Next j

     End Sub

      Private Sub Command2_Click ( )  '顺时针施转90°'

      Picture2.Picture = LoadPicture ( "" )

       For i-h To 0 Step-1

        For j - 0 To w Step 1

          (2) 

        Next j

      Next i

     End Sub

     Private Sub Command3_Click ( )  '逆时针旋转90°'

      Picture2.Picture = LoadPicture ("")

      For j =w To 0 Step -1

        For i = 0 To h Step 1

          (3) 

        Next i

      Next j

     End Sub

     Private

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

    [说明]

    以下代码实现了对象引用作为函数参数,仔细阅读以下代码,分析运行结果,填入(n)处。

    [代码]

     #include<iostream.h>

     class Sample

     {

     int x,y;

     public:

     Sample() {x=y=0; }

     Sample (int i, int j ) {x=i; y=j; }

     void copy ( Sample &s ).,

     void setxy ( int i, int j ) {x=i; y=j; }

     void print ( {cout<<"x="<<x<<end1 ; cout <<"y="<<y<<end1;

     };

     void Sample: copy ( Sample &s )

     {

     X=S.X;

     y=s.y;

     }

     void func ( Sample s1, Sample &s2 )

     {

     s1.setxy ( 10,20 );

     s2.setxy ( 30,40 );

     }

     void main ( )

     {

     Sample p ( 1,2 ) ,q;

     q.copy ( p );

     time ( p,q );

     p.print ( );

     q.print ( );

     }

     运行结果

       (1) 

       (2) 

       (3) 

       (4)

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

    [说明]

     以下程序为类类型的变量应用实例,通过异常处理检验了类CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。

     [JAVA代码]

     //定义自己的异常类

     class CCircleException extends Exception

     {

     }

     // 定义类 CCircle

     class CCircle

     {

       private double radius;

       public void setRadius ( double r ) (1) 

       {

         if ( r<0 ) {

              (2) 

        }

        else

              (3) 

       }

       Public void show ( ) {

         System. out. println ( "area="+3.14*radius*radius );

       }

     }

     public class ciusample

     {

       public static void main ( String args[] )

       {

         CCircle cir=new CCircle( );

         (4) {

           cir. setRadius ( -2.0 )

         }

         (5) 

       {

           System. out. println ( e+" throwed" ) ;

        }

         cir. show( ) ;

       }

     }

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

     【说明】

     假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:

     m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2]

     其中a[1]保存该长整数的位数,a[0]保存该长整数的符号:0表示正数,1表示负数。

     运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减的情况。注:不考虑溢出情况,即数组足够大。

     【函数】

     int cmp(int *LA, int *LB);

     /*比较长整数LA与LB的绝对值大小*/

      /*若LA绝对值较大返回正值,LA较小返回负值,相等则返回0*/

     int ADD(int *LA, int*LB, int *LC)

     /*计算长整数LA与LB的和,结果存储于LC中*/

     /*注意:正数与负数的和相当于正数与负数绝对值的差*/

     /*数据有误返回0,正常返回1*/

     {

        if(LA==NULL || LB==NULL || LC==NULL)return 0;

        int *pA, *pB,i,N,carry,flag;

        flag=LA[0]+LB[0];

        switch(flag){/*根据参与运算的两个数的符号进行不同的操作*/

        case 0:

        case 2:

           LC[0]=LA[0];/*LA与LB同号,结果符号与LA(LB)相同*/

           pA=LA;

           pB=LB;

            (1) ;

           break;

        case 1:/*LA与LB异号*/

           /*比较两者的绝对值大小,结果符号与较大者相同*/

           flag= (2) ;

           if(flag>0){/*LA较大*/

              LC[0]=LA[0];

              pA=LA;

              pB=LB;

           }

           else if(flag<0){/*LB较大*/

               LC[0]=LB[0];

               pA=LB;

               pB=LA;

           }

           else{/*LA与LB相等*/

              LC[0]=0;

              LC[1]=0;

              return 1;

           }

           flag=-1;

           break;

        default:

           return 0;

           break;

        }/*switch*/

        /*绝对值相加减*/

        /*注意对于减法pA指向较大数,pB指向较小数,不可能出现不够减的情况*/

         (3) ;

        N=LA[1]>LB[1]?LA[1]:LB[1];

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

          if(i>=pA[1]){/*LA计算完毕*/

            carry+=flag *pB[i+2];

         }

         else if(i>=pB[1]){/*LB计算完毕*/

            carry +=pA[i+2];

         }

         else{

            carry +=pA[i+2]+flag *pB[i+2];

         }

         LC[i+2]=Carry%10;

         carry /=10;

         if( (4) ){/*需要借位,针对减法*/

              LC[i+2]+=10;

              carry--;

         }

       }/*for*/

       if( (5) ){/*最高进位,针对加法*/

            LC[i+2]=carry;

        &n

  5. 同一种期刊分不同的期,所以有多本同一种期刊。“传阅名单”只需每一种期刊一份,还是应该每本期刊一份?为什么?

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

     【说明】

     公司IT部门决定开发一个计算机管理系统以记录期刊的传阅情况。

     期刊在公司内部传阅,员工可以要求加入传阅队列。图书室登记公司收到的期刊,交给名单中的第一名员工。员工应在3个工作日内完成阅读,员工阅读完毕后通知系统,系统提醒下一位阅读者取书,下一个员工必须确认已收到期刊。当传阅名单中“下一位”员工出差在外时将无法进行传阅,此时将期刊传给再下一位,而将该员工做标记,再次传递此书时优先考虑该员工。最后一位员工阅读完毕后,将期刊交还图书室以便共用。系统能在员工忘记传递期刊时发出提醒信息。系统详细记录期刊传阅情况,当员工阅读完后通知系统,系统记录该员工的员工号及日期,并在备注栏注明是传出;同样,当员工收到期刊后给系统收书确认,系统记录该员工的员工号及日期,并在备注栏注明是收到。

     公司的员工都有一个唯一的员工号。公司订阅了多种期刊,为每一本期刊(有唯一期刊流水号)产生一份传阅名单,并详细记录传阅情况。员工的出差情况存储在系统主机中。

     该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,图9-4是该系统的类图的一部分,图9-5描述了成功传递期刊的序列图。

    根据题意,给出类“传阅记录”的主要属性。

  7. 根据题意,将图9-5中的(1)~(5)处补充完整。

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

     【说明】

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

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

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

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

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

     CREATE TABLE Zone(ID CHAR(2) PRIMARY KEY,

               LowerTemp NUMERIC(3),

               UpperTemp NUMERIC(3));

     CREATE TABLE Delivery(ID CHAR (2) PRIMARY KEY,

               Category CHAR(5),

               DelSize NUMERIC(5,3));

     CREATE TABLE FlowerInfo(ID CHAR (3),

               ComName CHAR(25),

               LatName CHAR(30),

               Czone NUMERIC(3),

               Hzone NUMERIC(3),

               Delivered NUMERIC(3),

               SunNeed CHAR(3),

               PRIMARY KEY(ID));

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

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

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

    写出SQL语句,将记录(ID,Category==pot,DelSize=1.5)插入Delivery表中。

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

  10. 写出如下SQL实现语句。

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

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

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

  11. 将下述文件正确填充在数据流图(b)、(c)处:读者文件、借书文件。

  12. 根据题意,补充数据字典中(d)、(e)、(f)处的空缺。

  13. 阅读下列说明和数据流图,回答问题1至问题3。

     【说明】

     图书管理系统旨在用计算机对图书进行管理,包括图书的购入、借阅、归还及注销。管理人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便掌握图书的流通情况。

     系统要实现以下4方面的功能:购入新书、读者借书、读者还书及图书注销。

     (1)购入新书:需要为该书编制图书卡片,包括分类目录号、图书流水号(要保证每本书都有唯一的流水号,即使同类图书也是如此)、书名、作者、内容摘要、价格和购书日期等信息,写入图书目录文件中。

     (2)读者借书:填写借书单,包括读者号、欲借图书分类目录号,系统首先检查该读者号是否有效,若无效,则拒绝借书,否则进一步检查该读者所借图书是否超过最大限制数,若已达到最大借阅数,则拒绝借书,否则读者可以借出该书,登记图书分类目录号、图书流水号、读者号和借阅日期等,写回到借书文件中去。

     (3)读者还书:根据图书流水号,从借书文件中读出和该图书相关的借阅记录,表明还书日期,再写回借书文件中;如果图书逾期未还,则处以相应罚款。

     (4)图书注销:将一些过时或无保留价值的图书注销,从图书文件中删除相关记录。

     (5)流通查询:管理员可以对图书流通情况进行查询,包括某位读者、某种图书和全部图书,给出流通情况统计表。

     以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。如图9-1所示是顶层数据流图,如图9-2所示是第0层数据流图,如图9-3所示是第1层数据流图。

    【数据字典】

     (1)数据流条目

     图书管理要求=[入库单|借书单|还书单|注销单]

     入库单=分类目录号+数量+书名+作者+内容摘要+价格+购书日期

     借书单=读者号+(d)+借阅日期

     还书单=(e)+还书日期

     (2)文件说明

     文件名:目录文件

     组成:{分类目录号+书名+作者+内容摘要+价格+入库日期+总数+库存数+ (f) }

    根据题意,指出数据流图中缺失的数据流(a)的名称,并指出该数据流的起点。