学校代码: 12904 中图分类:
学生姓名:指导教师:所在学院(系):学科专业:
摘学 号: 密 级: 无
要
吉林农业工程职业技术学院毕业设计(论文)
在日新月异的今天社会经济发展高速增长,计算机已经成为人们不可分割的一部分。为了加强计算机的智能化,人们开发了各种管理系统来解决现实生活的尖端问题。教务管理系统就是管理系统很重要的一部分。教务管理系统的需要是面向所有的教职工和学生,用户数量大,地点分布广。在这里我们使用的是C/S模式系统。
关键词:powerbuilder程序设计 Access数据库 教务管理系统。
目 录
吉林农业工程职业技术学院毕业设计(论文)
第一章 前言 ---------------------------------------------------- 1 第二章 系统流程及库文件 ----------------------------------------- 3 2.1 数据库需求分析 -------------------------------------------- 3 2.2 数据库设计及过程 ------------------------------------------7 第三章 程序开发 ------------------------------------------------- 10 3.1 登录布置---------------------------------------------------10 3.1.1 登录界面---------------------------------------------10 3.1.2 创建系统系统主菜单-----------------------------------13 3.2 基础信息查询-----------------------------------------------13
3.2.1 系部信息查询界面-------------------------------------13 3.2.2 班级信息查询界面-------------------------------------16 3.2.3 学生信息查询界面--------------------------------------17 3.2.4 院校职工信息和课程信息查询界面------------------------19 3.3 教务管理 -------------------------------------------------- 20 3.3.1 学生选课-------------------------------------------20 3.3.2 课表查询-------------------------------------------25 3.3.3 成绩输入-------------------------------------------26 3.4 报表统计 --------------------------------------------------- 29 3.4.1 成绩输出-------------------------------------------29 3.4.2 打印成绩单-----------------------------------------31 3.5 系统维护 --------------------------------------------------- 31 3.5.1 系部信息维护----------------------------------------31 3.5.2 班级信息维护----------------------------------------34 3.5.3 学生信息维护----------------------------------------34 3.5.4 课程信息维护----------------------------------------34 3.5.5 院校职工维护----------------------------------------34 3.5.6 用户登录维护----------------------------------------34 参考文献----------------------------------------------------------38 致谢--------------------------------------------------------------39
吉林农业工程职业技术学院毕业设计(论文)
第一章 前 言
信息管理系统(MIS)是集计算机技术、网络通信技术为一体的信息系统工程,它能够使企业运行的数据更加准确、及时、全面、详实,同时对各种信息进一步的加工,使企业领导层对生产、经营的决策依据更充分,更具有合理性科学性,并创造出更多的发展机会;另外也进一步加强企业的科学化、合理化、制度化、规范化管理,为企业的管理水平跨上新台阶,为企业持续、健康、稳定的发展打下基础。
MIS系统开发过程不仅仅是一个编写应用程序的过程,而是以软件工程的思想为指导,从可行性研究开始,经过系统分析、系统设计、系统实施等主要阶段而进行规范的开发过程。目前国内使用和发展的MIS平台模式大体上分为两种:客户机/服务器(Client/Server,简称C/S)模式和浏览器/服务器(Browser/Server,简称C/S)模式。
MIS系统不仅仅使用在企业中,它可以应用的方面很广,各行各业都可以应用:金融、保险、农业、工业等等。只要是有数据采集整理纪录的方面,都可以应用。
学校作为一个独立的机构同样也不例外。而且学校的各种情况都比较复杂,各个机构都各自独立,又相互联系,这就需要一个比较复杂的MIS系统。学校的MIS系统一般由以下管理部分组成:学生信息管理,教学管理,教务处管理,财务管理,物资管理,后勤管理等。
学校的各个系统又分为不同的管理人员,不同的管理人员所看到的以及所操作管理的部分又不同,这就需要给不同的操作者提供不同的操作管理权限。不同身份的用户所需要的资料也不同,这需要给不同的用户提供不同的操作界面,进行不同的操作。而且不同身份的客户所关心的问题也不同,比如学校的使用者大体分学生、教师、教务处、这就需要在做MIS系统开发之前一定要做好前期的需求分析,中期的系统设计、程序开发,而且也要注意后期的系统维护。 开发工具介绍:
PowerBuilder提供了对目前流行的大多数关系数据库管理系统的支持,由于在PowerBuilder的应用程序中对数据库访问的部分一般采用国际化标准数据库查询语言SQL,使得用PowerBuilder开发的应用程序可以不做修改或者只做少量的修改就可以在不同的后台数据库管理系统上使用。也就是说用PowerBuilder开发的应用程序是独立于服务器上的数据库管理系统的。
和大多数的WINDOWS应用程序一样,PowerBuilder也是事件驱动工作方式。在这种工作方式中,程序的运行没有固定的流程,程序中的代码也是为各种可能发生的事件编写的,当程序开始运行之后,它就可以接受来自系统,用户或者其它应用程序触发的事件,然后执行相应的事件代码。事件驱动的工作方式与面向对象技术是紧密相关的,在PowerBuilder应用程序中,接受发生的事件的往往就是程序界面中的各种可视化对象。
PowerBuilder是一种面向对象的开发工具,各种WINDOWS应用程序中常
第 1 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
见的窗口、菜单、控件等在PowerBuilder中都是一个个的对象。在PowerBuilder中我们还可以创建自己的用户对象。特别要指出的是PowerBuilder提供了对面向对象方法中的各种技术的全面支持,我们可以利用面向对象方法中的对象的封装性、继承性、多态性等特点使得我们开发的应用程序具有极大的可重用性和可扩展性,而这一点正是软件工程中对应用程序所提出的重要目标。
在当前,由于网络技术的发展,许多种不同的操作系统平台在INTERNET网上同时被使用,这对开发的应用程序的跨平台性提出了更高的要求,而PowerBuilder就提供了良好的跨平台性,比如在PowerBuilder中,利用WINDOWS平台开发的各种对象可以方便地应用到UNIX平台中,因为PowerBuilder支持对象的跨平台性。这样使得把应用程序从一个平台移到另一个平台变得并不复杂。
为了给用户提供各个方面的支持,PowerBuilder具有自己的编程语言POWERSCRIPT,这个语言除了提供基本的流程控制语句,还提供了几百个函数来操纵各种对象和提供诸如DDE,OLE等方面的支持。此外我们还可以定义自己的函数,处理特定的事件。学习PowerBuilder时相当一部分的时间就是用来了解和熟悉PowerBuilder提供的各种函数。
PowerBuilder一个很大的特点就是提出了数据窗口对象的概念。数据窗口对象也是PowerBuilder中的一种对象类型,与其它对象不同的是数据窗口对象是专门为了访问后台的数据库服务的,在数据窗口对象中我们定义了数据的来源和数据的显示风格,这样在应用程序中我们就可以把精力完全放在程序的运行流程控制上,而不用关心具体数据的来源,因为我们在数据窗口对象中已经定义好了数据的来源。如果需要使用数据库中不同的数据也只要对数据窗口对象进行修改就可以了。特别要指出的是PowerBuilder在数据窗口对象中提供了丰富的数据显示方式,可以满足各种不同的需要。 在PowerBuilder较新的版本中提供了基础类库PFC,它为应用程序的开发提供了许多可重用的预定义类和对象,利用基本类库PFC可以快速开发出高质量重用性好的应用程序。真正发挥面向对象编程的巨大威力。
最后要指出的是PowerBuilder有三个不同的版本,分别为DESKTOP型,PROFESSIONAL型,和ENTERPRISE型,DESKTOP型是为个人使用的桌面型应用程序,在这里可以利用PowerBuilder内置的数据库管理系统SYBASE SQL ANYWHERE来创建和使用本地数据库,为个人的应用服务;PROFESSIONAL型的PowerBuilder最重要的一点就是提供了对MICROSOFT ODBC(数据库标准连接接口)的支持,在PROFESSIONAL版本中我们就可以使用PowerBuilder的继承,多态等绝大多数特性;在ENTERPRISE版本中最重要的一点就是提供了对开发大型的数据库应用程序的全面的支持,提供了开发大型应用程序的许多辅助的工具,比如C++ CLASS BUILDER等
第 2 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
第二章 系统流程及库文件
2.1教务管理系统需求分析:
将通用教务管理系统所必备的功能归纳如下图所示,其中每个功能都由若干相关联的子功能模块组成,除此之外,系统还应包括信息系统必须具备的通用功能如:权限设置、数据备份与恢复。
教务管理系统 基础数据管理教学计划管理课程管理学籍管理教师管理注册收费管理排课选课管理考分管理毕业管理教材管理系统管理
2.1.1系统数据流程: 如下图所示:
2.1.2 基础数据管理
第 3 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
“基础数据管理”用于维护整个教务管理系统正常运行所需的基础数据集,
以保证教系统有一个统一的标准的基础数据集,便于数据的共享使用,内容包括入学年份、学年学期、院系数据、专业设计、教室情况等。如下图所示:
基础数据管理 基本信息专业代码学期代码学年代码科属部门代码班级代码教室代码学历代码职称代码教学计划名称管理教师代码管理其他基础信息管理
2.1.3 教学计划管理:
“教学计划管理”用于维护学校中各系各专业的课程、课组计划安排信息,作为选课和毕业审查的标准,包括的功能有课程计划登记、课和计划审批、选课情况查询、选课信息审批等。 2.1.4 课程管理:
“课程管理”用于学校所有开设课程的情况,包括课程编号、课程名称、上课学时、开课系、上课教师等相关信息,功能包括课程的增加、删除、查询、统计等。
学籍管理:
“学藉管理”主要包括了高校学籍基本信息的录入、查询修改、打印输出、维护等常用功能、并提供学号、编排、学生照片输入与显示、学籍变动(留级、休学、跳级、转班、转学、退学等)、奖惩登记、毕业情况统计等功能。
教师管理:
“教师管理”用于管理教师相关的信息,提高教学质量,保证教学工作的高效运行,包含的功能模块如下图所示:
教师管理 2.1.5注册收费管理:
“注册收费”用于记录学生新学期的注册情况,如果未注册将记录学生的
第 4 页 共 39 页
教师基本信息 教师任课档案 教师奖惩 档案 教师考评管理 教师课时数统计 教师进修档案 吉林农业工程职业技术学院毕业设计(论文)
未注册原因及未注册的去向。“收费管理”用于记录学生开学初的收费情况,每个学生的收费标准来自学生学籍信息中的收费类别。 2.1.6排课选课管理:
“排课管理”用于根据教学计划、教师资源等,制订每学期的课程表。 2.1.7教务管理:
“教务管理”用于根据课程自动生成本学期的考试地点考试时间监考老师等数据,并对考试的过程和结果进行监控,包含的功能模块如下图所示。
“教务信息发布”用于发布教务信息,如学年,学期,期中(期未)考试,考试时间等,以及其他一些有关事务的事项。、
“考试日程安排”用于管理考试日期,时间,考试科目,考试班级,监考教师/,考场等信息。
“评卷安排”用于对评卷专业,评卷科目,评卷教师,评卷教师,评卷日期,时间等评卷信息进行管理。
“考场情况记录”用于考场情况进行管理,如考试班级,考试科目,应考人数,实到人数,违纪记录情况等。
“成绩录入”用于授课教师输入学生的考试成绩。
“补考成绩录入”用于授课教师输入学生的补考考试成绩。
“补考通知单”用于教务处依据班级,个人,课程进行不及格统计,并打印出学生的补考通知单。
“班级成绩单”用于以班级为单位,打印该班级所开设课程的每个学生的成绩,送教务处存档用。
考务 信 息发 布
考务管理 考试日程安排评卷安排考场情况记录学生成绩录入补考成绩录入补考通知单班级成绩单 2.1.8毕业管理:
“毕业管理”用于对学生毕业进行处理,同时对毕业信息,学位授予,证书授予及校友信息等进行管理,包含的功能模块如下图所示。
“技能管理”用于对学生在校期间获得的资格证书进行存档,有利于提高学生的综合素质。
“实习管理”用于记录学生在校期间的实习情况。
“论文管理”用于记录学生的毕业论文情况,供日后查询或借鉴。
“毕业审核”用于根据学生所在系所,专业的教学计划,选课成绩和学籍来审查来审查该生是否具备毕业资格。
第 5 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
“毕业管理”用于记录学生毕业信息,包括毕业证书号,工作去向等。
2.1.9教材管理:
“教材管理”用于对教材库存,教材计划,教材预订,班级预收款,教材采购及教材销售等工作进行有效管理,包含的功能模块如下图所示。
教材 信息 设开课 教材设教材 计划 教材管理
说明:说了一下需求分析,由于本人掌握基础有限,另外还有本系统的关系复杂性,并没有全部开发,只开发了其中子部分,望老师包涵。
下面把本系统的所有功能作成流程图,让读者明确本系统的所有功能:
库存管理 教 材 采 购 教师领书 教务管理系统 第 6 页 共 39 页 吉林农业工程职业技术学院毕业设计(论文)
系 部 信 息 查 询 基础信息查询教务管理报表统计系统维护退出 班级信息查询
2.2教务管理系统数据库分析:
建立本系统所使用基础数据的关键表,如下图所示:
用户表(在数据库中为youghu ) 数据类型 是否为空 说明 Char(10) Not null 用户名称 Char(10) Not null 用户密码 班级信息表 (在数据库中为j_bjxxb) 字段名 数据类型 是否为空 说明 Bjbk Char(14) Not null 班级编号(主关键字) Nj Char(4) Not Null 年级 Bjmc Char(30) Not null 班级名称 Bjjc Char(16) Not null 班级简称 Rs Int (3,0) Not null 人数 Bj Int(10) null 班级 第 7 页 共 39 页
学生信息查询 课程信息查询 院校职工查询 学生选课 课表查询 成绩输入 成绩输出打印成绩单退出系统班级信息系部信息维护学生信息维护 系统维护 课程信息维护 院校信息查询 用户登录维护 字段名 Yhmc Yhmm 吉林农业工程职业技术学院毕业设计(论文)
学生信息表(在数据库中为j_xsxxb) 字段名 数据类型 是否为空 说明 Xh Char(14) Not null 学号(主关键字) Xm Char(8) Not null 姓名 Bjbh Char(14) Not null 班级编号(外键[班级信息表]) Xb Char(2) Not null 性别 Nj Int(2) Not null 班级 Zzmmbh Int(10) Not null 政治面貌编号(外键[政治面貌表]) Mzbh Int(10) Not null 民族编号(外键[民族代码表]) Jgbh Int(10) Not null 籍贯编号(外键[籍贯代码表]) Sfzh Int(18) Not null 身份证号 Xjbh Int(10) Not null 学籍编号(外键[学籍代码表]) 课程信息表(在数据库中为j_kcxxb) 字段名 数据类型 是否为空 说明 Kcbh Int(10) Not null 课程编号(主关键字) Kcmc Char(40) Not null 课程名称 Kcjc Char(40) Not null 课程间称 Pym Int(10) Not null 拼音码 Bxqkc Char(2) Not null 本学期课程 Js Char(10) Not null 教师 Kkxb Char(30) Not null 开课系别 Xf Int (100) Not null 学分 课程表(在数据库中为j_kcb) 字段名 数据类型 是否为空 说明 Bh Int(10) Not null 编号(主关键字) Kxh Char(14) Not null 课序号 Kcbh Int(10) Not null 课程编号(外键[课程信息表]) Sksjt Int(5) Not null 上课时间天 sksjj Int(2) Not null 上课时间节 Skdd Char(20) Not null 上课地点 选课表(在数据库中为j_xkb) 字段名 数据类型 是否为空 说明 Bh Char(10) Not null 编号(主关键字) Xh Char(14) Not null 学号 Kxh Char(14) Not null 课序号 成绩表(在数据库中为j_cjb) 字段名 `数据类型 是否为空 说明 Bh Char(10) Not null 编号(主关键字) Xh Char(14) Not null 学号(外键[学生信息表]) Kcbh Int(14) Not null 课程编号(课程信息表) Cj Int (2) Not null 成绩 Ksjs Int(2) Not null 考试次数 第 8 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Sfbx Int(2) Not nul 是否补修 Jfbk Char(2) Not null 是否补考 学籍代码表(本数据库叫作j_xjdmb) 字段名 数据类型 是否为空 说明 Xjbh Char(2) Not null 学籍编号(主关键字) Xjdm Char(8) Not null 学籍名称 政治面貌表(在本数据库中为j_zzmmb) 字段名 数据类型 是否为空 说明 Zzmmbh Char(14) Not null 政治面貌编号(主关键字) Zzmm Char(14) Not nul 政治面貌 民族代码表(在本数据库中为j_mzdmb) 字段名 数据类型 是否为空 说明 Mzbh Char(2) Not null 民族编号(主关键字) Mz Char(2) Not null 民族 籍贯代码表(在本数据库中为j_jgdmb) 字段名 Jgbh Jg 数据类型 Char(2) Char(30) 是否为空 Not null Not null 说明 籍贯编号(主关键字) 籍贯 新建access数据库步首先建立表本系统需要的表(如图所示):
第 9 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
第三章 程序开发
3.1 登录窗口布置 3.1.1 登录界面
1.点击开始|程序|Sybase|powerbuilder9.0打开系统主窗体,进入PB程序设计界面,点击file→new命令,打开一个选项卡,建立本软件的工作区间:
2.点击OK按钮,设置 workspace工作区间的名字为:j_jwglxt(教务管理系统的缩写),再点击新建按钮,在target选项卡,选中applicaton按钮,点击OK 并起名为j_jwglxt(与上一个扩展名是不相同的)。
3.此时已建立了工作区间和application ,下面建一个窗体并保存名为j_main即为系统的登录界面,登录界面如下图所示。
4.在数据库连接时,进入登录界面(五福娃_falsh),有时候需要很长的一段时间,所以在这里安排一个flash窗口,使软件使用者在等待连接数据库的枯燥的时间里制作一个动画窗口,使使用者不在等不急,心情快乐舒畅!
(如图为登录界面)
第 10 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
( 如图:建立flash窗口)
用户在登录窗口进入主菜单前的属性值和进入“登录”按钮的clicked!事件代码:
J_main窗体的属性设置: 控件类型 对象名 属性 说明 Window J_mian Title 教务管理系统 Singleline Sle_1 text Null Singleline Sle_2 Text Null Richbox Rb_1 Text 登录 Richbox Rb_1 text 退出 在“登录”的clicked事件中加入以下代码: 单击窗中下方 标签,定入实例变量
Boolean user_auth,login_name 在单击layout标签输入: Open(j_falsh) //打开falsh窗口 // Profile EAS Demo DB V9 SQLCA.DBMS = \"ODBC\"
SQLCA.AutoCommit) = False
SQLCA.DBParm = \"ConnectString='DSN=EAS Demo DB V9;UID=dba;PWD=sql'\" If sqlca.sqlcode<>0 then
Messagebox(“提示”, “连接数据库失败!请重新连接或检查是否正确!”) Return End if Connect;
第 11 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
String pass Int count
Login_time=0
Login_time =login_time+1 If login_time <3 then
Select count(*) into :count from youhu Where yhmc=:sle_1.text; If count<=0 then
Messagebox(“提示”, “用户名不正确,请重新输入!”) Sle_info.textcolor=red //使文本框变成红色 If login_time<3 then
Messagebox(“提示”, “用户名不正确,请重新输入!”) Sle_1.text=“” Sle_2.text=“” Sle_1.setfocus( )
Else
Messagebox(“提示”,你无权使用本软件,谢谢!) Close(parent) End if Else
Select yhmm into:pass from youghu Where yhmc=:sle_1.text; If sle_2.text =pass then Sle_info.textcolor=green User_auth=true
Login_name=sle_1.text Open(j_main) Close(j_falsh) Else
Messagebox(“提示”, “密码不正确,请重试!”) Sle_info.textcolor=red If login_time<3 then
Sle_info.text=“密码不正确,请重新输入!” Close(j_falsh) End if End if End if End if
在“退出”按钮的clicked事件中加入代码: Close(parent)
第 12 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
3.1.2创建系统主菜单:
选择file|new菜单命令,的弹出的对话框中,选中PB object选项卡,然后选择menu对象,单击OK按钮,创建一个菜单名为j_menu,如下图所示:
3.2 基础信息查询
3.2.1 系部信息查询界面:
1.依次打开其他代码打开表单窗口(如下图所示):
第 13 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
在窗体w_xbxx中定义实例变量:
Integer il_row,,il_rowcount //当前行和记录总数 String is_sql, //数据窗口的dw_1原始语法
2.在窗体中打开open事件并加入以下代码,将数据窗口连接到数据库,并得到数据窗口dw_1的原始语法,为后面查询作准备。
(如图为创建系部信息查询的数据窗口) Dw_1.settransobject(sqlca) //连接数据库
Is_sql=dw_1.getsqlselect //得到数据窗口原始语法 3.在dw_1中clicked事件中加入代码(下面的代码的作用是控制在数据数据窗口每一次选中的都是行):
if row=0 then return
if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else
dw_1.selectrow(row,false) end if return 1
在查询命令按钮单击(clicked)事件加入代码:
String ls_select,ls_xbbh Integer ls_xbmc
Ls_xbbh=trim(sle_1.text) Ls_xbmc=trim(sle_2.text) Ls_select =””
If not isnull(ls_xbbh) and sl_xbbh <>”” then
第 14 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Ls_xbbh=”%”+sl_xbbh+”%”
Ls_select=ls_select+”系部编号 like‟”+ls_xbbh+”‟” End if
If not isnull(sl_xhmc) and ls_xbmc<>”” then Ls_xbmc=”%”+ls_xbmc+”%”
Ls_select=ls_select+”系部名称 like‟”+ls_xbmc+”‟” End if
If ls_select <> “” then
Ls_select=is_sql+”where” +ls_select Else
Ls_select=is_sql End if
Dw_1.setsqlselect(ls_select) Il_row=dw_1.retrieve() 3.2.2.班级信息查询: 如下图所示图片:
1.在选择file|new菜单命令,建立一个新的窗体,保存名为j_bjxx,在窗体的open事件中加入以下代码:
Dw_1.settransobject(sqlca) //连接数据库
Is_sql=dw_1.getsqlselect //得到数据窗口原始语法
2 在dw_1中clicked事件中加入代码: if row=0 then return
第 15 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else
dw_1.selectrow(row,false) end if
return 1 //控制在数据数据窗口每一次选中的都是行
3.在窗体中的查询的clicked中加入代码: String ls_select,ls_bjbh,ls_nj,ls_njmc Ls_bjbh=trim(sle_1.text) Ls_nj=trim(sle_2.text) Ls_njmc=trim(sle_3.text) Ls_select=‟‟”
If not isnull(ls_bjbh) and ls_bjbh<>”” then Ls_bjbh=”%”+ls_bjbh+”%”
Ls_select=ls_select+”班级编号 like‟”+ls_bjbj+”‟” End if
If not isnull(ls_nj) and ls_nj<>”” then Ls_nj=”%”+ls_nj+”%” If ls_select =”” then
Ls_select=”年级 like‟”+ls_nj+”‟” Else
Ls_select=ls_select+”and 年级 like‟”+ls_nj”‟” End if End if
If not isnull(ls_njmc) and ls_njmc<>”” then Ls_njmc=”%”+ls_njmc+”%” If ls_select=”” then
ls_select=”班级名称 like‟”+ls_njmc+”‟” else
ls_select=ls_select+”and 班级名称 like‟”+ls_njmc+”‟” end if end if
// 获得SQL的原始语法 If ls_select <>”” then
Ls_select=is_sql+”where”+ls_select Else
Ls_select=is_sql End if
Dw_1.setsqlselect(ls_select) //重新连接数据库 il_rowcount =dw_1.retrieve( ) //重新检索数据 3.2.3.学生信息查询:
1.新建一个窗体保存名为j_xsxx,其如图所示:
第 16 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
2.在窗体的open事件中加入以下代码: Dw_1.settransobject(sqlca) //连接数据库
Is_sql=dw_1.getsqlselect //得到数据窗口原始语法 3.在dw_1中clicked事件中加入代码: if row=0 then return
if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else
dw_1.selectrow(row,false) end if
return 1 //控制在数据数据窗口每一次选中的都是行
4.在窗体中的查询的clicked中加入代码: String ls_select,ls_xh,ls_xm Integer li_nj
Ls_xh=trim(sle_1.text)
Ls_nj=integer(trim(sle_2.text)) Ls_xm=trim(sle_3.text) Ls_select=””
If not isnull(ls_xh ) and ls_xh <>”” then Ls_xh =”%”+ls_xh+”%”
Ls_select=ls_select +”学号 like‟”+ls_xh+”‟”
第 17 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
End if
If not isnull(ls_xm) and ls_xm<>”” then Ls_xm=”%”+ls_xm+”%” If ls_select =”” then
Ls_select=”姓名 like‟”+ls_xm+”‟” Else
Ls_select=ls_select+”and 姓名 like‟”+ls_xm+”‟” End if End if
If not isnull(li_nj) and li_nj<>0 then If ls_select=”” then
Ls_select=”年级=”+string(li_nj) Else
Ls_select=ls_select+”and 年级=”+string(li_nj) End if End if
If ls_select=”” then
Ls_select=is_sql+”where”+ls_select Else
Ls_select=is_sql End if
Dw_1.setsqlselec(ls_select) Il_rowcount=dw_1.retrieve()
3.2.4.院校职工查询和课程信息查询:
1.新建一个窗体保存名为j_yxzg,其如图所示:
第 18 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
2.在窗体的open事件中加入以下代码: Dw_1.settransobject(sqlca) //连接数据库
Is_sql=dw_1.getsqlselect //得到数据窗口原始语法 3. 在dw_1中clicked事件中加入代码: if row=0 then return
if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else
dw_1.selectrow(row,false) end if
return 1 //控制在数据数据窗口每一次选中的都是行
4.在窗体中的查询的数据窗口的open事件中加入代码: String ls_select,ls_kcmc,ls_pym Integer li_kcbh
Li_kcbh=integer(trim(sle_1.text)) Ls_kcmc=trim(sle_2.text) Ls_pym=trim(sel_3.test) Ls_select=””
If not isnull(li_kcbh) and libh<>0 then
Ls_select=ls_select+”课程=”+string(li_kcbh) End if
第 19 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
If not isnull(ls_kcmc) and ls_kcmc<>”” then Ls_kcmc=”%”+ls_kcmc +”%” If ls_select=”” then
Ls_select=”课程名称 like‟”+ls_kcmc+”‟” Else
Ls_select=ls_select+”and 课程名称 like‟”+ls_kcmc+”‟” End if End if
Dw1.setsqlselect(ls_select) Il_rowcount=dw_1.retrieve( )
3.3 教务管理
3.3.1 学生选课:
如下图所示:
1. 把sle_xm,sle_nj,r displayonly属性改为true ,由于实例变量在前面的窗口
已经定义。在后面的窗口中可以直接引用。但根据后面的需要,也可以定义自己的变量。 String is_sqlchild,is_status
2. 学生选课就是学生根据学生自己的需要,选择学习一些学习的课程,程
序中需要控制学生后面的选择的课程时间不能跟前面选课的时间有时间冲突。
3. 在文框 sle_xh 输入内容显示学生的姓名,年级,并得到学生的选课情
况。
第 20 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
String ls_bh,ls_xm,ls_xjbh Ls_xh=trim(sle_xh.text)
Select xsxx.xm,xsxx.nj,xsxx.xjbh into :ls_xm,:ls_nj,:ls_xjbh from xsxx Where xh=:ls_xh;
If ls_xjbh<>”1” then //不是在籍学生,不能选择 Messagebox(“提示”,”不是在籍的学生!”) Sle_xh.text=”” Return End if
Sle_xm.text=ls_xm Sle_nj.text=string(li_nj) Dw_1.retrieve(ls_xh)
4. j_xsxk的打开事件(open): Dw_1.settransobject(sqlca) Dw_2.settransobject(sqlca) Is_sql=dw_1.getsqlselect
Is_sqlchild=dw_2.getsqlselect()
5. 在窗口自定事件 ue_query ,在程序中查询课程信息的很多条件,有课程拼
音、课程名称、课程编号、课程序号,无论在哪个条件文本框中输入条件后,单击回车键系统都会自动查询课程信息。如果什么都有确认,则查询所有的课程信息,因此将在自定义事件中加入以下代码,用于查询数据窗口dw_2中的课程信息。
String ls_kcpy,ls_kcnc,ls_kcnc,ls_kcbh,ls_kcxh String ls_select
Ls_kcpy=trim(sle_kcpy.text) Ls_kcmd=trim(sle_kcmc.text) Ls_kcbh=trim(sle_kcbh.text) Ls_kcxh=sle_kcxh.text Ls_select=””
If not isnull(ls_kcpy) and ls_kcpy<>”” then Ls_kcpy=”%”+ls_kcpy+”%”
Ls_select=ls_select+”kcxx.pym like‟”+ls_kcpy+”‟” End if
If not isnull(ls_kcmc) and ls_kcmc<>”” then Ls_kcmc=”%”+ls_kcmc+”%” If ls_select=”” then
Ls_select=ls_select+”kcxx.kcmc like‟”+ls_kcmc+”‟”
Else
ls_select=ls_select+”kcxx.kcmc like‟”+ls_kcmc+”‟”
end if end if
if not isnull(ls_kcbh) and ls_kcbh <>”” then ls_kcbh=”%”+ls_kcbh+”%” if ls_select=”” then
第 21 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
ls_select=ls_select+”kcxx.kcbh like‟”+ls_kcbh+”‟” else
ls_select=ls_select+” and kcxx.kcbh like‟”+ls_kcbh+”‟” end if end if
if not isunll(ls_kcxh) and ls_kcxh<>”” then ls_kcxh=”%”+ls_kcxh+”%” if ls_select =”” then
ls_select=ls_select+”kcb.kxh like‟”+ls_kcxh+”‟” else
ls_select=ls_select+” and kcb.kxh like‟”+ls_kcxh+”‟” end if end if
if ls_select=”” then dw_2.retrieve() else
ls_select=is_sqlchild+‟and ‟+ls_select dw_2.setsqlselect(ls_select) dw_2.retrieve() enf if
6. 在文本框自定义事件,enter_1选择PB自身定义事件 pbm_dwnkey,该事件是
当焦点在文本框时,单击回车键,就响应此事件。调用窗口自定义事件,enter_1来查询数据。如下图所示: If key=keyenter! Then
Parent.trigger(„ue_query‟) End if
7. 在按钮cb_select 的clicked事件加入以下代码,调用窗口的自定义事件
ue_query来查询数据窗口dw_2中课程信息的数据。 Parent.trigger(„ue_query‟)
8.在查询的clicked事件中:加入代码,根据数据窗口dw_2选中的行得到数据。如果选中的课程的上课时间跟已经选修的课程时间有冲突。也提示不能修改该课程。
Integer il_row,li_insertrow,li_count String ls_kxh,ls_kcmc,ls_js,ls_kkxb Integer li_sjt,li_sjj,li_kcbh,i If li_row<1 then return Ls_xh=trim(sle_xh.text)
If isnull(ls_xh) or ls_xh=”” then
Messagebox(“提示”,”请先输入学号!”) Return End if
Li_kcbh=dw_2.getitemnumber(il_row,”kcbh”) //课程编号 Ls_kxh=dw_2.getitemnumber(il_row,”kxh”) // 课序号 // 判断是否已经选择的课程
第 22 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Select count(*) into :li_count form xkb,kcxxb,kcb
where(kcb.kcbh=kcb.kcbh) and ( xkb.kxh=kcb.kxh) and
(xkb.xh=:ls_xh) and (kcb.kcbh=:li_kcbh);
If li_count >0 then
Messagebox(“ 提示”,”已经选择该课程!”) Return End if
Lds_kxh=create datastore
Lds_kxh.dataobject=‟d_kxh.store‟ Lds.kxh.settransobject(sqlca) Lds.kxh.retrieve(ls_kxh) For i=1 lds_kxh rowcount()
Li_sjt=lds.kxh.getitemnumber(I,”sksjt”) //上课时间天 Li_sjj=lds_kxh.getitemnumber(I,”sksjj”) //上课时间节 Select count(*) into:li_count from kcb,xkb
Where kcb.kxh=xkb.kxh and kcb.sksjt=:li_sjt And kcb.hksjj =:li_sjj and xkb.xh=:ls_xh; If li_count>0 then
Messagebox(“提示”,”选择的时间以前时间重叠!”) Destroy.lao.kxh Return End if next
destroy lds_kxh; //破坏数据存储
// 得到数据窗口中选择行,并保存到需要的地方。 Ls_kxh=dw_2.getitemstring(li_row,”kxh”) Ls_kcmc=dw_2.getitemstring(li_row,”kcmc”) Ls_js=dw_2.getitemstring(li_row,”js”)
Li_kcbh=dw_2.getitemstring(li_row,”kcbh”) Li_kkxb=dw_2.getitemstring(li_row,”kkxb”) // 定义游标取得课程表信息 Dwclare ld_ke cursor for
Select sksjt,sksjj,sksj from kcb where kxh=ls_kxh; Open(ld_ke);
Do while ld_ke into :li_sjt,:li_sjj,:ls_dd; Fetch ld_ke into:li_sjt,:ls_dd
Li_insertrow=dw_1.insertrow(0)
Dw_1.setitem(li_insertrow,”kcbh”,li_kcbh) Dw_1.setitem(li_insertrow,”xh”,ls_xh) Dw_1.setitem(li_insertrow,”kxh”,ls_kxh)
Dw_1.setitem(li_insertrow,”kcmc”,ls_kcmc) Dw_1.setitem(li_insertrow,”js”,ls_js)
Dw_1.setitem(li_insertrow,”kkxb”,ls_kkxb)
第 23 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Dw_1.setitem(li_insertrow,”kkdd”,ls_kkdd) Dw_1.setitem(li_insertrow,”sksjt”,ls_sksjt) Dw_1.setitem(li_insertrow,”sksjj”,ls_sksjj) End if Loop
Close ld_ke; Commit;
Insert into xkb(xh,kxh) values(:ls_xh,:ls_kxh); If sqlca.sqlcode <> 0 then Rollback;
Messagebox(“提示”,”选课失败!”) Return Else
Commit;
Messagebox(“提示”,”选课成功!”) End if
9. 在按钮删除的clicked 事件,加入以下代码删除用户已经选修的课程。 Integer li_row,li_kcbh,i String ls_kxh,ls_xh Datastore lds_kxh
Li_row=dw_1.getselectedrow(0) If li_row<1 then return
If messagebox(“提示”,”确实需要删除选中的课程吗?”,question!,okcancel!,2)
=2 then Return
Li_kcbh=dw_1.getitemnumber(li_row,”kcbh”) Ls_kxh=dw_1.getitemnumber(li_row,”kxh”) Ls_xh=dw_1.getitemnumber(li_row,”xh”) Lds_kxh=create datastore
Lds_kxh=dataobject=‟d_kb_kxh‟ Lds_kxh.settransobject(sqlca) Lds_kxh.retrieve(li_kcbh) For i=1 to lds_kxh.rowcount()
Ls_kxh=lds_kxh.getitemstring(I,”kxh”)
Delete from xkb where kxh=:ls_kxh and xh=:ls_xh; If sqlca.sqlcode<>0 then Rollback;
Messagebox(“提示”,”删除失败!”)
End if Next
Destroy lds_kxh; Commit;
Sle_xh.triggerevent(“modified”)
第 24 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Li_row=0
Messagebox(“提示”,”删除成功!”)
10.数据窗口dw_2 clicked事件,选中数据窗口dw_2 中当前单击的行:
if row=0 then return
if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else
dw_1.selectrow(row,false) end if return 1
需要新增选修课程在数据窗dw_1中选 中相应的课程,单击(先课)按
钮,需要删除一个选修课程,只要选中,就可以删除相应的课程了。 3.3.2课表查询功能:
(如图所示课表查询功能) 2.在姓名,班级displayonly属性改为true Dw_1.settransobject(sqlca) //连接数据库
Is_sql=dw_1.getsqlselect //得到数据窗口原始语法
3.在窗体j_kbcx功能中,在窗体的open事件中,加入代码: Integer I
Dw_1.settrasobject(sqlca) For i=1 to 10
Dw_1.insertrow(I )
Dw_1.setitem(I,”jieshu”,i) Next
第 25 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
4.在文本框sle_xh的modified 事件加入代码,并且根据学院在文本框中输入的学号查询的学生信息和在数据窗dw_1中显示其修改课程的上课时间。 String ls_xh,ls_xm,ls_rjbh String ls_kcmc,ks_skdd,ls_str Integer li_nj ,li_trim,li_jie Ls_xh=trim(sle_xh.text) Dw_1.reset() For i=1 to 10
Dw_1.insertrow(i)
Dw_1.setitem(I,”jieshu”,i) Next
Select xsxx.mm,xsxx.nj,xsxx.xjbh into:ls_xm,:li_nj,:ls_xjbh Form xsxx
where xh=ls_xh;
If ls_xjbh<>‟1‟ then
Messagebox(“提示”,”不是再籍的学生!”) Sle_xh.text=”” Return End if
Sle_xm.text=ls_xm Sle_nj.text=string(li_nj)
Declare lc_kc cursor for select kcxx.kcmm,kcb.skdd,kcb.sksjt,kcb.sksjj From xkm,kcxx,kcb
where (kcb.kcbh=kcxx.kcbh) and (xkb.kxh=kcb.kxh) and (xkb.xh=:ls_xh); open lc_kc;
do while sqlca.sqlcode=0
fetch lc_kc into :ls_kcmc,:ls_skdd,:li_tian,:li_jie; if sqlca.sqlcode=0 then
ls_str =trim(ls_kcmc)+‟ ‟+trim(ls_skdd) dw_1.setitem(li_jie,li_tian+1,ls_str end if loop
close lc_kc;
3.3.3学生成绩输入: 如下图所示:
第 26 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
1.要把成绩的分数,输入到软件里面去,并加以保存和守成打印功能。如下图所示具体的功能。
2.打开窗体的j_xscj,打开ddlb_1里面的selectedchanged事件:
Declare why cursor for select xbbh.xbmc from xbxx where xbmc=:ddlb_1.text; Open why ; String zm
Fetch why into:zm;
Do while sqlca.sqlcode=0 Ddlb_2.additem(zm) Fetch why into :zm; Loop
Close why ;
在窗体ddlb_1的初始化事件(construtor):
Declare why cursor for select xbmc from xbxxb ; Open why ; String bm
Fetch why into:bm; Loop
Close why;
3. 打开窗体的ddlb_2里面的 selectedchanged 事件: Ddlb_3.reset()
第 27 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Declare why cursor for select bjmc from bjxxb Where zymc=ddlb_2.text Open why; String bm
Fetch why into:bm;
Do while sqlca.sqlcode=0 Ddlb_2.additem(bm) Fetch why into:bm; Loop
Close why;
4.在窗体ddlb_2的初始化事件(construtor): Declare why cursor for select bjmc from bjb ; Open why ; String zm
Fetch why into:zm;
Do while sqlca.sqlcode=0 Ddlb_2.additem(zm) Fetch why into :zm; Loop
Close why;
5. dd_3.selectedchanged(事件):
String h
H=”班级名称‟”+ddlb_3.text”‟” Dw_1.setfiter() Dw1.fiter()
6. 在窗体ddlb_2的初始化事件(construtor): Declare why cursor for select bjmc from bjb ; Open why ; String bm
Fetch why into:zm;
Do while sqlca.sqlcode=0 Ddlb_2.additem(bm) Fetch why into :bm; Loop
Close why;
7. 按钮cb_modify 的clicked 加入代码,根据用户在文本框中em_1中输入的成绩表更新数据库,然后确定。 Integer li_row,li_bh Decimal ld_cj
Li_row dw_1.getselectedrow(0) If li_row<1 then return
Li_bh =dw_1.getitemnumber(li_row,”bh”) Ld_cj=dec(em_1.text)
第 28 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Update cjb set cj=:ld_cj where bh=:li_bh; If sqlca.sqcode=0 then Commit;
Parenttriggerevent(„us_search‟)
Else
Rollback;
Messagebox(“提示”,”修改成绩失败!”) End if
3.4报表统计
3.4.1完成成绩打印功能:
(成绩打印功能)
1.建立一个新的表单保存名为:j_cjdy, 属性为main!
2.建立文本框,标签,数据窗口等,并建立与数据窗口的连接: Dw_1.settransobject(sql)
3.查询学生的学号,右边的姓名、班级,就被显示出来了,但是是不能操作的,只是为了确认一下。如下图所示: 4.具体代码如下:
String ls_xh,ls_xm,ls_bj,l
String ls_select
Ls_xh=trim(sle_xh.text) Ls_xm=trim(sle_xm.text) Ls_mj=trim(sle_mj.text) Ls_select=””
第 29 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
If not isnull(ls_xh) and ls_xh<>”” then Ls_xh=”%”+ls_xh+”%”
Ls_select=ls_select+”xsxx.xh like‟”+ls_xh+”‟” End if
If ls_select <>”” then
Ls_select=is_sql+”where”+ls_select Else
Ls_select=is_sql End if
If not isnull(ls_bj) and ls_bj<>”” then Ls_bj=”%”+ls_bj+”%”
Ls_select=ls_select+”xsxx.bj like‟”+ls_bj+”‟” End if
If ls_select <>”” then
Ls_select=is_sql+”where”+ls_select Else
Ls_select=is_sql End if
Dw_1.setsqlselect(ls_select)
Il_rowcount=dw_1.retrieve() “打印”功能加入代码: Stirng ls_xh Ls_xh=sle_1.text
If ls_xh=”” or is null(ls_xh) then Return End if
Openwithparm(j_print,ls_xh)
// 打开另外一个窗口:j_print 3.4.2设置通用打印窗口:
保存为j_print在窗口的open事件加入代码: String ls_rtn
Ls_rtn =message.stringparm//接收传过来的数据 Dw_1.settransobject(sqlca)
If dw_1.retrieve(ls_rtn) <1 then Dw_1.insertrow(1) End if
在设置的clicked事件加入代码:
Printfsetup //利用powerbuilder自身的函数来进行打印机设置 在打印预览中加入代码:
If dw_1.describe(“datawindow.print.preview”)=”no” then Dw_1.modify(“datawidow.prin.preview”)=”yes” This.checked=true
Else
第 30 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Dw_1.modify(“datawindow.print.preview”) =”no” This.chiecked=false End if
在打印命令按钮中加入代码: Dw_1.print()
3.5系统维护:
3.5.1系部信息维护:
1. 保存名为j_xbwh,具体窗口如下图所示:
第 31 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
2.增加命令按钮中加入代码: Sle_1.text=”” Sle_2.text=”” Sel_1.setfocus()
3. 保存命令按钮中加入代码:
If sle_1.text=”” or innull(ls_xbbh) then
Messagebox(“提示”,”未输入系部编号!”) Return End if
If sle_2.text=”” or innull(ls_xbmc) then
Messagebox(“提示”,”未输入系部名称!”) Return End if
If is_status=”new” then
Select count(*) into:li_count from xbbh where xbbh=:ls_bh; If li_count>0 then
Messagebox(“提示”,”已经存在的系部编号,请重新输
入!”)
Return End if End if
Insert into xbxx(xbbh,xbmc) values(:sle_1.text,:sle_2.text) If sqlca.sqlcode=0 then Commit;
Messagebox(“提示 ”,”保存成功!”) Return Else
第 32 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Rollback;
Messagebox(“提示”,”保存失败!”)
Return End if
Sle_1.text=”” Sle_2.text=”” 4.在删除按钮中加入代码: String ls_xbbh
If il_row >0 and il_rowcount>0 then
Ls_xbbh=dw_1.getitem(il_row,”xbbh”)
Delete from xbxx where xbxx.xbbh=:ls_xbbh; If sqlca.sqlcode=0 then Commit;
Messagebox(“ 提示 ”,”删除成功!”) Else
Rollback;
Messagebox(“提示”,”删除失败!”) End if
If il_row >=1 then Il_row -=1 End if
Dw_1.retrieve()
If il_row<1 then return Dw_1.selectrow(0,false) Dw_1.selectrow(il_row,true) Dw_1.scrolltorow(il_row) End if
5.记录“首记录”加入以下代码:
If il_row<1 then return // 如果没有记录则返回 Il_row=1 // 当前行为1 Dw_1.selectrow(0,false) // 取消选择 Dw_1.selectrow(il_row,true) Dw_1.scrolltorow(il_row) Parent.event ue_search() .// 调用自定义事件 6.“上记录”加入以下代码: If _rowcount() <1 then return If il_row<=1 then return Il_row -=1
Dw_1.selectrow(0,false) Dw_1.selectrow(il_row,true) Dw_1.scrolltorow(il_row) // 按制按钮状态 If _row=1 then
第 33 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Pb_1.enabled=false Pb_2.enabled=false End if
Parent.event ue_seaecd=true 7. “下记录”加入以下代码:
If il_rowcount=il_row then return If row+=1
Dw_1.selectrow(il_row,true) Dw_1.selectrow(il_row,true) Dw_1.scrolltorow(il_row) Parent .event ue_search() 8. “尾记录”中加入以下代码:
If li_rowcount =il_row then return
Il_row =il_rowcount ///当前记录为最后行 Dw_1.selectrow(0,false
Dw_1.selectrow(il_row,true)
Dw_1.scrolltorow(il_row) Parent.event ue_search() 9. 在取消加入以下代码:
Rollback;
Dw_1.retrieve() Dw_1.enable=true
10. 在退出按钮加入以下代码: Close(parent)
(如图所示班级信息维护)
下面的班级信息维护、学生信息维护、课程信息维护就不详细因为大体上都是一样的!!
上面的大部分都提到了用记自定义的回车事件:
下面我们来专门介绍一下:
来进入下一个窗口,写上事件的名字和自定义的事件如图所示
第 34 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
这样以后就能调用自己定义的回车事件了。 下面用户登录维护来介绍一下: 如下图所示:
进入可以更改和删除各种多余不用的用户名,另外还可以添加新的用户名.
第 35 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
如下图所示:
1.在增加的的打开事件(open)加入以下代码: Dw_1.settransobject(sqlca) Dw_1.retrieve() Dw_1.scrolltorow() Dw_1.insertrow()
2.在删除打开事件的代码中加入以下代码:
Stirng ls_yhmm
If il_row <1 then return
If il_row>0 and il_rowcount >0 then
Il_yhmm=dw_1.getitemstring(il_row,”用户密码”) Delete from youghu where yhmm=:ls_yhmm; If sqlca.sqlcode=0 then Commit;
Messagebox(“提示”,”删除成功!”) Else
Rollback;
Messagebox(“提示”,”删除失败!”) End if
If il_row >=1 then Il_row-=-1 End if
第 36 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
Dw_1.retrieve()
Dw_1.scrolltorow(il_row) End if
3.在更新的打开事件中加入以下代码: Int I
For i=1 to dw_1.rowcount()
If dw_1.isselected(i) =true then Dw_1.isselected(i) =true End if Next
If dw_1.update=-1 then
Messagebox(“提示”,”保存失败!”) Rollback; Return Else
Commit;
Messagebox(“提示”,”保存成功!”) End if
4. 在退出的打开事件中加入以下代码:
If messagebox(“温馨提示您”,”真的要退出系统吗?”,question!,yesno!)=1
then
Halt Else
Return End if
第 37 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
参考文献:
[1]董莉 pb程序设计 《 power buileder9.0从入门到精通》 电子工业出版社 [2]刘玲 sql调用与开发 《SQL Server 2000 经典教程》 人民邮电出版社 [3]朱乔 ASA设计 《powerbuilder9.0 数据库开发》 人民邮电出版社 [4]王芳 数据窗口《power builder经典数据库开发案例全面部析》 清华大学出版社
第 38 页 共 39 页
吉林农业工程职业技术学院毕业设计(论文)
致 谢
经过近二个月的努力开发,教务管理系统基本开发完成。在开发的过程中有很多的人需要感谢!首先我要感谢我的指导老师给予一个良好的开发环境,在我遇到困惑时,为我指点迷津使我茅塞顿开。并感谢我的同学使写论文成为一种乐趣。感谢帮助我的每一个人,使我在设计中感受到工作的快乐,让我融入到团队中,知道合作的力量。
再一次表示诚挚的感谢,谢谢你们帮助了我。
第 39 页 共 39 页
因篇幅问题不能全部显示,请点此查看更多更全内容