pb学生成绩管理系统_第1页
pb学生成绩管理系统_第2页
pb学生成绩管理系统_第3页
pb学生成绩管理系统_第4页
pb学生成绩管理系统_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生成绩管理系统一、系统分析与设计在任何高等院校,学生的成绩管理都是学校教务管理的重要环节之一。随着学校学生人数的增加,学生成绩管理的任务更加繁重,必须借助现代化的管理工具和手段提高学生成绩管理效率。学生成绩管理系统广泛适用于高校教务管理部门的学生成绩管理。1、系统功能分析系统功能分析阶段的任务就是确定该系统所要解决的问题及其具体要求。需要通过与用户的交流和沟通明确用户对系统的功能要求,最终列出系统可以实现的功能由用户确认。本例中的学生成绩管理系统需要完成的主要功能如下。 班级信息的输入和存储,包括班级编号、班级名称、所属院系、入校时间和学制等。 对已经输入的班级信息的修改、查询。 学生基本信

2、息的输入和存储,包括学号、姓名、性别、出生日期、班级等。 学生基本信息的修改和查询。 每学期初各班所开设课程的输入,包括课程名、学期、学时等。 各班所开设课程信息的修改和查询。 学期末输入每个学生的考试成绩。 学生成绩的修改。 查询某个学生某学期的各科成绩。 查询并打印某班某学期所有学生的各科成绩。 查询并打印某班某学期某科成绩。 系统具有用户和密码的管理。2、系统功能模块设计通过对上述各项功能的分析、分类、综合,按照模块化程序设计的要求,得到如图1所示的功能模块图。二、数据库设计与实现数据库在一个管理信息系统中占有非常重要的地位,数据库结构的好坏将直接影响到应用系统的实现效果和数据操作效率以

3、及能否保证数据的一致性、完成性和安全性。图1 系统功能模块1、数据库设计根据学生成绩管理系统的功能要求,通过分析系统要涉及的相关实体以及要收集、存储和操纵的数据信息,得到如图2所示的系统E-R图。根据系统E-R图得到以下关系模式。班级(班级编号,班级名称,所属院系,学制,入学时间,人数)。学生基本信息(学号,姓名,性别,出生日期,家庭住址,班级编号)。课程(班级编号,学期,课程名称,学时,教师)。成绩(学号,学期,课程名称,成绩)。为了系统的使用安全,要建立用户管理,而用户使用权限分为管理员和一般用户两类,因此需要建立一个存储用户信息的关系。用户(姓名,密码,用户类型)。2、创建数据库根据关系

4、模式,确定需要建立的数据库和表。在PowerBuilder开发环境中打开数据库画板,使用【ODB ODBC】接口建立Adaptive Server Anywhere 9.0(ASA 9.0)的数据库D:xscjdataxscj.db,然后依次建立以下5个表和1个视图。图2 系统E_R图1) “class”表表名:banji 主键:bjbh班级表2) “student”表表名:jiben主键:xh学生表3) “subject”表表名:bjkc主键:(bjbh,xq,kcmc)课程表4) “xscj”表表名:xscj主键:(xh,xq,kcmc)学生成绩表5) “users”表表名:users主键

5、:xm用户表各个表之间通过外键形成如图3所示的关联关系。6) 视图为了访问数据库方便,还建立了1个视图“v_1”,该视图由学生基本信息表和班级表连接而成,对应的SQL语句如下。CREATE VIEW v_1(xh,xm,xb,csrq,bjbh,bjmc,zymc)ASSELECTstudent.xh,student.xm,student.xb,student.csrq,student.bjbh,class.bjmc,class.xbmcFROM student,classWHERE(class.bjbh=student.bjbh);完成数据库和表的创建后,可以在数据库画板中向数据库输入部分数

6、据。其中,“用户”表中必须输入一条记录(“900001”,“123456”,“管理员”),作为进入系统默认的管理员,即账号为“900001”,密码为“123456”,用户类型“管理员”。图3、各表的关联关系三、创建应用对象完成数据库的设计和系统功能设计之后,可以开始各个功能模块的实现。在PowerBuilder中开发应用程序时,就是创建各种对象、为对象设置属性以及编写事件脚本的过程。 创建新的工作空间,工作空间文件路径及名称设为“d:xscjworkplace.pbw”。 创建应用对象,应用对象名设为“xscj”,应用库文件路径及名称设为“d:xscjxscj.pbl”,目标文件路径及名称设为

