学生成绩管理系统文档格式.docx
《学生成绩管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
2.2创建数据库
根据关系模式,确定要建立的数据库和表。
首先,在D盘根目录下建立本实例的工作文件夹“xscj”再在”d:
\xscj”文件夹下建立文件夹”data”,用于存储数据文件。
在PowerBuilder开发环境中打开数据库面板,实用[ODBODBC]接口建立AdaptiveServerAnywhere8.0(ASA8.0)的数据库D:
\xscj\data\xscj.db,然后依次建立以下5个表和1个视图。
CTRL+N新建
SHIFT+F7打开数据面板选择ODBODBC----Utilities---CreateASADatabase
选择table----newtable设置参数如图其他表设置如图
1.“班级”表
表名:
banji
主键:
bjbh
2.“学生基本信息”表
表名:
jiben
主键:
xh
3.“课程”表
bjkc
(bjbh,xq,kcmc)
4.“成绩”表
xscj
(xh,xqkcmc)
5.“用户”表
users
xm
依次建立好主键和外键如图所示
6.视图
为了访问数据库方便,还建立一个视图“XSBJ”,该视图由学生基本信息表和班级表连接而成,对应的SQL语句如下:
CREATEVIEWxsbj(xh,xm,xb,csrq,bjbh,bjmc,zymc)ASselectjiben.xh,jiben.xm,jiben.xb,jiben.csrq,banji.bjbh,banji.bjmc,banji.zymcfromDBA.banji,DBA.jibenwhere(jiben.bjbh=banji.bjbh)
然后保存就可以了。
3创建应用对象
完成数据库的设计和系统功能设计之后,可以开始各个功能模块的实现。
在PowerBuilder中开发应用程序是时,就是创建各种对象、为对象设置属性以及编写事件脚本的过程。
但不是简单的顺序过程,有时需要返回为前面创建的对象补充脚本。
(1)创建新的工作空间,工作空间文件路径及名称设为“d:
\xscj\xscj.pbw”
(2)创建应用对象,应用对象名设置为“app_xscj”,应用库文件路径及名称设为“d:
\xscj\pbl”,目标文件路径及名称设为“d:
\xscj\xscj.pbt”
(3)打开应用对象面板,应用对象app_xscj的Icon属性设置为“d:
\xscj\BOOK.ISO”。
BOOKS.ICO是预先准备的图标文件。
(4)为应用对象app_xscj的open事件编写代码如下。
//ProfileXscj
SQLCA.DBMS="
ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="
Connectstring='
DSN=xscj'
"
CONNECT;
ifSQLCA.sqlcode<
>
0then
messagebox("
提示"
"
数据库连接失败!
)
else
open(w_logion)
endif
执行此应用时,首先链接数据库“xscj”,成功后打开登陆窗口。
4创建应用对象
本模块实现用户登陆控制、用户自己的密码修改和用户管理,其中用户管理包括修改用户信息,添加新用户,删除用户,只有管理员级用户有此权限。
4.1设计管理登陆窗口
登陆窗口如图所示
1.创建窗口并设置属性
创建登陆窗口w_login,调整其大小,在窗口上放置1个图片控件,3个静态文本控件,1个成组框控件,2个单行编辑器控件,2个命令控制按钮控件,各个控件的位置和大小如图所示。
(1)定义全局变量
stringgs_username,gs_password,gs_admin
(2)定义实例变量
intli_n
存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。
必须围实例变量,不能是局部变量。
(3)登陆窗口w_logind的OPEN事件脚本如下:
intli_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
用户名和密码不能为空"
SELECT"
users"
."
name"
"
password"
admin"
INTO:
gs_username,
:
gs_password,
gs_admin
FROM"
WHERE("
=:
ls_username)AND
("
ls_password);
ifSQLCA.sqlcode=0then
open(w_main)
close(w_logion)
else
li_n=li_n-1
ifli_n<
messagebox("
用户名密码错误"
else
错误超过3次,自动退出"
halt
endif
endif
endif
(5)
【放弃】按钮cb_2的clicked事件脚本如下:
Halt
4.2设计密码修改窗口
密码修改窗口如图所示:
创建密码修改窗口w_mmxg,调整其大小,在窗口上放置3个静态文本控件(st_1,st_2,st_2)3个单行编辑器控件(sle_1,sle_2,sle_3)2个命令按钮控件(cb_1,cb_2)各个控件的位置和大小参照图调整。
2.【确定】按钮cb_1的Clicked事件脚本如下:
stringls_password
iftrim(sle_1.text)=trim(sle_3.text)then
旧密码错误"
iftrim(sle_2.text)=trim(sle_3.text)then
ls_password=trim(sle_2.text)
UPDATE"
SET"
ls_password
WHERE("
gs_username)AND
("
gs_password);
ifsqlca.sqlcode<
messagebox("
密码修改不成功"
else
close(parent)
密码修改成功"
两次新密码不相同"
(2)
【取消】按钮cb_2的Clicked事件脚本如下
Close(parent)
4.3设计用户管理的数据窗口和窗口
用户管理窗口如图所示:
1.设计数据窗口
创建数据窗口“d_yhgl”,显示风格围“grid”,数据源类型围”QuickSelect”,发布如图所示。
其中控件“admin”的编辑风格改为“DropDOWNListBox”,码表(CodeTable)如图。
数据窗口d_yhgl生成的SQLSelect语句为:
2.创建窗口并设置属性
创建用户管理窗口w_yhgl,调整其大小,在窗口上位置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1,cb_2,cb_3,cb_4)各个控件的位置和大小参照如图调整。
3.编写脚本
(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
rt=messagebox("
添加修改内容未保存,确定要退出吗?
Question!
YesNo!
ifrt=1then
return0
return1
(3)数据窗口控件dw_1的Itemchanged事件脚本如下
cb_3.enabled=true
【添加】按钮控制cb_1的Clicked事件脚本如下:
integerrow
row=dw_1.insertrow(0)
dw_1.scrolltorow(row)
【删除】按钮控件cb_2的Clicked事件脚本如下:
dw_1.deleterow(0)
(6)
【保存】按钮控件cb_3的Clicked事件脚本如下:
ifdw_1.update(true,false)=1then
dw_1.resetupdate()
commit;
cb_3.enabled=false
rollback;
错误"
保存数据失败!
(7)
【退出】按钮控件cb_4的Clicked
Close(patent)
5设计主窗口和菜单
主窗口和菜单是系统工具的主界面。
5.1菜单结构如图所示。
菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键,常用的菜单项设置了快捷键,最常用的菜单项在工具条上建立了按钮。
(1)
【系统】菜单下【密码修改】菜单项的Clicked事件脚本如下
Open(w_mmxg)
【系统】菜单下【用户管理】菜单项的Clicked事件脚本如下:
Open(w_yhgl)
(3)
【系统】菜单下【退出系统】菜单项的Clicked事件脚本如下:
Close(parentwindow)
【班级管理】菜单【录入班级信息】菜单项Clicked事件脚本如下:
Opensheet(w_banji_shuru,w_main,6,Original!
其功能是在主窗口(w_main)中,以输入班级信息窗口w_banji_shuru的原来大小(Original!
参数指定)打开,并在第6个菜单(即【窗口】菜单)下列出该窗口的名称。
【班级管理】菜单需爱修改【修改班级信息】菜单项的Clicked事件脚本如下:
opensheet(w_xiugai,w_main,6,Original!
)
【班级管理】菜单下【修改班级信息】菜单项的菜单项的Clicked事件脚本如下:
opensheet(w_banji_liulan,w_main,6,Original!
)
【学生管理】菜单下【录入学生信息】菜单项的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_shuruxiugai,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_grcx,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)
(18)
【帮助】菜单下【联机帮助】菜单项的Clicked事件脚本如下:
showhelp("
xscjhelp.chm"
index!
5.2设计主窗口
设计窗口如图所示
创建窗口对象W_main,
窗口对象w_main的Open事件脚本如下
ifgs_admin='
n'
m_main.m_系统s.m_用户管理.enabled=false
其功能是非管理员用户计入系统时关闭【用户管理】菜单项
6设计班级管理模块
本模块实现班级信息的输入、修改和查询。
6.1设计访问班级信息的数据窗口
1.设计输入班级信息的数据窗口
创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“QuickSelect”如图所示。
数据窗口d_banji_shuru生成的SQLSelect语句为:
banji"
bjbh"
bjmc"
zymc"
xz"
rxsj"
rs"
2.设计修改班级信息的数据窗口
创建数据窗口d_banji_xiugai,显示风格为“Grid”数据源类型为“quickselect”
数据窗口d_banjid_banji_xiugai生成的SQLSelect语句为:
ORDERBY"
ASC
6.2设计访问班级信息的窗口
首先设计两个通用的输入窗口和修改窗口作为父对象,实现一般输入和修改的功能,窗口中的数据窗口控件不设定具体的数据窗口对象,在继承的窗口对象中再设定。
通过继承可以简化程序设计,实现代码重用。
1.设计输入窗口
创建窗口对象w_shuru,调整其大小,放置1个数据窗口控件(dw_1)、8个命令按钮控件(cb_1·
cb_8)窗口布局如图所示。
设置完属性后开始编写脚本代码,其中窗口w_shuru的open事件Closequery事件、命令按钮(【添加】、【删除】、【保存】和【退出】)的Clicked事同前面的窗口W_yhgl的相应事件脚本。
【|<
<
】按钮的clicked事件脚本如下:
dw_1.scrolltorow
(1)
【<
dw_1.scrollpriorrow()
【>
dw_1.scrollnextrow()
|】按钮的clicked事件脚本如下:
dw_1.scrolltorow(dw_1.rowcount())
2.设计修改窗口
创建窗口对象w_xiugai,调整大小,放置1个数据窗口控件(dw_1),4个命令控件(cb_1·
cb_4),窗口布局如图所示。
3.设计输入班级信息窗口
通过继承输入窗口w_shuru生成输入班级信息窗口w_banji_shuru,将数据控件dw_1的DataObject属性设置为d_banji_shuru,将窗口的Title属性改为“录入班级信息”,此窗口设计便完成了。
4.设计修改班级信息窗口
通过继承修改窗口w_xiugai生成修改班级信息窗口w_banji_xiugai,将数据控件dw_1的DataObject属性设置为d_banji_xiugai,将窗口的Title属性改为“修改班级信息”,此窗口设计便完成了。
5.设计浏览班级信息窗口
创建窗口对象w_banji_liulan,调整大小,放置1个数据窗口控件dw_1,调整窗口布局如图所示。
窗口的open事件脚本如下:
dw_1.settransobject(sqlca)
7设计学生基本信息管理模块
本模块实现学生基本信息的输入,修改和查询。
7.1设计访问学生基本信息的数据窗口
1.设计输入学生基本信息的数据窗口
创建数据窗口d_jiben_shuru,显示风格为“freeform”,数据源类型为“QuickSelect”,布局如图所示
其中,列控件“xb”的编辑风格为“radiobuttons”,,列表控件“bjbh”的编辑风格改为“dropdowndw”,其datawindow属性设置为“d_banji_xiugai”,displaycolumn属性和Datacolum属性都设置为“bjbh”,widthofdropdown(%)属性设置为“300”,linesindropdown的属性设置为“6”vscrollbar属性设置为“true”。
数据窗口d_jiben_shuru生成的sqlselect语句为:
jiben"
xh"
xm"
xb"
csrq"
jtzz"
2.设计修改学生基本信息的数据窗口
创建数据窗口d_jiben_xiugai,显示风格为“grid”,数据源类型为“quickselect”,布局如图所示:
其中,列控件“xb”的编辑风格改为“dropdownlistbox”,列表项为“男”,“女”;
列表控件“bjbh”的编辑风格改为“dropdowndw”,其datawindow属性设置为“d_jiebn_xiugai”,displaycolumm属性和Datacolum属性都设置为“bjbh”,widthofdropdown(%)属性设置为“300”,linesindropdown属性设置为“6”,vscrollbar属性设置为“true”
数据窗口d_jiben_xiugai生成的sqlselect语句为:
3.设计查询学生基本信息的数据窗口
创建数据窗口d_jiebn_chaxun,显示风格为“grid”,数据源类型为“sqlselect”其中布局如图所示
其中,定义3个string型检索参数变量mxh,mxm,mbj,分别表示学号、姓名班级,形成带检索参数的数据窗口。
该数据窗口的修改属性默认值即“不允许修改”
数据窗口d_jiben_chaxun生成的sqlselect语句为: