PowerBuilder实验.docx
《PowerBuilder实验.docx》由会员分享,可在线阅读,更多相关《PowerBuilder实验.docx(50页珍藏版)》请在冰豆网上搜索。
PowerBuilder实验
实验一:
PowerBuilder集成环境
一.实验目的
1.掌握PowerBuilder的启动与退出
2.熟悉PowerBuilder集成环境,包括菜单,工具条以及帮助
3.熟悉PowerBuilder的类库管理,并创建一个简单应用
4.熟悉窗口与菜单设计画板,添加设计和使用窗口与菜单
二.实验内容
1.PowerBuilde的启动与退出
2.熟悉PowerBuilde集成环境
3.创建一个简单的应用。
三.实验条件
1.提供一台WINDOWSXP操作系统的计算机
2.提供PowerBuilder9.0设计环境
四.实验步骤
1.启动与退出
在安装完后,可以通过WINDOWS开始菜单找出Sybase程序组中的PowerBuilder9.0启动PowerBuilder.
启动后即出现如图所示的主窗口,可以选择菜单File/Exit退出并关闭PowerBuilder.
2.熟悉PowerBuilder集成环境,包括菜单、工具以及帮助
画板是PowerBuilder提供的专项设计工具,PowerBuilder为窗口菜单数据窗口用户对象函数结构数据库数据管道以及应用提供画板。
如WINDOWS画板是用来设计应用程序窗口界面。
画板也是有多个子窗口组成,如WINDOWS画板有Layout外观子窗口,Properties属性子窗口,Script脚本子窗口,Declare申明变量子窗口,这些子窗口可以在菜单View中选取打开。
3.创建一个简单应用
选择File/New出现一个新建对话框
(1)创建一个工作区Workspace,输入工作区的名称Myspace,在Systemtree中出现建好的工作区。
(2)新建一个应用,打开Target/Application,输入应用的名称Test,选择类库文件保存的路径,Test.pbl就是该应用的类库文件,以后设计类就存放在此文件,注意保存路径。
(3)在Systemtree中展开工作区Myspace,可看到一个应用Test,再展开可看到类库文件Test.pbl,再展开可看到一个应用类Test。
应用类是一个应用的入口,应用类无外观,只有属性和脚本窗口,可在Open事件中编制应用开始的脚本。
由此可以看出一个工作区可以包含多个应用系统,一个应用系统可保存在多个类库文件中,一个类库文件可存放多个类。
4.创建窗口
打开File/New/PBObject/Window,在窗口外观中放置各种控件,保存窗口取名为w_test.熟悉窗口对象与各种控件对象的属性和事件。
5.创建菜单
打开File/New/PBObject/Menu,填置菜单项,保存窗口取名为m_test,熟悉菜单对象的属性和事件。
例如插入File菜单栏,File菜单栏中插入Exit菜单项,在Exit的Clicked事件中加入脚本Close(parentwindow),用于关闭窗口。
6.运行应用
在应用类Test的Open事件中加入脚本open(w_test),打开测试窗口。
在窗口w_test的Menuname属性中填入m_test(实验指导书上m_menu错误),将菜单放入此窗口,运行此应用程序,即可看到下面的界面,按File/Exit可退出界面。
实验二:
PowerBuilder窗口设计
一.实验目的
1.掌握窗口设计、控件编程
2.掌握程序设计基本语法
3.熟悉面向对象程序设计的基本思想和方法
4.熟悉的程序调试
二.实验内容
1.设计一个小型计算器
设计如图所示的小型计算器,要求能实现多位数的加、减、乘、除运算,要考虑小数、负数的问题。
2.程序调试面板
可在程序脚本的任何位置右击鼠标,选InsertBreakpoint设置程序端点,选择Run/Debug进入程序调试面板,选Debug/Start开始调试程序,程序运行到端点处,会暂停运行。
在调试面板中可以观察内存中各种变量以及对象的属性值,必要时可以修改。
三.实验原理、方法和手段
小型计算器设计思路:
将计算器的当前状态划分为:
0开始状态1接收到第一个数据
2接收到第一个数据的小数点3接收到运算符
4接收到第二个数据5接收到第二个数据的小数点
6全部状态接收到”=”后回到0状态
设置窗口级实例变量数据1、数据2、运算符、状态,在每个按钮的Clicked事件中编制代码,根据当前状态做出相应的处理以及状态变换。
四.实验过程
界面设计完成后:
双击按钮“1”,在弹出的编辑界面中添加如下代码(23456789按钮的代码与1相同):
choosecaseis_zt
case'0'
is_zt='1'
st_1.text=this.text
case'1'
is_zt='1'
st_1.text=st_1.text+this.text
case'2'
is_zt='2'
st_1.text=st_1.text+this.text
case'3'
is_zt='4'
st_1.text=this.text
case'4'
is_zt='4'
st_1.text=st_1.text+this.text
case'5'
is_zt='5'
st_1.text=st_1.text+this.text
case'6'
is_zt='1'
st_1.text=this.text
endchoose
双击按钮“+”,在弹出的编辑界面中添加如下代码(加减乘除代码相同):
choosecaseis_zt
case'0'
case'1'
is_zt='3'
is_arg1=st_1.text
is_option=this.text
case'2'
is_zt='3'
is_arg1=st_1.text
is_option=this.text
case'3'
is_option=this.text
case'4'
is_zt='3'
is_arg2=st_1.text
is_arg1=wf_js()
is_option=this.text
case'5'
is_zt='3'
is_arg2=st_1.text
is_arg1=wf_js()
is_option=this.text
case'6'
is_zt='3'
is_arg1=st_1.text
is_option=this.text
endchoose
双击按钮“=”,在弹出的编辑界面中添加如下代码:
choosecaseis_zt
case'0'
case'1'
case'2'
case'3'
case'4'
is_zt='6'
is_arg2=st_1.text
is_arg1=wf_js()
st_1.text=is_arg1
case'5'
is_zt='6'
is_arg2=st_1.text
is_arg1=wf_js()
st_1.text=is_arg1
case'6'
endchoose
这里我们用到一个函数:
wf_js(),这个函数是自己定义的,方法如下:
在如图弹出的下拉框中选择(functions),然后选择(newfunction)
会弹出函数定义界面:
其中设置Access为public;ReturnType为string;FunctionName为wf_js即可。
设置完成后在其下面的编辑界面中添加如下代码:
decln_arg1,ln_arg2,ln_ret
stringls_ret
ln_arg1=dec(is_arg1)
ln_arg2=dec(is_arg2)
choosecaseis_option
case"+"
ln_ret=ln_arg1+ln_arg2
case"-"
ln_ret=ln_arg1-ln_arg2
case"*"
ln_ret=ln_arg1*ln_arg2
case"/"
ln_ret=ln_arg1/ln_arg2
endchoose
ls_ret=string(ln_ret)
returnls_ret
下面需要声明以下程序中用到的变量:
在图中的下拉框中选择(Declare),
在弹出的编辑界面中添加如下代码:
stringis_arg1,is_arg2,is_option,is_zt='0'即可
按钮“0”后面所加代码如下:
choosecaseis_zt
case'0'
is_zt='0'
case'1'
is_zt='1'
st_1.text=st_1.text+this.text
case'2'
is_zt='2'
st_1.text=st_1.text+this.text
case'3'
is_zt='4'
st_1.text=this.text
case'4'
is_zt='4'
st_1.text=st_1.text+this.text
case'5'
is_zt='5'
st_1.text=st_1.text+this.text
case'6'
is_zt='0'
st_1.text='0'
endchoose
按钮“.”后面所加代码如下:
choosecaseis_zt
case'0'
is_zt='2'
st_1.text='0.'
case'1'
is_zt='2'
st_1.text=st_1.text+'.'
case'2'
is_zt='2'
case'3'
is_zt='5'
st_1.text='0.'
case'4'
is_zt='5'
st_1.text=st_1.text+'.'
case'5'
is_zt='5'
case'6'
is_zt='1'
st_1.text='0.'
endchoose
清零键:
is_zt='0'
st_1.text='0'
窗口设计完成,代码添加完后右击jisuanqi图标(如下图)点击Run/Preview运行,计算器即可进行多位数的加、减、乘、除运算。
运行所得的计算器:
实验三:
数据定义
一.实验目的
1.掌握SQL模式定义语句,定义相关的表
2.掌握SQL数据查询语句
3.掌握SQL聚集函数的使用
4.掌握SQL插入、修改、删除语句的使用
二.实验内容
工程项目采购数据库
设有供应商S、零件P、工程项目J、以及三者间联系(某工程使用某供应商提供的某零件个数)的关系模式SPJ。
三.实验步骤:
1、打开PowerBuilder,点击界面上的数据库图标
,进入PowerBuilder的数据库界面。
2、在其树型结构中点击ODBODBC,可以看到在其子目录下有系统自带的两个数据库EASDemoDBV9和EASDemoDBV9IM。
如图2所示:
我们可以使用系统自带的数据库,在其中创建自己的表,一般情况下我们希望建立自己的数据库。
3、为了能够在表中显示汉语我们双击Utilities/CreateASADatabaseUser得到上图对话框其中ID为DBA,Password为sql,输入DatabaseName:
工程项目采购数据库
4、数据库的连接
新数据库建立好之后要进行连接,右键点击“工程项目采购数据库”,在弹出的菜单中选择“connect”,点击后会在“工程项目采购数据库”上出现一个绿色的对号,这时数据库就成功连接了。
5、定义表
在PowerBuilder里有两种创建新表的方法,
第一种方法与创建数据库类似,在test数据库的下拉目录中有table这一项,可以右击table选择“NewTable”来创建新表。
由于本次实验我们不用这种方法,在此就不累述了。
第二种方法是本次实验要采用的,即用SQL的语言定义的功能来定义新表。
在图中,在界面的下部有几个标签,选择“ISQLSession”,这时就可以在如图所示的编辑界面中编写SQL语句了。
这里我以定义S(供应商)表为例写了几行代码。
代码写好之后单击界面上方的
图标就可以运行了。
如果运行时没有任何提示说明表创建成功,右键点击“table”选择“Refresh”,就可以在table目录下看到我们创建的新表了(如果还是看不到就右击“工程项目采购数据库”将connect改为disconnect再改为connect,然后再点击Table即可看到所创建的表)。
如果有错误,系统会给出出错信息,修改后再运行。
P、J、SPJ表的创建与此相同。
在创建SPJ表时注意外键的建立。
对于刚创建的s表,大家可以选择s-->Columns-->snoEditColumns来查看s表的定义,如图6,也可以修改(有的属性是不允许修改的)。
创建S表的代码,将其贴在“ISQLSession”窗口中:
createtables
(snochar(6)primarykey,
snamechar(6)notnull,
statussmallint,
citychar(6));
P、J、SPJ表的创建代码如下:
createtablep
(pnochar(6)primarykey,
pnamechar(8)notnull,
colorchar(4),
weightsmallint);
createtablej
(jnochar(6)primarykey,
jnamevarchar(12),
citychar(6)
);
createtablespj
(snochar(6),
pnochar(6),
jnochar(6),
qtyint,
primarykey(sno,pno,jno),
foreignkey(sno)referencess(sno),
foreignkey(pno)referencesp(pno),
foreignkey(jno)referencesj(jno));
6、向表中插入数据
以上创建的表只是说明了表的定义,表中没有数据,向表中插入数据可用如下语句(以s表为例):
Insertintosvalues(‘s1’,’精益’,’20’,’天津’);
插入数据。
运行方法与刚才所讲定义表的运行方法一样。
运行无误说明此数据已经插入s表,大家可以用我们所学的查询语句来查看表里的数据,
例如用以下语句:
select*
froms;就可以查看s表中的所有数据。
查询结果会在“result”里出现。
或者右击要查看的表,EditData/Grid…在Results窗口中也可看到表里的数据。
需要注意的是:
(1)以上SQL语句中所有的标点符号都要在英文输入方式下输入,汉语方式下会报错,所以在写入汉字后要记得切换输入法;
(2)在这个实验中SPJ表中的属性参考了其它表中的属性,我们用外关键字来表示这种关系。
例如我们在定义s表时,将sno定义为char
(2),那么在SPJ表的定义中,sno也要定义为char
(2),两者类型一定要相同。
下面是P、J、SPJ表数据插入的代码:
p表
insertintopvalues('p1','螺母','红',12)
insertintopvalues('p2','螺钉','绿',17)
insertintopvalues('p3','螺丝刀','兰',14)
insertintopvalues('p4','螺丝刀','红',14)
insertintopvalues('p5','凸轮','兰',40)
insertintopvalues('p6','齿轮','红',30);
j表
insertintojvalues('j1','汽车厂','北京')
insertintojvalues('j2','弹簧厂','长春')
insertintojvalues('j3','造船厂','天津')
insertintojvalues('j4','机车厂','天津')
insertintojvalues('j5','无线电厂','唐山')
insertintojvalues('j6','半导体厂','常州')
insertintojvalues('j7','仪器厂','南京');
spj表
insertintospjvalues('s1','p1','j1',200)
insertintospjvalues('s1','p1','j3',100)
insertintospjvalues('s1','p1','j4',700)
insertintospjvalues('s1','p2','j2',100)
insertintospjvalues('s2','p3','j1',400)
insertintospjvalues('s2','p3','j2',200)
insertintospjvalues('s2','p3','j4',500)
insertintospjvalues('s2','p3','j5',400)
insertintospjvalues('s2','p5','j1',400)
insertintospjvalues('s2','p5','j2',100)
insertintospjvalues('s3','p1','j1',200)
insertintospjvalues('s3','p3','j1',200)
insertintospjvalues('s4','p5','j1',100)
insertintospjvalues('s4','p6','j3',300)
insertintospjvalues('s4','p6','j4',200)
insertintospjvalues('s5','p2','j4',100)
insertintospjvalues('s5','p3','j1',200)
insertintospjvalues('s5','p6','j2',200)
insertintospjvalues('s5','p6','j4',500);
实验四:
数据操纵
一.实验目的
1.掌握SQL数据查询语句
2.掌握SQL聚集函数的使用
3.掌握SQL插入、修改、删除语句的使用
二.实验内容
工程项目采购数据库,在实验三的基础上完成下列操作:
(1)求向工程J1提供零件的供应商的编号
(2)求向工程J1提供零件P1的供应商的编号
(3)求向工程J1提供红色零件的供应商的编号
(4)求没有使用天津供应商提供的红色零件的工程号
(5)统计各个供应商供应得零件总数
(6)求至少使用了3种以上零件的工程号
(7)把所有红色零件的颜色改为粉红色
(8)将向工程J1提供零件P1的供应商S1改为S2提供
(9)删除全部红色零件以及相应得供应-使用记录
下面是以上各操作所要使用的语句:
(1)selectsno
fromspj
wherejno='j1';
(2)selectsno
fromspj
wherejno='j1'andpno='p1';
(3)selectsno
fromspj
wherepnoin
(selectpno
fromp
wherep.pno=spj.pno
andcolor='红'
andjno='j1');
(4)selectjno
fromj
wherejnonotin
(selectjno
fromspj,s,p
wheres.sno=spj.sno
andp.pno=spj.pno
ands.city='天津'
andp.color='红');
(5)selectsno,sum(qty)
fromspj
groupbysno;
(6)selectjno
fromspj
groupbyjno
havingcount(pno)>3;
(7)updatep
setcolor='粉红'
wherecolor='红';
(8)updatespj
setsno='s2'
wheresno='s1'andjno='j1'andpno='p1';
(9)delete
fromspj
wherepnoin
(selectpno
fromp
wherecolor='红');
以(1)为例将代码粘贴进ISQLSession1窗口,点击
运行,在Select1Results窗口中可以看到查询结果:
实验五:
PB数据窗口设计
实验步骤
1、进入PB界面。
点击“开始”---“程序”---“sybase”---“powerbuilder9.0”---“powerbuilder9.0”进入,或者直接从桌面快捷方式进入。
2、新建工作区间。
点击“file”---“new”弹出new对话框,选择“workplace”标签,选择“workplace”图标,点击OK,然后会出现“newworkplace”保存对话框,选择保存路径,填写文件名保存即可。
这时只是创建了一个工作区间,即工作环境,还没有添加应用。
3、新建应用。
点击“file”---“new”弹出new对话框,选择“target”标签,选择“Application”图标,点击OK,会弹出如图1.1所示的界面。
在“applicationname”下填写要创建的应用的名字,下面的“library”,“target”两项只要点击后面的浏览按钮就可以自动出应用文件保存路径,不需填写。
点击“finish”,新的应用就创建完成了。
这时在工作区间的下拉目录就可以看到新应用了。
4、创建对话框。
有了应用之后就可以创建对话框或者菜单了。
这里我们只介绍对话框的创建。
同前面一样,点击file/new/PBobject/Window图标,下面的“target”项不需改动,点击OK。
这时会弹出新建的对话框界面,有了对话框之后就可以在对话框上添加数据窗口和其它控件了,点击菜单项中的insert/control/datawindow添加数据窗口,将鼠标在对话框中点击一下,数据窗口就添加上了。
选中添加的数据窗口,可以在右边的属性栏里看到其属性。
接着可以用同样的方法添加其它控件。
例如insert/contro