软件开发工具与环境(修改)

doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
《信息系统开发工具》实验指导
实验一: 实验一:熟悉 PowerBuilder 9.0 的开发环境 实验目的:掌握 PowerBuilder 9.0 的开发环境的基本操作 实验目的: 实验要求: 实验要求:上机熟悉 pb 的环境和完成一个 简单的例子 实验内容: 实验内容:一个简单的应用程序 实验步骤: 实验步骤: 1) 启动 PowerBuilder 9.0 应用程序 步骤: 开始菜单→程序→Sybase→PowerBuilder 9.0→PowerBuilder 9.0。 启动后如图 1-1 所示:
2) 一个具体的例子 首先在 D 盘创建文件夹,名称为: “应用程序” 。 1) 新建一个工作空间对象 单击“file”菜单,选择“New” ,
1
《信息系统开发工具》实验指导
然后在出现的“New Workspace”对话框中选择保存路径和确定工作空间名称。如下图所 示:
单击保存。 2) 新建一个应用程序对象 单击“file”菜单,选择“New” ,在“New”对话框中选择“Target” 。如下图所示。
2
《信息系统开发工具》实验指导
单击 “OK” 在出现的 , “Specify New Application and Library” 对话框中的 “application name” 中输入应用程序名(如,A_main,注意:应用程序的名称不能与工作区的名称同名) ,在 下面的“Library”采用默认的即可。如
3
《信息系统开发工具》实验指导
单击“Finish” ,结果如下:
3) 新建窗体 单击“file”菜单,选择“New” ,在“New”对话框中选择“PB Object” 。如下图所 示。
单击“OK” ,结果如下:
4
《信息系统开发工具》实验指导
4) 应用程序界面设计 (1)选择控件,方法单击工具栏上的 按钮,如下图所示:
然后选择某一控件,最后在窗体上单击,控件便画在窗体上了。如图所示:
5
《信息系统开发工具》实验指导
在窗体上画出下图所示的控件。
(2)编写代码 双击确定按钮,在确定按钮的 click 事件下编写如下代码:如下图所示:
同理,双击重置按钮,编写如下代码 Sle_1.text=”” Sle_2.text=””
6
《信息系统开发工具》实验指导
Sle_3.text=”” 在退出按钮下编写,如下代码: Close(parent) (3)保存窗体 5)编写应用程序对象的代码 双击系统树中的 ,为应用程序编写代码,如下图所示:最后保存
6)运行 单击“ ”运行,就可以看到你的制作成果。 试验二: 试验二:Power Script 编程语言 实验目的: 实验目的:掌握 PowerBuilder 9.0 的 Power Script 编程语言 实验要求: 实验要求:上机熟悉 Power Script 编程语言并完成一个简单的应用程序 实验内容: 实验内容:一个简单的