7、“d:xscjxscj.pbt”。(3) 为应用对象xscj的Open事件编写代码如下。SQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "ConnectString='DSN=student;UID=dba;PWD=sql'"CONNECT;if SQLCA.sqlcode<>0 thenmessagebox("提示","数据库连接失败!")elseopen(w_main)end if四、设计系统管理模块本模块实现用户登

8、录控制、学生能查询自己的个人成绩,教师能录入班级的课程信息,管理员能实现对用户管理的控制以及对一些基本信息的录入。1、设计登录窗口图4 窗口w_load1) 创建窗口并设置属性创建登录窗口w_load,调整其大小,在窗口上放置1个图片控件(p_1)、4个静态文本对象属性取值w_mainTitle登录Window TypeResponse!p_1picture name登录.jpgst_1text账号st_2text密码passwordTRUEst_3text用户类型st_4text欢迎登录学生管理学系统TextColorLink HoveFaceName华文斜体sle_1text"&

9、quot;sle_2text""cb_1text登录cb_2text退出表 1控件(st_1、st_2、st_3、st_4)、2个单行编辑器控件(sle_1、sle_2)、1个下拉列表控件(ddlb_1)、2个命令按钮控件(cb_1、cb_2),各个控件的属性如表1所示,表中未列出的采用默认值 2) 编写脚本 定义全局变量。string gs_username,gs_password,gs_admin分别存储登录用户的账号、密码和用户类型。 定义实例变量。int li_n存储登录时用户输入密码错误的尝试次数,控制在最多3次机会不能是局部变量。 登录窗口w_login的Ope

10、n事件脚本如下。li_n=3初始化变量li_n,限制出错次数为3次。【登录】按钮cb_1的Clicked事件脚本如下。string ls_username,ls_password,ls_adminls_username=trim(sle_1.text)ls_password=trim(sle_2.text)ls_admin=ddlb_1.textif ls_username="" or ls_password="" or ls_admin="" thenmessagebox("提示","账号,密码,用户类

11、型不能为空")elseSELECT "users"."name","users"."password","users"."admin"INTO :gs_username,:gs_password,:gs_adminFROM "users"WHERE ("users"."name" = :ls_username ) AND ("users"."password" = :

12、ls_password )AND("users"."admin"=:ls_admin); if sqlca.sqlcode=0 then open(w_main) close(w_load) else li_n=li_n - 1 if li_n<>0 then messagebox("提示","账号或密码错误") else messagebox("提示","错误超过3次,自动退出") halt end if end if【退出】按钮cb_2的Clicked事件脚本

13、如下。halt/退出程序2、设计密码修改窗口密码修改窗口如图5所示。1) 创建窗口并设置属性创建密码修改窗口w_mmxg,调整其大小,在窗口上放置3个静态文本控件(st_1、st_2、st_3)、3个单行编辑器控件(sle_1、sle_2、sle_3)、2个命令按钮控件(cb_1、cb_2),各个控件的位置和大小参照图5调整。其他需要修改的属性见表2,表中未列出的属性保留其默认值。图5 窗口w_mmxg对象属性取值w_mmxgTitle用户密码设置Window TypeResponse!p_1picture name密码修改.jpgst_1text旧密码st_2text新密码passwordT

