PB习题参考答案Word格式.docx
《PB习题参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《PB习题参考答案Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
使用SybaseCentral组件也可以进行数据库的创建。
4.表的主要作用是什么?
主键和外键及索引的作用分别是什么?
在数据库中,表是一个非常重要的组成部分,通过对数据库表的结构设置及数据的录入才能为数据库的各种操作与管理提供可能。
数据库的表用行和列来表示数据,行就是记录,列就是字段。
主关键字(主键):
用来惟一标识一条记录的一个或多个列的组合。
在数据库中用主关键字来确保数据库的实体完整性。
外关键字(外键):
是用于与另一个表进行联系的列。
这里要求外关键字必须是另一个表的主关键字,用来确保数据库的参照完整性。
索引:
主要目的是为了提高数据库数据的查询速度。
主要用于查询。
5.简述视图的作用及特点。
视图是一个虚拟的表,实际上并不是一个真正的表。
它并没有自己的数据,在数据库中也不存在它的物理结构,只存在它的定义。
它的数据是动态的,来自于其他的一个表或多个表。
引用视图时,数据库会对相应的表进行查询,把符合要求的数据也就是查询结果提取出来,放入到视图中。
所以在视图中所看到的只是我们向用户提供的有访问权限的一部分数据或字段,真正的表的结构或内容,用户是看不到的。
6.如何确保数据库系统的安全性?
在设计时主要是通过对不同用户赋于不同的访问数据库对象的权限,使不同用户在操作数据库时执行某种操作或访问某个对象的权力不同,确保数据库系统的安全。
第3章
1.填空题
(1)PowerScript语言中用做续行的符号是&
。
(2)要想查看PowerBuilder都支持哪些系统对象以及它们之间的继承关系,可以使用Browser窗口。
(3)要查看系统都有哪些枚举类型以及对应的枚举值,可以打开Browser窗口的Enumerated选项卡。
(4)PowerBuilder的变量作用域共有4种:
Local(局部变量)、Instance(实例变量)、Global(全局变量)和Shared(共享变量),在使用它的事件处理程序或函数中说明其作用域仅限于说明它的程序段的变量是Local变量。
根据变量的命名规则,ii_abc应该是整数类型的实例变量,ls_abc应该是字符串类型的局部变量。
(5)结构体分为全局结构体和对象结构体。
全局结构体能够在应用程序的任何地方使用,声明全局结构体变量的作用域是全局的。
对象级结构体只能在对象以及继承于该对象的派生对象中使用,对象级结构在结构定义画板中定义。
一般将在整个应用程序中都要使用的结构体应定义为全局结构体,将只在某个对象中使用的结构体定义为对象级结构体。
(6)表达式中如果有一个变量的值为NULL,那么表达式的值为NULL。
(7)函数使用时除了要了解函数的功能以外,还要了解函数参数的个数、数据类型、意义以及函数的返回值类型。
2.简答题
(1)This、Parent、ParentWindow、Super这些代词指的是什么?
在代码中用这些代词有什么好处?
代词This代表窗口、用户对象、菜单、应用对象或控件对象本身,即代表正在为之编写事件处理程序的对象。
Parent可以在窗口的控件、用户定制对象和菜单的程序中使用,当在窗口的控件当中使用Parent的时候,Parent指向包容该控件的窗口。
ParentWindow代表运行时菜单所在的窗口,该代词只能在菜单的事件处理程序中使用。
当调用父对象的函数时,也可以使用Super来指代父对象。
使用代词主要是为了增加代码的通用性,不受所指代的控件或对象的名称发生变化的影响。
(2)下面的标识符哪些是合法的,哪些是不合法的?
-page,this,lock_open,4in,@mail,per%,test2,_odd,abc#fd
this,lock_open,per%,test2,_odd,abc#fd合法
(3)注释有什么作用?
PowerScirpt中的注释方法有几种?
它们之间的区别是什么?
注释用于书写说明,增加可读性,PowerScript有两种类型的注释:
行注释和块注释。
单行注释用“//”,从双斜杠开始到行尾均为注释。
块注释以“/*”开始,到“*/”结束。
在“/*……*/”中的所有的代码均为注释。
(4)给变量赋空值(NULL)的途径有几条,如何实现?
怎样测试变量或表达式的值是否为空值?
为变量赋空值有两种方法:
从数据库中读取空值;
用SetNull()函数给变量赋值。
IsNull()函数测试变量或表达式的值是否为空值。
(5)PowerBuilder有哪几种数据类型?
标准数据类型、枚举类型、系统对象数据类型3大类,标准数据类型包括数值型、字符型、日期型、布尔型等一些基本的数据类型。
(6)PowerBuilder有哪几种运算符?
运算符有4种:
算术运算符、关系运算符、逻辑运算符和连接运算符。
(7)中止程序的运行,中止函数的运行,中止循环语句的运行分别用什么语句?
halt中止程序的运行,return中止函数的运行,goto中止循环语句的运行。
(8)比较PowerScirpt中的条件语句和Choose语句、For循环语句和Do循环语句的功能和使用场合。
条件语句:
分支;
Choose语句:
多分支;
For循环语句:
计数循环;
Do循环语句:
条件循环
(9)下面的语句执行后变量i的值是多少,试说明理由。
integeri
i=32767
i=i+1
-1,因为integer是补码形式存储。
(10)在定义函数参数的传递方式时,PassBy列表框有哪3种供选值?
分别表示什么含义?
参数传递方式有3种。
Value:
值传递,即将实际参数的值传递给函数参数。
Reference:
地址传递,即把实际参数的地址传递给函数。
此时,如果函数修改了形式参数的值,那么实际参数的值也就被修改了。
Readonly:
地址传递(只读),即把实际参数的地址传递给函数。
不过不允许修改参数的值。
(11)在定义对象函数时可以指定哪三种函数的访问类型?
访问属性access有3个选择。
Public:
该函数在整个程序中都可访问。
Private:
该函数只能在当前对象和程序中使用,但不能在该对象的后代的程序中使用。
Protected:
该函数只能在当前对象的程序以及该对象的后代的程序中使用。
(12)如何使用游标操作从数据库中读取多行数据?
游标可以看作是由一个查询结果集组成的一个临时只读文件,在程序中可以从这个临时文件中读取一条记录给程序的变量进行处理。
使用游标的基本步骤如下。
(1)用DECLARE语句声明游标。
(2)用OPEN语句打开游标。
(3)使用FETCH语句提取数据。
(4)用CLOSE语句关闭游标。
3.编程题
(1)设计一个全局函数返回指定班级(编号)的学生人数。
解答:
打开全局函数画板,函数返回值类型选integer,函数名取stnum,参数传递方式为value,类型为string,名称为bh。
函数体如下:
intli_sc
selectrsinto:
li_scfrombanjiwherebjbh=:
bh;
ifsqlca.sqlcode=0then
returnli_sc
else
return-1
endif
函数的运行条件是已经连接上数据库xscj。
(2)设计一个应用,能求任意输入两个数的最大公约数。
(提示:
在一个窗口上设置两个单行文本编辑框用来输入整数,一个命令按钮求最大公约数并输出,也可以定义一个求最大公约数的窗口函数)
创建一个工作空间test2,再创建一个应用对象app,创建窗口对象w_main,窗口上添加三个单行文本编辑框sle_1、sle_2和sle_3,其TEXT属性都设为“”,再添一个命令按钮cb_1,其TEXT属性设为“求最大公约数”,cb_1的clicked事件脚本为:
intli_a,li_b,li_c,li_t
li_a=integer(sle_1.text)
li_b=integer(sle_2.text)
ifli_a<
li_bthen
li_t=li_a
li_a=li_b
li_b=li_t
li_t=mod(li_a,li_b)
dowhileli_t<
>
li_t=mod(li_a,li_b)
loop
li_c=li_b;
sle_3.text=string(li_c)
sle_1、sle_2中输入两个整数,单击cb_1则sle_3中显示最大公约数。
(3)求Fibonacci数列的前20项之和。
Fibonacci数列是指前两项分别为0和1,从第3项起,每一项都是前两项之和。
例:
0,1,1,2,3,5,8,13,21,…。
程序代码如下
intli_f1,li_f2,li_f3,li_i,li_s
li_f1=0
li_f2=1
li_s=li_f1+li_f2
forli_i=3to20
li_f3=li_f1+li_f2
li_s+=li_f3
li_f1=li_f2
li_f2=li_f3
endfor
(4)判断一个数m是否是素数。
intm,i
fori=2tom/2
ifmod(m,i)=0thenexit
ifi<
m/2then
messagebox("
结果"
string(m)+"
不是素数"
)
是素数"
(5)用穷举法找出1~100之间的质数并显示出来,分别使用WHILE、DO-WHILE、FOR循环语句。
使用FOR循环语句的程序代码如下,使用WHILE、DO-WHILE语句程序略。
strings="
"
form=1to100
ifmod(m,i)=0thenexit
ifi>
=m/2thens=s+string(m)+"
"
messagebox("
100以内的素数"
s)
第4章
1.简述应用以及应用工作空间、目标、库文件、应用对象之间的关系。
在PowerBuilder中,应用也称为应用程序,一个应用可完成一组相关的功能,一个应用包括WorkSpace(工作空间)、Target(目标)、PowerBuilderLibrary(应用库)和PBObjects(PB对象)。
一个工作空间中可以包含多个目标,创建应用对象的同时创建目标。
应用库是PowerBuilder提供的一种用于存储PowerBuilder对象的文件。
一个完整的应用,既可以存放在一个应用库文件中,也可以存放在多个应用库文件中,即在一个目标中可以包含多个应用库。
组成应用的对象有应用对象、窗口对象、菜单对象等,其中必包含一个应用对象。
2.简述创建应用工作空间、目标、库文件、应用对象的方法。
选择【File】丨【New】命令,或单击工具条的【New】图标,弹出新建对象对话框。
(1)选择【Workspace】标签页,双击【Workspace】图标,或选择【Workspace】图标后单击【OK】按钮便可创建工作空间。
(2)在【Target】标签页中,双击【Application】图标,或选择【Application】图标单击【OK】按钮,弹出新建应用对象对话框,输入新建应用对象的名称,输入新建应用对象所属库的名称,输入新建应用对象所属目标的名称,便创建了目标、应用库文件和应用对象。
3.说明应用的存储层次结构。
在PowerBuilder中,应用以一定的层次结构存储,共有4个层次,即WorkSpace(工作空间)、Target(目标)、PowerBuilderLibrary(应用库)、PBObjects(PB对象)。
4.简述设置应用对象属性的方法,并详细说明为应用程序指定图标、为应用程序指定字体的具体步骤。
在应用对象画板的右侧有【Properties】窗口,包含:
【General】标签页和【ToolBar】标签页,其中在【General】标签页中,存在一个应用对象附加属性窗口。
【Properties】窗口用于设置应用对象的属性。
在应用对象附加属性窗口中选择【Icon】标签,输入【IconName】的文件名,或单击【Browse】按钮选择【IconName】的文件名,即可设置应用程序的图标。
应用对象附加属性窗口中的【TextFont】
(文本字体)、【ColumnFont】
(列字体)、【HeaderFont】
(标题字体)、【LabelFont】
(标签字体)4个标签页,用于设置整个应用程序中包含的对象的字体。
5.应用对象的事件有几个?
分别说明它们的作用。
应用对象共有6个事件,分别为:
Open事件、Close事件、SystemError事件、Idle事件、ConnectionBegin事件、ConnectionEnd事件。
Open事件在打开应用时触发,其主要功能是实现与数据库的连接、初始化有关参数并且打开应用的主窗口。
Close事件在关闭应用时触发,常用于断开与数据库的连接。
SystemError事件在应用程序出现系统错误时触发,如果没有为此事件编写,PowerBuilder显示带有PowerBuilder错误号和消息文本的消息框;
如果有事件处理程序,则PowerBuilder执行该程序。
当函数Idle()被调用,并且达到该函数指定的空闲时间时触发Idle事件。
ConnectionBegin事件、ConnectionEnd事件分别在连接数据库前和结束时触发。
6.脚本编辑器应用工具条中有哪些功能图标,其作用是什么?
【SelectA11】
(全选)按钮:
可以选中所有编辑文本内容。
【Comment】
(注释)按钮:
将选中的代码行或光标所在代码行变为注释。
【Uncomment】
(取消注释)按钮:
将选中的行或光标所在行的注释取消。
【Find】
(查找)按钮:
查找文本,可以打开一个对话框,在对话框中输入所要查找的内容。
【FindNext】
(查找下一处)按钮:
该按钮,可以进行查找下一个符合要求的文本。
【Replace】
(替换)按钮:
单击此按钮,可以进行文本的替换操作。
【Compile】
(编译)按钮:
对脚本进行编译操作。
【PasteFunction】
(粘贴函数)按钮:
将函数粘贴到光标处。
【PasteSQL】
(粘贴SQL)语句按钮:
将SQL语句粘贴到光标处。
【PasteStatement】
(粘贴程序控制语句)按钮:
将PowerBuilder语句粘贴到光标处。
【PasteGlobal】
(粘贴全局变量)按钮:
可以将应用程序中的全局变量粘贴到光标处。
【PasteShared】
(粘贴共享变量)按钮:
可以将应用程序中的共享变量粘贴到光标处。
【PasteInstance】
(粘贴实例变量)按钮:
可以将应用程序中的实例变量粘贴到光标处。
【PasteWindow】
(粘贴窗口)按钮:
用于粘贴窗口对象名称。
【PasteObject】
(粘贴对象)按钮:
用于粘贴控件对象名称。
【PasteArgument】
(粘贴参数)按钮:
用于粘贴参数。
7.说明粘贴函数,粘贴语句,粘贴窗口名称,粘贴对象名称,给语句添加注释、取消注释的操作过程。
单击脚本编辑工具条中相应的图标,然后选择相应的内容。
8.说明导入文本文件的操作步骤。
选择【Edit】丨【PasteSpecial】丨【FromFile】命令,弹出选择文本文件对话框。
将文件类型改为“AllFiles(*.*)”,然后找到所需要的文件并选中,最后,单击【打开】按钮,可将该文本文件的内容导入到脚本画板中。
9.说明运行应用程序的方法。
要运行程序时,单击主工具条上的【Run】图标即可。
第5章
1.窗口画板中有哪些区域,各自有什么用途?
怎样打开和关闭这些区域?
窗口画板是由布局视窗、窗口属性区、函数列表区、脚本编辑区、结构列表区、结构定义区、控件列表区、事件列表区以及非可视对象列表区等区域组成的。
其中,布局视窗和窗口属性区是最常用的,一般要保持打开状态,其余区域可以根据需要打开或关闭。
区域的打开可以在【View】菜单项下进行选择。
关闭某个区域只要单击区域右上脚的“X”标志即可,关闭整个窗口画板可以使用工具栏上的“Close”图标。
2.窗口有哪几种类型?
各自有什么特点?
一般应用于哪些场合?
窗口一共有6种类型:
Main(主窗口):
可以独立存在、不依赖于任何其他窗口的窗口。
Child(子窗口):
和它的父窗口相关联,因为它一定要放在父窗口的区域内。
Popup(弹出式窗口):
通常由另一个窗口打开,可以打开它的窗口称为它的父窗口。
它可以覆盖父窗口,也可以移出父窗口,但不能被父窗口覆盖。
它总是显示在父窗口的前面。
Response(响应式窗口):
由另一个窗口打开,要求用户必须首先对这个窗口的消息做出响应,然后才能继续执行应用程序。
MDI(多文档界面):
MDI窗口是一个最先打开的窗口,它充当其他窗口的容器。
在MDI中可以打开的多个窗口叫做工作表,工作表只能在框架内活动。
MDIHelp(具有MicroHelp的多文档界面):
类似于MDI窗口,但MDIHelp窗口在底部多了一个状态栏,用于向用户显示当前应用程序的一些简短信息和帮助信息。
3.怎样在窗口事件中编写脚本?
在窗口画板的脚本编辑区域,选择窗口或控件对象,再选择事件,然后就可以输入该事件的脚本代码。
4.什么是函数的静态调用和动态调用?
这两种调用方法各有什么优缺点?
怎样实现函数的动态调用?
函数的使用有静态调用和动态调用两种方式,所谓静态调用,就是系统在编译代码时就对函数进行彻底的编译,对返回值以及入口参数进行检查和匹配,出现问题立即报告错误。
而动态调用的函数在程序执行的时候才会去查找和调用相应的函数,而在程序编译时可以没有该函数。
其优点是程序的开发具有极大的灵活性,缺点是降低了应用程序执行的速度,缺少调试编译中的错误检查功能。
使用关键字DYNAMIC。
5.怎样向窗口中添加控件?
在工具栏中选择控件,在窗口中单击,便添加了该控件。
也可以用菜单【Insert】|【Control】命令添加控件。
6.如何进行窗口中控件的布局调整?
拖动控件改变位置,拖动控件边延改变大小,也可以通过控件有关属性改变其位置和大小;
选择多个控件,单击工具栏中的布局调整图标可实现对齐和均匀分布。
7.窗口控件有哪些通用属性?
Enabled属性和Visible属性有什么特点?
不选中时外观上有什么不同?
主要的通用属性:
名称Name、显示文本Text、可视性Visible、可用性Enable。
Enable:
是否可以用鼠标和键盘操作此控件。
不选中时,灰色。
Visible:
是否显示此控件。
不选中时,窗口上不显示。
8.什么是窗口控件的快捷键?
怎样定义窗口控件的快捷键?
为了快速访问一个控件,可以给它定义加速键,这样用户只要按下【Alt+加速键】就能把焦点切换到相应的控件上。
为【CommandButton】、【CheckBox】、【RadioButton】控件定义加速键。
在控件【Text】属性文本框中在作为加速键的字母前面加上&
符号即可,控件以下划线的方式显示加速键。
为【SingleLineEdit】、【MultiLineEdit】、【ListBox】、【DropDownListBox】控件定义加速键进入控件的【Properties】视窗,在【General】标签页上的【Accelerator】文本框中输入加速键字母。
9.怎样选择不同的选项页?
在选项卡控件的什么位置单击时,显示的是选项页的属性?
在什么位置单击时,显示的是选项卡的属性?
当需要生成新的选项页时,应当在什么位置单击鼠标右键?
单击某个选项页的标题,则选择该选项页。
选择选项页的标题右击,选择【Properties】菜单项,显示选项卡的属性;
选择选项页区域右击,选择【Properties】菜单项,显示的将是选项页的属性。
在选项卡的标题部分右击,在弹出的菜单中选择【InsertTabPage】命令即可生成新的选项页。
10.制作修改窗口w_xiugai,要求界面如图5.29所示,实现相应的功能。
把此修改窗口作为祖先窗口,通过继承得到班级修改窗口w_banji_xiugai和基本修改窗口w_jiben_xiugai。
参见第10章10.6.2部分。
第6章
1.简述利用“向导”生成菜单的步骤。
在系统树窗口中打开工作空间,选择【File】|【New】菜单,或单击工具条中上的【New】图标