应用程序 试验步骤: 试验步骤: 1.建立一个工作空间,命名为“jedxxzh_workspace” ,并保存在“d:\金额大小写转换”目 录下,然后建立一个应用程序对象,命名为“jedxxzh_app” ,保存在“d:\金额大小写转 换”目录下。 2.新建一个窗口,命名为“jedxxzh_win” ,在窗口上添加 3 个静态文本框,2 个单行编辑 框和两个命令按钮、一个组合框。如下图所示:
7
《信息系统开发工具》实验指导
3.编写代码 (1) 为应用程序对象添加代码 在应用程序的 Open 事件中输入如下代码来打开“jedxxzh_ win”窗口。 Open(jedxxzh_ win) (2) 在【转换】按钮的 clicked 事件下编写如下代码: a="叁" Long i,j,k,n String a,aa,cc,cm[10],b[10] Case "4" Cc="" a="肆" Cm[1]="分" Case "5" a="伍" Cm[2]="角" Cm[3]="元" Case "6" a="六" Cm[4]="拾" Cm[5]="佰" Case "7" a="柒" Cm[6]="千" Cm[7]="万" Case "8" Cm[8]="拾" a=" 捌" Cm[9]="佰" Case "9" Cm[10]="仟" a="玖" For i=1 to 10 Case "0" b[i]="*" a="零" Next case else k=round(real(sle_1.text),2)*100 a="*" aa=string(k) end choose k=len(aa) b[k+(-n)+1]=a For n=k to 1 step -1 next a=mid(aa,n,1) cc="" choose case a for i=10 to 1 step -1 case "1" if b[i]="*" then a="壹" continue Case "2" end if cc=cc+b[i]+cm[i] A="贰" Case "3" next sle_2.text=cc
8
《信息系统开发工具》实验指导
(3) 在【退出】按钮的 clicked 事件下编写如下代码: Close(parent) 思考:怎样把大写金额转换为小写金额 试验三: 试验三:使用 SQL 语句 实验目的: 实验目的:掌握在 PowerBuilder 9.0 的开发环境中使用简单的 SQL 语句 实验要求: 实验要求:上机实现各种 SQL 语句 实验内容: 实验内容:创建数据库和编程实现一个简单的登录程序 内容 试验步骤: 试验步骤: 1 创建数据库 鼠标单击工具栏上的 (Database) 按钮, 再单击 ODB ODBC, 单击 Utilities, 双击 Create
ASA Database。如下图所示:
接着在弹出的窗口中输入如下图的信息并命名为 data(注意:在 Use Transaction Log 选项 前去掉“√” 。
9
《信息系统开发工具》实验指导
单击 ok,进入下面的窗口
10
《信息系统开发工具》实验指导
在上图的 table 项,单击右键,弹出属性窗口。选择 New Table,并单击,在 columns 窗口 中输入如数据。
输入完毕后,保存,出现以下对话框,并输入以下内容。
单击 ok,数据库表就创建完毕。 2.为数据库表创建主键 在 object layout 画板中,选中 sp 表,单击右键,弹出属性窗口,如下图所示。
11
《信息系统开发工具》实验指导
单击 Primary Key,进入如下窗口。
在 General 选项卡中,在商品编号前打√,然后关闭保存。出现如下窗口,说明主键创建 成功


同理,我们在创建一个数据库表,名称为“tb_user” ,并设置主键。如下图所示
12
《信息系统开发工具》实验指导
4.在 Interactive SQL 中使用 SQL 语句 (1) 启动 Interactive SQL 开始菜单→程序→Sybase→Adaptive Server Anywhere→Interactive SQL,出现如下窗口, 并在 User 中输入 dba;Password 中输入 sql
单击,OK。进入 Interactive SQL,在 sp 数据库表中插入一条记录,如下图所示:
13
《信息系统开发工具》实验指导
(2)数据的添加(insert into 语句) 请同学们自己为 sp 数据表插入如下 5 条记录(注意,输入的内容要与数据表的结构 一致) 商品编号 商品名称 产地 供应商名称 进价 数量 总 金 额 0 0 0 0 0
2007091299 笔 记 m120 2007091383 硬盘 2007091471 优盘 2007100101 手机 2007110101 内存
本 中 国 福 Dell 亚洲公司 建 中 国 广 start 公司 东 中国 兴隆工作室 中国 中国
12000.0 5 340.0 200.0 10 10 20 10
海量手机批发公 2450.0 司 前进电脑公司 250.0
为 tb_user 添加如下记录 用户名 张前 王小小 (3)运用 select 语句查询 供应商名称中含有“公司”的记录 数量在 10 以上的商品 总金额大于 3000 元的商品 (4)用 update 语句修改总金额字段的数据(总金额=数量*进价)
14
密码 1234554321 123001
用户级别 1 0
《信息系统开发工具》实验指导
(5)删除供应商名称为“兴隆工作室”的记录 5.在 pb 中使用 sql 语句 (1)建立一个工作空间,命名为“sql_workspace” ,并保存在“d:\sql”目录下,然后建立 一个应用程序对象,命名为“sql_app” ,保存在“d:\sql”目录下。 (2)新建一个窗口,命名为“w_login” ,其效果如下图所示:
(3)另外,再新建一个窗口,命名为“w_insert_sp” ,如下图所示:
(4)编写代码 ①在窗体“w_login”中,双击窗体空白,在窗体的 open 事件下编写代码: string xm DECLARE zgxm CURSOR FOR SELECT "tb_user"."用户名" FROM "tb_user" ; open zgxm; fetch zgxm into :xm;
15
《信息系统开发工具》实验指导
do while sqlca.sqlcode=0 ddlb_1.insertitem(xm, 1) fetch zgxm into :xm; loop close zgxm; ②在窗体“w_login”中,双击确定按钮,在确定按钮的 click 事件下编写代码: string yhm,psd if ddlb_1.text="" then messagebox("信息提示","请选择一个用户名") return end if if sle_1.text="" then messagebox("信息提示","请输入密码") return end if yhm=trim(ddlb_1.text) select 密码 into:psd from tb_user where 用户名=:yhm; if psd=trim(sle_1.text) then open(w_insert_sp) else messagebox("信息提示","密码不正确") return end if ③在窗体“w_login”中,双击取消按钮,在取消按钮的 click 事件下编写代码: Close(parent) ④请同学们完成窗

体“w_insert_sp”的编程。功能:实现数据的添加。 (5)为应用程序编写代码 ①粘贴数据库连接代码 鼠标单击工具栏上的 (Database)按钮,在当前连接的数据库描述文件上单击鼠标右
键,选择 Properties,如下图所示:
在弹出的对话框中选择“preview”并单击“copy”按钮。然后该代码添加到应用程序的 open 事件中(方法:单击左边的 ,在弹出的 open 事件对话框中按“ctrl+v” )最后
16
《信息系统开发工具》实验指导
输入“connect ;open(main)等语句” ,然后保存。如下图:
思考:在 pb 中怎样实现对数据表的查询 试验四: 试验四:在 PowerBuilder 中操纵数据库 实验目的: 实验目的:在 PowerBuilder 9.0 的开发环境中,掌握数据库的基本操作 实验要求: 实验要求:上机实现数据库的各种操作 实验内容: 实验内容:数据库操作和一个简单的应用程序 实验步骤: 验步骤: 一.创建数据库及数据库表 1.用 PowerBuilder 9.0 自带的 ASA 数据库管理系统创建“data_base”数据库,该数据库 包含以下数据库表: Sp 表:字段名称和类型、宽度如下:
KH 表:字段名称和类型、宽度如下:
DD 表:字段名称和类型、宽度如下:
17
《信息系统开发工具》实验指导
2.为各个表创建主键和外键(外键的创建见教材 p197) ,结果如下图所示:
3.为各个表添加记录(请同学自己添加) 二.一个简单的应用程序 (1)创建一个工作工作空间,命名为:workspace_searh,保存在并保存在“d:\search”目 录下,然后建立一个应用程序对象,命名为“app_searh” ,保存在“d:\search”目录下 (2)创建窗体,命名为:w_searh,窗体上的控件如下所示:
18
《信息系统开发工具》实验指导
(3)为窗体编写代码 鼠标双击“查询”按钮,在“查询”按钮的 click 事件下编写如下代码: string mc int n,n_msg string c_mc,c_bh,c_tel,c_fax,c_yb,c_add mc=trim(sle_1.text) if len(mc)=0 then messagebox("信息提示","系统提示:请输入查询条件") sle_1.setfocus()//sle_1 对象获得焦点 return end if mc="%"+mc+"%" declare s_mc cursor for select 客户编号,客户名称,电话,传真,邮编,地址 from kh where 客户名称 like :mc; open s_mc; n=0 do while true fetch s_mc into :c_bh,:c_mc,:c_tel,:c_fax,:c_yb,:c_add; if sqlca.sqlcode=100 then
19
《信息系统开发工具》实验指导
if n=0 then messagebox("信息提示","系统提示:没有符合条件的记录!!!") else messagebox("信息提示","系统提示:符合条件的记录显示完毕!!!") end if exit end if sle_2.text=c_bh sle_3.text=c_mc sle_4.text=c_tel sle_5.text=c_fax sle_6.text=c_yb sle_7.text=c_add n=n+1 messagebox("信息提示","系统提示:这是第"+string(n

)+"条符合条件的记录!!!") n_msg=messagebox("信息提示","继续显示其他符合条件的记录吗?",question!,yesno!,1) if n_msg=2 then exit end if loop close s_mc; sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_1.setfocus()
20
《信息系统开发工具》实验指导
试验五: 试验五:建立应用对象 实验目的: 实验目的:掌握应用对象的设置和编程 实验要求: 实验要求:上机操作应用对象的设置和编程 实验内容: 实验内容:数据库的连接和应用对象的编程 实验步骤: 实验步骤: 一.连接已有数据库 1.创建数据源(连接实验 4 所做的数据库) 启动 pb 应用程序,鼠标单击工具栏上的 (Database)按钮,再单击 ODB ODBC,
单击 Utilities,双击 “ODBC Administrator”选项,在出现的对话框中点击“添加”按钮,选 择“Adeptive Server Anywhere 8.0”,点击“完成”按钮,出现输入数据源参数对话框。在 “ODBC”标签中,输入数据源名称 Data source name,一般采用所创建的数据库名称。在 Login 标签中, User ID:之后输入“dba”,在 Password:之后输入“sql”。如图 5-1 所示: 在 Database 标签中, Database file 之后输入数据库文件所在的位置及文件名。 最后单 击确定按钮,完成数据源的创建。如图 5-2 所示:
图 5-1
21
《信息系统开发工具》实验指导
图 5-2 2.创建数据库描述性文件 在数据库画板中,选择“ODB ODBC”,点击右键选择“New Profile”,出现定义数据源 配置文件对话框,在 Profile Name 之后输入名称,一般与数据库名称一致;在 Data Source 之后选择刚刚建好数据源的名称;在 User ID 之后输入“dba”;在 Password 之后输入“sql”, 单击【OK】按钮即可。此时在 ODBC 项下就会出现与数据库同名的配置文件的名称。
22
《信息系统开发工具》实验指导
3.连接数据库 选择数据库配置文件名称双击之,就会连接上数据库。 4.查看连接代码并复制代码到剪切板 方法同实验 4 二.应用程序的 open 事件的代码 新建一个名为“workspace_5”的工作空间,再建立一个名为“app_5”的应用程序, 按实验 4 的方法把上面数据库连接的代码粘贴在代码区并编写如下代码。
思考:请用 sql server 2000 创建数据库,然后在 pb 中连接该数据库。 三.一个简单的应用程序 利用 Idle 事件实现应用程序的自动关闭,如当应用程序在长时间内未进行任何操作,则 系统自动关闭。 实现方法:
23
《信息系统开发工具》实验指导
①在应用对象的 open 事件中添加如下代码: idle(180)//将定时器设为 180 秒 ②在应用对象的 idle 事件中添加代码: messagebox(“警告”,”程序

即将关闭”,stopsign!) beep(1) halt ③在应用对象的 close 事件中添加代码: idle(0) 实验六:数据窗口 实验六: 实验目的: 实验目的:掌握数据窗口的使用 实验要求: 实验要求:上机操作数据库窗口 实验内容:数据窗口的创建和使用 实验内容 实验步骤: 实验步骤: 一、创建工作空间和应用程序 建立一个工作空间,命名为“sworkspace_data” ,并保存在“d:\data”目录下,然后建 ,保存在“d:\data”目录下。 立一个应用程序对象,命名为“app_data” 二、连接实验 4 所创建的数据库(方法同实验 5) 三、创建各种类型的数据库窗口 1.创建 freeform 数据窗口 步骤:鼠标选择或单击【File】→【New】→DataWindow→freeform→OK→Quick Select →Next→选择 kh 表→Add All→OK →Next→Finish, 结果如下图所示。 最后保存数据窗口, : 名称为“d_kh_freefrom”
24
《信息系统开发工具》实验指导
2.创建 Gird 数据窗口 步骤:鼠标选择或单击【File】→【New】→DataWindow→Gird→OK→Quick Select→Next →选择 kh 表→Add All→OK →Next→Finish,结果如下图所示。最后保存数据窗口,名称 为“d_sp_Gird” :
3.创建 Gird-SQL Select 数据窗口 步骤:鼠标选择或单击【File】→【New】→DataWindow→Gird→OK→SQL Select→ Next→选择 kh 表, 表, 表→Open→OK →选取如下图的字段→单击工具栏上的 return sp dd : Next→Finish,结果如下图所示。最后保存数据窗口,名称为“d_sp_kh_dd_Gird”
25
《信息系统开发工具》实验指导
4.请同学们创建其他类型的数据窗口 四、数据窗口的使用 1.简单的数据窗口使用 (1)创建窗体 【File】→【New】→PB Object→Window (2)为窗体添加数据窗口控件 (3)为数据窗口绑定数据窗口 在数据窗口的 DataObject 属性中选择“d_sp_Gird”数据窗口,如下图所示:
(4)添加其他控件(效果如下图所示)
26
《信息系统开发工具》实验指导
(5)编写代码 ①双击窗体空白处,在窗体的 open 事件中编写如下代码 dw_1.settransobject( sqlca) dw_1.retrieve( ) ②双击增加记录按钮,编写如下代码: long i i=dw_1.insertrow(0) dw_1.scrolltorow( i) ③双击删除记录按钮,编写如下代码 dw_1.deleterow(0) ④双击保存按钮,编写如下代码 if dw_1.update( )=1 then messagebox("提示","数据保存成功!") commit; else rollback; messagebox("提示","数据保存失败!") end if ⑤双击打印按钮,编写如下代码 Dw_1.print() ⑥双击查询按钮,编写如下代码 string sql1,mc mc=trim(sle_1.text) sql1="select * from sp where 商品名称 like '%"+mc+"%'"
27
//模糊查询
《信息系统开发工具》实验指导
dw_1.setsqlselect(sql1) dw_1.retrieve( ) ⑦双击全部

