最新PowerBuilder数据库技术课程设计PB学生成绩管理系统 精品.docx
《最新PowerBuilder数据库技术课程设计PB学生成绩管理系统 精品.docx》由会员分享,可在线阅读,更多相关《最新PowerBuilder数据库技术课程设计PB学生成绩管理系统 精品.docx(38页珍藏版)》请在冰豆网上搜索。
![最新PowerBuilder数据库技术课程设计PB学生成绩管理系统 精品.docx](https://file1.bdocx.com/fileroot1/2023-7/6/dbe4d38f-5723-4762-a048-1d865f87ad8b/dbe4d38f-5723-4762-a048-1d865f87ad8b1.gif)
最新PowerBuilder数据库技术课程设计PB学生成绩管理系统精品
重庆航天职业技术学院
课程设计说明书
课程名称数据库技术课程设计(PB)
题目学生成绩管理系统
院系
班级09级计算机网络
学生姓名
指导教师
日期2010年1月6号
课程设计任务书
课程设计名称:
数据库技术课程设计(PB)
学生姓名:
专业班级:
计算机网络
设计题目:
学生成绩管理系统
一、课程设计目的
该课程设计是学习完《PB程序设计》课程后进行的一次集中实践环节的综合练习。
其目的是通过本课程设计使学生对具体问题应用《PB程序设计》课程中所学的方法与技术,进行需求分析及软件设计的过程,完成一个数据库应用系统的设计全过程,不仅对PB程序设计课程中的所有知识点进行一个全面的复习巩固,更重要的是增强学生解决实际问题的能力。
二、时间和学分
(1)时间:
2010-2011学年第一学期1周;
(2)学分:
20学时,1个学分。
三、设计的地点及进行方式
(1)地点:
学院实训室01506;
(2)方式:
分散实训,上机调试和测试程序及书写课程设计说明书相结合的方式。
四、设计内容、技术条件和要求
(1)本环节要求学生根据PB程序设计整个课程的所学内容,自己独立设计完成一个比较复杂的小型管理系统。
(2)所设计的小型管理系统要求功能比较完善,应包含输入输出、查询、插入、删除、打印等基本功能。
(3)程序内容自己灵活设计,包括规划自己的数据库、设计程序功能及界面设计。
(4)数据库中不能少于两个表。
(5)程序应功能完善,界面友好,容错性好,操作方便。
五、说明书内容格式要求
从上到下各组成结构:
(1)封面及任务书(见样张);
(2)成绩评阅页;(3)目录;(4)第1章概述;第2章系统分析;第3章功能分析;第4章系统实现;第6章结束语;第7章参考文献。
纸张大小为B5纸。
正文为5号宋体。
一级标题:
第1章(标题,2号宋体,上下空两行居中,行距为5号宋体单倍行距)。
二级标题:
1.1[第1章第1节](标题,3号黑体居中,上下空一行,行距为5号宋体单倍行距)。
三级标题:
1.1.1[第1章第1节第1个问题](标题,4黑左顶,占2行)。
六、完成时间及要求
(1)第18周星期五交到课代表处;
(2)字数不少于8000字;(3)严禁抄袭,否则按不及格处理。
指导教师:
二○一○年十二月三十日
第一章:
概述…………………………..…………….5
第二章:
系统分析………………………………….6
第三章:
功能分析………………………………….7
第四章:
系统实现…………………………………7
第五章:
结束语……………………………………34
第七章:
参考文献…………………………………35
第一章概述
PowerBuilder美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于Windows3.x、Windows95和WindowsNT的一个集成化开发工具。
它包含一个直观的图形界面和可扩展的象面向对象的编程语言PowerScript,提供与当前流行的大型数据库的接口,并通过ODBC与库单机数据库相连。
在开始学习PowerBuilder之前,首先要弄清楚的问题是什么是PowerBuilder,它是用来干什么的,它的特点又是什么。
只有知道了PowerBuilder的功能和特点所在,我们才能知道什么时候应该选用PowerBuilder作为我们的应用程序开发工具。
它支持应用系统同时访问多种数据库,其中既包括Oracel,Sybase之类的大型数据库,又包括FOXPRO之类支持ODBC接口的小型数据库,PowerBuilder是完全可视化的数据库开发工具,它提供了大量的控件,大大加快了项目的开发速度,也使开发者更容易掌握数据库的开发。
它使用的编程语言叫做工PowerScripr,它也是一种高级的,结构化的编程语言。
PowerScript提供了一套完整的嵌入式SQL语句,开发人员可以像使用其它语句一样自由地使用SQL语言,这样就大大增强了程序操纵和访问数据库的能力。
可以说PowerBuilder既适合初学者快速学习数据库的开发,又可以让有经验的开发人员开发出功能强大的数据库,是一种适用面非常广的开发工具。
PowerBuilder是一个用来进行客户/服务器开发的完全的可视化开发环境。
使用PowerBuilder,你可以用一种可视的直观的方式来创建应用程序的用户界面和数据库接口。
这是一个总的概念,实际上是开发人员使用PowerBuilder去开发应用程序,由于所开发的各种应用程序充分利用了图形用户接口(GUI)的优点,所以PowerBuilder被认为是一个图形工具。
在客户/服务器结构的应用中,PowerBuilder具有描述多个数据库连接与检索的能力。
特别是PowerBuilder能从大多数流行的RDBMS中存取数据,且不管数据存放在什么地方;另外,各种应用程序又可以独立于RDBMS,因为PowerBuilder可以使用数据库的标准操作语言SQL(结构化查询语言)进行。
使用PowerBuilder,可以很容易地开发出功能强大的图形界面的访问服务器数据库的应用程序,PowerBuilder提供了建立符合工业标准的应用程序(例如订单登记、会计及制造系统)所需的所有工具。
PowerBuilder应用程序由窗口组成,这些窗口包含用户与之交互的控件。
开发人员可以使用所有标准空间(如按钮、复选框、下拉式列表框或编辑框)以及PowerBuilder提供的特殊的使应用程序更易于开发和使用的控件。
通常人们把PowerBuilder看成是一种开发工具,实际上它比其他工具强得多,是一种强有力的开发环境。
开发人员不仅能用它来开发用户容易使用的各种应用程序还可以通过PowerBuilder修改数据库,利用400多个内部定义函数,可以开发能和其他应用程序进行的各种应用程序。
PowerBuilder正在成为客户/服务器应用开发的标准。
相对于其他任何客户/服务器开发环境,PowerBuilder使开发人员的工作更快、成本更低、质量更高、功能更强。
PowerBuilder为应用开发提供了全面综合性的支持,可以分别概括为如下几点:
事件驱动的应用程序 功能强大的编程语言与函数 面向对象的编程 跨平台开发 开放的数据库连结系统
第二章系统分析
1)系统分析
系统分析阶段的任务就是确定该系统所要解决的问题及其具体要求。
学生成绩管理系统需要完成的主要功能如下:
(1)班级信息的输入和存储,包括班级编号、班级名称、所属专业、入学时间和学制等。
(2)对已经输入的班级信息的修改、查询。
(3)学生基本信息的输入和存储、包括学号、姓名、性别、出生日期、班级等。
(4)学生基本信息的修改和查询。
(5)每学期初各班所开设课程的输入,包括课程名、学期、学时等。
(6)各班所开设课程信息的修改和查询。
(7)学期末输入每个学生的考试成绩。
(8)学生成绩的修改。
(9)查询某个学生。
(10)查询并打印某班某学期所有学生的各科成绩。
(11)查询并打印某班某学期某课成绩。
(12)系统具有用户和密码的管理。
第三章功能分析
通过上面各项功能的分析、分类、综合,按照模块化程序设计的要求,得到它的模块结构:
(1)系统管理它包括密码修改,用户管理,登录控制。
(2)班级信息管理它包括班级信息修改,班级信息查询,班级信息输入。
(2)学生基本信息管理包括学生基本信息查询,学生基本信息修改,学生基本信息输入。
(3)课程信息管理包括课程信息查询修改,课程信息输入。
(4)成绩信息管理包括成绩查询,成绩修改,成绩输入
第四章系统实现
4.1[第4章第1节创建数据库]
在PowerBuilder开发环境中打开数据库画板,使用[ODBODBC]接口建立AdaptiveServerAnywhere8.0(ASA8.0)的数据库,然后建立5个表和1个视图。
分别为“班级”表、“学生基本信息”表、“课程”表、“成绩”表、“用户”表。
各表之间的关系如下图1所示:
图1各表的关联关系
4.2[第4章第1节创建应用对象]
(1)创建新的工作空间。
(2)创建应用对象,应用对象名设为“ylq”。
(3)打开新的对象画板.为应用对象ylq的Open事件编写代码如下:
//Profilestudent
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="ConnectString='DSN=student'"
connect;
ifsqlca.sqlcode<>0then
messagebox("提示","数据库连接失败!
")
else
open(w_denglu)else
open(w_login)
endif
执行此应用时,首先链接数据库“ylq”,成功后打开登录窗口。
4.3[第4章第3节设计系统管理模块
1)设计登录窗口
登录窗口如图2所示:
图2登录窗口
为登录窗口编写脚本。
(1)定义全局变量
stringgs_username,gs_password,gs_admin
分别存储登录用户的姓名、密码和权限。
(2)定义实例变量
intli_n
存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。
(3)登录窗口w_denglu的open事件脚本如下
li_n=3
初始化变量li_n,限制出错次数为3次。
(4)[确定]按钮cb_1的Clicked事件脚本如下。
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_denglu)
else
li_n=li_n-1
ifli_n<>0then
messagebox("提示","用户名或密码错误")
else
messagebox("提示","错误超过3次,自动退出")
halt
endif
endif
endif
(5)[放弃]按钮cb_2的Clicked事件脚本如下.
halt
2)设计密码修改窗口
创建窗口并设置属性
创建密码修改窗口w_xgmm,调整其大小,在窗口上放置3个静态文本控件(st_1,st_2,st_3)、2个命令按钮控件(cb_1,cb_2),设计完后如图3所示:
图3密码修改窗口
为密码窗口编写脚本
(1)[确定]按钮cb_1的Clicked事件脚本如下。
stringls_password
iftrim(sle_1.text)<>gs_passwordthen
messagebox("提示","旧密码错误")
else
iftrim(sle_2.text)=(sle_3.text)then
ls_password=trim(sle_2.text)
UPDATE"users"
SET"password"=:
ls_password
WHERE("users"."name"=:
gs_username)AND
("users"."password"=:
ls_password);
ifsqlca.sqlcode<>0then
messagebox("提示","密码修改不成功")
else
close(parent)
messagebox("提示","密码修改完成")
endif
else
messagebox("提示","两次密码不相同")
endif
endif
(2)[取消]按钮cb_2的Clicked事件脚本如下。
Close(parent)
4.4[第4章第4节设计用户管理的数据窗口和窗口
1)设计数据窗口
创建数据窗口“d_yhgl”,显示风格为“Grid”,数据源类型为“QuickSelect”,布局如图4所示。
图4数据窗口d_yhgl
数据窗口d_yhgl生成的SQLSelect语句为:
SELECT"users"."name","users"."password","users"."admin"FROM"users"
创建窗口并设置属性
创建用户管理窗口w_yhgl,调整其大小,在窗口上放置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1、cb_2、cb_3、cb_4),设计完后的窗口如图5所示:
图5用户管理窗口
为窗口编写脚本
(1)用户管理窗口w_yhgl的Open事件脚本如下。
dw_1.settransobject(sqlca)
dw_1.retrieve()
(2)用户管理窗口w_yhgl的Closequery事件脚本如下。
integerrt
dw_1.accepttext()
ifdw_1.modifiedcount()=0anddw_1.deletedcount()=0then
return0
else
rt=messagebox("提示","添加修改内容未保存,确实退出吗?
",Question!
YesNo!
)
ifrt=1then
return0
endif
endif
return1
(3)数据窗口控件dw_1的Itemechanged事件脚本如下。
cb_3.enabled=true//激活“保存”按钮
(4)[添加]按钮控件cb_1的Clicked事件脚本如下。
integerrow
row=dw_1.insertrow(0)
dw_1.scrolltorow(row)
(5)[删除]按钮控件cb_2的Clicked事件脚本如下。
dw_1.deleterow(0)
cb_3.enabled=true
(6)[保存]按钮控件cb_3的Clicked事件脚本如下。
ifdw_1.update(true,false)=1then
dw_1.resetupdate()
commit;
cb_3.enabled=false
else
rollback;
messagebox("提示","保存数据失败!
")
endif
(7)[退出]按钮控件cb_4的Clicked事件脚本如下。
close(parent)
4.5[第4章第5节设计主窗口和菜单
1)创建菜单对象
菜单结构如图6所示。
菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键(AccessKey),常用的菜单项设置了快捷键(如[退出系统]的快捷键为[Alt+F4],最常用的菜单项在工具条上建立了按钮。
)
下面编写各个菜单项的脚本。
对于这些代码,在对应的窗口没有建立之前先注释掉,在建立之后再去掉注释。
(1)[系统]菜单下[密码修改]菜单的Clicked事件脚本如下。
Open(w_mmxg)
(2)[系统]菜单下[用户管理]菜单的Clicked事件脚本如下。
Open(w_yhgl)
(3)[系统]菜单下[退出系统]菜单的Clicked事件脚本如下。
Close(parentwidow)
(4)[班级管理]菜单下[录入班级信息]菜单的Clicked事件脚本如下。
opensheet(w_banji_shuru,w_main,6,Original!
)
5)[班级管理]菜单下[修改班级信息]菜单的Clicked事件脚本如下。
opensheet(w_banji_xiugai,w_main,6,Original!
)
(6)[班级管理]菜单下[浏览班级信息]菜单的Clicked事件脚本如下。
opensheet(w_banji_liulan,w_main,6,Original!
)
(7)[学生管理]菜单下[录入学生信息]菜单的Clicked事件脚本如下。
opensheet(w_jiben_shuru,w_main,6,Original!
)
(8)[学生管理]菜单下[修改学生信息]菜单的Clicked事件脚本如下。
opensheet(w_jiben_xiugai,w_main,6,Original!
)
(9)[学生管理]菜单下[查询学生信息]菜单的Clicked事件脚本如下。
opensheet(w_jiben_chaxun,w_main,6,Original!
)
(10)[课程管理]菜单下[录入修改开设课程]菜单的Clicked事件脚本如下。
opensheet(w_bjkc_shurnxiugai,w_main,6,Original!
)
(11)[课程管理]菜单下[查询开设课程]菜单的Clicked事件脚本如下。
opensheet(w_bjkc_chaxun,w_main,6,Original!
)
(12)[成绩管理]菜单下[录入修改成绩]菜单的Clicked事件脚本如下。
opensheet(w_xscj_shuru,w_main,6,Original!
)
(13)[成绩管理]菜单下[查询个人成绩]菜单的Clicked事件脚本如下。
opensheet(w_xscj_chaxun,w_main,6,Original!
)
(14)[成绩管理]菜单下[查询班级成绩]菜单的Clicked事件脚本如下。
opensheet(w_xscj_bjcx,w_main,6,Original!
)
(15)[成绩管理]菜单下[查询课程成绩]菜单的Clicked事件脚本如下。
opensheet(w_xscj_kccx,w_main,6,Original!
)
(16)[窗口]菜单下[层叠窗口]菜单的Clicked事件脚本如下。
w_main.arrangesheets(cascade!
)
(17)[帮助]菜单下[关于]菜单的Clicked事件脚本如下。
open(w_about)图6菜单结构
(18)[帮助]菜单下[联机帮助]菜单的Clicked事件脚本如下。
ShowHelp("d:
\xscj\help\xscjhelp.chm",index!
)
4.6[第4章第6节设计班级管理模块
1)设计访问班级信息的数据窗口
设计输入班级信息的数据窗口
创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“QuickSelect”,其布局如图8所示。
图8数据窗口d_banji_shuru
数据窗口d_banji_shuru生成的SQLSelect语句为:
SELECT"banji"."bjbh","banji"."bjmc","banji"."zymc",
"banji"."xz","banji"."rxsj","banji"."rs"
FROM"banji"
设计修改班级信息的数据信息
创建数据窗口d_banji_xiugai,显示风格为“Grid”,数据源类型为“QuickSelect”,其布局如图9所示
图9数据窗口d_banji_xiugai
数据窗口d_banji_xiugai生成的SQLSelect语句为:
SELECT"banji"."bjbh","banji"."bjmc","banji"."zymc",
"banji"."xz","banji"."rxsj","banji"."rs"FROM"banji"
ORDERBY"banji"."bjbh"ASC
2)设计访问班级信息的窗口
设计输入窗口
创建窗口对象w_shuru,调整其大小,放置1个数据窗口控件(dw_1)、8个命令按钮控件(cb_1~cb_8),窗口布局如图10所示。
图10输入窗口
设置完属性后开始编写脚本代码,其中窗口w_shuru的Open事件、命令按钮([添加]、[删除]、[保存]、[退出])的Clicked事件同窗口w_yhgl的相应事件脚本。
其他命令按钮的事件脚本如下:
(1)[|<<]按钮的Clicked事件脚本如下。
dw_1.scrolltorow
(1)
(2)[<]按钮的Clicked事件脚本如下。
dw_1.scrollpriorrow()
(3)[>]按钮的Clicked事件脚本如下。
dw_1.scrollnextrow()
(4)[>>|]按钮的Clicked事件脚本如下。
设计修改窗口
创建窗口对象w_xiugai,调整其大小,放置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1~cb_4),窗口布局如图11所示:
图11修改窗口
窗口和控件的事件脚本与以上输入窗口的对应部分相同。
设计输入班级信息窗口
通过继承输入窗口w_shuru生成输入班级信息窗口w_banji_shuru,将数据控件dw_1的DataObject属性设置为d_banji_shuru,将窗口的Tile属性改为“录入班级信息”,此窗口设计便完成了。
如图12所示:
图12录入班信息级窗口
设计修改班级信息窗口
通过继承输入窗口w_xiugai生成输入班级信息窗口w_banji_xiugai,将数据控件dw_1的DataObject属性设置为d_banji_xiugai,将窗口的Tile属性改为“修改班级信息”,此窗口设计便完成了。
如图13所示:
图13修改班级信息窗口
设计浏览班级信息窗口
创建窗口对象w_banji_liulan,调整其大小,放置一个数据窗口控件dw_1,调整窗口布局如图14所示。
图14浏览班级信息窗口
窗口的Open事件脚本如为:
dw_1.settransobject(sqlca)
dw_1.retrieve()
4.7[第4章第7节设计学生基本信息管理模块
1)设计访问学生基本信息的数据窗口
设计输入学生基本信息的数据窗口
创建数据窗口d_jiben_shuru,显示风格为“Freeform”,数据源类型为“QuickSelect”,其布局如图15所示:
图15数据窗口d_jiben_shuru
数据窗口的d_jiben_shuru生成的SQLSelect语句为:
SELECT"jiben"."xh","jiben"."xm","jiben"."xb","jiben"."csrq","jiben"."jtzz","jiben"."bjbh"FROM"jiben"
设计修