14、RUEst_3text重新输入新密码sle_1text""passwordTRUEsle_2text""passwordTRUEsle_3text""passwordTRUEcb_1text确定cb_2text取消表 22) 编写脚本(1)【确定】按钮cb_1的Clicked事件脚本如下。string ls_passwordif trim(sle_1.text)<>gs_password thenmessagebox("提示","旧密码错误")elseif trim(sle_2.te

15、xt)=(sle_3.text) thenls_password=trim(sle_2.text) UPDATE "users" SET"password" = :ls_password WHERE ("users"."name" = :gs_username ) AND ("users"."password" = :gs_password); if sqlca.sqlcode<>0 then messagebox("提示","密码修

16、改不成功")elseclose(parent)messagebox("提示","密码修改完成")end ifelsemessagebox("提示","两次密码不相同")end if end if (2)【取消】按钮cb_2的Clicked事件脚本如下。close(parent)3、设计用户管理的数据窗口和窗口1) 设计数据窗口创建数据窗口“d_yhgl”,显示风格为“Grid”,数据源类型为“Quick Select”,布局如图6所示。数据窗口d_yhgl生成的SQL Select语句为:SELECT&q

17、uot;users"."name","users"."password","users"."admin"FROM"users"图6 数据窗口d_yhgl其中列控件“admin”的编辑风格改为“DropDownListBox”,码表(CodeTable)下图所示。2) 创建窗口并设置属性创建用户管理窗口w_yhgl,调整其大小,在窗口上放置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1、cb_2、cb_3、cb_4),各个控件的位置和大小如图7所示,其对象属

18、性取值w_mmxgTitle用户密码设置Window TypeResponse!p_1picture name用户管理.jpgdw_1DataObjectd_yhglVScrollbarTRUEHScrollbarTRUEcb_1text添加cb_2text删除cb_3text保存EnabledFALSEcb_4text退出表3他需要修改的属性见表3,表中未列出的属性保留其默认值。图7 窗口w_yhgl3) 编写脚本(1) 用户管理窗口w_yhgl的Open事件脚本如下。dw_1.settransobject(sqlca)dw_1.retrieve()(2) 用户管理窗口w_yhgl的Clos

19、equery事件脚本如下。 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的Itemchanged事件脚本如下。cb_3.enabled=true/激活“保存”按钮(4)【添加】按钮控件cb_

20、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("提示","保存数据失败!")en

21、d if(7)【退出】按钮控件cb_4的Clicked事件脚本如下。close(parent)五、设计主窗口和菜单主窗口和菜单是系统工作的主界面。1、创建菜单对象菜单结构如图8所示。菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键(AccessKey),菜单项在工具条上建立了图标按钮。 (1)【系统】菜单下【密码修改】菜单项的Clicked事件脚本如下。open(w_mmxg)(2)【系统】菜单下【用户管理】菜单项的Clicked事件脚本如下。open(w_yhgl)(3)【系统】菜单下【退出系统】菜单项的Clicked事件脚本如下。close(parentwindow)(4)【班级

22、管理】菜单下【录入班级信息】菜单项的Clicked事件脚本如下。opensheet(w_banji_shuru)(5)【班级管理】菜单下【修改班级信息】菜单项的Clicked事件脚本如下。opensheet(w_banji_xiugai)图8 菜单m_main(6)【班级管理】菜单下【浏览班级信息】菜单项的Clicked事件脚本如下。open(w_banji_liulan)(7)【学生管理】菜单下【录入学生信息】菜单项的Clicked事件脚本如下。open(w_student_shuru)(8)【学生管理】菜单下【修改学生信息】菜单项的Clicked事件脚本如下。open(w_student_

23、xiugai)(9)【学生管理】菜单下【查询学生信息】菜单项的Clicked事件脚本如下。open(w_student_chaxun)(10)【课程管理】菜单下【录入/修改开设课程】菜单项的Clicked事件脚本如下。open(w_subject_shuruxiugai)(11)【课程管理】菜单下【查询开设课程信息】菜单项的Clicked事件脚本如下。open(w_subject_chaxun)(12)【成绩管理】菜单下【录入修改成绩】菜单项的Clicked事件脚本如下。open(w_xscj_shuru)(13)【成绩管理】菜单下【查询个人成绩】菜单项的Clicked事件脚本如下。open(

24、w_xscj_grcx)(14)【成绩管理】菜单下【查询班级成绩】菜单项的Clicked事件脚本如下。open(w_xscj_bjcx)(15)【成绩管理】菜单下【查询课程成绩】菜单项的Clicked事件脚本如下。open(w_xscj_kccx)(16)【窗口】菜单下【层叠窗口】菜单项的Clicked事件脚本如下。/w_main.arrangesheets(cascade!) (17)【帮助】菜单下【关于】菜单项的Clicked事件脚本如下。open(w_about)2、设计主窗口 创建主窗口w_main如图9所示,其需要设置的属性如表4所示,表中未列出的属性保留其默认值。图9主窗口w_ma