按钮,编写如下代码 string sql1 sql1="select * from sp" dw_1.setsqlselect(sql1) dw_1.retrieve( ) (6)为应用程序编写代码(自己完成) (7)运行 2.复杂的数据窗口设计 (1)窗口设计如下,窗体的名称为:w_kh_dd:
其中,数据窗口控件 dw_1 连接的数据窗口是“d_kh_freeform” ,数据窗口控件 dw_2 连接 的数据窗口是“d_dd_gird” 。 (2)代码设计 ①窗体的 open 事件 string khbh,sql dw_1.settransobject( sqlca) dw_2.settransobject( sqlca) dw_2.retrieve( ) khbh=dw_2.getitemstring( 1, "客户编号") sql="select * from dd where 客户编号='"+khbh+"'" dw_1.setsqlselect( sql) dw_1.retrieve( ) ②按钮“第一条”的 click 事件 string khbh,sql dw_2.scrolltorow( 1)
28
《信息系统开发工具》实验指导
khbh=dw_2.getitemstring( 1, "客户编号") sql="select * from dd where 客户编号='"+khbh+"'" dw_1.setsqlselect( sql) dw_1.retrieve( ) ③按钮“下一条”的 click 事件 string khbh,sql dw_2.scrollnextrow( ) khbh=dw_2.getitemstring( dw_2.getrow(), "客户编号") sql="select * from dd where 客户编号='"+khbh+"'" dw_1.setsqlselect( sql) dw_1.retrieve( ) ④其他代码请同学们自己完成 试验七: 试验七:用户界面设计 实验目的: 实验目的:掌握各种控件的使用 实验要求: 实验要求:上机各种控件的使用熟悉 实验内容: 实验内容:熟悉各种控件的使用 实验步骤: 实验步骤: 一.熟悉各种控件的属性设置(参见教材) 二.实例一:数据窗口中通过按键进行列之间的跳转和添加新行 步骤: 1.创建一个标准可视用户对象(standard Visual User Object)uo_d_enter (1)单击 File 菜单中的 New 命令,打开 new 对话框,选择 PB Object 标签及 Standard Visual 图标,再单击 OK 按纽,打开 select standard visual type 对话框。 (2)在 type 列表框中,选中 datawindow,再单击 OK,进入用户对象画板工作区。 (3)单击 Insert 菜单的 Event 命令,为用户对象新建一个自定义事件 ue_enter(如下图所示) 注 意 : 为 确 保 在 数 据 窗 口 中 能 够 捕 捉 到 enter 键 , ID ( Event ID ) 一 定 要 选 中 pbm_dwnprocessenter。
29
《信息系统开发工具》实验指导
(4)为用户对象编写如下代码
(5)保存用户自定义对象 (6)使用自定义的数据窗口控件 ①新建一数据窗口,鼠标选择或单击【File】→【New】→DataWindow→Gird→OK→Quick Select→Next→选择 kh 表→Add All→OK →Next→Finish。最后保存数据窗口,名称为 “d_sp_Gird” : ②新建一个窗口 ③使用自定义数据窗口控件,如下图所示:
30
《信息系统开发工具》实验指导
④为增加按钮编写如下代码 Dw_1.insertrow(0) ⑤为窗体的 open 事件编写如下代码 dw_1.settransobject( sqlca) dw_1.retrieve( ) 最后,运行 三.实例

