PB9.0课程设计学生成绩管理系统_第1页
PB9.0课程设计学生成绩管理系统_第2页
PB9.0课程设计学生成绩管理系统_第3页
PB9.0课程设计学生成绩管理系统_第4页
PB9.0课程设计学生成绩管理系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、学生成绩管理系统1.1系统分析与设计在任何高等学校,学生的成绩管理都是学校教务管理的重要环节之一。随着学校学生人数的增加,学生成绩管理的任务更加繁重,必须借助现代化的管理工具和手段提高学生成绩管理效率。学生成绩管理系统广泛适用于高校教务管理部门的学生成绩管理,其作用和功能也是学生比较熟悉和容易理解的。一个应用系统的开发过程包括分析、设计、实现、调试和发布等阶段。以下是分析说明。1.2系统功能分析系统功能分析阶段的任务就是确定该系统要解决的问题及其具体要求。需要通过与用户的交流和沟通明确对系统的功能要求,最终列出系统可以实现的功能由用户确认。(1)班级信息的输入和储存,包括班级编号、班级名称、所

2、属专业、入校时间和学制等。(2)对已经输入的班级信息和修改、查询。(3)学生基本信息的输入和储存,包括学号、姓名、性别、出生日期、班级等。(4)学生基本信息的修改和查询。(5)每学期初各班所开设课程的输入,包括课程名、学期、学时等。(6)各班所开设课程信息的修改和查询。(7)学期末输入每个学生的考试成绩。(8)学生成绩的修改。(9)查询每个学生某学期的各科成绩。(10)查询并打印某班某学期所有学生的各科成绩。(11)查询并打印某班某学期所有学生的各科成绩。(12)系统具有用户和密码的管理。1.3系统功能模块设计通过通过对上述各项功能的分析、分类、综合,按照模块化程序设计的要求,得到如图1所示的

3、功能模块图。学生成绩管理系统系统管理班级信息管理学生基本信息管理课程信息管理成绩信息管理登陆控制用户管理密码修改班级信息输入班级信息查询班级信息修改学生基本信息输入学生基本信息修改学生基本信息查询课程信息输入课程信息查询修改成绩输入成绩修改成绩查询图12数据库设计与实现数据库在一个管理信息系统中占有非常重要的地位,数据库结构的好坏将直接影响到应用系统操作效率已经能否保证数据的一致性、完成性和安全性。2.1 数据库设计根据学生成绩管理系统的功能要求,通过分析系统要设计的相关实体一集要收集、存储和操纵数据信息,得到如图2所示的系统e-r图。根据系统e-r图得到以下关系模式。·班级(班级编

4、号,班级名称,所属专业,学制,入学时间,人数)·学生基本信息(学号,姓名,性别,出生日期,家庭住址,班级编号)·课程(班级编号,学期,课程名称,学时,教师)·成绩(学号,课程名称,成绩)为了系统的使用安全,要建立用户管理,而使用权限分为管理员和一般用户两类,因此需要建立一个存储用户信息的关系。·用户(姓名,密码,权限)2.2 创建数据库根据关系模式,确定要建立的数据库和表。首先,在d盘根目录下建立本实例的工作文件夹“xscj”再在”d:xscj”文件夹下建立文件夹”data”,用于存储数据文件。在powerbuilder开发环境中打开数据库面板,实用od

5、b odbc接口建立adaptive server anywhere 8.0(asa 8.0)的数据库d:xscjdataxscj.db,然后依次建立以下5个表和1个视图。ctrl+n 新建shift+f7打开数据面板 选择odb odbc-utilities-create asa database选择table-new table设置参数如图 其他表设置如图1.“班级”表表名:banji主键:bjbh2.“学生基本信息”表表名:jiben主键:xh3.“课程”表表名:bjkc主键:(bjbh,xq,kcmc)4.“成绩”表表名:xscj主键:(xh,xqkcmc)5.“用户”表表名:user

6、s主键:xm依次建立好主键和外键如图所示6.视图为了访问数据库方便,还建立一个视图“xsbj”,该视图由学生基本信息表和班级表连接而成,对应的sql语句如下:create view xsbj (xh,xm,xb,csrq,bjbh,bjmc,zymc) as select jiben.xh,jiben.xm,jiben.xb,jiben.csrq,banji.bjbh,banji.bjmc,banji.zymc from dba.banji,dba.jiben where(jiben.bjbh = banji.bjbh)然后保存就可以了。3创建应用对象完成数据库的设计和系统功能设计之后,可以开