25、in对象属性取值w_mainTitle学生成绩管理系统Window Typemain!MenuNamem_mainMaxBoxFALSEp_1picture name主界面.jpg表4窗口对象w_main的Open事件脚本如下。if gs_admin="学生" thenm_main.m_系统.m_用户管理.enabled=falsem_main.m_学生管理.enabled=falsem_main.m_班级管理.enabled=falsem_main.m_课程管理.m_录入修改开设课程信息.enabled=falsem_main.m_成绩管理.m_录入修改成绩.enable

26、d=falsem_main.m_成绩管理.m_查询班级成绩.enabled=falsem_main.m_成绩管理.m_查询课程成绩.enabled=falseelseif gs_admin="教师" thenm_main.m_系统.m_用户管理.enabled=false m_main.m_学生管理.enabled=false m_main.m_班级管理.enabled=falseend ifend if其功能是对用户进行权限控制。六、设计班级管理模块本模块实现班级信息的输入、修改和查询。1、设计访问班级信息的数据窗口1) 设计输入班级信息的数据窗口创建数据窗口d_clas

27、s_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”,其布局如图10所示。数据窗口d_class_shuru生成的SQL Select语句为:SELECT"class"."bjbh","class"."bjmc","class"."xbmc","class"."xz","class"."rxsj","class"."rs"

28、 FROM "class"图10 数据窗口d_class_shuru2) 设计修改班级信息的数据窗口创建数据窗口d_class_xiugai,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图11所示。图11 数据窗口d_class_xiugai数据窗口d_class_xiugai生成的SQL Select语句为:SELECT"class"."bjbh","class"."bjmc","class"."xbmc","cl

29、ass"."xz","class"."rxsj","class"."rs" FROM "class"ORDER BY"class"."bjbh"ASC2、设计访问班级信息的窗口首先设计两个通用的输入窗口和修改窗口作为父对象,实现一般输入和修改的功能,窗口中的数据窗口控件不设定具体的数据窗口对象,在继承的窗口对象中再设定。通过继承可以简化程序设计,实现代码重用。1) 设计输入窗口创建窗口对象w_shuru,调整其大小,放置1个数

30、据窗口控件(dw_1)、8个命令按钮控件(cb_1cb_8),窗口布局如图12所示。窗口及其控件的属性设置见表5。图12 窗口w_shuru对象属性取值w_shuruTitleWindow Typeresponse!cb_1text添加cb_2text删除cb_3text保存EnabledFALSEcb_4text退出cb_5text|<<cb_6text<cb_7text>cb_8text>>|dw_1VscrollBarTRUE表5设置完属性后开始编写脚本代码,其中窗口w_shuru的Open事件和Closequery事件、命令按钮(【添加】、【删除】、

31、【保存】和【退出】)的Clicked事件同窗口w_yhgl的相应事件脚本,在此不再重复。其他命令按钮的事件脚本如下。(1)【|<<】按钮的Clicked事件脚本如下。dw_1.scrolltorow(1)(2)【<】按钮的Clicked事件脚本如下。dw_1.scrollpriorrow()(3)【>】按钮的Clicked事件脚本如下。dw_1.scrollnextrow()(4)【>>|】按钮的Clicked事件脚本如下。dw_1.scrolltorow(dw_1.rowcount()2) 设计修改窗口创建窗口对象w_xiugai,调整其大小,放置1个数据

32、窗口控件(dw_1)、4个命令按钮控件(cb_1cb_4),窗口布局如图13所示。窗口及其控件的属性设置见表6,表中未列出的采用默认值。图13 窗口w_xiugai对象属性取值w_shuruTitleWindow Typeresponse!cb_1text添加cb_2text删除cb_3text保存EnabledFALSEcb_4text退出表6窗口和控件的事件脚本与以上输入窗口的对应部分相同。3) 设计输入班级信息窗口通过继承输入窗口w_shuru生成输入班级信息窗口w_class_shuru,将数据控件dw_1的DataObject属性设置为d_class_shuru,将窗口的Title属

33、性改为“录入班级信息”,此窗口设计便完成了。4) 设计修改班级信息窗口通过继承修改窗口w_xiugai生成修改班级信息窗口w_class_xiugai,将数据控件dw_1的DataObject属性设置为d_class_xiugai,将窗口的Title属性改为“修改班级信息”,此窗口设计便完成了。5) 设计浏览班级信息窗口创建窗口对象w_class_liulan,调整其大小,放置1个数据窗口控件dw_1,调整窗口布局如图14所示。设置窗口的属性为Response!,“text”属性为“浏览班级信息”图14窗口w_class_liulan窗口的Open事件脚本如下。dw_1.settransobj