二 设计条形码扫描程序 (1)建立一个工作空间,命名为“sworkspace_txm” ,并保存在“d:\txm”目录下,然后建立 ,保存在“d:\txm”目录下。 一个应用程序对象,命名为“app_txm” (2)用 sql server 2000 创建数据库和数据库表,数据库的名称为:txm,该数据库包含一个 数据库表,表名为 tmb,其结构如下图所示:
(3)在 pb 连接该数据库(方法见实验 3) (4)创建窗体 新建一个窗口,命名为“w_txm” ,在窗体上添加一个条形码控件,1 个列表框,一个 单行编辑框,两个命令按钮。 添家条形码控件的方法是: 选择主菜单 insert →control→OLE 选项, 弹出[insert Object] 窗口,如下图所示:单击“Register New” ,弹出“browse”对话框,寻找 MSBCODE9.OCX 文件,该文件在 Office 目录下,也可以通过文件搜索来查找。找到 MSBCODE9.OCX 文件 后,单击 OK,条形码控件便添加到 control Type 列表框中。
31
《信息系统开发工具》实验指导
在 Control Type 列表框中选择刚刚加入的条形码控件[Microsoft BarCode Control9.0],单 击 ok,鼠标变成“十”字形,然后再窗口的空白处单击,条形码控件便添加到窗体上, 继续添加其他控件,最后,窗体如下所示:
(4)编写代码 ①应用对象的 open 事件的代码,通过粘贴得到,结果如下 SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=data_8;UID=sa;PWD='" connect; //open(w_txm) ②窗体的 open 事件 string txm_value
32
《信息系统开发工具》实验指导
declare cur cursor for select 商品条形码 from tb_txm; open cur; fetch cur into:txm_value; do while sqlca.sqlcode=0 lb_1.additem(txm_value) txm_value="" fetch cur into:txm_value; loop close cur; sle_1.setfocus() ③lb_1 的 selectionchanged 事件 string is_item is_item=lb_1.selecteditem() sle_1.text=is_item ole_1.object.value=trim(sle_1.text) ④sle_1 的 modified 事件 ole_1.object.value=trim(sle_1.text) sle_1.selecttext(1,len(sle_1.text)) ⑤保存条形码的 clicked 事件 string txm_value,js_value long row_count,xrow_count txm_value=trim(sle_1.text) select count(*) into :row_count from tb_txm; select 商品条形码 into:js_value from tb_txm where 商品条形码=:txm_value; if js_value="" then if txm_value<>"" then insert into tb_txm(商品条形码) values(:txm_value); select count(*) into :xrow_count from tb_txm; if xrow_count>row_count then messagebox("信息提示","数据保存成功") else messagebox("信息提示","数据保存失败") end if end if else messagebox("信息提示","库中已有该条形码") end if ⑥打印条形码的 clicked 事件 Long job Job=printopen() Ole_1.border=false Ole_1.print(job,500,10000) Printclose(job) Ole_1.border=true
33
《信息系统开发工具》实验指导
运行效果:
试验八: 试验八:菜单设计 实验目

