PowerBuilder实训报告书.docx
- 文档编号:24778125
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:24
- 大小:487.76KB
PowerBuilder实训报告书.docx
《PowerBuilder实训报告书.docx》由会员分享,可在线阅读,更多相关《PowerBuilder实训报告书.docx(24页珍藏版)》请在冰豆网上搜索。
PowerBuilder实训报告书
PowerBuilder实训报告书
D
算机工程系
***
重庆航天职业技术学院
教师评语
重庆航天职业技术学院
1课程设计目的……………………………5
2数据库设计………………………………5
2.1需求分析……………………….........5
2.2数据库设计内容…………………….6
2.3概念设计……………………….........6
2.4创建数据库…………………….........7
3模块及窗口设计……………………......11
3.1设计系统管理模块…………….......11
3.2设计主窗口和菜单………………...13
3.3设计输入班级信息的数据窗口…...17
3.4设计访问学生基本信息数据窗口...19
3.5设计查询班级开设课程的窗口…...20
3.6设计访问成绩信息的窗口………...23
3实训心得…………………………………27
4参考文献………………………………..27
重庆航天职业技术学院
引言
数据库技术,已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。
数据库从诞生到现在,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域,吸引越来越多的研究者加入。
计算机技术不断地应用到各行各业,大量的企业把数据存放在数据库中,并且通过T相关的代码语句来进行快速查询,获取比传统方式更高的效率。
为了进一步加深和巩固我们所学的《PowerBuilder实用教程和实训》的基础理论知识,使我们所学的理论能够更好的和实际的专业连接起来。
是学生得到收集、处理、应用资料信息的实践训练,同时全面的考核学生所掌握的基础理论知识及其实际的专业能力,从而达到提高学生素质的最终目的。
学校安排了实训课程,在这段时间里,希望阩能够利用所学到的只是穿件一个图书管理的数据系统,来达到图书管理的需要。
2011.12.20
重庆航天职业技术学院
1课程设计目的
通过本次课程设计,学会PB的使用方法。
2数据库设计
熟悉《PowerBuilder实用教程和实训》实训环境,熟练掌握数据库、表、窗口界面的设计、图形按钮的添加、数据库的链接及函数的创建与应用,确立数据库创建的方向,对图书管理系统进行分析并设计系统实现需要哪几张表以及各表结构,确立数据库创建要求,优化数据库界面的设计。
2.1需求分析
书籍是人类进步的阶梯,人类进步的精神粮食。
因此,读书显得格外重要。
所以学生成绩系统应该是能够为阅读者提供充足的信息和快捷的查询手段的一种方式。
学生成绩管理工作繁琐,查阅繁琐,包含大量的信息数据,因此就需要一个完善的学生成绩管理系统来实现对这些数据的有效管理。
从而达到领导、老师对查询学生成绩信息进行统一管理,满足用户的需要。
重庆航天职业技术学院
随着计算机信息技术的发展,数据库作为信息技术的一部分也在飞速的发展着。
使用数据库对图书资源尽心管理工具有着手工管理无法比拟的有点,它检索迅速、查找方便、可靠性高、存储量大、成本低,所以数据库成为了图书管理最主要的选择。
2.2数据库设计内容
利用PowerBuilder开发一个小型图书管理系统改图书管理系统主要有一下几个功能:
图书类型信息查询和编辑,图书信息的查询和编辑,用户的查询和编辑,借阅还书记录的生成和查询。
2.3概念设计
概念设计是在需求分析基础上的,用概念数据模型来表述数据以及数据之间的相互联系,从上述的分析中得到图书管理系统的E-R图。
重庆航天职业技术学院
系统E-R图
2.4创建数据库
数据库是一个数据库系统的核心,一切数据都存储在数据库中,我们所进行的数据的查找,删除,更改等行为都是要进入数据库中的。
要创建数据库管理系统,那么我们首先要创建一个数据库。
重庆航天职业技术学院
在D盘的新建xscj文件夹,再新建data文件夹。
打开powerBuilder,新建一个工作空间和应用。
在应用open中输入代码:
//连接数据库
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=xscj;UID=dba;PWD=sql'"
CONNECT;
ifSQLCA.sqlcode<>0then
messagebox("提示","数据库连接失败!
")
else
open(w_login)//打开登录窗口
endif
在工具栏上点击Database的图标
(或者Tools-Databasepainter{快捷键Shift+F7}),弹出数据库创建的对话框。
打开ODBC下拉菜单,单击[Utilities],然后双击[CreateASADatabase]。
Databasename键入xscj,保存在在D盘下的xscj文件夹的data文件夹下,如图.
重庆航天职业技术学院
图2-1新建xscj数据库图2-2数据库树状图
在数据库中创建表banji、jiben、bjkc、xscj、user同时为表创建主键,外键。
在数据库xscj中选中Tables,右键选择NewTable,
弹出表的创建窗口,输入表名,类型,宽度,以及是否为空。
完成后点击图标
或使用快捷键[Ctrl+S]保存。
图2-3在数据库中创建表banji
创建完成后,打开xscj的Tables下拉菜单,选中刚
刚创建的表。
右键New—primaryKey为表设置主键bjbh。
使用同样的方法建立表jiben,bjkc,xscj,user如图所示:
重庆航天职业技术学院
图2-4在数据库中创建表jiben
图2-5在数据库中创建表xscj
图2-6在数据库中创建表users
分别为其设置主键xh,
表的关联关系:
bjkc-foreignkey关联banji-primarykey
Jiben-primarykey关联jiben-foreignkey
Jinben-primarykey关联xscj-foreignkey
重庆航天职业技术学院
图2-7表的关联关系
3.1系统模块设计
点击工具栏的新建
图标,或者[File-new],选择PBObject中的Windows。
使用CommondButton,创建一个用户登陆窗口。
在属性页面的Title框内输入登陆,使用两个Createstatictextcontrol,在其一加入图片,另一text属性文本框内输入学生成绩管理系统。
在窗口中添加GroupBox,text属性中输入请输入。
在其内添加两个statictextcontrol,text。
在statictextcontrol的text属性
输入用户名,密码。
本窗口实现用户登录控制
重庆航天职业技术学院
图3-1登陆窗口
在确定按钮下添加代码,如下:
stringls_username,ls_password
ls_username=trim(sle_1.text)//输入的用户名和密码
ls_password=trim(sle_2.text)
ifls_username=""orls_password=""then
messagebox("提示","用户名和密码不能为空")
else
SELECT"users"."name","users"."password","users"."admin"
INTO:
gs_username,:
gs_password,:
gs_admin
FROM"users"
WHERE("users"."name"=:
ls_username)AND
("users"."password"=:
ls_password);
ifsqlca.sqlcode=0then
open(w_main)//密码正确,打开主窗口
close(w_login)
else
li_n=li_n-1
ifli_n<>0then
重庆航天职业技术学院
messagebox("提示","用户名或密码错误")
else
messagebox("提示","错误超过3次,自动退出")
halt//错误超过3次,退出程序
endif
endif
endif
放弃按钮下输入代码:
halt//退出程序
3.2设计主窗口和菜单
主窗口和菜单是系统工作的主界面,本例的窗口为带帮助的多文档框架窗口。
[File|New]在PBObject下选定Menu单击OK,或者使用new小图标
弹出new的选择窗口对话框。
打开Menu窗口。
选定Untitled0右键InsertSubmenuItem,输入-系统(&S)回车,选定系统(&S)右键InsertSubmenuItem,输入-密码修改,再选定系统(&S)右键选择InsertSubmenuItem输入用户管理….使用同样的方法创建
Menu的菜单结构。
如图所示:
重庆航天职业技术学院
图3-2系统树形菜单结构窗口
【系统】菜单下【密码修改】菜单项的Clicked事件脚本如下。
Open(w_mmxg)
【系统】菜单下【用户管理】菜单项的Clicked事件脚本如下。
Open(w_yhgl)
【系统】菜单下【退出系统】菜单项的Clicked事件脚本如下。
Close(parentwindow)
【班级管理】菜单下【录入班级信息】菜单项的Clicked
重庆航天职业技术学院
事件脚本如下。
Open(w_banji_shuru,w_main,6,Original!
)
【班级管理】菜单下【修改班级信息】菜单项的Clicked事件脚本如下。
Open(w_banji_xiugai,w_main,6,original)
【班级管理】菜单下【浏览班级信息】菜单项的Clicked事件脚本如下。
Opensheet(w_banji_xiugai,w_main,6,original!
)
【学生管理】菜单下【录入学生信息】菜单项的Clicked事件脚本如下。
Opensheet(w_jiben_shuru,w_main,6,original!
)
【学生管理】菜单下【修改学生信息】菜单项的Clicked事件脚本如下。
Opensheet(w_jiben_xiugai,w_main,6,original!
)
【学生管理】菜单下【查询学生信息】菜单项的Clicked事件脚本如下。
Opensheet(w_jiben_chaxun,w_main,6,original!
)
【课程管理】菜单下【录入/修改开设课程】菜单项
重庆航天职业技术学院
的Clicked事件脚本如下。
Opensheet(w_bjkc_shuruxiugai,w_main,6,original!
)
【课程管理】菜单下【查询开设课程信息】菜单项的Clicked事件脚本如下。
Opensheet(w_bjkc_chaxun,w_main,6,original!
)
【成绩管理】菜单下【录入修改成绩】菜单项的Clicked事件脚本如下。
Opensheet(w_xscj_shuru,w_main,6,original!
)
【成绩管理】菜单下【查询个人成绩】菜单项的Clicked事件脚本如下。
Opensheet(w_xscj_grcx,w_main,6,original!
)
【成绩管理】菜单下【查询班级成绩】菜单项的Clicked事件脚本如下。
Opensheet(w_xscj_bjkc,w_main,6,original!
)
【成绩管理】菜单下【查询课程成绩】菜单项的Clicked事件脚本如下。
Opensheet(w_xscj_kccx,w_main,6,original!
)
【窗口】菜单下【层叠窗口】菜单项的Clicked事件
重庆航天职业技术学院
脚本如下。
W_main.arrangesheets(cascade!
)
功能是将主窗口打开的子窗口以层叠方式排列。
【帮助】菜单下【关于】菜单项的Clicked事件脚本如下。
Open(w_about)
【帮助】菜单下【关于】菜单项的Clicked事件脚本如下。
ShowHelp(“d:
\xscj\help\xscjhelp.chm”,index!
)
3.3设计输入班级信息的数据窗口
菜单栏中选择【File】-【new】或点击new小图标
选择Datawindows窗口,选中Freedom单击ok。
选择【QuickSelect】类型的数据库,选中预览时检索数据的复选框,单击【Next】命令按钮,弹出【QuickSelct】数据窗口对话框。
在途中左边的【Tables】列表框中列出当前数据库中所有的表名,单击某一个表名,会在【Columns】列表框中列出该表的全部字段。
单击某个
字段名,单击右边的【AddAll】命令按钮。
完成字段选
重庆航天职业技术学院
择后单击【ok】按钮,接着弹出【SelcetColorandBorderSeting】严责和边框设置对话框。
图3-3表的选择图3-4颜色边框对话框
点击【Next】-【Finish】完成选择弹出以下对话框
图3-5数据窗口
单击【Save】图标
,或【File】-【Save】弹出保存对
重庆航天职业技术学院
话框,输入创建
图3-5保存对话框
数据窗口d_banjishuru生成的SQLSelct语句为:
SELCET
“banji”.”bjbh”.”banji”.”bjmc”“banji”.”zymc”.”banji”.”xz”.”banji”.”rxsj”.”banji”.”rs”
FROM”banji”
3.4设计访问学生基本信息的数据窗口
创建数据窗口d_jiben_shuru,显示风格为“Freefrom”,数据源类型为“QuickSelcet”。
数据窗口d_jiben_shuru生成的SQLselcet语句为:
SELCET
重庆航天职业技术学院
“jiben”.”xh”、”jiben”.”xm”.”jiben”.”xb”.
”jiben”.”csrq”、”jiben”.”jtzz”、”jiben”.””bjbh.
FROM”jiben”
图3-4学生基本信息窗口
3.5设计查询班级开设课程的窗口
首先创建一个窗口对象w_bjkc_chaxun,调整期大小,在窗口中放置2个静态文本控件(st_1,st_2)、2个下拉列表框控件(ddlb_1,ddlb_2)、1个命令按钮(cb_1)1个数据窗口控件(dw_1),调整各个控件的位置和大小。
位置窗口及其控件的属性见一下表。
图3-5查询班级开设的课程的窗口
重庆航天职业技术学院
对象
属性
取值
W_bjkc_chaxun
Title
查询班级开设课程
WindowType
Main!
Resizable
False
Center
False
Maxbox
False
Minbox
False
Dw_1
VScrolloBar
Ture
DataObject
D_bjkc_chaxun
St_1
Text
选择学期:
St_2
Text
选择班级
Cb_1
text
查询
窗口w_bjkc_chaxun的open事件脚本如下。
重庆航天职业技术学院
dw_1.settransobject(sqlca)
intli_xq,li_bjmc,n
stringls_xq,ls_bjmc
SELECTcount(distinctxq)INTO:
li_xq
FROMbjkc;
DECLARExqcursorCURSORFOR
SELECTxqFROMbjkcGROUPBYxq;
OPENxqcursor;
FORn=1TOli_xq
FETCHNEXTxqcursorINTO:
ls_xq;
ddlb_1.additem(ls_xq)
NEXT
CLOSExqcursor;
SELECTcount(distinctbjmc)INTO:
li_bjmc
FROMbanji;
DECLAREbjmccursorCURSORFOR
SELECTbanji.bjmc
FROMbjkc,banji
WHEREbjkc.bjbh=banji.bjbhGROUPBYbanji.bjmc;
OPENbjmccursor;
FORn=1TOli_bjmc
FETCHNEXTbjmccursorINTO:
ls_bjmc;
ddlb_2.additem(ls_bjmc)
NEXT
CLOSEbjmccursor;
【查询】按钮的clicked事件脚本如下
Dw_1.retrieve(ddlb_1.text、ddlb_2.text)
重庆航天职业技术学院
3.6设计访问成绩信息的窗口
首先新建窗口对象w_xscj_shuru,在窗口上放置1个分组框控件、3个静态文本控件、3个下拉列表框控件、3个命令窗口按钮控件和1个数据窗口控件
其中,,【保存】按钮的enabled属性设成False;数据窗口控件调整到只显示学号、姓名和成绩3列,VScrollBar属性设置为Ture,数据窗口对象为d_xscj_shuru;3个下拉菜单列表框控件的列表项为空,由代码动态生成。
图3-6班级学生成绩查询
【确定】按钮的代码如下。
intli_xh,n
stringls_kcmc,ls_xq,ls_bjmc,ls_xh
ls_xq=ddlb_1.text
重庆航天职业技术学院
ls_bjmc=ddlb_2.text
ls_kcmc=ddlb_3.text
ifls_xq=""orls_bjmc=""orls_kcmc=""then
messagebox("提示","选择项不能空!
")
else
SELECTcount(distinctxh)INTO:
li_xh
FROMxsbj
WHERExsbj.bjmc=:
ls_bjmc;
DECLARExhcursorCURSORFOR
SELECTxh
FROMxsbj
WHERExsbj.bjmc=:
ls_bjmc;
OPENxhcursor;
FORn=1TOli_xh
FETCHNEXTxhcursorINTO:
ls_xh;
INSERTINTO"xscj"("xh","xq","kcmc","cj")
VALUES(:
ls_xh,:
ls_xq,:
ls_kcmc,null);
NEXT
CLOSExhcursor;
dw_1.retrieve(ls_xq,ls_kcmc)
endif
【保存】按钮的代码如下。
ifdw_1.update(true,false)=1then
dw_1.resetupdate()
commit;
cb_2.enabled=false
重庆航天职业技术学院
else
rollback;
messagebox("错误","保存数据失败!
")
endif
【退出】按钮代码如下。
close(parent)
课程的下拉列表框的Getfocus事件脚本如下。
intli_kcmc,n
stringls_kcmc,ls_xq,ls_bjmc
ls_xq=ddlb_1.text
ls_bjmc=ddlb_2.text
ifnot(ls_xq=""orls_bjmc="")then
SELECTcount(distinctbjkc.kcmc)INTO:
li_kcmc
FROMbjkc,banji
WHERE(bjkc.bjbh=banji.bjbh)and(banji.bjmc=:
ls_bjmc)and(bjkc.xq=:
ls_xq);
DECLAREkcmccursorCURSORFOR
SELECTbjkc.kcmc
FROMbjkc,banji
WHERE(bjkc.bjbh=banji.bjbh)and(banji.bjmc=:
ls_bjmc)and(bjkc.xq=:
ls_xq)
GROUPBYbjkc.kcmc;
ddlb_3.reset()
重庆航天职业技术学院
OPENkcmccursor;
FORn=1TOli_kcmc
FETCHNEXTkcmccursorINTO:
ls_kcmc;
ddlb_3.additem(ls_kcmc)
NEXT
CLOSEkcmccursor;
endif
窗口的Closequery事件脚本如下。
integerrt
dw_1.accepttext()
ifdw_1.modifiedcount()=0then
return0
else
rt=messagebox("提示","添加修改内容未保存,确实退出吗?
",Question!
YesNo!
)
ifrt=1then
return0
endif
endif
return1
dw_1事件代码如下。
cb_2.enabled=true
数据窗口的Itemchanged事件脚本如下。
Cb_2.enablde=ture
重庆航天职业技术学院
3实训心得
这个星期是我们《PowerBuilder使实用教程与实训》的实训,经过这一段时间的实训,让我领悟到了很多课堂上没有注意的重要知识。
如何使用PowerBuilder快速的创建一个通用接口的ODBC的数据库,用window来创建我们常常使用的软件的界面。
并且将每个创建的窗口关联到主窗口,使整个学生管理系统使用更加方便。
抱着学习和探索的精神,我们投入到实训的过程去。
一段时间以来,我学到了很多知识,也发现了自己在课堂学习中学习的不住和未能注意到的知识点。
实训的过程中,也遇到了很多的问题,在老师和同学的帮助下都得以解决,对PowerBuilder的认识也更深刻。
4参考文献
1《PowerBuilder实用教程与实训》
2网络资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PowerBuilder 报告书