34、ect(sqlca)dw_1.retrieve()七、设计学生基本信息管理模块本模块实现学生基本信息的输入、修改和查询。1、设计访问学生基本信息的数据窗口1) 设计输入学生基本信息的数据窗口创建数据窗口d_student_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”,其布局如图15所示。其中,列控件“xb”的编辑风格改为“RadioButtons”,码表如图15中所示;列控件“bjbh”的编辑风格改为“DropDownDW”,其DataWindow属性设置为“d_banji_xiugai”,Display Column属性和Data Column属性都设

35、置为“bjbh”,Width of DropDown(%)属性设置为“300”,Lines in DropDown属性设置为“6”,VScrollBar属性设置为“True”。数据窗口d_jiben_shuru生成的SQL Select语句为:SELECT"student"."xh","student"."xm","student"."xb","student"."csrq","student"."jtzz

36、","student"."bjbh"FROM"student"图15 数据窗口d_student_shuru2) 设计修改学生基本信息的数据窗口创建数据窗口d_student_xiugai,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图16所示。其中,列控件“xb”的编辑风格改为“DropDownListBox”,列表项为“男”,“女”;列控件“bjbh”的编辑风格改为“DropDownDW”,其DataWindow属性设置为“d_banji_xiugai”,Display Column属性和D

37、ata Column属性都设置为“bjbh”,Width oDropDown(%)属性设置为“300”,Lines in DropDown属性设置为“6”,VScrollBar属性设置为“True”。数据窗口d_student_xiugai生成的SQL Select语句为:SELECT"student"."xh","student"."xm","student"."xb","student"."csrq","student&q

38、uot;."jtzz","student"."bjbh"FROM"student"ORDER BY"student"."xh"ASC图16 数据窗口d_student_xiugai3) 设计查询学生基本信息的数据窗口创建数据窗口d_student_chaxun,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图17所示。其中,定义3个String型检索参数变量mxh、mxm、mbjmc,分别表示学号、姓名、班级,形成带检索参数的数据窗口。该数据窗口的修改

39、属性为默认值即“不允许修改”。数据窗口d_student_chaxun生成的SQL Select语句为: SELECT "student"."xh", "student"."xm", "class"."bjmc", "student"."xb", "student"."csrq", "student"."jtzz" FROM "class"

40、;, "student" WHERE ( "student"."bjbh" = "class"."bjbh" ) and ( ( "student"."xh" = :mxh ) OR ("student"."xm"=:mxm)OR("class"."bjmc"=:mbjbc) 图17 数据窗口d_student_chaxun2、设计访问学生基本信息的窗口1) 设计输入学生基本信

41、息的窗口通过继承输入窗口w_shuru生成输入学生基本信息窗口w_student_shuru,如图18所示,将数据控件dw_1的DataObject属性设置为d_student_shuru,将窗口的Title属性改为“录入学生基本信息”,此窗口设计便完成了。图18 窗口w_student_shuru2) 设计修改学生基本信息的窗口通过继承修改窗口w_xiugai生成修改学生基本信息窗口w_student_xiugai,如图19所示,将数据控件dw_1的DataObject属性设置为d_student_xiugai,将窗口的Title属性改为“修改学生基本信息”,此窗口设计便完成了。图19 窗口

42、w_student_xiugai3) 设计查询学生基本信息的窗口要求此窗口中能够根据学生的姓名或学号查询出学生的基本信息,能够根据班级名称查询出该班所有学生的基本信息。查询学生基本信息窗口如图20所示。图20 w_student_chaxun首先创建一个窗口对象w_student_chaxun,调整其大小,在窗口中放置2个静态文本控件(st_1,st_2)、1个下拉图片列表框控件(ddplb_1)、1个单行编辑器控件(sle_1)、1个命令按钮(cb_1)、1个数据窗口控件(dw_1),调整各个控件的位置和大小。设置窗口及其控件的属性见表7。对象属性取值w_student_chaxunTitl