7、始各个功能模块的实现。在powerbuilder中开发应用程序是时,就是创建各种对象、为对象设置属性以及编写事件脚本的过程。但不是简单的顺序过程,有时需要返回为前面创建的对象补充脚本。(1)创建新的工作空间,工作空间文件路径及名称设为“d:xscjxscj.pbw”(2)创建应用对象,应用对象名设置为“app_xscj”,应用库文件路径及名称设为“d:xscjpbl”,目标文件路径及名称设为“d:xscjxscj.pbt”(3)打开应用对象面板,应用对象app_xscj的icon属性设置为“d:xscjbook.iso”。books.ico是预先准备的图标文件。(4)为应用对象app_xscj

8、的open事件编写代码如下。/ profile xscjsqlca.dbms = "odbc"sqlca.autocommit = falsesqlca.dbparm = "connectstring='dsn=xscj'"connect;if sqlca.sqlcode<>0 thenmessagebox("提示","数据库连接失败!")elseopen(w_logion)end if执行此应用时,首先链接数据库“xscj”,成功后打开登陆窗口。4创建应用对象本模块实现用户登陆控制、用

9、户自己的密码修改和用户管理,其中用户管理包括修改用户信息,添加新用户,删除用户,只有管理员级用户有此权限。4.1 设计管理登陆窗口登陆窗口如图所示1.创建窗口并设置属性创建登陆窗口w_login,调整其大小,在窗口上放置1个图片控件,3个静态文本控件,1个成组框控件,2个单行编辑器控件,2个命令控制按钮控件,各个控件的位置和大小如图所示。对象属性取值w_logintitle登陆window typeresponse!sle_2passwordtrue2.编写脚本(1)定义全局变量string gs_username , gs_password , gs_admin (2) 定义实例变量int

10、li_n存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。必须围实例变量,不能是局部变量。(3)登陆窗口w_logind 的open 事件脚本如下:int 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("

11、提示","用户名和密码不能为空")else select "users"."name", "users"."password", "users"."admin" into :gs_username, :gs_password, :gs_admin from "users" where ( "users"."name" = :ls_username ) and ( "users&

12、quot;."password" = :ls_password ); if sqlca.sqlcode=0 thenopen(w_main)close(w_logion)elseli_n=li_n - 1if li_n<>0 thenmessagebox("提示","用户名密码错误")elsemessagebox("提示","错误超过3次,自动退出")haltend ifend ifend if(5)【放弃】按钮cb_2的clicked事件脚本如下:halt4.2 设计密码修改窗口密

13、码修改窗口如图所示:1.创建窗口并设置属性创建密码修改窗口w_mmxg,调整其大小,在窗口上放置3个静态文本控件(st_1,st_2,st_2)3个单行编辑器控件(sle_1,sle_2,sle_3)2个命令按钮控件(cb_1,cb_2)各个控件的位置和大小参照图调整。w_mmxgtitle修改密码windows typeresponse!sle_2passwordtruesle_3passwordtrue2.【确定】按钮cb_1的clicked事件脚本如下:string ls_passwordif trim(sle_1.text)=trim(sle_3.text) thenmessagebo

14、x("提示","旧密码错误")elseif trim(sle_2.text)=trim(sle_3.text) thenls_password=trim(sle_2.text)update "users"set "password" = :ls_passwordwhere ( "users"."name" = :gs_username) and( "users"."password" = :gs_password ) ;if sqlca

15、.sqlcode<>0 thenmessagebox("提示","密码修改不成功")elseclose(parent)messagebox("提示","密码修改成功")end ifelsemessagebox("提示","两次新密码不相同")end ifend if(2)【取消】按钮cb_2的clicked事件脚本如下close(parent)4.3设计用户管理的数据窗口和窗口用户管理窗口如图所示:1.设计数据窗口创建数据窗口“d_yhgl”,显示风格围“grid