的:掌握菜单的设计和编程 实验目的 实验要求: 实验要求:上机实现菜单的设计和编程 实验内容: 实验内容:创建菜单和编程 实验步骤: 实验步骤: 一.创建菜单 (1)连接实验 4 所创建的数据库(方法见实验 5) (2)创建工作空间和应用程序 建立一个工作空间,命名为“sworkspace_menu” ,并保存在“d:\menu”目录下,然后 ,保存在“d:\menu”目录下。 建立一个应用程序对象,命名为“app_menu” (3)为应用程序编写代码(方法见实验 5) (4)创建菜单(方法见教材 p165-172) 创建如下菜单:
34
《信息系统开发工具》实验指导
二.创建 MDI 窗口 (1)新建窗体 【File】→【New】→PB Object→Window (2)设置窗体属性,如下图所示:
三.创建窗体 1.创建登录窗口 在实验 4 创建的“data_base”数据库中添加如实验 3 的 tb_user 表,并设计登录窗体,
35
《信息系统开发工具》实验指导
窗体名称为 w_login 2.创建商品信息维护窗体(名称为 w_sp)如下图所示,代码见实验 5:
3.创建如下查询窗口(命名为 w_dd_search)
4.其他窗口请同学们自己创建 五.为菜单编写代码 双击菜单项的“订单查询” ,并编写如下代码: opensheet(w_dd_search,w_main,2,original!) 双击菜单项的“客商品信息维护” ,并编写如下代码: opensheet(w_sp,w_main,2,original!) 六.编写应用程序的代码
36
《信息系统开发工具》实验指导
思路:系统先运行登录窗口,登录窗口中密码与用户名一直,系统打开 MDI 窗口。最 后运行效果如下:
试验九:一个具体的实例 试验九: 简单的财务收支管理系统 一.系统功能 本系统用于单位或个人财务收支管理,主要功能包括:收支类型定义,基本收支数据录入 或修改,按年度和收支类型制作报表,统计图。 二.基本步骤 1.创建数据库 用 sql server 创建数据库,数据库名称为: “xxcw”,该数据库包含如下数据库表: (1)收支信息表,表名为:jtsz;表的结构如下所示:
样本数据
37
《信息系统开发工具》实验指导
(2)收支类型表,表名为:dic_szlx;表的结构如下所示:
样本数据:
(3)用户信息表,表名为:t_user 表;的结构如下所示:
样本数据:
三.创建工作空间和应用对象 (1)创建工作空间应用对象 建立一个工作空间,命名为“workspace_jxc” ,并保存在“d:\jxc”目录下,然后建立 一个应用程序对象,命名为“app_jxc” ,保存在“d:\jxc”目录下 四.创建菜单 创建如下菜单,菜单名为:m_main
38
《信息系统开发工具》实验指导
五.创建 mdi 窗口 建立一个窗体,名称为:w_mai