43、e查询学生信息Window Typeresponse!dw_1DataObjectd_student_chaxunVScrollbarTRUEHScrollbarTRUEst_1text选择检索条件st_2text输入检索的内容ddplb_1items学号,姓名,班级名称sle_1text""cb_1text查询表7窗口的Open事件脚本。dw_1.settransobject(sqlca)【查询】按钮的click事件脚本如下。dw_1.settransobject(sqlca)if ddplb_1.text="" or sle_1.text="

44、;" 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("&q

45、uot;,"",str)end choose代码中根据查询依据的不同,以不同参数方式检索数据。八、设计课程管理模块本模块实现各班开设课程的输入、修改和查询。1、 设计访问课程信息的数据窗口1)、设计输入班级课程信息的数据窗口创建数据窗口d_subject_shuru,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图21所示。图21 数据窗口d_subject_shuru其中,列控件“bjbh”的编辑风格改为“DropDownDW”,其DataWindow属性设置为“d_banji_xiugai”,Display Column属性和Data Col

46、umn属性都设置为“bjbh”,Widthof DropDown(%)属性设置为“300”,Lines in DropDown属性设置为“6”,VScrollBar属性设置为“True”。数据窗口d_subject_shuru生成的SQL Select语句为:SELECT"subject"."bjbh","subject"."xq","subject"."kcmc","subject"."xs","subject".

47、"jsxm"FROM"subject"2) 、设计查询班级课程信息的数据窗口创建数据窗口d_subject_chaxun,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图22所示。其中,定义2个String型检索参数变量mxq、mbjmc,分别表示学期、班级,形成带检索参数的数据窗口。该数据窗口的修改属性为默认值即“不允许修改”。数据窗口d_subject_chaxun生成的SQL Select语句为:SELECT "subject"."kcmc", "subject".

48、"xs", "subject"."jsxm" FROM "class", "subject" WHERE ( "subject"."bjbh" = "class"."bjbh" ) and ( ( "subject"."xq" = :mxq ) AND ("class"."bjmc"=:mbjmc) 图22 数据窗口d_subject_c

49、haxun2、 设计访问课程信息的窗口1)、设计输入修改班级课程信息的窗口班级课程的输入和修改都通过此窗口完成,输入修改班级课程信息的窗口的布局如图23所示。首先,从祖先窗口w_xiugai继承生成窗口对象w_subject_shuruxiugai,调整其大小。然后将数据窗口控件dw_1的DataObject属性设置为d_subject_shuru,此窗口设计即完成。2)、设计查询班级开设课程的窗口要求此窗口能够根据输入的学期和班级查询出该班此学期开设的课程。查询班级开设课程的窗口如图24所示。 首先创建一个窗口对象w_subject_chaxun, 调整其大小,在窗口中放置2个静态文本控件(

50、st_1,st_2)、2个下拉图片列表框控件(ddplb_1,ddplb_2)、1个命令按钮(cb_1)、1个数据窗口控件(dw_1),调整各个控件的位置和大小。设置窗口及其控件的属性见表8,表中未列出的采用默认值。图23 窗口w_subject_shuruxiugai图24 窗口w_subject_chaxun对象属性取值w_student_chaxunTitle查询班级开课信息Window Typeresponse!dw_1DataObjectd_subject_chaxunVScrollbarTRUEHScrollbarTRUEst_1text选择学期st_2text输入班级ddplb_

51、1items学期ddplb_2items班级名称cb_1text查询表8下面书写各个对象的事件脚本。(1)窗口w_subject_chaxun的Open事件脚本如下。dw_1.settransobject(sqlca)/连接事务对象sqlca/定义局部变量int li_xq,li_bjmc,nstring ls_xq,ls_bjmc/动态生成学期下拉列表框的列表项select count(distinct xq)into :li_xqfrom subject;declare xqcursor cursor forselect xq from subject group by xq;open x

52、qcursor;for n=1 to li_xq fetch next xqcursor into :ls_xq; ddplb_1.additem(ls_xq)nextclose xqcursor;/动态生成班级下拉列表框的列表项select count(distinct bjbh) into :li_bjmcfrom subject;declare bjmccursor cursor forselect class.bjmcfrom subject, classwhere subject.bjbh=class.bjbh group by class.bjmc;open bjmccursor;

