erBuilder开发环境和应用程序能够操作数据库中的数据之前,必须首先与数据库建立联系,也就是连接到数据库上。PowerBuilder与数据库的连接建立在驱动程序之上。PowerBuilder通过数据库驱动程序接口实现与各种类型数据库的连接。接口的参数可以通过一个DatabaseProfile来完成。对于每一个可能要用到的数据库,均可以建立一个DatabaseProfile。在此DatabaseProfile中所记录的是建立到数据库的一些连接信息,如数据库管理信息(DBMS)的类型、用户账号、口令、数据库以及其他的连接参数。
当开发环境通过DatabaseProfile连接到数据库上之后,在PowerBuilder中使用数据库画笔可实现对该数据库中表格、视图等的操作,如创建表、修改表、删除表、增加/删除记录。
PowerBuilder中设计数据窗口的时候,通过"DatabaseProfile"对话框实现与数据库的连接。在应用程序中则一般是在应用程序对象中写连接数据库的程序代码,使得应用程序开始运行并实现与数据库的连接。
4.7.1程序设计时与数据库的连接
在程序设计中可以使用"DatabaseProfile"对话框完成配置和连接。如果已经定义了所需数据库的配置,那么就可以通过单击选中该配置,然后单击"Connect"按钮,将系统连接到相应的数据库上。如果没有定义数据库配置,需要创建新的数据库配置。
首先选择Tool菜单中的DatabaseProfile子菜单,或者单击图标,出现"DatabaseProfile"对话框。在其中选择要配置的数据库使用的数据库接口,"ODBODBC"节点。然后,单击"New"按钮,打开"DatabaseProfileSetup-ODBC"对话框,并设置所要连接数据库的配置信息。完成设置后,单击"Preview"标签页,在该标签页中列出了数据库刚刚配置的语句。单击"OK"按钮,返回到"DatabaseProfile"对话框。这时"ODBODBC"节点下面就多了刚刚配置好的DatabaseProfile。选中该配置,单击该对话框中的"Connect"按钮,系统即通过专用接口连接到数据库上。
当PowerBuilder9.0通过DatabaseProfile连接到数据库上之后,在程序上之后,在程序设计的创建数据窗口对象时,可以直接显示该用户在数据库中可以修改的表,通过选择某个(或者多个)表可以将它们和数据窗口对象连接起来。
4.7.2程序运行时与数据库的连接
在程序设计是和数据库的连接DatabaseProfile对话框来实现的,在程序运行时,则需要通过应用程序对象来实现和数据库的连接。在应用程序对象中实现与数据库连接,不在通过"DatabaseProfile"对话框,而是使用Transaction事物对象。
一般数据库的连接是在应用程序开始运行是建立起来的。PowerBuilder8.0开发的应用程序的入口点是PowerBuilder9.0的应用程序对象。每个PowerBuilder应用程序都必须有一个、而且只能有一个应用程序对象,在该应用程序对象中写入与数据库连接的程序代码,从而使得应用程序一开始变实现与数据库的连接。
在"DatabaseProfile"对话框完成设置后,单击"Preview"标签页,在该标签页中列出了配置的语句。将连接数据库的代码复制到应用程序对象中,即可完成代码的编写。
第五章关键模块代码设计
5.1应用程序对象设计
PowerBuilder9.0开发的应用程序的入口点是应用程序对象,运行程序从这个入口点启动,所以应用程序对象的设计是应用程序设计的开始。
应用程序对象的事件不多,一共只有6个,分别是Open、Close、Idle、SystemError、ConnectionBegin、ConnectionEnd事件。
本应用程序对象中只用到Open事件,输入如下程序代码:
//Profileperson
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=person'"
connect;
//打开程序登陆窗口
open(w_enter);
图5.1用户登入界面
该图为应用程序登陆图,其中的下拉列表框是利用游标将数据库的PERSON表中的属性PERSONNAME导入。
代码如下
DECLAREcurCURSORfor
selectpersonname
fromperson;
opencur;
fetchcurinto:pname;
dowhilesqlca.sqlcode=0
ddlb_1.additem(pname)
fetchcurinto:pname;
loop
closecur;
注册按钮是进行新用户注册
注册界面如下:
图5.2用户注册界面
可进行用户添加保存等功能,添加用户后返回到登陆界面,就能将新用户进入下拉列表。
5.2主界面设计
本应用程序的主要功能都是在主窗口w_main及在其下打开的众多窗口中完成的。如图所示。将主窗口的WindowType属性设立为mdi型,以便在其下以特定方式打开其他窗口。
图5.3主菜单设计
主界面设计如下:
图5.4主界面
如图所示糖尿病专家系统的主界面,用户使用时可以选择不同的方式进行操作,如果用户是第一次使用,或则使用一段时间后想确定自己的糖尿病分型是否改变则单击"糖尿病初步诊断按钮",代码为
opensheet(w_first_checked,w_main,3,original!)
如果用户长期使用想确定自己是否以开始有糖尿病慢性病可点击慢性并发症诊断按钮代码为
opensheet(w_choose,w_main,3,original!)
如果初患糖尿病,为了防止慢性并发症,可单击糖尿病预防按钮代码为
opensheet(w_prevent,w_main,3,original!)
主界面定义了全局变量如下:
stringpname=''//用户姓名
dateusedate//使用时间
integeryears=0//病人患病年数
stringsyms=""//症状
stringhistory=""//即往史
stringstatus=""//饭前|饭后
realblood=0.0//血糖值
realb_oggt=0.0//OGGT值
realb_ins=0.0//ins值
stringins_st//ins状态
realp_type1=0.0//一型概率
realp_type2=0.0//2型概率
intage=0//年龄
integergadcf=0//GAD判断1为阳0为阴
stringweight="未测定"//体重判断1为重0为瘦
realbmi=0
stringresult=""//结论
realp_d=0.01//患糖尿病人数概率
realp_dn=0.99//不患的概率
5.3糖尿病初步诊断窗口设计
根据第三章的知识树设计,此推理过程也就由该搜索树进行由上往下推理,并得出结论
第一个界面如下:
图5.5糖尿病初步诊断询问症状界面
专家先询问患者是否有以下症状,用户可以根据自己的症状进行多选,后台程序根据选择的项目进行BAYES推理给出一个模糊结论
糖尿病病症权值
图5.6BAYES权值
代码如下
realbayes=0.0
ifcbx_1.checked=truethen
realp_d_t=0.5//患糖尿病有三多一少症状的概率
realp_dn_t=0.04//不患
realt//患三多一少的概率
realp_t_d//三多一少条件下糖尿病概率
t=p_d*p_d_t+p_dn*p_dn_t
p_t_d=p_d_t*p_d*0.4/t
bayes=bayes+p_t_d
syms=syms+"三多一少症状"
else
messagebox("提示","您无明显的糖尿病症状是否继续")
nofeture="您无明显的糖尿病症状是否继续"
endif
ifcbx_2.checked=truethen
realp_d_y=0.8//换糖尿病视力模糊
realp_dn_y=0.4//不患
realeye//视力模糊的概率
realp_y_d
eye=p_d*p_d_y+p_dn*p_dn_y
p_y_d=p_d_y*p_d*0.1/eye
bayes=bayes+p_y_d
syms=syms+""+"视力模糊"
endif
ifcbx_3.checked=truethen
realp_d_h=0.78
realp_dn_h=0.2
realhurt
realp_h_d
hurt=p_d*p_d_h+p_dn*p_dn_h
p_h_d=p_d_h*p_d*0.1/hurt
bayes=bayes+p_h_d
syms=syms+""+"创口久不愈合"
endif
ifcbx_4.checked=truethen
realp_d_w=0.66
realp_dn_w=0.2
realweig
realp_w_d
hurt=p_d*p_d_w+p_dn*p_dn_w
p_w_d=p_d_w*p_d*0.1/weig
bayes=bayes+p_w_d
syms=syms+"体重减
上一篇:
PB科研管理系统pb(论文和程序).SQL
下一篇:
试析影响公路路面平整度的因素及应采取的施工措施