n,设置该窗口的类型为:mdihelp!,标题为: “小型 财务收支管理系统” ,MenuName 设置为:m_main 六.为应用程序编写代码 (1)用记事本,编写如下代码,并保存为“connect.ini”,保存在 d:\jxc 目录下 [Database] DBMS=MSSQL SQL Server 2000 Database=xxcw UserId=sa DatabasePassword= LogId=sa LogPassword= ServerName=XXJ_LS SQLCA.DBParm = Lock= Prompt=0 (2)在应用对象的 open 事件中编写如下代码: string ls_inifile ="connect.ini" //进行数据库连接sqlca.DBMS = ProfileString ("connect.INI", "database", "dbms", "") sqlca.database = ProfileString ("connect.INI", "database", "database", "") sqlca.logid = ProfileString ("connect.INI","database", "logid", "") sqlca.logpass = ProfileString ("connect.INI", "database", "LogPassWord","") sqlca.servername=ProfileString("connect.INI","database", "servername", "") sqlca.dbparm = ProfileString ("connect.INI", "database", "dbparm", "") sqlca.autocommit=true; connect using sqlca; If sqlca.sqlcode<>0 then Messagebox("错误","不能连接到数据库!请检查数据库连接或者 ini 配置") else //OPEN(w_login) end if 七.创建登录窗口 w_login,效果如下所示:
39
《信息系统开发工具》实验指导
代码参见前面的实验 八.创建数据窗口 (1)创建数据窗口 d_szlx,效果如下图
该数据窗口的数据风格为:gird,数据源为:quick select。 (2)创建数据窗口 d_jbxx,效果图如下所示: 该数据窗口的数据风格为:gird,数据源为:quick select。 Szlx 的 edit 属性使用了下拉数据窗口 d_szlx,总结区分别添加了收入金额,支出金额的合 计。 颜色控制: 分别选中 srje,zcje,在属性的 Font 卡中,单击 Text Color 下拉列表右边的表达式生成器, 在打开的对话框中输入如下表达式: If(srje=0 rgb(128,128,128),rgb(200,0,200)) If(zcje=0 rgb(128,128,128),rgb(200,0,200)) 选中 szlx,用同样的方法输入如下表达式: If(left(zclx)=”s”, rgb(150,50,0),rgb(150,150,50))
40
《信息系统开发工具》实验指导
九.设计 w_d_in 窗口,用于收支管理
该窗口的代码 ① 窗体的 open 事件
41
《信息系统开发工具》实验指导
string s_lx int i dw_1.settransobject(sqlca) dw_1.retrieve() for i=year(today())-30 to year(today()) ddplb_1.insertitem(string(i),1) next declare s_sz cursor for select dic_szlx.收入类型 from dic_szlx; open s_sz; fetch s_sz into :s_lx; do while sqlca.sqlcode=0 ddplb_2.additem(s_lx) fetch s_sz into :s_lx; loop close s_sz; ② 窗体的 closequery 事件 int ianswer if dw_1.modifiedcount()<=0 then message.returnvalue=0 return end if ianswer=messagebox("窗口将被关闭","数据被修改了,保存吗?",& question!,yesnocancel!,1) if ianswer=3 then message.returnvalue=1 return elseif ianswer=1 then dw_1.update() end if message.returnvalue=0 ③ Dw_1 的 dberror 事件 choose case sqldbcode case -193 mes