53、for n=1 to li_bjmc fetch next bjmccursor into :ls_bjmc; ddplb_2.additem(ls_bjmc)nextclose bjmccursor; (2)【查询】按钮的Clicked事件脚本如下。if ddplb_1.text="" or ddplb_1.text="" thenmessagebox("提示","查询内容不能为空!")else string s1,s2 s1=ddplb_1.text s2=ddplb_2.text dw_1.retrieve(

54、s1,s2) end if九、设计成绩管理模块本模块实现成绩的输入、修改和多种方式的查询与打印。1、 设计访问成绩信息的数据窗口1)、设计输入成绩的数据窗口图25 数据窗口d_xscj_shuru创建数据窗口d_xscj_shuru,显示风格为“Grid”,数据源类型为“SQL Select”,其局如图25所示。数据来源于成绩表xscj和视图v-1,其中,学号、学期、课程名称成绩为成绩表xscj的列,姓名是视图v_1的列。选择【Rows】|【Update Properties】命令,打开数据窗口的修改属性对话框,如图26所示,设置数据窗口的修改属性,即只有成绩表xscj的成绩列(xscj_cj

55、)可以在数据窗口中修改,关键字为成绩表xscj的主关键字(xh,xq,kcmc)。然后,单击工具条上的【Tab Orde图标,将列控件xscj_cj的Tab Order值设为10,再单击【Tab Order】图标回到原设计状态。图26 数据窗口d_xscj_shuru的设置数据窗口的检索参数为mxq、mbjmc、mkcmc,分别对应于学期、班级名称和课程名称。数据窗口d_xscj_shuru生成的SQL Select语句为:SELECT "xscj"."xh","v_1"."xm","xscj"

56、."xq","xscj"."kcmc","xscj"."cj" FROM "v_1", "xscj" WHERE ( "v_1"."xh" = "xscj"."xh" ) and ( ( "xscj"."xq" = :mxq ) AND ( "v_1"."bjmc" = :mbjmc ) AND (

57、 "xscj"."kcmc" = :mkcmc ) ) 2)、设计查询学生个人某学期各科成绩的数据窗口创建数据窗口d_xscj_grcx,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图27所示。在【Summary】条中添加一个计算域控件,计算数据窗口中成绩总和。数据窗口的检索参数为mxh、mxq,分别对应于学号和学期。数据窗口d_xscj_grcx生成的SQL Select语句为: SELECT "xscj"."kcmc", "xscj"."cj"

58、FROM "xscj" WHERE ( "xscj"."xh" = :mxh ) AND ( "xscj"."xq" = :mxq ) 图27 数据窗口d_xscj_grcx3)、设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口d_xscj_bjcx,显示风格为“Cross Tab”,数据源类型为“SQL Select”,其布局如图28所示。数据来源于成绩表xscj和视图v_1,其中,学号、课程名称和成绩为成绩表xscj的列,姓名是视图xsbj的列。在【Header1】条中添加2个计算

59、域控件,对应的表达式分别为mbjmc和mxq,3个文本控件,其文本分别为“成绩单”、“班级:”和“学期:”。数据窗口的检索参数为mxq和mbjmc,分别对应于学期和班级名称。修改属性取默认值(不允许修改)。数据窗口d_xscj_bjcx生成的SQL Select语句为: SELECT "xscj"."xh", "v_1"."xm", "xscj"."kcmc", "xscj"."cj" FROM "v_1", &qu

60、ot;xscj" WHERE ( "v_1"."xh" = "xscj"."xh" ) and ( ( "xscj"."xq" = :mxq ) AND ("v_1"."bjmc"=:mbjmc) 4)、设计查询某班级某学期全体学生某科成绩的数据窗口创建数据窗口d_xscj_kccx,显示风格为“Grid”,数据源类型“SQL Select”,其布局如图29所示。数据来源于成绩表xscj和视图v_1,其中,学号和成绩为成绩表x

61、scj的列,姓名是视图xsbj的列。在【Header】条中添加2个计算域控件对应的表达式分别为mbjmc和mkcmc,3个文本控件,其文本分别为“成绩单”、“班级:”和“课程:”。数据窗口的检索参数为mxq、mbjmc和mkcmc,分别对应于学期、班级名称和课程名称。修改属性取默图28 数据窗口d_xscj_bjcx认值(不允许修改)。数据窗口d_bjkc_shuru生成的SQL Select语句为: SELECT "xscj"."xh", "v_1"."xm", "xscj"."cj" FROM "v_1", "xscj" WHERE ( "v_1"."xh" = &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论