华北科技学院powerbuilder课程设计报告--学生成绩数据库管理系统 - 图文
更新时间:2023-12-27 02:46:01 阅读量: 教育文库 文档下载
2011-2012学年第1学期
PowerBuilder程序设计
(专业选修课)
学号: 姓名: 班级:
答 辩 情 况:
1、程序难易程度:难( ),较难( ),一般( ),简单( ); 2、程序工作量: 大( ),较大( ),一般( ),较小( ); 3、基本操作: 熟练( ),较熟练( ),一般( ),不熟练( ),
极不熟练( );
4、代码理解: 准确( ),较准确( ),一般( ),不准确( ),
极不准确( );
平 时 成 绩: 优秀( ),良好( ),中等( ),一般( )
总 评 成 绩: 任 课 教 师:
2012年12月5日
华北科技学院
学生成绩数据库管理系统
一、 系统结构设计
XSCJ数据库中包含有三个表,XS表用来存放学生基本信息,KC表用来存放课程基本信息,XS—CJ表用来存放学生课程成绩信息。根据学校教育管理的实际要求,可以设计以下主要的交互窗口: 1.登陆窗口w_load 2.控制台窗口w_main 3.查询子系统窗口w_query 4.数据管理子系统窗口w_data 5.帮助系统窗口w_help
其中查询子系统包括学生成绩查询,学生基本情况查询,学生选课信息查询和交互式查询。而数据管理子系统窗口包括资源管理,数据的更新,数据的删除,数据插入等。 二、系统开发计划
(1) 检查系统硬件和软件环境是否符合要求。
(2) 检查XSCJ数据库的三个样本数据表,观察是否满足系统的需求。 (3) 为项目创建磁盘存储区域,并创建新的工作空间。 (4) 逐一创建组成系统的各个模块。
(5) 采用面向对象的方式,实现模块的可重用性。 (6) 完成各个模块的代码,并进行单个模块的测试。 (7) 进行整个系统的测试。 (8) 生成可执行文件。
1
华北科技学院
(9) 软件发布。
整个系统的体系结构图如图1-1所示:
图1.1
三、设计步骤
1.创建工作空间、应用与数据库表
(1)启动PowerBuilder 10.0,创建工作空间和应用—project1
2
华北科技学院
(2)创建的ASA数据库XSCJ.db,数据源名称Xscj,创建xs数据表,kc数据表,xs_cj数据表,其结构如:
表1 XS表结构
表2 KC表结构
表3 XS_CJ表结构
3
华北科技学院
2. 新建主窗口对象
(1)建一个主窗口w_load,在窗口上放置了三个静态文本,两个单行文本编辑框和两个命令按钮。
在w_load窗口中新建了一个用于连接数据库的窗口函数load_connect,函数脚本为:
String Is_userid,Is_password,Is_database //定义形参 //将实参的值赋给形参 Is_userid=trim (userid) Is_password= (password)
IF Is_password=\输入密码非空
4
华北科技学院
在窗口w_main中的“数据通道”命令按钮的clicked事件中编写代码: Open(w_pipe)
保存所做工作,运行应用程序进行测试。
窗口W_statistic图
10
华北科技学院
在窗口w_statistic的Open事件中输入一下脚本: gr_1.Elevation=33 旋转33度
gr_1.Spacing=150
//条形图数据之间
//将三维图形视角
距离为本条本身宽度的150%
gr_1.AddCategory(\第一学期\gr_1.AddCategory(\第二学期\gr_1.AddCategory(\第三学期\gr_1.AddCategory(\第四学期\gr_1.AddCategory(\第五学期\gr_1.AddCategory(\第六学期\gr_1.AddCategory(\第七学期\gr_1.AddSeries(\计算机基础\ gr_1.AddSeries(\程序设计语言\gr_1.AddSeries(\数据结构\gr_1.AddSeries(\操作系统\gr_1.AddSeries(\程序设计与语言\gr_1.AddSeries(\计算机原理\gr_1.AddSeries(\数据库原理\gr_1.AddSeries(\软件工程\gr_1.AddData(1,80,1) gr_1.AddData(2,68,2) gr_1.AddData(4,68,5)
//设置分类轴//设置系列轴
//添加数据
11
华北科技学院
gr_1.AddData(5,68,6) gr_1.AddData(6,85,5) gr_1.AddData(7,68,7) gr_1.AddData(9,51,7)
在窗口w_main中的“统计分析”命令按钮的clicked事件中编写代码: Open(w_statistic)
保存所做工作,运行应用程序进行测试。 (5)创建查询子系统的子窗口 在
w_base
基本窗口的基础上,通过继承的方式创建
w_stu,w_select,w_achievement,w_custom。分别添加控件!
窗口W_stu图
窗口W_select图
12
华北科技学院
窗口W_achievement图
13
华北科技学院
窗口W_custom图
3.为查询子系统的字窗口编写脚本,并建立各窗口之间的联接。
(1) 建立各窗口之间的连接
A. 在窗口w_query中的“学生基本信息查询”命令按钮clicked的事
件中编写代码:Open (w_stu)
B. 在w_query窗口中的“学生选课查询”命令按钮的clicked事件中
编写代码:Open (w_select)
C. 在w_query窗口中的“学生成绩查询”命令按钮的clicked事件中
编写代码:Open (w_achievement)
D. 在w_query窗口中的“自定义查询”命令按钮的clicked事件中编
写代码:Open (w_custom)
E. 在窗口w_main中的“查询子系统”命令按钮的clicked事件中编写
代码:Open (w_query)
14
华北科技学院
(2) 编写窗口s_tu的脚本
OPEN事件:dw_1.SetTransObject (SQLCA) 查询按钮的clicked事件:
String xuehao
xuehao=Trim (sle_1.text) IF xuehao=\ MessageBox (\没有输入学号\请输入正确的查询条件!\ ELSE
dw_1.Retrieve (xuehao)
END IF
sle_1.SetFocus ()
清除按钮的clicked事件: dw_1.ReSet () sle_1.text=\sle_1.SetFocus ()
(3)编写窗口w_achievement的脚本 OPEN事件:dw_1.SetTransObject (SQLCA) 查询按钮clicked事件: String xh,kc
xh=Trim (sle_1.text) kc=Trim (sle_2.text) IF xh=\
15
华北科技学院
MessageBox (\非法的条件输入\请输入正确的查询条件!\
ELSE
dw_1.Retrieve (xh,kc)
END IF
sle_1.SetFocus ()
清除按钮clicked事件:
dw_1.ReSet () sle_1.text=\sle_1.text=\sle_1.SetFocus()
(4)编写定义查询窗口w_custom的脚本 命令按钮: Int m,n
String mysql,str
mysql=mle_1.text //读取查询语句 lb_1.reset () //重置Ib_1 DECLARE mycur DYNAMIC CURSOR FOR sqlsa; PREPARE sqlsa FROM : mysql USING sqlca; DESCRIBE sqlsa INTO sqlda;
OPEN DYNAMIC mycur USING DESCRIPTOR sqlda; FETCH mycur USING DESCRIPTOR sqlda;
m=sqlda.numoutputs //获取输出参数的个数,即Select中列的个数
16
华北科技学院
DO WHILE sqlca.sqlcode=0 //测试查询是否成功
str=\将查询结果变为一个串 FOR n=1 TO m //处理所有输出参数
CHOOSE CASE sqlda.outparmtype[n] //判断每个输出参数的类型
CASE typeinteger!,typedecimal!,TypeDouble!
//输出参数为Integer,decimal,Double型
str=str+string (sqlda.getdynamicnumber(n)) +\
CASE typestring! //输出参数为String型
str=str+trim (sqlda.getdynamicstring(n)) +\
CASE typedate! //输出参数为Date型
str=str+string (sqlda.getdynamicdate(n)) +\
END CHOOSE
NEXT
lb_1.additem (str) //显示查询结果
FETCH mycur USING DESCRIPTOR sqlda;//处理下一条记录
LOOP
CLOSE mycur; //关闭游标 4 . 创建数据管理子系统的子窗口
在基本窗口的基础上,通过继承的方式创建学生信息管理窗口w_stuupdata,在窗口上添加八个命令按钮和一个静态文本控件和一个分组框控件。
通过继承w_stuupdata创建w_course.在基本窗口w_base的 基础上通过
17
华北科技学院
继承的的方式创建窗口w_achieveupdata.
窗口W_stuupdata图
窗口W_course图
窗口W_achieveupdata图
18
华北科技学院
5.为数据管理的子系统的子窗口编写脚本,并建立各窗口之间的连接。创建帮助子系统的子窗口,并建立各窗口之间的连接及相应的脚本.
(1)建立各窗口之间的连接
A. 在窗口w_data中的“学生信息管理”命令按钮clicked的事件中编写代码:Open (w_stuupdata)
B. 在w_data窗口中的“课程信息管理”命令按钮的clicked事件中编写代码:Open (w_course)
C. 在w_data窗口中的“学生成绩信息管理”命令按钮的clicked事件中编写代码:Open (w_achieveupdata)
(2)编写窗口w_stuupdata的脚本 OPEN事件:
dw_1.SetTransObject (SQLCA)
19
华北科技学院
增加记录按钮cb_2的clicked事件: Long row
Row=dw_1.InsertRow(0) dw_1.SetRow(row) dw_1.ScrollToRow(row) dw_1.SetFocus()
插入记录按钮cb_5的clicked事件: Long row
row=dw_1.InsertRow(dw_1.GetRow()) dw_1.SetRow(row) dw_1.ScrollToRow(row) dw_1.SetFocus()
删除记录按钮cb_4的clicked事件: dw_1.DeleteRow(dw_1.GetRow()) 显示记录按钮cb_6的clicked事件: dw_1.Retrieve()
更新记录按钮cb_3的clicked事件: dw_1.Update() dw_1.ReSet()
返回按钮cb_1的clicked事件: close(parent)
下一记录按钮cb_7的clicked事件:
20
华北科技学院
dw_1.ScrollNextRow()
dw_1.SelectRow(dw_1.GetRow() -1,false) dw_1.SelectRow(dw_1.GetRow() ,true) 上一记录按钮cb_8的clicked事件: dw_1.ScrollPriorRow()
dw_1.SelectRow(dw_1.GetRow() +1,false) dw_1.SelectRow(dw_1.GetRow() ,true) 6.创建数据窗口对象
一共创建了5个数据窗口对象
(1) 在w_stu的dw_1的数据窗口对象d_1
(2)在w_select的dw_1的数据窗口对象d_2
(3)在W_achievement中新建了一个数据窗口d_3,主要用于XS_CJ
21
华北科技学院
表,KC表及XS中按学号和课程号检索学生的课程与成绩信息.
(4)在窗口w_stuupdata中新建一个数据窗口对象d_4主要用于管理XS表中的信息。
(5)在w_course窗口中新建一个数据窗口d_5对象,主要用于管 表KC中的信息。
7.创建帮助子系统的子窗口,并建立各窗口之间的连接及编写相应的脚本 (1)建立帮助子系统的子窗口:在基本窗口的基础之上,通过继承的方式创建使用帮助窗口。
22
华北科技学院
窗口W_help图
(2)建立窗口之间的连接。
在窗口w_main中的“使用帮助”命令按钮clicked的事件中编写代码:Open (w_help)。
8 . 创建数据通道系统的子窗口,并编写相应的脚本
窗口w_pipe图
23
华北科技学院
编写窗口w_pipe的脚本
(1)在窗口w_mian中的“数据通道”命令按钮clicked事件中编写代码:Open(w_pipe)
(2)创建服务器数据库cour_pro,并配置其数据源。 创建两个数据管道:pipe_0,pipe_1。
Pipe_0:将XSCJ数据库中的表XS中的数据上传到数据库cour_pro中以更新数据;
Pipe_1:将cour_pro中的表stu中的数据下载到XSCJ数据库中。 (3)在窗口w_pipe中定义函数Connectserver()表示连接服务器数据库、error(integer ret)错误处理、sartpipe(Transation sourcetrans, Transaction desttrans,string p_object)开始管道操作。 (4)编写代码
24
华北科技学院
在窗口w_pipe中,声明以下InstanceVariables对象实例: //定义事务处理对象serverdb //serverdb用来连接服务器数据库 Transaction serverdb //定义数据管道对象u_pipe Pipeline u_pipe
在窗口w_pipe的open事件中编写代码: //定义事务处理对象实例变量serverdb serverdb=Create Transaction //定义数据管道对象实例变量 u_pipe=Create pipeline
在窗口w_pipe的close事件中编写代码: //释放数据管道对象 DESTROY u_pipe; //释放事务处理对象 DISCONNECT USING sqlca; DESTROY sqlca;
DISCONNECT USING serverdb; DESTROY serverdb;
在“取消”命令的clicked事件中编写代码: Int ret
ret=u_pipe.Cancel()
//终止管道运行
25
华北科技学院
IF ret=1 THEN
MessageBox(\取消操作成功\终止管道运行\
ELSE
MessageBox(\取消操作失败\未能终止管道运行\
END IF
在“返回”命令按钮cb_return的clicked事件中编写代码: Close(PARENT)
在连接服务器数据库的函数Connectserver()中编写代码: //该函数无参数,返回值为sqlcode //连接服务器数据库
//这里为方便实验,选用了另一个本地库cour_pro serverdb.autocommit=true serverdb.DBMS = \serverdb.database = \serverdb.userid = \serverdb.dbpass = \serverdb.servername = \serverdb.logid=\serverdb.logpass=\
serverdb.dbparm = \CONNECT USING serverdb; RETURN serverdb.sqlcode
26
华北科技学院
在错误处理函数error(integer ret)中编写代码:
//该函数的入口参数ret,表示执行数据管道操作返回的错误代码。 //该函数无返回值。 String msg CHOOSE CASE ret CASE -1
msg = \打不开数据管道\
CASE -2
msg = \列数太多\
CASE -3
msg = \要创建的表已经存在\
CASE -4
msg = \要增加数据的表不存在\
CASE -5
msg = \未建立与数据库的连接\
CASE -6
msg = \参数错误\
CASE -7
msg = \列不匹配\
CASE -8
msg = \访问源数据库的SQL语句致命错误\
CASE -9
27
华北科技学院
msg = \访问目标数据库的SQL语句致命错误\
CASE -10
msg = \已经达到指定的最大错误数\
CASE -12
msg = \不正确的表语法\
CASE -13
msg = \需要关键字、但未指定关键字\
CASE -15
msg = \数据管道已经在运行\
CASE -16
msg = \源数据库出错\
CASE -17
msg = \目标数据库出错\
CASE -18
msg = \目标数据库处于只读状态,不能写入数据\
END CHOOSE
MessageBox(\数据管道运行出错\
在执行管道操作的函数startpipe(Transaction sourcetrans,Transaction desttrans,string p_object)中编写代码:
//该函数有三个入口参数sourcetrans、desttrans、p_object //该函数无返回值。
//参数sourcetrans表示源事务处理对象
28
华北科技学院
//参数desttrans表示目标事务处理对象
//参数p_object表示在数据库画板中创建的数据管道对象 Integer ret
//定义数据管道对象实例变量 u_pipe.DataObject = p_object
//设置数据管道对象
ret=u_pipe.Start(sourcetrans, desttrans, w_pipe.dw_1) IF ret<> 1 THEN
error(ret) //转错误处理程序
ELSE
MessageBox(\数据管道运行成功\操作成功\
END IF
sle_2.text= String(u_pipe.RowsRead) //显示已读数据行数 sle_1.text= String(u_pipe.RowsWritten)
//显示已写数据行数
sle_3.text= String(u_pipe.RowsInError) //显示出错数据行数
29
华北科技学院
四、课程设计总结和体会
在本次课程设计中通过学生管理系统实例介绍了用PowerBuilder开发数据库应用程序的过程,介绍了开发应用系统时的系统分析,功能设计,数据库设计以及数据库的实现,具体描述了实例中各种PowerBuilder对象的设计方法,较为系统、全面的总结了PowerBuilder的应用。
个人在设计调试整个系统的时候遇到许多问题,并通过书上的解说和请教老师来解决我在设计时所面临的问题。本人从中学习到了很多知识,并在以后的学习中希望能学到很多,来完成自己所设计的系统。在这里衷心感谢王老师的耐心指导。
30
华北科技学院
四、课程设计总结和体会
在本次课程设计中通过学生管理系统实例介绍了用PowerBuilder开发数据库应用程序的过程,介绍了开发应用系统时的系统分析,功能设计,数据库设计以及数据库的实现,具体描述了实例中各种PowerBuilder对象的设计方法,较为系统、全面的总结了PowerBuilder的应用。
个人在设计调试整个系统的时候遇到许多问题,并通过书上的解说和请教老师来解决我在设计时所面临的问题。本人从中学习到了很多知识,并在以后的学习中希望能学到很多,来完成自己所设计的系统。在这里衷心感谢王老师的耐心指导。
30
正在阅读:
华北科技学院powerbuilder课程设计报告--学生成绩数据库管理系统 - 图文12-27
国内知名农业大学EMBA台湾游学活动报道07-29
上海交通大学dsp期末试卷2000级试卷&答案09-03
甲醇燃料项目可行性研究报告04-07
iOS移动平台架构设计说明04-06
研究生英语听说教程答案04-24
芭比娃娃的英文介绍05-29
施工资料组卷办法10-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 华北
- powerbuilder
- 管理系统
- 成绩
- 课程
- 图文
- 数据库
- 报告
- 学院
- 学生
- 设计
- 科技
- 全国各地中考历史试题精选汇编 经济和社会生活
- 大学生民政局的实习报告(精)
- 五年级数学上册5.12小数的四则混合运算同步练习苏教版(完整版)
- 公诉词
- 2018幼儿园大班十月份工作计划与2018幼儿园大班十月份计划汇编
- 1.区块链技术和应用课后测试
- 基督教讲章:不要忧虑 太六25
- 公派访学告知书-北京理工大学
- 企业营销方案设计
- 规范信托营销上海银监局重提信托代销面签
- 理论力学思考题 - 图文
- 2018-2019年唐山市玉田县亮甲店镇孔五官屯中心小学三年级上册科学模拟练习题无答案
- 13年09级12人毕业设计任务书
- 电工手册 第十章 三相异步电动机控制线路故障诊断 - 图文
- 苏科版九年级物理下册《15.4家庭电路与安全用电》自主学习().docx
- 2019届高考复习《生活与哲学》知识结构框架图
- 企业财务会计考试试题2012期末
- 一年级美术教学反思
- 王维《积雨辋川庄作》漠漠水田飞白鹭
- 中学数学 专题四 三角函数与解三角形 第九讲 三角函数的概念、诱导公式与三角恒等变换