• / 30
  • 下载费用:10 金币  

学生成绩管理系统PB课程设计.doc

关 键 词:
学生成绩管理系统PB课程设计.doc
资源描述:
学生成绩管理系统程序分析一 系统分析与设计1)系统功能分析系统功能分析阶段的任务就是确定该系统所要解决的问题及其具体要求。学生成绩管理系统需要完成的主要功能如下:(1) 班级信息的输入和存储,包括班级编号、班级名称、所属专业、入学时间和学制等。(2) 对已经输入的班级信息的修改、查询。(3) 学生基本信息的输入和存储、包括学号、姓名、性别、出生日期、班级等。(4) 学生基本信息的修改和查询。(5) 每学期初各班所开设课程的输入,包括课程名、学期、学时等。(6) 各班所开设课程信息的修改和查询。(7) 学期末输入每个学生的考试成绩。(8) 学生成绩的修改。(9) 查询某个学生。(10) 查询并打印某班某学期所有学生的各科成绩。(11) 查询并打印某班某学期某课成绩。(12) 系统具有用户和密码的管理。2)系统功能模块分析通过上面各项功能的分析、分类、综合,按照模块化程序设计的要求,得到它的模块结构:(1)系统管理 它包括密码修改,用户管理,登录控制。(2)班级信息管理 它包括班级信息修改,班级信息查询,班级信息输入。(2)学生基本信息管理 包括学生基本信息查询,学生基本信息修改,学生基本信息输入。(3)课程信息管理 包括课程信息查询修改,课程信息输入。(4)成绩信息管理 包括成绩查询,成绩修改,成绩输入。二、数据库设计和实现1)创建数据库在 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 = “ODBC“SQLCA.AutoCommit = FalseSQLCA.DBParm = “ConnectString='DSN=liudi;UID=;PWD='“CONNECT;if SQLCA.sqlcode0 thenmessagebox(“提示“,“ 用户名或密码错误“)elsemessagebox(“提示“,“ 错误超过 3 次,自动退出“)haltend ifend ifend if(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 事件脚本如下。string ls_passwordif trim(sle_1.text)0 thenmessagebox(“提示“,“ 密码修改不成功“)elseclose(parent)messagebox(“提示“,“ 密码修改完成“)end ifelsemessagebox(“提示“,“两次密码不相同“)end if end if(2)[取消] 按钮 cb_2 的 Clicked 事件脚本如下。Close(parent)2)设计用户管理的数据窗口和窗口设计数据窗口创建数据窗口“d_yhgl”,显示风格为 “Grid”,数据源类型为“Quick Select”,布局如图 4 所示。图 4 数据窗口 d_yhgl数据窗口 d_yhgl 生成的 SQL Select 语句为: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 事件脚本如下。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.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(“提示“,“ 保存数据失败!“)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)(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 事件脚本如下。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“, “banji“.“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)设计访问班级信息的窗口设计输入窗口创建窗口对象 w_shuru,调整其大小,放置 1 个数据窗口控件 (dw_1)、8 个命令按钮控件(cb_1~cb_8 ) ,窗口布局如图 10 所示。图 10 输入窗口设置完属性后开始编写脚本代码,其中窗口 w_shuru 的 Open 事件、命令按钮([添加]、[ 删除]、[保存]、[ 退出])的 Clicked 事件同窗口w_yhgl 的相应事件脚本。其他命令按钮的事件脚本如下:(1)[|]按钮的 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()六、设计学生基本信息管理模块1)设计访问学生基本信息的数据窗口设计输入学生基本信息的数据窗口创建数据窗口 d_jiben_shuru,显示风格为“Freeform” ,数据源类型为“Quick Select” ,其布局如图 15 所示:图 15 数据窗口 d_jiben_shuru数据窗口的 d_jiben_shuru 生成的 SQL Select 语句为:SELECT “jiben“.“xh“, “jiben“.“xm“, “jiben“.“xb“, “jiben“.“csrq“, “jiben“.“jtzz“, “jiben“.“bjbh“ FROM “jiben“ 设计修改学生基本信息的数据窗口创建数据窗口 d_jiben_xiugai,显示风格为“Grid” ,数据源类型为“Quick Select”,其布局如图 16 所示:图 16 数据窗口 d_jiben_xiugai数据窗口 d_jiben_xiugai 生成的 SQL Seleect 语句为:SELECT “jiben“.“xh“, “jiben“.“xm“, “jiben“.“xb“, “jiben“.“csrq“, “jiben“.“jtzz“, “jiben“.“bjbh“ FROM “jiben“ ORDER BY “jiben“.“xh“ ASC 设计查询学生基本信息的数据窗口创建数据窗口 d_jiben_chaxun,显示风格为“Grid ”,数据源类型为“SQL Select”,其布局如图 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 事件脚本如下。dw_1.settransobject(sqlca)if ddplb_1.text=““ or sle_1.text=““ thenmessagebox(“提示“,“查询列和查询内容不能为空 !“)returnend if string strstr=trim(sle_1.text)choose case ddplb_1.textcase “学号“dw_1.retrieve(str,“%“,“%“)case “姓名“dw_1.retrieve(“%“,str,“%“)case “班级名称“dw_1.retrieve(“%“,“%“,str)end choose代码中根据查询依据的不同,以不同参数方式检索。七、设计课程管理模块1)设计访问课程信息的数据窗口设计输入班级课程信息的数据窗口创建数据窗口 d_bjkc_shuru,显示风格为“Grid” ,数据源类型为“Quick Select”,其布局如图 21 所示:图 20 数据窗口 d_bjkc_shuru数据窗口 d_bjkc_shuru 生成的 SQL Seleect 语句为:SELECT “bjkc“.“bjbh“, “bjkc“.“xq“, “bjkc“.“kcmc“, “bjkc“.“xs“, “bjkc“.“jsxm“ FROM “bjkc“ .设计查询班级课程信息的数据窗口创建数据窗口 d_bjkc_chaxun,显示风格为“Grid ”,数据源类型为“Quick Select”,其布局如图 21 所示。图 21 数据窗口 d_bjkc_chaxunn其中,定义 2 个 String 型检索参数变量 mxq、mbjmc,分别表示学期、班级,形成带检索参数的数据窗口。 该数据窗口的修改属性为默认值即“不允许修改” 。数据窗口 d_bjkc_chaxun 生成的 SQL Select 语句为:SELECT “bjkc“.“kcmc“, “bjkc“.“xs“, “bjkc“.“jsxm“, FROM “bjkc“ , “banji““WHERE (“banji“. “bjbh“= “bjkc“. “bjbh“) AND ((“bjkc“. “xq“=: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 事件脚本如下dw_1.settransobject(sqlca)int li_xq,li_bjmc,nstring ls_xq,ls_bjmcselect count(distinct xq)into :li_xq图 23 查询班级开设课程的窗口from 课程;declare xqcursor cursor forselect xq from 课程 group by xq;open xqcursor;for n=1 to li_xqfetch next xqcursor into :ls_xq;ddplb_1.additem(ls_xq)nextclose xqcursor;select count(distinct bjmc) into :li_bjmcfrom 班级;declare bjmccursor cursor forselect 班级.bjmcfrom 课程, 班级where 课程.bjbh=班级.bjbh group by 班级.bjmc;open bjmccursor;for n=1 to li_bjmcfetch next bjmccursor into :ls_bjmc;ddplb_2.additem(ls_bjmc)nextclose bjmccursor; (2)[查询 ]按钮的 Clicked 事件脚本如下。dw_1.retrieve(ddplb_1.text,ddplb_2.text) 八、设计成绩管理模块1)设计访问成绩信息的数据窗口设计输入成绩信息的数据窗口创建数据窗口 d_xscj_shuru,显示风格为 “Grid”,数据源类型为“SQL Select”,其布局如图 19 所示。数据来源与成绩表 xscj 和视图xsjb,其中,学号、学期、课程名称和成绩为成绩表 xscj 的列,姓名是视图 xscj 的列。选则[Roes]|[Updata Properties]命令,打开数据窗口的修改属性对话框,如图 24 所示:图 24 数据窗口 d_xscj_shuru选择[Rows]|[Update Properties]命令,打开数据窗口的修改属性对话框,设置数据窗口的修改属性,即只有成绩表 xscj 的成绩列可以在数据窗口中修改,关键字为成绩表 xscj 的主关键字(xh,xq,kcmc ) 。然后,单击工具条上的[Tab Order]图标,将列控件 sxcj_cj 的 Tab Order 值设为 10,在单击[Tab Order]图标回到原设计状态。如图 25:图 25 数据窗口 d_xscj_shuru 的修改属性设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口 d_xscj_bjcx,显示风格为 “Cross Tab”,数据源类型为 “SQL Select”,数据来源于成绩表 xscj 和视图 xsbj。如图 26:图 26 数据窗口 d_xscj_grcx设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口 d_xscj_bjcx,显示风格为 “Cross Tab”,数据源类型为 “SQL Select”,数据来源于成绩表 xscj 和视图 xsbj。如图 27:图 27 数据窗口 d_xscj_bjxc在[Headeer[1]]条中添加 2 个计算域控件,对应的表达式分别为mbjmc 和 mxq,3 个文本控件,其文本分别为 “成绩单”、 “班级” 、和 “学期”.数据窗口的检索参数为 mxq 和 mbjmc,分别对应于学期和班级名称,修改属性取默认值(不允许修改) 。设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口 d_xscj_kccx,显示风格为 “N_Up”,拦数为 2,数据源类型为 “SQL Select”,数据来源于成绩表 xscj 和视图 xsbj.如图 28:图 28 数据窗口 d_xsch_kccx在[Header]条中添加 2 个计算域控件对应的表达式分别为 mbcme,3 个文本控件,其文本分别为 “成绩单”、 “班级” 、和 “课程 ”.数据窗口的检索参数为 mxq、 mbjmc、mkcme,分别对应于学期、班级名称和课程名称,修改属性取默认值(不允许修改) 。2)设计访问成绩信息的窗口设计输入成绩的窗口首先创建窗口对象 w_xscj_shuru,在窗口上放置 1 个分组框控件、 3个静态文本控件、3 个下拉列表框控件、3 个命令按钮控件和 1 个数据窗口控件。如图 29:图 29 输入成绩的窗口各个窗口和控件的事件脚本如下。(1)窗口的 open 事件脚本如下。dw_1.settransobject(sqlca)int li_xq,li_bjmc,li_kcmc,nstring ls_xq,ls_bjmc,ls_kcmcselect count(distinct xq)into :li_xqfrom bjkc;declare xqcursor cursor forselect xq from bjkc group by xq;open xqcursor;for n=1 to li_xqfetch next xqcursor into :ls_xq;ddlb_1.additem(ls_xq)nextclose xqcursor;//生成班级下拉列表框的列表项select count(distinct bjbh) into :li_bjmcfrom bjkc;declare bjmccursor cursor forselect banji.bjmcfrom bjkc, banjiwhere bjkc.bjbh=banji.bjbh group by banji.bjmc;open bjmccursor;for n=1 to li_bjmcfetch next bjmccursor into :ls_bjmc;ddlb_2.additem(ls_bjmc)nextclose bjmccursor;(2)窗口的 closequery 事件脚本如下。integer rt dw_1.accepttext()if dw_1.modifiedcount()=0 thenreturn 0elsert=messagebox(“提示“,“添加修改内容未保存,确实退出吗?“,question!,yesno!)if rt=1 thenreturn 0end if end ifreturn 1(3)课程的下拉列表框的 getfocus 事件脚本如下。int li_kcmc,nstring ls_kcmc,ls_xq,ls_bjmcls_xq=ddlb_1.textls_bjmc=ddlb_2.textif not(ls_xq=““or ls_bjmc=““) thenselect count(distinct bjkc.kcmc)into :li_kcmcfrom bjkc,banjiwhere(bjkc.bjbh=banji.bjbh)and (banji.bjmc=:ls_bjmc)and(bjkc.xq=:ls_xq);declare kcmccursor cursor forselect bjkc.kcmcfrom banji,bjkcwhere(bjkc.bjbh=banji.bjbh)and (banji.bjmc=:ls_bjmc)and(bjkc.xq=:ls_xq)group by bjkc.kcmc;ddlb_3.reset()open kcmccursor;for n=1 to li_kcmcfetch next kcmccursor into :ls_kcmc;ddlb_3.additem(ls_kcmc)nextclose kcmccursor;end if(4)确定按钮的 clicked 事件脚本如下。int li_xh,nstring ls_kcmc,ls_xq,ls_bjmc,ls_xhls_xq=ddlb_1.textls_bjmc=ddlb_2.textls_kcmc=ddlb_3.textif ls_xq=““ or ls_bjmc=““ or ls_kcmc=““ thenmessagebox(“提示“,“ 选择项不能空!“)elseselect count(distinct xh)into :li_xhfrom xsbjwhere xsbj.bjmc=:ls_bjmc;declare xhcursor cursor forselect xhfrom xsbjwhere xsbj.bjmc=:ls_bjmc;open xhcursor;for n=1 to li_xhfetch next xhcursor into:ls_xh;insert into“xscj“(“xh“,“xq“,“kcmc“,“cj“)values(:ls_xh,:ls_xq,ls_kcmc,null);nextclose xhcursor;dw_1.retrieve(ls_xq,ls_bjmc,ls_kcmc)end if设计查询学生个人成绩窗口 查询学生个人成绩的窗口如图 30 所示。数据窗口控件连接的数据窗口对象为 d_xscj_grcx(1)查询按钮的 clicked 事件脚本如下dw_1.settransobject(sqlca)if sle_1.text=““or sle_2.text=““ thenmessagebox(“提示“,“班级 学期和课程不能为空“)elsedw_1.retrieve(sle_1.text,sle_2.text)cb_2.enabled=trueend if(2)打印按钮的 clicked 事件脚本如下dw_1.print(true)(3)退出按钮的 clicked 事件脚本如下close(parent)图 30 查询学生个人成绩的窗口设计查询班级成绩的窗口查询班级成绩的窗口如图 31 所示。数据窗口控件的 dataobject 属性为 d_xscj_bjcx。此窗口的 open 事件脚本与输入成绩窗口的 open 事件脚本相同。打印按钮和退出按钮的 clicked 事件脚本与 d_xscj_grcx 中的一样。(1)查询按钮的 clicked 事件脚本如下dw_1.settransobject(sqlca)if ddplb_1.text=““or ddplb_2.text=““ thenmessagebox(“提示“,“班级 学期和课程不能为空“)elsedw_1.retrieve(ddplb_1.text,ddplb_2.text)cb_2.enabled=trueend if图 31 查询班级成绩的窗口设计查询课程成绩的窗口查询课程成绩的窗口如图 32 所示。数据窗口控件的 dataobject 属性为 d_xscj_kccx。此窗口的 open 事件脚本、 “课程”的下拉列框的 getfocus 事件脚本与输入成绩窗口的对应事件脚本相同,打印按钮和退出按钮的 clicked 事件脚本与查询学生个人成绩窗口中的一样。(1)查询按钮的 clicked 事件脚本如下dw_1.settransobject(sqlca)if ddplb_1.text=““or ddplb_2.text=““or ddplb_3.text=““ thenmessagebox(“提示“,“ 班级 学期和课程不能为空“)elsedw_1.retrieve(ddplb_1.text,ddplb_2.text,ddplb_3.text)cb_2.enabled=trueend if图 31 查询课程成绩的窗口九、系统的编译和发布到此为止,系统的实现工作就完成了。在第个模块的实现过程中,对其每个功能要进行仔细的测试和调试,最后对整个应有程序做系统的测试,在测试工作完成后可进作应用程序的编译和发布步骤如下。(1)创建工程对象单击工具条上的 new 图标,打开 new 对话框,在对话框中选择rpoject 标签,再选择 application wizard 图标,单击 ok 按钮,开始工程的向导,露出马最后出现工程对象。(2)编译生成可执行程序单击工程画板工具条上的 deploy 图标,开始编译过程。编译通过后,生成可执行文件 xscj.exe(3)测试分布对可执行程序做系统的测试,最后便可发布了。总 结在本次课程设计中,我更加的了 Power Builde,更加的灵活的操作使用 Power Builde,也深刻的体会到它给我们带来的方便。数据库一般由若干数据表组成,数据库中的数据就存放在数据表中。数据表一般由若干个记录组成,记录由若干个字段构成,字段主要是用来存放数据表中相同类型的一系列值。在数据库管理与操作中,表与表之间都会有各种关联:可能某一个表会用到其他表的字段或内容,或者在查询过程中某一个字段进行排序,所以必须建立主关键字与外关键字,主关键字用来唯一标识一条记录的一个或多个列的组合,用以确保数据库的实体完整性;外关键字是用于与另一个表进行联系的列,用来确保数据库的参照完整性。菜单是在窗口中与用户直接接触的一个重要对象,菜单必须依附于窗口,除了子窗口和响应窗口外,其他类型的窗口都可以带有菜单。窗口是应用程序的图形用户界面的基本元素,其他的应用程序组件往往是通过窗口联系起来的,所以对于一个应用程序来说,创建窗口对象是极其基本的一步工作。继承是面向对象编程的一个重要概念,它是自动共享各个类、子类中的方法和数据的有效机制。作为过程式系统所没有的一个有力机制,继承使得我们可以通过从父类中继承公共方法和数据,进而通过添加新的数据和方法定义一个新的类。在此程序设计中,设计了一些窗口和数据窗口,还有一个菜单对象。数据窗口的显示风格有 Grid、 Freeform、Gross Tab 和 N_Up;数据源类型有 Quick Select,SQL Select 等。在生成数据窗口是,还定义了 String 型检索参数变量来分别表示其中的内容,在数据窗口中还改变了一些控件的编辑风格和属性并在其中添加了计算域控件和文本控件。在设计窗口时,用到了窗口继承的方法,那样既方便又快捷,还节约了工作量。课程设计加强了我们的动手能力,使我更加喜欢 Power Builde。参考文献1. 郑阿奇。PowerBuilder 实用教程(第 2 版) 。北京:电子工业出版社,20042. 孟祥双,李宏李。PowerBuilder 程序设计教程。北京:中国电力出版社,20043. 华栓平,PowerBuilder 程序设计。北京:清华大学出版社,20044. 陈刚,PowerBuilder 案例开发程序设计教程。北京:中国水利水电出版社,20035. 费雅洁,王健。PowerBuilder 程序设计。北京:高等教育出版社,20046. 郭兴成。PowerBuilder9。0 实用教程。北京:科学出版社,2003
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:学生成绩管理系统PB课程设计.doc
链接地址:https://www.weizhuannet.com/p-9839911.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开