![PowerBuilder数据库技术课程设计(PB)学生成绩管理系统_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-6/16/676bbbda-05f9-484e-82ab-0b85ba395eac/676bbbda-05f9-484e-82ab-0b85ba395eac1.gif)
![PowerBuilder数据库技术课程设计(PB)学生成绩管理系统_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-6/16/676bbbda-05f9-484e-82ab-0b85ba395eac/676bbbda-05f9-484e-82ab-0b85ba395eac2.gif)
![PowerBuilder数据库技术课程设计(PB)学生成绩管理系统_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-6/16/676bbbda-05f9-484e-82ab-0b85ba395eac/676bbbda-05f9-484e-82ab-0b85ba395eac3.gif)
![PowerBuilder数据库技术课程设计(PB)学生成绩管理系统_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-6/16/676bbbda-05f9-484e-82ab-0b85ba395eac/676bbbda-05f9-484e-82ab-0b85ba395eac4.gif)
![PowerBuilder数据库技术课程设计(PB)学生成绩管理系统_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-6/16/676bbbda-05f9-484e-82ab-0b85ba395eac/676bbbda-05f9-484e-82ab-0b85ba395eac5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆航天职业技术学院课程设计说明书课程名称 数据库技术课程设计(pb) 题 目 学生成绩管理系统 院 系 班 级 09级计算机网络 学生姓名 指导教师 日 期 2010年1月6号 课程设计任务书课程设计名称: 数据库技术课程设计(pb) 学生姓名: 专业班级: 计算机网络 设计题目: 学生成绩管理系统 一、 课程设计目的该课程设计是学习完pb程序设计课程后进行的一次集中实践环节的综合练习。其目的是通过本课程设计使学生对具体问题应用pb程序设计课程中所学的方法与技术,进行需求分析及软件设计的过程,完成一个数据库应用系统的设计全过程,不仅对pb程序设计课程中的所有知识点进行一个全面的复习巩固,更重
2、要的是增强学生解决实际问题的能力。二、 时间和学分 (1)时间:2010-2011学年第一学期1周;(2)学分:20学时,1个学分。三、 设计的地点及进行方式 (1)地点:学院实训室01506;(2)方式:分散实训,上机调试和测试程序及书写课程设计说明书相结合的方式。四、 设计内容、技术条件和要求(1)本环节要求学生根据pb程序设计整个课程的所学内容,自己独立设计完成一个比较复杂的小型管理系统。(2)所设计的小型管理系统要求功能比较完善,应包含输入输出、查询、插入、删除、打印等基本功能。(3)程序内容自己灵活设计,包括规划自己的数据库、设计程序功能及界面设计。(4)数据库中不能少于两个表。(5
3、)程序应功能完善,界面友好,容错性好,操作方便。五、 说明书内容格式要求 从上到下各组成结构:(1)封面及任务书(见样张);(2)成绩评阅页;(3)目录;(4)第1章 概述;第2章 系统分析;第3章 功能分析;第4章 系统实现;第6章 结束语;第7章 参考文献。纸张大小为b5纸。正文为5号宋体。一级标题:第1章( 标题,2号宋体,上下空两行居中,行距为5号宋体单倍行距)。二级标题:1.1第1章 第1节 (标题,3号黑体居中,上下空一行,行距为5号宋体单倍行距)。三级标题:1.1.1 第1章 第1节 第1个问题(标题,4黑左顶,占2行)。六、 完成时间及要求(1)第18周星期五交到课代表处;(2
4、)字数不少于8000字;(3)严禁抄袭,否则按不及格处理。指导教师:二一年十二月三十日目录第一章:概述.5第二章:系统分析.6第三章:功能分析.7第四章:系统实现7第五章:结束语34第七章:参考文献35第一章 概述powerbuilder美国sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于windows3.x、windows95和windowsnt的一个集成化开发工具。它包含一个直观的图形界面和可扩展的象面向对象的编程语言powerscript,提供与当前流行的大型数据库的接口,并通过odbc与库单机数据库相连。在开始学习powerbuilder 之前,首先要弄清楚的
5、问题是什么是powerbuilder,它是用来干什么的,它的特点又是什么。只有知道了powerbuilder的功能和特点所在,我们才能知道什么时候应该选用powerbuilder作为我们的应用程序开发工具。 它支持应用系统同时访问多种数据库,其中既包括oracel,sybase之类的大型数据库,又包括foxpro之类支持odbc接口的小型数据库,powerbuilder是完全可视化的数据库开发工具,它提供了大量的控件,大大加快了项目的开发速度,也使开发者更容易掌握数据库的开发。 它使用的编程语言叫做工powerscripr,它也是一种高级的,结构化的编程语言。powerscript提供了一套完
6、整的嵌入式sql语句,开发人员可以像使用其它语句一样自由地使用sql语言,这样就大大增强了程序操纵和访问数据库的能力。可以说powerbuilder既适合初学者快速学习数据库的开发,又可以让有经验的开发人员开发出功能强大的数据库,是一种适用面非常广的开发工具。 powerbuilder是一个用来进行客户/服务器开发的完全的可视化开发环境。使用powerbuilder,你可以用一种可视的直观的方式来创建应用程序的用户界面和数据库接口。这是一个总的概念,实际上是开发人员使用powerbuilder去开发应用程序,由于所开发的各种应用程序充分利用了图形用户接口(gui)的优点,所以powerbuil
7、der被认为是一个图形工具。 在客户服务器结构的应用中,powerbuilder具有描述多个数据库连接与检索的能力。特别是powerbuilder能从大多数流行的rdbms中存取数据,且不管数据存放在什么地方;另外,各种应用程序又可以独立于rdbms,因为powerbuilder可以使用数据库的标准操作语言sql(结构化查询语言)进行。 使用powerbuilder,可以很容易地开发出功能强大的图形界面的访问服务器数据库的应用程序,powerbuilder提供了建立符合工业标准的应用程序(例如订单登记、会计及制造系统)所需的所有工具。 powerbuilder应用程序由窗口组成,这些窗口包含用
8、户与之交互的控件。开发人员可以使用所有标准空间(如按钮、复选框、下拉式列表框或编辑框)以及powerbuilder提供的特殊的使应用程序更易于开发和使用的控件。 通常人们把powerbuilder看成是一种开发工具,实际上它比其他工具强得多,是一种强有力的开发环境。开发人员不仅能用它来开发用户容易使用的各种应用程序还可以通过powerbuilder修改数据库,利用400多个内部定义函数,可以开发能和其他应用程序进行的各种应用程序。 powerbuilder正在成为客户服务器应用开发的标准。相对于其他任何客户服务器开发环境,powerbuilder使开发人员的工作更快、成本更低、质量更高、功能更
9、强。 powerbuilder为应用开发提供了全面综合性的支持,可以分别概括为如下几点: 事件驱动的应用程序 功能强大的编程语言与函数 面向对象的编程 跨平台开发 开放的数据库连结系统 第二章 系统分析1)系统分析系统分析阶段的任务就是确定该系统所要解决的问题及其具体要求。学生成绩管理系统需要完成的主要功能如下:(1) 班级信息的输入和存储,包括班级编号、班级名称、所属专业、入学时间和学制等。(2) 对已经输入的班级信息的修改、查询。(3) 学生基本信息的输入和存储、包括学号、姓名、性别、出生日期、班级等。(4) 学生基本信息的修改和查询。(5) 每学期初各班所开设课程的输入,包括课程名、学期
10、、学时等。(6) 各班所开设课程信息的修改和查询。(7) 学期末输入每个学生的考试成绩。(8) 学生成绩的修改。(9) 查询某个学生。(10) 查询并打印某班某学期所有学生的各科成绩。(11) 查询并打印某班某学期某课成绩。(12) 系统具有用户和密码的管理。第三章 功能分析通过上面各项功能的分析、分类、综合,按照模块化程序设计的要求,得到它的模块结构:(1)系统管理 它包括密码修改,用户管理,登录控制。(2)班级信息管理 它包括班级信息修改,班级信息查询,班级信息输入。(2)学生基本信息管理 包括学生基本信息查询,学生基本信息修改,学生基本信息输入。(3)课程信息管理 包括课程信息查询修改,
11、课程信息输入。(4)成绩信息管理 包括成绩查询,成绩修改,成绩输入第四章 系统实现4.1第4章 第1节 创建数据库在powerbuilder开发环境中打开数据库画板,使用odb odbc接口建立adaptive server anywhere 8.0(asa 8.0)的数据库,然后建立5个表和1个视图。分别为“班级”表、“学生基本信息”表、“课程”表、“成绩”表、“用户”表。各表之间的关系如下图1所示:图1 各表的关联关系4.2第4章 第1节 创建应用对象(1) 创建新的工作空间。(2) 创建应用对象,应用对象名设为“ylq”。(3) 打开新的对象画板.为应用对象ylq的open事件编写代码如
12、下:/ profile studentsqlca.dbms = odbcsqlca.autocommit = falsesqlca.dbparm = connectstring=dsn=studentconnect;if sqlca.sqlcode0 thenmessagebox(提示,数据库连接失败!)elseopen(w_denglu)elseopen(w_login)end if执行此应用时,首先链接数据库“ylq”,成功后打开登录窗口。4.3第4章 第3节设计系统管理模块1)设计登录窗口登录窗口如图2所示:图2 登录窗口为登录窗口编写脚本。(1)定义全局变量string gs_user
13、name,gs_password,gs_admin 分别存储登录用户的姓名、密码和权限。(2)定义实例变量 int li_n 存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。(3)登录窗口w_denglu的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= thenmessag
14、ebox(提示,用户名和密码不能为空)elseselect ,users.password,users.admininto :gs_username,:gs_password,:gs_adminfrom userswhere ( = :ls_username ) and (users.password = :ls_password ); if sqlca.sqlcode=0 then open(w_main) close(w_denglu) else li_n=li_n - 1 if li_n0 then messagebox(提示,用户名或密码错误)
15、else messagebox(提示,错误超过3次,自动退出) halt end if end ifend if(5)放弃按钮cb_2的clicked事件脚本如下.halt 2) 设计密码修改窗口创建窗口并设置属性创建密码修改窗口w_xgmm,调整其大小,在窗口上放置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(提示
16、,旧密码错误)elseif trim(sle_2.text)=(sle_3.text) thenls_password=trim(sle_2.text)update users set password = :ls_password where ( = :gs_username ) and (users.password = :ls_password); if sqlca.sqlcode0 then messagebox(提示,密码修改不成功)elseclose(parent)messagebox(提示,密码修改完成)end ifelsemessagebox(提示,两次密码
17、不相同)end if end if(2)取消按钮cb_2的clicked事件脚本如下。 close(parent)4.4第4章 第4节设计用户管理的数据窗口和窗口1)设计数据窗口创建数据窗口“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个命令
18、按钮控件( 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!,y
19、esno!)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,fa
20、lse)=1 thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox(提示,保存数据失败!)end if(7)退出按钮控件cb_4的clicked事件脚本如下。close(parent)4.5第4章 第5节设计主窗口和菜单1)创建菜单对象菜单结构如图6所示。菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键(accesskey),常用的菜单项设置了快捷键(如退出系统的快捷键为alt+f4,最常用的菜单项在工具条上建立了按钮。)下面编写各个菜单项的脚本。对于这些代码,在对应的窗口没有建立之前先注释掉,在
21、建立之后再去掉注释。(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)班级管理菜
22、单下浏览班级信息菜单的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!)(
23、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_mai
24、n,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事件
25、脚本如下。showhelp(d:xscjhelpxscjhelp.chm,index!)4.6第4章 第6节设计班级管理模块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 设计修改
26、班级信息的数据信息创建数据窗口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个命令按钮控件
27、(cb_1cb_8),窗口布局如图10所示。图10 输入窗口设置完属性后开始编写脚本代码,其中窗口w_shuru的open事件、命令按钮(添加、删除、保存、退出)的clicked事件同窗口w_yhgl的相应事件脚本。其他命令按钮的事件脚本如下:(1)|按钮的clicked事件脚本如下。dw_1.scrolltorow(1)(2)按钮的clicked事件脚本如下。dw_1.scrollnextrow()(4)|按钮的clicked事件脚本如下。设计修改窗口创建窗口对象w_xiugai,调整其大小,放置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1cb_4),窗口布局如图11所示:图11
28、 修改窗口窗口和控件的事件脚本与以上输入窗口的对应部分相同。设计输入班级信息窗口通过继承输入窗口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
29、 修改班级信息窗口设计浏览班级信息窗口创建窗口对象w_banji_liulan,调整其大小,放置一个数据窗口控件dw_1,调整窗口布局如图14所示。图14 浏览班级信息窗口窗口的open事件脚本如为:dw_1.settransobject(sqlca)dw_1.retrieve()4.7第4章 第7节设计学生基本信息管理模块1)设计访问学生基本信息的数据窗口设计输入学生基本信息的数据窗口创建数据窗口d_jiben_shuru,显示风格为“freeform”,数据源类型为“quick select”,其布局如图15所示:图15 数据窗口d_jiben_shuru数据窗口的d_jiben_shur
30、u生成的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,
31、 jiben.bjbh from jiben order by jiben.xh asc 设计查询学生基本信息的数据窗口 创建数据窗口d_jiben_chaxun,显示风格为“grid”,数据源类型为“sqlselect”,其布局如图17所示:图17 数据窗口d_jiben_chaxun其中,定义3个string型的检索参数变量mxh、mxm、mbj,分别表示学号、姓名、班级,形成带检索参数的数据窗口。2)设计访问学生基本信息的窗口设计输入学生基本信息的窗口 通过继承窗口输入窗口w_shuru生成输入学生基本信息窗口w_jiben_shuru,将数据控件dw_1的dataobject属性设置为
32、 d_jiben_shuru,将窗口的title属性改为“录入学生基本信息”,如图18。图18 录入学生基本信息窗口2设计输入学生基本信息的窗口通过继承窗口输入窗口w_xiugai生成修改学生基本信息窗口w_jiben_xiugai, 将数据控件dw_1的dataobject属性设置为 d_jiben_xiugai,将窗口的title属性改为“修改学生基本信息”,如图19: 3设计查询学生基本信息的窗口 要求此窗口中能够根据学生的姓名或学号查询出学生的基本信息,能够根据班级名称查询出该班所有学生的基本信息。窗口如图20所示:图19 修改学生基本信息窗口图20 查询学生基本信息窗口查询按钮的op
33、en事件脚本如下。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代码中根据查询依据的不同,以不同参数方式检索。4.8第4章 第8节设计
34、课程管理模块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所示。图
35、21 数据窗口d_bjkc_chaxunn其中,定义2个 string型检索参数变量mxq、mbjmc,分别表示学期、班级,形成带检索参数的数据窗口。 该数据窗口的修改属性为默认值即“不允许修改”。数据窗口d_bjkc_chaxun生成的sql select语句为:select bjkc.kcmc, bjkc.xs, bjkc.jsxm, from bjkc , banjiwhere (banji. bjbh= bjkc. bjbh) and (bjkc. xq=:mxq) and(banji . bjmc=:mbjmc)2)设计访问课程信息的窗口设计输入修改班级课程信息的窗口班级课程的输入和
36、修改都通过此窗口完成,输入修改班级课程信息的窗口布局如图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_b
37、jkc_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 xqc
38、ursor;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(
39、ddplb_1.text,ddplb_2.text) 4.9第4章 第9节设计成绩管理模块1)设计访问成绩信息的数据窗口设计输入成绩信息的数据窗口创建数据窗口d_xscj_shuru,显示风格为“grid”,数据源类型为“sql select”,其布局如图19所示。数据来源与成绩表xscj和视图xsjb,其中,学号、学期、课程名称和成绩为成绩表xscj的列,姓名是视图xscj的列。选则roes|updata properties命令,打开数据窗口的修改属性对话框,如图24所示:图24 数据窗口d_xscj_shuru选择rows|update properties命令,打开数据窗口的修改属性对
40、话框,设置数据窗口的修改属性,即只有成绩表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设计查询某班级
41、某学期全体学生各科成绩的数据窗口创建数据窗口d_xscj_bjcx,显示风格为 “cross tab”,数据源类型为 “sql select”,数据来源于成绩表xscj和视图xsbj。如图27:图27 数据窗口d_xscj_bjxc在headeer1条中添加2个计算域控件,对应的表达式分别为mbjmc和mxq,3个文本控件,其文本分别为 “成绩单”、 “班级” 、和 “学期”.数据窗口的检索参数为mxq和mbjmc,分别对应于学期和班级名称,修改属性取默认值(不允许修改)。设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口d_xscj_kccx,显示风格为 “n_up”,拦数为2,数据
42、源类型为 “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 输入成绩的窗口各
43、个窗口和控件的事件脚本如下。(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_xq fetch next xqcursor into :ls_xq; ddlb_1.additem(ls_
44、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_bjmc fetch next bjmccursor into :ls_bjmc; ddlb_2.additem(ls_bjmc)nextclose
45、 bjmccursor;(2)窗口的closequery事件脚本如下。 integer rt dw_1.accepttext()if dw_1.modifiedcount()=0 then return 0else rt=messagebox(提示,添加修改内容未保存,确实退出吗?,question!,yesno!)if rt=1 thenreturn 0 end if end ifreturn 1(3)课程的下拉列表框的getfocus事件脚本如下。int li_kcmc,nstring ls_kcmc,ls_xq,ls_bjmcls_xq=ddlb_1.textls_bjmc=ddlb_2
46、.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)gr
47、oup 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
48、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 intoxscj(xh,xq,kcmc,cj)values(:ls_xh,:ls_xq,ls_kcmc,n
49、ull);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= then messagebox(提示,班级学期和课程不能为空)else dw_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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年珠光双酯项目投资价值分析报告
- 2025至2030年塑料轻便锯架项目投资价值分析报告
- 2025年中国羟基亚乙基二膦酸市场调查研究报告
- 2025年二丙二醇单甲醚项目可行性研究报告
- 2025至2030年长富宫小勺项目投资价值分析报告
- 2025至2030年纯橄榄油项目投资价值分析报告
- 2025至2030年电磁制动电动机项目投资价值分析报告
- 2025年骨状螺钉项目可行性研究报告
- 保险公司2025年度防水施工保险公司验收记录合同范本
- 宠物医院装修合同监管费
- 2025年贵州黔源电力股份有限公司招聘笔试参考题库含答案解析
- 《休闲食品加工技术》 课件 1 休闲食品生产与职业生活
- 春季开学安全第一课
- 十大护理安全隐患
- 2025年新生儿黄疸诊断与治疗研究进展
- 广东大湾区2024-2025学年度高一上学期期末统一测试英语试题(无答案)
- 2025年四川中烟工业限责任公司招聘110人高频重点提升(共500题)附带答案详解
- 课题申报书:数智赋能高职院校思想政治理论课“金课”实践路径研究
- 公司安全生产事故隐患内部报告奖励工作制度
- H3CNE认证考试题库官网2022版
- 感统训练培训手册(适合3-13岁儿童)
评论
0/150
提交评论