sagebox(" 数据操作错误 ","主码有重复") case -195 messagebox(" 数据操作错误 "," 不该空的数据为空") case -198 messagebox(" 数据操作错误 ","要改变或删除的数据在其它库中被使用") case else messagebox(" 数据操作错误 ","错误信息:"+sqlerrtext+"~r~n"+& "代 码:"+string(sqldbcode)) end choose
42
《信息系统开发工具》实验指导
return 1 //返回码“1” 表示跳过系统错误信息提示 ④ 几个命令按钮的 clicked 事件 首行 dw_1.scrolltorow(1) dw_1.setfocus() 上行: dw_1.scrollpriorrow() dw_1.setfocus() 下行: dw_1.scrollnextrow() dw_1.setfocus() 末行: dw_1.scrolltorow(dw_1.rowcount()) dw_1.setfocus() 插入: long li_rowno,col_no string s1,s2,year,month,day,fen,miao,t,bh1,t1 dw_1.scrolltorow(dw_1.rowcount()) li_rowno=dw_1.insertrow(0) dw_1.scrolltorow(li_rowno) // year=string(year(today())) if month(today())<10 then month="0"+string(month(today())) else month=string(month(today())) end if if day(today())<10 then day="0"+string(day(today())) else day=string(day(today())) end if t=string(now()) fen=mid(t,1,2) miao=mid(t,4,2) bh1=year+month+day+fen+miao t1=string(today())+" "+string(now()) dw_1.setitem( dw_1.getrow(), 1, bh1) dw_1.setcolumn(2) dw_1.settext(t1) // for col_no=3 to 4 dw_1.setcolumn(col_no) dw_1.settext("0") next dw_1.setfocus()
43
《信息系统开发工具》实验指导
dw_1.setcolumn(3) sle_2.text=string(dw_1.rowcount()) sle_1.text=string(dw_1.getrow()) 删除: dw_1.deleterow(0) dw_1.setfocus() sle_2.text=string(dw_1.rowcount()) sle_1.text=string(dw_1.getrow()) 存储: if dw_1.update()>0 then commit using sqlca; else rollback using sqlca; end if 退出: close(parent) ⑤ ddplb_1 和 ddplb_2 的 selectionchanged 事件的代码: string jstj=" ",rq1 rq1=trim(ddplb_1.text)+"%" if len(trim(ddplb_1.text))>0 then jstj="pos(rq,'"+ddplb_1.text+"')>0" end if if len(trim(ddplb_2.text))>0 then if len(jstj)>0 then jstj=jstj+" and pos(szlx,'"+ddplb_2.text+"')>0" else jstj="pos(szlx,'"+ddplb_2.text+"')>0" end if end if dw_1.setfilter( jstj) dw_1.filter( ) sle_1.text=string(dw_1.rowcount()) sle_2.text=string(dw_1.getrow()) 十.设计收支类型窗口,名称为:w_szlx,效果如下:
44
《信息系统开发工具》实验指导
代码与上面的相同,请同学们自己补上。 十一、统计报表的设计 (1) 设计报表数据窗口 数据窗口名称为:d_tjb
(2) 设计窗口 窗口名为:w_tib
45
《信息系统开发工具》实验指导
代码:窗体的 open 事件: string s_lx int i dw_1.settransobject(sqlca) dw_1.retrieve() for i=year(today())-30 to year(today()) ddlb_1.insertitem(string(i),1) next ddlb_1 的 selectchanged 事件: string s,var s=trim(ddlb_1.text) var="left(#1,4)='"+s+"'" dw_1.setfilter( var) dw_1.filter( ) 十二、统计图数据窗口和统计图窗口的设计 数据窗口名为:d_tjt,它的 data 属性设置如下图右边所示:

46
《信息系统开发工具》实验指导
窗口名称:w_tjt
代码: Ddlb_1 的 selectionchanged 事件的代码 string var var=ddlb_1.text if var<>"" then var="left(bh,4)='"+ddlb_1.text+"'" dw_1.setfilter( var) dw_1.filter( ) else
47
《信息系统开发工具》实验指导
var="SELECT jtsz.szlx,jtsz.zcje,jtsz.srje,jtsz.bh FROM jtsz" dw_1.setsqlselect( var) dw_1.retrieve( ) end if 收入选项的 clicked 事件 string var Var="gr_1.values='sum(srje for graph)'" Dw_1.modify(var) Dw_1.setredraw(true) 支出选项的 clicked 事件 string var Var="gr_1.values='sum(zcje for graph)'" Dw_1.modify(var) Dw_1.setredraw(true) 窗体的 open 事件 string s_lx int i dw_1.settransobject(sqlca) dw_1.retrieve() for i=year(today())-30 to year(today()) ddlb_1.insertitem(string(i),1) next 十三、为菜单添加代码(自己完成)
48

相关文档
最新文档