16、”,数据源类型围”quick select”,发布如图所示。其中控件“admin”的编辑风格改为“dropdownlistbox”,码表(code table)如图。数据窗口d_yhgl生成的sql select语句为: select "users"."name", "users"."password", "users"."admin" from "users" 2.创建窗口并设置属性创建用户管理窗口w_yhgl,调整其大小,在窗口上位置1个数据窗口控件(

17、dw_1)、4个命令按钮控件(cb_1,cb_2,cb_3,cb_4)各个控件的位置和大小参照如图调整。cb_3text保存enabledtrue3.编写脚本(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("

18、提示","添加修改内容未保存,确定要退出吗?",question!,yesno!)if rt=1 thenreturn 0end ifend ifreturn 1(3)数据窗口控件dw_1的itemchanged事件脚本如下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)【保存】按钮

19、控件cb_3的clicked事件脚本如下:if dw_1.update(true,false )=1 thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox("错误","保存数据失败!")end if(7)【退出】按钮控件cb_4的clickedclose(patent)5设计主窗口和菜单主窗口和菜单是系统工具的主界面。5.1菜单结构如图所示。菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键,常用的菜单项设置了快捷键,最常用的菜单项在工具条上建立了按钮。(1)

20、【系统】菜单下【密码修改】菜单项的clicked事件脚本如下open(w_mmxg)(2)【系统】菜单下【用户管理】菜单项的clicked事件脚本如下:open(w_yhgl)(3)【系统】菜单下【退出系统】菜单项的clicked事件脚本如下:close(parentwindow)(4)【班级管理】菜单【录入班级信息】菜单项clicked事件脚本如下:opensheet(w_banji_shuru,w_main,6,original!)其功能是在主窗口(w_main)中,以输入班级信息窗口w_banji_shuru的原来大小(original!参数指定)打开,并在第6个菜单(即【窗口】菜单)下

21、列出该窗口的名称。(5)【班级管理】菜单需爱修改【修改班级信息】菜单项的clicked事件脚本如下:opensheet(w_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事件脚本如下:open

22、sheet(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! )

23、(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_

24、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_maintitle学生成绩管理系统window typemdihelp!menunamem_mainwindow

25、statemaximized窗口对象w_main的open事件脚本如下if gs_admin='n' thenm_main.m_系统s.m_用户管理.enabled=falseend if其功能是非管理员用户计入系统时关闭【用户管理】菜单项6设计班级管理模块本模块实现班级信息的输入、修改和查询。6.1设计访问班级信息的数据窗口1.设计输入班级信息的数据窗口创建数据窗口d_banji_shuru,显示风格为“freeform”,数据源类型为“quick select”如图所示。数据窗口d_banji_shuru生成的sql select语句为: select "banj

26、i"."bjbh", "banji"."bjmc", "banji"."zymc", "banji"."xz", "banji"."rxsj", "banji"."rs" from "banji" 2.设计修改班级信息的数据窗口创建数据窗口d_banji_xiugai,显示风格为“grid”数据源类型为“quick select”数据窗口d_ban

27、jid_banji_xiugai生成的sql select 语句为: select "banji"."bjbh", "banji"."bjmc", "banji"."zymc", "banji"."xz", "banji"."rxsj", "banji"."rs" from "banji" order by "banji&quo

28、t;."bjbh" asc 6.2设计访问班级信息的窗口首先设计两个通用的输入窗口和修改窗口作为父对象,实现一般输入和修改的功能,窗口中的数据窗口控件不设定具体的数据窗口对象,在继承的窗口对象中再设定。通过继承可以简化程序设计,实现代码重用。1.设计输入窗口创建窗口对象w_shuru,调整其大小,放置1个数据窗口控件(dw_1)、8个命令按钮控件(cb_1···cb_8)窗口布局如图所示。w_shurutitle录入window typemain!resizablefalsecenterfalsemaxboxfalseminboxfalse设置

29、完属性后开始编写脚本代码,其中窗口w_shuru的open事件closequery事件、命令按钮(【添加】、【删除】、【保存】和【退出】)的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.rowco

30、unt()2.设计修改窗口创建窗口对象w_xiugai,调整大小,放置1个数据窗口控件(dw_1),4个命令控件(cb_1···cb_4),窗口布局如图所示。w_xiugaititle修改window typemain!resizablefalsecenterfalsemaxboxfalseminboxfalse3设计输入班级信息窗口通过继承输入窗口w_shuru生成输入班级信息窗口w_banji_shuru,将数据控件dw_1的dataobject属性设置为d_banji_shuru,将窗口的title属性改为“录入班级信息”,此窗口设计便完成了。4.设计修改班

31、级信息窗口通过继承修改窗口w_xiugai生成修改班级信息窗口w_banji_xiugai,将数据控件dw_1的dataobject属性设置为d_banji_xiugai,将窗口的title属性改为“修改班级信息”,此窗口设计便完成了。5.设计浏览班级信息窗口创建窗口对象w_banji_liulan,调整大小,放置1个数据窗口控件dw_1,调整窗口布局如图所示。w_banji_liulantitle浏览班级信息window typemain!reizablefalsecenterfalsemaxboxfalseminboxfalsedw_1vscrollbarturedataobjectd_b

32、anji_xiugaienabledfalse窗口的open事件脚本如下:dw_1.settransobject( sqlca)dw_1.retrieve()7设计学生基本信息管理模块本模块实现学生基本信息的输入,修改和查询。7.1设计访问学生基本信息的数据窗口1.设计输入学生基本信息的数据窗口创建数据窗口d_jiben_shuru,显示风格为“freeform”,数据源类型为“quick select”,布局如图所示其中,列控件“xb”的编辑风格为“radiobuttons”,列表控件“bjbh”的编辑风格改为“dropdowndw”,其datawindow属性设置为“d_banji_xiu

33、gai”,display column属性和data colum属性都设置为“bjbh”,width of dropdown(%)属性设置为“300”,lines in dropdown的属性设置为“6”vscrollbar属性设置为“true”。数据窗口d_jiben_shuru生成的sql select 语句为: select "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq&qu

34、ot;, "jiben"."jtzz", "jiben"."bjbh" from "jiben" 2.设计修改学生基本信息的数据窗口创建数据窗口d_jiben_xiugai,显示风格为“grid”,数据源类型为“quick select”,布局如图所示:其中,列控件“xb”的编辑风格改为“dropdownlistbox”,列表项为“男”,“女”;列表控件“bjbh”的编辑风格改为“dropdowndw”,其datawindow属性设置为“d_jiebn_xiugai”,display colum

35、m属性和data colum属性都设置为“bjbh”,width of dropdown(%)属性设置为“300”,lines in dropdown属性设置为“6”,vscrollbar属性设置为“true”数据窗口d_jiben_xiugai生成的sql select语句为: select "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq", "jiben&qu

36、ot;."jtzz", "jiben"."bjbh" from "jiben" 3.设计查询学生基本信息的数据窗口创建数据窗口d_jiebn_chaxun,显示风格为“grid”,数据源类型为“sql select”其中布局如图所示其中,定义3个string型检索参数变量mxh,mxm,mbj,分别表示学号、姓名班级,形成带检索参数的数据窗口。该数据窗口的修改属性默认值即“不允许修改”数据窗口d_jiben_chaxun生成的sql select语句为: select "banji"."

37、;bjmc", "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq", "jiben"."jtzz", "jiben"."bjbh" from "banji", "jiben" where ( "jiben"."bjbh

38、" = "banji"."bjbh" ) and ( ( "jiben"."xh" like :mxh ) and ( "jiben"."xm" like :mxm ) and ( "banji"."bjmc" like :mbj ) ) order by "jiben"."xh" asc 7.2设计访问学生基本信息的窗口1.设计输入学生基本信息的窗口通过继承输入窗口w_shuru生成输

39、入学生基本信息窗口w_jiben_shru,将数据控件dw_1的dataobject属性设置为d_jiben_shuru,将窗口的title属性改为“录入学生基本信息”,此窗口就完成了。2.设计修改学生基本信息的窗口通过继承输入窗口w_xiugai生成输入学生基本信息窗口w_jiben_xiugai,将数据控件dw_1的dataobject属性设置为d_jiben_xiugai,将窗口的title属性改为“修改学生基本信息”,此窗口就完成了。3.设计查询学生基本信息的窗口要求此窗口中能够根据学生的姓名或学号查询出学生的基本信息,能够根据班级名称查询出该班所有学生的基本信息。查询学生基本信息窗口

40、如图所示:首先创建一个窗口对象w_jiben_chaxun,调整大小,在窗口中放置2个静态文本控件(st_1,st_2)、1个下拉表框控件(ddlb_1)、1个单行编辑器控件(sle_1)1个命令按钮(cb_1)、1个数据窗口控件(dw_1)和一个线形控件(ln_1),调整各个控件的位置和大小。【查询】按钮的clicked事件脚本如下:dw_1.settransobject( sqlca)if ddlb_1.text="" or sle_1.text="" thenmessagebox("提示","查询列和查询内容不能空!&

41、quot;)returnend ifstring strstr=trim(sle_1.text)choose case ddlb_1.textcase "学号"dw_1.retrieve(str,"%","%")case "姓名"dw_1.retrieve("%",str,"%")case "班级名称"dw_1.retrieve("%","%",str)end choose代码中根据查询依据的不同,以不同参数方式检索

42、数据。8设计课程管理模块本模块实现各班开设课程的输入、修改和查询。8.1设计访问课程信息的数据窗口1设计输入班级课程信息的数据窗口创建数据窗口d_bjkc_shuru,显示风格为“grid”,数据源类型为“quick select”,如图:其中,列控件“bjbh”的编辑风格改为“dropdowndw”,其datawindow属性设置为“d_banji_xiugai”,display columm属性和data colum属性都设置为“bjbh”,width of dropdown(%)属性设置为“300”,lines in dropdown属性设置为“6”,vscrollbar属性设置为“tr

43、ue”数据窗口d_bjkc_shuru生成的sql select语句为: select "bjkc"."bjbh", "bjkc"."xq", "bjkc"."kcmc", "bjkc"."xs", "bjkc"."jsxm" from "bjkc" 2.设计查询班级课程信息的数据窗口创建数据窗口d_bjkc_chaxun,显示风格为“grid”数据源类型为“sql selec

44、t”,如图所示:其中,定义2个string型检索参数变量mxq,mbjmc,分别表示学期、班级,形成带检索参数的数据窗口。该数据窗口的修改属性为默认值即“不允许修改”。数据窗口d_bjkc_chaxun生成的sql select语句为: select "bjkc"."kcmc", "bjkc"."xs", "bjkc"."jsxm", "banji"."bjmc" from "bjkc", "banji&q

45、uot; where ( "banji"."bjbh" = "bjkc"."bjbh" ) and ( ( "bjkc"."xq" = :mxq ) and ( "banji"."bjmc" = :mbjmc ) ) 8.2设计访问课程信息的窗口1.设计输入修改班级课程信息的窗口班级课程的输入和修改都通过此窗口完成,输入修改禅机课程信息的窗口的布局如图:首先,从祖先窗口w_iugai继承生成窗口对象w_bjkc_shuruxiugai,

46、调整其大小。然后将数据窗口控件dw_1的dataobject属性设置为d_bjkc_shru,此窗口设计完成。2.设计查询班级开设课程的窗口要求此窗口能够根据输入的学期和班级查询出该班此学期开设的课程。查询班级开设课程的窗口如图:首先创建一个窗口对象w_bjkc_chaxun,在窗口中放置2个静态文本控件(st_1,st_2)2个下拉列表框控件(ddlb_1,ddlb_2)、1个命令按钮(cb_1)、1个数据库窗口控件(dw_1),调整各个控件的位置和大小。(1)窗口w_bjkc_chaxun的open事件脚本如下:dw_1.settransobject( sqlca)int li_xq, l

47、i_bjmc, nstringls_xq, ls_bjmcselect 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 bjmc) into :li_bjmcfrom banji;declare

48、 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)【查询】按钮的clicked事件脚本如下:dw_1.retrieve( ddlb_1.text , ddlb_2.text)9设计成绩管理模块本模块实现成绩

49、的输入、修改和多种方式的查询与打印。9.1设计访问成绩信息的数据窗口1.设计输入成绩的数据窗口创建数据窗口d_xscj_shuru,显示风格为“grid”,数据源类型为“sql select”,布局如图所示。数据来源于成绩表xscj和视图xsbj,其中,学号、学期、课程名称和成绩为成绩表xscj的列,姓名是视图xsbj的列。选择【rows】|【update properties】命令,打开数据窗口的修改属性对话框,如图所示,设置数据窗口的修改属性,即只有成绩表(xscj_cj)可以在数据窗口中修改,关键字为成绩表xscj的主关键字(xh,xq,kcmc)。然后,单机工具条上的【tab orde

50、r 】图标,将列控件xscj_cj的tab order值设为10,再单击【tab order】图标回到原设计状态。数据窗口的检索参数为mxq,mbjmc,mkmc,分别对应于学期、班级名称和课程名称。数据窗口d_bjkc_shuru生成的sql select 语句为: select "xscj"."xh", "xsbj"."xm", "xscj"."cj", "xscj"."xq", "xscj"."kcm

51、c" from "xsbj", "xscj" where ( "xsbj"."xh" = "xscj"."xh" ) order by "xscj"."xh" asc 2.设计查询学生个人某学期各科成绩的数据窗口创建数据窗口d_xscj_grcx,显示风格为“grid”,数据源类型为“quick select”,其布局如图所示。在【summary】条中添加一个计算机域控件,计算机数据窗口中成绩总和。数据窗口的检索参数为mxh、

52、mxq,分别对应于学号和学期。数据窗口d_bjkc_shuru,生成的ssql select语句为: select "xscj"."kcmc", "xscj"."cj" from "xscj" where ( "xscj"."xh" = :mxh ) and ( "xscj"."xq" = :mxq ) 3.设计查询班级某班级某学期全体学生各科成绩的数据窗口创建数据窗口d_xscj_bjcx,显示风格为“cross

53、tab”,数据源类型为“sql select”,布局如图所示。数据来源于成绩表xscj和视图xsbj,其中,学号、课程名称和成绩为成绩表xscj的列,姓名是视图xsbj的列。在【header1】条中添加2个计算机域控件,对应的表达式分别为mbjmc和mxq,3个文本控件,其文本分别为“成绩单”、“班级:”和“学期:”。数据窗口的检索参数为mxq和mbjmc,分别对应于学期和班级名称。修改属性取默认值(不允许修改)。数据窗口d_bjkc_shuru生成的sql select语句为: select "xscj"."xh", "xsbj".

54、"xm", "xscj"."kcmc", "xscj"."cj", "xscj"."xq", "xsbj"."bjmc" from "xsbj", "xscj" where ( "xsbj"."xh" = "xscj"."xh" ) and ( ( "xscj"."xq

55、" = :mxq ) and ( "xsbj"."bjmc" = :mbjmc ) ) order by "xscj"."xh" asc 4.设计查询班级某学期全体学生某科成绩的数据窗口创建数据窗口d_xscj_kccx,显示风格为“n-up”,栏数为2,数据源类型为“sql select”,其布局如图所示。数据来源域成绩表xscj和视图xsbj。其中,学号和成绩为成绩表xscj的列,姓名是视图xsbj的列。在【header】条中添加2个计算机域控件对应的表达式分别为mbjmc和mkcmc,3个文本控件,

56、其文本分别为“成绩单”“班级:”和“课程”数据库窗口的检索参数为mxq、mbjmc、和mkcmc,分别对应于学期、班级名称和课程名称。修改属性取默认值。数据窗口d_bjkc_shuru生成的sql select语句为: select "xscj"."xh", "xsbj"."xm", "xscj"."cj" from "xsbj", "xscj" where ( "xsbj"."xh" = &qu

57、ot;xscj"."xh" ) and ( ( "xscj"."xq" = :mxq ) and ( "xsbj"."bjmc" = :mbjmc ) and ( "xscj"."kcmc" = :mkcmc ) ) order by "xscj"."xh" asc 9.2设计王文成绩信息的窗口1.设计输入成绩的窗口输入成绩的窗口如图。首先创建窗口对象w_xscj_shuru,在窗口上放置1个分组框控件,3

58、个静态文本控件,3个下拉列表框控件,3个命令按钮控件和1个数据窗口控件。根据图所示的布局调整数据窗口和控件大小、位置及有关属性。其中,【保存】按钮的enabled属性设置为false;数据窗口控件调整到只显示学号、姓名和成绩3列,vscrollbar属性设为ture,数据窗口对象为d_xscj_shru,3个下拉列表框控件的列表项为空,由代码动态生成。各个窗口和控件的事件脚本如下:(1)窗口的open事件脚本如下dw_1.settransobject( sqlca)intli_xq, li_bjmc, li_kcmc,nstringls_xq, ls_bjmc, ls_kcmcselect c

59、ount(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 rtdw_1.accepttext()if dw_1.modifiedcount() =0 thenreturn 0elsert=messa

温馨提示

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

评论

0/150

提交评论