学生成绩管理系统PB课程设计(20页).doc
《学生成绩管理系统PB课程设计(20页).doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统PB课程设计(20页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-学生成绩管理系统PB课程设计-第 19 页学生成绩管理系统程序分析一 系统分析与设计1)系统功能分析系统功能分析阶段的任务就是确定该系统所要解决的问题及其具体要求。学生成绩管理系统需要完成的主要功能如下:(1) 班级信息的输入和存储,包括班级编号、班级名称、所属专业、入学时间和学制等。(2) 对已经输入的班级信息的修改、查询。(3) 学生基本信息的输入和存储、包括学号、姓名、性别、出生日期、班级等。(4) 学生基本信息的修改和查询。(5) 每学期初各班所开设课程的输入,包括课程名、学期、学时等。(6) 各班所开设课程信息的修改和查询。(7) 学期末输入每个学生的考试成绩。(8) 学生成绩的修
2、改。(9) 查询某个学生。(10) 查询并打印某班某学期所有学生的各科成绩。(11) 查询并打印某班某学期某课成绩。(12) 系统具有用户和密码的管理。2)系统功能模块分析通过上面各项功能的分析、分类、综合,按照模块化程序设计的要求,得到它的模块结构:(1)系统管理 它包括密码修改,用户管理,登录控制。(2)班级信息管理 它包括班级信息修改,班级信息查询,班级信息输入。(2)学生基本信息管理 包括学生基本信息查询,学生基本信息修改,学生基本信息输入。(3)课程信息管理 包括课程信息查询修改,课程信息输入。(4)成绩信息管理 包括成绩查询,成绩修改,成绩输入。二、数据库设计和实现1)创建数据库在
3、PowerBuilder开发环境中打开数据库画板,使用ODB ODBC接口建立Adaptive Server Anywhere 8.0(ASA 8.0)的数据库,然后建立5个表和1个视图。分别为“班级”表、“学生基本信息”表、“课程”表、“成绩”表、“用户”表。各表之间的关系如下图1所示:图1 各表的关联关系2) 创建应用对象(1) 创建新的工作空间。(2) 创建应用对象,应用对象名设为“app_xscj”。(3) 打开新的对象画板.为应用对象app_xscj的Open事件编写代码如下:/ Profile liudiSQLCA.DBMS = ODBCSQLCA.AutoCommit = Fal
4、seSQLCA.DBParm = ConnectString=DSN=liudi;UID=;PWD=CONNECT;if SQLCA.sqlcode0 thenmessagebox(提示,数据库连接失败!)elseopen(w_login)end if执行此应用时,首先链接数据库“xscj”,成功后打开登录窗口。三、设计系统管理模块1) 设计登录窗口登录窗口如图2所示:图2 登录窗口为登录窗口编写脚本。(1)定义全局变量string gs_username,gs_password,gs_admin 分别存储登录用户的姓名、密码和权限。(2)定义实例变量 int li_n 存储登录时用户输入密码
5、错误的尝试次数,控制在最多3次机会。(3)登录窗口w_login的open事件脚本如下 li_n=3 初始化变量li_n,限制出错次数为3次。(4)确定按钮cb_1的Clicked事件脚本如下。string ls_username,ls_passwordls_username=trim(sle_1.text)ls_password=trim(sle_2.text)if ls_username= or ls_password= thenmessagebox(提示,用户名和密码不能为空)elseSELECT users.name,users.password,users.adminINTO :gs
6、_username,:gs_password,:gs_adminFROM usersWHERE (users.name = :ls_username ) AND (users.password = :ls_password ); if sqlca.sqlcode=0 then open(w_main) close(w_login) else li_n=li_n - 1 if li_n0 then messagebox(提示,用户名或密码错误) else messagebox(提示,错误超过3次,自动退出) halt end if end ifend if(5)放弃按钮cb_2的Clicked事
7、件脚本如下.halt 2) 设计密码修改窗口创建窗口并设置属性创建密码修改窗口w_mmxg,调整其大小,在窗口上放置3个静态文本控件(st_1,st_2,st_3)、2个命令按钮控件(cb_1,cb_2),设计完后如图3所示:图3 密码修改窗口为密码窗口编写脚本(1)确定按钮cb_1的Clicked事件脚本如下。 string ls_passwordif trim(sle_1.text)gs_password thenmessagebox(提示,旧密码错误)elseif trim(sle_2.text)=(sle_3.text) thenls_password=trim(sle_2.text)
8、UPDATE users SET password = :ls_password WHERE (users.name = :gs_username ) AND (users.password = :ls_password); if sqlca.sqlcode0 then messagebox(提示,密码修改不成功)elseclose(parent)messagebox(提示,密码修改完成)end ifelsemessagebox(提示,两次密码不相同)end if end if(2)取消按钮cb_2的Clicked事件脚本如下。 Close(parent)2) 设计用户管理的数据窗口和窗口设计
9、数据窗口创建数据窗口“d_yhgl”,显示风格为“Grid”,数据源类型为“Quick Select”,布局如图4所示。图4 数据窗口d_yhgl数据窗口d_yhgl生成的SQL Select语句为:SELECTusers. 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
10、_1.settransobject( sqlca )dw_1.retrieve()(2)用户管理窗口w_yhgl的Closequery事件脚本如下。integer rtdw_1.accepttext()if dw_1.modifiedcount() =0 and dw_1.deletedcount()=0 thenreturn 0elsert=messagebox(提示,添加修改内容未保存,确实退出吗?,Question!,YesNo!)if rt=1 then return 0end ifend ifreturn 1(3)数据窗口控件dw_1的Itemechanged事件脚本如下。cb_3.
11、enabled=true /激活“保存”按钮(4)添加按钮控件cb_1的Clicked事件脚本如下。integer rowrow=dw_1.insertrow(0)dw_1.scrolltorow(row)(5)删除按钮控件cb_2的Clicked事件脚本如下。dw_1.deleterow(0)cb_3.enabled=true(6)保存按钮控件cb_3的Clicked事件脚本如下。if dw_1.update(true,false)=1 thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox(提示,保存数据
12、失败!)end if(7)退出按钮控件cb_4的Clicked事件脚本如下。close(parent)四、设计主窗口和菜单1)创建菜单对象菜单结构如图6所示。菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键(AccessKey),常用的菜单项设置了快捷键(如退出系统的快捷键为Alt+F4,最常用的菜单项在工具条上建立了按钮。)下面编写各个菜单项的脚本。对于这些代码,在对应的窗口没有建立之前先注释掉,在建立之后再去掉注释。(1)系统菜单下密码修改菜单的Clicked事件脚本如下。Open(w_mmxg)(2)系统菜单下用户管理菜单的Clicked事件脚本如下。Open(w_yhgl)(
13、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)学生管理菜单下录入学生信息菜单的Click
14、ed事件脚本如下。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)课程管理菜单
15、下查询开设课程菜单的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)
16、成绩管理菜单下查询课程成绩菜单的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:xscjhelpxscjhelp.chm,index!)2) 设计窗口本次学生成绩管理系统的主窗口界面如图7所示:图7 主窗口界面创建窗口对象w_main
17、,其Open事件脚本如下。if gs_admin=n thenm_main.m_系统.m_用户管理.enabled=falseend if其功能是非管理员用户进入系统时关闭【用户管理】菜单项。五、设计班级管理模块1) 设计访问班级信息的数据窗口设计输入班级信息的数据窗口创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”,其布局如图8所示。图8 数据窗口d_banji_shuru数据窗口d_banji_shuru生成的SQL Select语句为:SELECT banji.bjbh, banji.bjmc, banji.zymc, ba
18、nji.xz, banji.rxsj, banji.rs FROM banji 设计修改班级信息的数据信息创建数据窗口d_banji_xiugai,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图9所示图9 数据窗口d_banji_xiugai数据窗口d_banji_xiugai生成的SQL Select语句为:SELECT banji.bjbh, banji.bjmc, banji.zymc, banji.xz, banji.rxsj, banji.rs FROM banji ORDER BY banji.bjbh ASC 2)设计访问班级信息的窗口设计输入窗口创
19、建窗口对象w_shuru,调整其大小,放置1个数据窗口控件(dw_1)、8个命令按钮控件(cb_1cb_8),窗口布局如图10所示。图10 输入窗口设置完属性后开始编写脚本代码,其中窗口w_shuru的Open事件、命令按钮(添加、删除、保存、退出)的Clicked事件同窗口w_yhgl的相应事件脚本。其他命令按钮的事件脚本如下:(1)|按钮的Clicked事件脚本如下。dw_1.scrolltorow(1)(2)按钮的Clicked事件脚本如下。extrow()(4)|按钮的Clicked事件脚本如下。设计修改窗口创建窗口对象w_xiugai,调整其大小,放置1个数据窗口控件(dw_1)、4
20、个命令按钮控件(cb_1cb_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属
21、性改为“修改班级信息”,此窗口设计便完成了。如图13所示:图13 修改班级信息窗口设计浏览班级信息窗口创建窗口对象w_banji_liulan,调整其大小,放置一个数据窗口控件dw_1,调整窗口布局如图14所示。图14 浏览班级信息窗口窗口的Open事件脚本如为:dw_1.settransobject(sqlca)dw_1.retrieve()六、设计学生基本信息管理模块1)设计访问学生基本信息的数据窗口设计输入学生基本信息的数据窗口创建数据窗口d_jiben_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”,其布局如图15所示:图15 数据窗口d_jibe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 PB 课程设计 20
限制150内