学生成绩管理系统PB课程设计文档格式.docx
- 文档编号:21303274
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:30
- 大小:319.33KB
学生成绩管理系统PB课程设计文档格式.docx
《学生成绩管理系统PB课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统PB课程设计文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
SQLCA.DBParm="
ConnectString='
DSN=liudi;
UID=;
PWD='
"
CONNECT;
ifSQLCA.sqlcode<
>
0then
messagebox("
提示"
"
数据库连接失败!
)
else
open(w_login)
endif
执行此应用时,首先链接数据库“xscj”,成功后打开登录窗口。
三、设计系统管理模块
1)设计登录窗口
登录窗口如图2所示:
图2登录窗口
为登录窗口编写脚本。
(1)定义全局变量
stringgs_username,gs_password,gs_admin
分别存储登录用户的姓名、密码和权限。
(2)定义实例变量
intli_n
存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。
(3)登录窗口w_login的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
用户名和密码不能为空"
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_login)
else
li_n=li_n-1
ifli_n<
messagebox("
用户名或密码错误"
else
错误超过3次,自动退出"
halt
endif
(5)[放弃]按钮cb_2的Clicked事件脚本如下.
halt
2)设计密码修改窗口
创建窗口并设置属性
创建密码修改窗口w_mmxg,调整其大小,在窗口上放置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
旧密码错误"
iftrim(sle_2.text)=(sle_3.text)then
ls_password=trim(sle_2.text)
UPDATE"
SET"
ls_password
gs_username)AND
ls_password);
ifsqlca.sqlcode<
密码修改不成功"
close(parent)
密码修改完成"
endif
messagebox("
两次密码不相同"
endif
(2)[取消]按钮cb_2的Clicked事件脚本如下。
Close(parent)
2)设计用户管理的数据窗口和窗口
设计数据窗口
创建数据窗口“d_yhgl”,显示风格为“Grid”,数据源类型为“QuickSelect”,布局如图4所示。
图4数据窗口d_yhgl
数据窗口d_yhgl生成的SQLSelect语句为:
SELECT"
."
"
创建用户管理窗口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
rt=messagebox("
添加修改内容未保存,确实退出吗?
Question!
YesNo!
ifrt=1then
return0
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
rollback;
保存数据失败!
(7)[退出]按钮控件cb_4的Clicked事件脚本如下。
close(parent)
四、设计主窗口和菜单
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!
2)设计窗口
本次学生成绩管理系统的主窗口界面如图7所示:
图7主窗口界面
创建窗口对象w_main,其Open事件脚本如下。
ifgs_admin='
n'
m_main.m_系统.m_用户管理.enabled=false
其功能是非管理员用户进入系统时关闭【用户管理】菜单项。
五、设计班级管理模块
1)设计访问班级信息的数据窗口
设计输入班级信息的数据窗口
创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“QuickSelect”,其布局如图8所示。
图8数据窗口d_banji_shuru
数据窗口d_banji_shuru生成的SQLSelect语句为:
SELECT"
banji"
bjbh"
bjmc"
zymc"
"
xz"
rxsj"
rs"
设计修改班级信息的数据信息
创建数据窗口d_banji_xiugai,显示风格为“Grid”,数据源类型为“QuickSelect”,其布局如图9所示
图9数据窗口d_banji_xiugai
数据窗口d_banji_xiugai生成的SQLSelect语句为:
ORDERBY"
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)[<
dw_1.scrollpriorrow()
(3)[>
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)
六、设计学生基本信息管理模块
1)设计访问学生基本信息的数据窗口
设计输入学生基本信息的数据窗口
创建数据窗口d_jiben_shuru,显示风格为“Freeform”,数据源类型为“QuickSelect”,其布局如图15所示:
图15数据窗口d_jiben_shuru
数据窗口的d_jiben_shuru生成的SQLSelect语句为:
jiben"
xh"
xm"
xb"
csrq"
jtzz"
设计修改学生基本信息的数据窗口
创建数据窗口d_jiben_xiugai,显示风格为“Grid”,数据源类型为“QuickSelect”,其布局如图16所示:
图16数据窗口d_jiben_xiugai
数据窗口d_jiben_xiugai生成的SQLSeleect语句为:
设计查询学生基本信息的数据窗口
创建数据窗口d_jiben_chaxun,显示风格为“Grid”,数据源类型为“SQLSelect”,其布局如图17所示:
图17数据窗口d_jiben_chaxun
其中,定义3个String型的检索参数变量mxh、mxm、mbj,分别表示学号、姓名、班级,形成带检索参数的数据窗口。
2)设计访问学生基本信息的窗口
设计输入学生基本信息的窗口
通过继承窗口输入窗口w_shuru生成输入学生基本信息窗口w_jiben_shuru,将数据控件dw_1的DataObject属性设置为d_jiben_shuru,将窗口的Title属性改为“录入学生基本信息”,如图18。
图18录入学生基本信息窗口
2.设计输入学生基本信息的窗口
通过继承窗口输入窗口w_xiugai生成修改学生基本信息窗口w_jiben_xiugai,将数据控件dw_1的DataObject属性设置为d_jiben_xiugai,将窗口的Title属性改为“修改学生基本信息”,如图19:
3.设计查询学生基本信息的窗口
要求此窗口中能够根据学生的姓名或学号查询出学生的基本信息,能够根据班级名称查询出该班所有学生的基本信息。
窗口如图20所示:
图19修改学生基本信息窗口
图20查询学生基本信息窗口
[查询]按钮的Open事件脚本如下。
ifddplb_1.text="
orsle_1.text="
查询列和查询内容不能为空!
return
endif
stringstr
str=trim(sle_1.text)
choosecaseddplb_1.text
case"
学号"
dw_1.retrieve(str,"
%"
姓名"
dw_1.retrieve("
str,"
班级名称"
str)
endchoose
代码中根据查询依据的不同,以不同参数方式检索。
七、设计课程管理模块
1)设计访问课程信息的数据窗口
设计输入班级课程信息的数据窗口
创建数据窗口d_bjkc_shuru,显示风格为“Grid”,数据源类型为“QuickSelect”,其布局如图21所示:
图20数据窗口d_bjkc_shuru
数据窗口d_bjkc_shuru生成的SQLSeleect语句为:
bjkc"
xq"
kcmc"
xs"
jsxm"
.
设计查询班级课程信息的数据窗口
创建数据窗口d_bjkc_chaxun,显示风格为“Grid”,数据源类型为“QuickSelect”,其布局如图21所示。
图21数据窗口d_bjkc_chaxunn
其中,定义2个String型检索参数变量mxq、mbjmc,分别表示学期、班级,形成带检索参数的数据窗口。
该数据窗口的修改属性为默认值即“不允许修改”。
数据窗口d_bjkc_chaxun生成的SQLSelect语句为:
FROM"
"
WHERE("
="
)AND
(("
=:
mxq)AND
("
banji"
bjmc"
mbjmc))
2)设计访问课程信息的窗口
设计输入修改班级课程信息的窗口
班级课程的输入和修改都通过此窗口完成,输入修改班级课程信息的窗口布局如图22所示。
图22输入修改班级课程信息的窗口
首先,从祖先窗口w_xiugai继承生成窗口对象w_bjkc_shuruxiugai,调整其大小。
然后将数据窗口控件dw_1的DataObject属性设置为d_bjkc_shuru,此窗口设计即完成。
设计查询班级开设课程的窗口
首先创建一个窗口对象w_bjkc_chaxun,调整大小,在窗口中放置2个静态文本控件(st_1,st_2)、2个下拉列表框控件(ddlb_1,ddlb_2)、1个命令按钮(cb_1)、1个数据窗口控件(dw_1),调整各个控件的位置和大小。
如图23所示:
(1)窗口w_bjkc_chaxun的open事件脚本如下
intli_xq,li_bjmc,n
stringls_xq,ls_bjmc
selectcount(distinctxq)into:
li_xq
图23查询班级开设课程的窗口
from课程;
declarexqcursorcursorfor
selectxqfrom课程groupbyxq;
openxqcursor;
forn=1toli_xq
fetchnextxqcursorinto:
ls_xq;
ddplb_1.additem(ls_xq)
next
closexqcursor;
selectcount(di
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 PB 课程设计