收藏 分销(赏)

实验三窗口与常用控件编程.doc

上传人:xrp****65 文档编号:7223124 上传时间:2024-12-28 格式:DOC 页数:13 大小:147.50KB 下载积分:10 金币
下载 相关 举报
实验三窗口与常用控件编程.doc_第1页
第1页 / 共13页
实验三窗口与常用控件编程.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
实验三 窗口与常用控件编程 一、 目的和要求 1. 掌握主窗口(main窗口)的创建和窗口属性的调整方法 2. 加深对窗口类型、各种类型窗口的特点以及应用范围的认识 3. 掌握静态文本控件(StaticText)、单行编辑器控件(SingleLineEdit)、编辑掩码控件(EditMask)、单选控件(RadioButton)、成组框(GroupBox)、命令按钮(CommandButton)的使用方法。 4. 掌握数据库的动态连接方法 二、 实验准备 1. 复习有关窗口、控件的知识 2. 启动PowerBuilder9.0 3. 建立目录(如:D:\PB),按照实验一中描述的方法,建立工作空间(Student .pbw),目标文件(Student.pbt),应用文件(Student.pbl)。 4. 按照实验二的方法,用ODBC连接数据库(student.pb) 三、 实验内容 1.数据准备 向数据库中插入部门和专业信息 (1) 按照实验2的方法,通过ODBC连接已经建好的数据库Student.db。 (2) 单击工具栏的数据库(database)图标,进入数据库画板。 (3) 选择菜单“View”下的子菜单“Interactive SQL”,进入“ISQL Session”窗口,输入SQL语句: //插入部门数据 Insert into department values(‘0001’,’计算机系’,’计算机软硬件’); Insert into department values(‘0002’,’通信工程系’,’通信工程’); Insert into department values(‘0003’,’信息科学系’,’信号处理’); Insert into department values(‘0004’,’数学系’,’应用数学’); Insert into department values(‘0005’,’指挥管理系’,’ ’); Insert into department values(‘0008’,’地方生系’,’ ’); Insert into department values(‘0009’,’联办生系’,’’); //插入专业数据 Insert into major values(‘000101’,’计算机硬件’,’0001’,’’); Insert into major values(‘000102’,’计算机应用’,’0001’,’’); Insert into major values(‘000201’,’通信工程’,’0002’,’’); Insert into major values(‘000202’,’自动化’,’0002’,’’); Insert into major values(‘000203’,’侦测工程’,’0002’,’’); Insert into major values(‘000301’,’信号处理’,’0003’,’’); Insert into major values(‘000401’,’应用数学’,’0004’,’’); 输入SQL语句后,单击图标,执行SQL语句。 2. 创建窗口对象 创建新窗口对象的步骤如下。 (1) 单击工具栏上的New图标,弹出”New”对话框,选择“Pb object”, 如下图。 (2) 选中“Window”图标,单击“OK”,出现窗口画板。 (3) 单击“File”菜单下“Save As”,出现“Save Window”窗口,如下图 (4) 输入窗口名称W_student,单击“OK”保存。 注意:窗口名称最好以W_开头,以示与其他对象的区别。,在上面窗口的注释栏(Comments)可以填写针对该窗口的注释。 (5) 在窗口画板右边的“Properties”中选择“General”,在“Title”属性中输入窗口标题,如“学生信息录入”,在“Windows Type”属性中选择“main!”。 3. 向窗口中填加控件 向窗口中添加下列控件: (1)静态文本(statictext) 控件名称 文本信息(text) 用途 St_1 学生录入 用于信息录入的提示 St_2 学号 St_3 姓名 St_4 民族 St_5 出生日期 St_6 专业 St_7 入学时间 St_8 籍贯 St_9 地址 (2)单行编辑器(SingleLineEdit) 控件名称 用途 Sle_id 输入学号 Sle_name 输入姓名 Sle_native 输入籍贯 Sle_address 输入地址 (3)编辑掩码控件(editmask) 控件名称 用途 mask属性 maskdatatype mask em_birthday 输入出生日期 Datamask! Yyyy/mm/dd em_grade 输入入学时间 Datamask! yyyy (4)下拉列表框(dropdownlistbox) 控件名称 用途 ddlb_nation 选择民族 Ddlb_major 选择专业 (5)成组框(groupbox) 控件名称 文本信息(text) 用途 Gb_1 性别 性别成组 Gb_2 政治面貌 政治面貌成组 (6)单选按钮(radiobutton) 控件名称 文本信息(text) 用途 对应成组框 rb_1 男 选择性别信息 Gb_1 rb_2 女 Gb_1 Rb_3 党员 选择政治面貌信息 Gb_2 Rb_4 团员 Gb_2 Rb_5 其他 Gb_2 (7)命令按钮(commandbutton) 控件名称 文本信息(text) 用途 Cb_add 新增 增加一条记录 Cb_save 保存 保存信息 添加控件后的窗口如下图: 4. 对象属性设置 (1)选中ddlb_nation控件,单击鼠标右键,选择“properties”,在属性窗口中选中“items”,在item中输入“汉族、回族、壮族、蒙古族、维吾尔族、白族、土家族”,如图 (2)选中ddlb_major控件,item中输入“计算机硬件、计算机应用、通信工程、自动化、侦测工程、信号处理、应用数学”,如下图 (3)选中em_birthday控件,编辑其掩码(mask),如下图: (4) 选中em_grade控件,编辑其掩码(mask),如下图: 保存窗口。 5. 编写脚本 1)对student应用的Open事件进行编程 在系统树窗口中选择student.pbl,双击student应用,弹出应用画板,选择open事件,写入以(下程序: //数据库连接 //事务对象进行属性赋值 SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "Connectstring='DSN=grade'" //连接 connect using sqlca; //数据库是否正确连接的判断 if sqlca.sqlcode= -1 then messagebox("提示","数据库连接错误!") return end if //打开窗口w_student open(w_student) (2) 对窗口w_student的Open事件编程 在窗口w_student的编程窗口中选择open事件,输入以下程序: setnull(sle_id) setnull(sle_name) setnull(sle_native) setnull(sle_address) rb_1.checked=true rb_3.checked=true (3) 对按钮cb_add的clicked事件编程 setnull(sle_id) setnull(sle_name) setnull(sle_native) setnull(sle_address) em_birthday.text="" em_grade.text="" ddlb_major.SelectItem(1) ddlb_nation.SelectItem (1) rb_1.checked=true rb_3.checked=true sle_id.setfocus() (4) 对按钮cb_save的clicked事件编程 //对表中不能为空的字段进行判断,给出提示 if sle_id.text="" then messagebox("提示","学号不能为空!") sle_id.setfocus() return end if if sle_name.text="" then messagebox("提示","姓名不能为空!") sle_name.setfocus() return end if if ddlb_nation.text="" then messagebox("提示","民族不能为空!") ddlb_nation.setfocus() return end if if em_birthday.text="0000.00.00" then messagebox("提示","出生日期不能为空!") em_birthday.setfocus() return end if if ddlb_major.text="" then messagebox("提示","专业不能为空!") ddlb_major.setfocus() return end if if em_grade.text="0000" then messagebox("提示","入学时间不能为空!") em_grade.setfocus() return end if //定义变量,用于从各个控件中获取输入值 string ls_id //学号变量 string ls_name //姓名变量 string ls_sex //性别 string ls_nation //民族 string ls_major1 //专业名称 string ls_major2 //专业代码 string ls_native //籍贯 string ls_address //地址 string ls_background //政治背景 string ls_grade //入学时间 date ld_birthday //生日 //变量赋值 ls_id=sle_id.text //获取ID号 ls_name=sle_name.text //取姓名 //取性别 if rb_1.checked=true then ls_sex='1' else ls_sex='2' end if //取民族 ls_nation=ddlb_nation.text //获取专业名称 ls_major1=ddlb_major.text //通过SQL语句获取专业代码 select major_id into :ls_major2 from major where name=:ls_major1; ls_native=sle_native.text //取籍贯 ls_address=sle_address.text //取地址 //获取政治面貌 if rb_3.checked=true then ls_background="党员" elseif rb_4.checked=true then ls_background="团员" else ls_background="其他" end if //获取生日,需要进行数据类型转换 ld_birthday=date(em_birthday.text) ls_grade=em_grade.text //获取入学时间 //主键判断,避免数据库中主键不唯一,数据库报错 int li_count select count(*) into :li_count from student where student_id=:ls_id using sqlca; if li_count>0 then messagebox("提示","该学号的学生已存在,请更改学号!") sle_id.setfocus() return end if //应用嵌入式SQL语句向数据库中插入记录 insert into student values (:ls_id,:ls_name,:ls_sex,:ld_birthday,:ls_grade,:ls_nation,:ls_background,:ls_major2,:ls_native,:ls_address) using sqlca; //判断插入是否成功 if sqlca.sqlcode=0 then commit; messagebox("提示","保存完毕!") return else rollback; messagebox("提示",SQLCA.SQLErrText) return end if 在以上步骤都完成以后,可以运行程序,输入数据进行测试。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服