科研管理系统毕业论文.doc_第1页
科研管理系统毕业论文.doc_第2页
科研管理系统毕业论文.doc_第3页
科研管理系统毕业论文.doc_第4页
科研管理系统毕业论文.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、摘 要科研管理系统是面向山东大学计算机科学与技术学院开发的用于科研项目信息管理的系统,主要用于管理学院的科研成果。系统使用PowerBuilder 6.5开发,数据库为Oracle,采用C/S体系结构。系统设计的目标主要是让使用人员能高效率的完成科研项目信息以及教师基本信息的规范化管理,并达到操作过程中的直观、方便、实用和安全的要求:为了使用户操作起来更加方便,增设了工具栏;考虑到用户对教师的名字并不是很清楚,在教师信息查询中,特设了按姓氏查询和按姓名拼音的首字母查询;为了防止用户误删一些数据,在用户对数据删除前,都对用户操作进行提示。在系统开发过程中用到的关键技术有:自动生成序列号,自动生成

2、拼音码,模糊查询,以及查询结果排序以及窗口居中显示等。目 录 一前 言 ············································

3、······················(1)二正 文 ··························

4、3;·······································(1) (一)系统简介·········

5、;················································(1)(二)功能简介&

6、#183;·················································&

7、#183;······(2)(三)开发工具以及开发环境简介·······························(3)(四)数据库设计·······&#

8、183;·············································(4)(五)系统的源代码··&#

9、183;···············································(5)(六)开发中的难点和关

10、键技术··································(24)三结 论 ··············

11、··················································

12、·(27)四谢 辞 ···············································

13、83;·················(27)五参考文献·······························

14、··································(28)科 研 管 理 系 统(一) 前 言科研信息管理是高校管理工作中的重要组成部分,随着信息技术的发展和广泛应用,利用计算机实现高校中的教师信息管理和科研项目信息管理势在必行。科研管理系统

15、是山东大学计算机科学与技术学院98级毕业实习题目之一,由闫中敏老师指导,侯素玲和王澄澄共同开发。本系统用于管理山东大学计算机科学与技术学院科研成果,主要实现两部分功能:科研项目管理以及教师基本信息管理。其中,科研项目管理部分由王澄澄负责完成。下面,谨就整个系统功能、结构和教师基本信息管理开发过程中的一些问题进行详细阐述。(二)正 文一 系统简介1 系统目标设计科研管理系统可以用于支持学院完成科研管理工作,有如下3个方面的目标:l 使科研信息管理实现规范化;l 使管理人员高效率完成科研管理的日常业务,包括新项目加入时资料的建立,项目完成时相关信息的删除等;l 将规定日期之前的科研项目查询出来,及

16、时通知各项目负责人。2 开发设计思想l 系统应符合科研信息管理的规定,满足科研管理工作的需要,并达到操作过程中的直观、方便、实用、安全等要求.l 系统采用C/S体系结构,客户端负责提供表达逻辑、显示系统界面信息,访问数据库服务器;服务器端负责提供数据。l 系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。l 系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。二功能简介 现将系统功能详细介绍如下:1。功能分析科研管理系统主要完成如下功能:l 教师信息的输入,包括教师姓名,家庭电话、办公电话、Email、手机、备注等;教

17、师编号和拼音码自动生成。l 教师信息的修改、删除等日常维护。l 按照某种条件,查询、统计符合条件的教师信息.l 科研项目信息的输入,项目名称,项目分类,项目负责人,截止日期,备注。l 科研项目维护:包括信息浏览、删除记录、修改记录、以及保存所作修改等。浏览项目信息时可以点击相应记录查看项目负责人信息。l 按照某种条件,查询、统计符合条件的项目信息。2系统模块图在系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如图所示的功能模块图: 科 研 信 息 管 理 系 统 系统模块教师信息管理模块科研项目信息管理模块关于(帮助)模块l 系统模块:包括² 登陆系统;

18、8; 退出系统l 教师信息管理模块:包括² 教师信息录入² 教师信息维护² 教师信息查询l 科研项目信息管理模块:包括² 科研项目信息录入² 科研项目信息维护² 科研项目信息查询l 帮助模块 :² 关于系统的版权信息 三开发工具以及开发环境简介l PowerBuilder简介PowerBuilder是Sybase的子公司PowerSoft推出的数据库应用开发工具,能够设计传统的高性能、基于客户/服务器体系结构的应用系统。 PowerBuilder支持应用系统同时访问多种数据库,包括诸如Oracle、此外,PowerBuild

19、er开发环境随带的Sybase SQL Anywhere本身就是一个功能强大的DBMS,对小型应用来说,直接使用这个数据库就是个质优价廉的选择。为了方便用户开发,PowerBuilder提供了大量控件,这既丰富了应用程序的表达能力,也加快了项目的开发进度。PowerBuilder是面向对象的编程,数据窗口是PowerBuilder中功能最强大的一个对象,通过它可以操作数据库中的数据,并对数据进行各种处理,例如排序分组等,可以设计数据输入输出格式以及统计图表和多种屏幕显示风格是PowerBuilder成为客户/服务器体系数据库开发领先地位的一个重要原因。PowerBuilder支持多种平台,并能

20、生成机器代码的可执行文件。l Oracle简介Oracle数据库管理系统是目前世界上最流行的关系数据库管理系统之一,是以高级结构化查询语言(SQL)为基础的大型关系数据库.相对于其他数据库,Oracle在性能、系统可靠性、分布式处理能力等方面有独特的优越性,并在数据库管理功能、数据完整性控制、数据库查询能力、数据安全性等方面都有重大改善。Oracle数据库在物理上是存储于硬盘的各种文件,它是活动的,可扩充的,随着数据的添加和应用程序的增大而变化.Oracle数据库在逻辑上是由许多表空间构成,主要分为系统表空间和非系统表空间。非系统表空间内存储着各项应用的数据、索引、程序等相关信息。l 开发环境

21、硬件环境:PC机一台,主频1.7GHz,128M内存,服务器为202.194。23。2软件环境:操作系统为Windows2000,数据库管理系统为Oracle7。3, 开发工具为PowerBuilder 6.5。四. 数据库设计l 数据库分析通过对高校教师管理和项目管理内容和过程的分析,设计数据项和数据结构如下:教师基本情况。包括有教师编号、教师姓名、家庭电话、办公电话、手机、Email、拼音、备注.项目基本情况。包括有项目编号、项目名称、项目分类、负责人、截止日期、备注。教师实体和项目实体之间的关系:教师担任项目负责人。l 数据库结构表1: tab_teacher 教师基本信息表(主关键字

22、teacher_id)列 名数据类型可否为空说 明teacher_idchar(10)not null教师编号teacher_namevarchar2(10)null教师姓名teacher_home_telchar(12)null家庭电话teacher_office_telchar(13)null办公电话teacher_mobile_telchar(13)null手 机teacher_emailvarchar2(30)nullEmailteacher_spellvarchar2(20)null拼 音teacher_notationvarchar2(100)null备 注表2: tab_proj

23、ect项目基本信息表(主关键字project_id)列 名数据类型可否为空说 明project_idchar(10)not null项目编号project_namevarchar2(100)null项目名称project_classficationvarchar2(200)null项目分类project_manager_idchar(10)null负责人(外码)指向tab_teacher的teacher_idproject_deadlinedatenull截止日期project_notationvarchar2(200)null备 注五。系统的源代码1. 创建应用程序对象 a_kyPowerB

24、uilder中应用程序对象是应用程序的系统入口.应用程序首先运行的脚本就是应用程序对象的open事件。在应用对象的open事件中输入如下的程序代码:SQLCA.DBMS = ”O73 ORACLE 7.3"SQLCA.LogPass = ”*”SQLCA。ServerName = ”ORAC”SQLCA.LogId = "ky"SQLCA.AutoCommit = FalseSQLCA。DBParm = "”connect;Open(w_login) /打开程序登陆窗口 在应用程序对象的变量定义窗口中定义科研管理系统的两个全局变量:string teac

25、her_idstring project_id 2登陆窗口w_login的设计l 按钮【确认】的功能是利用用户输入的用户名和口令来连接数据库。如果连接成功,则打开应用程序主窗口,关闭登陆窗口;如果不成功,则会弹出一个对话框,显示用户输入有误。其clicked事件脚本如下: if sle_1。text = ”" then/pop a message boxmessagebox(”注意!”,"用户名不能为空!”)/sle_1 get the focussle_1.setfocus()elseif sle_2。text = ” then/pop a message boxmess

26、agebox("注意!”,"密码不能为空!")/sle_2 get the focussle_2.setfocus()else/get the user name and passwordSQLCA。LogID = sle_1。textSQLCA.LogPass = sle_2.text/connect the databaseconnect;/deal with error if SQLCA.SQLCODE=0 thenopen(w_main)close(w_login)elseMESSAGEBOX(”警告”,"输入有误!”)sle_1。setfocu

27、s()end ifend ifl 按钮【退出】的功能是终止应用程序的运行,其clicked事件脚本如下: halt 3主窗口对象w_main 系统应用程序的主要功能都是在主窗口w_main及在其下打开的众多窗口中完成的.主窗口的类型设立为MDI Frame with Microhelp是为了在其下以特定方式打开其他窗口。主窗口的运行界面如下:4菜单对象m_mdimain的设计4.1菜单“系统”l “重新登陆"的clicked事件的脚本:disconnect;open(w_login)close(w_main)其功能是先断开与数据库的连接,打开登陆窗口,关闭应用程序主窗口.l “退出系

28、统”的clicked事件的脚本: close(w_main)其功能是关闭主窗口w_main。4.2菜单“教师信息管理”l “教师信息输入”的clicked事件的脚本: opensheet (w_insert_teacher,w_main,4,layered!)其功能是在主窗口w_main上以平铺方式层叠打开窗口w_insert_teacher,并指定在第四个菜单(窗口菜单)标题下增加一个以w_insert_teacher命名的菜单。l “教师信息维护”>“逐条浏览"的clicked事件的脚本:opensheet (w_weihu_teacher_free,w_main,4,la

29、yered!)其功能是在主窗口w_main上以平铺方式层叠打开窗口w_weihu_teacher_free,并指定在第四个菜单(窗口菜单)标题下增加一个以w_weihu_teacher_free命名的菜单。l “教师信息维护”“表格浏览”的clicked事件的脚本: opensheet (w_weihu_teacher,w_main,4,layered!)其功能是在主窗口w_main上以平铺方式层叠打开窗口w_weihu_teacher,并指定在第四个菜单(窗口菜单)标题下增加一个以w_weihu_teacher命名的菜单.l “教师信息查询"的clicked事件的脚本: opens

30、heet (w_lookfor_teacher,w_main,4,layered!)其功能是在主窗口w_main上以平铺方式层叠打开窗口w_lookfor_teacher,并指定在第四个菜单(窗口'菜单)标题下增加一个以w_lookfor_teacher命名的菜单。4。3 菜单“项目信息管理”见王澄澄毕业论文4。4 菜单“窗口”l 菜单“窗口" > “层叠”的clicked事件的脚本: w_main.ArrangeSheets(Cascade!)其功能是将所有打开的窗口以层叠的方式排列.l 菜单“窗口”>“平铺"的clicked事件的脚本: w_main

31、.ArrangeSheets(Layer!)其功能是将所有打开的窗口以平铺的方式排列。4.5菜单“帮助”l “关于"的clicked事件的脚本:Open(w_about_keyan) 其功能是打开帮助窗口w_about_keyan.5. 数据窗口对象的创建在应用程序中,根据需要共创建了三个数据窗口:l 数据窗口d_teacher_insert,选择Quick Select数据源、Freedom形式,连接表Tab_teacher,与窗口w_insert_teacher关联。l 数据窗口d_teacher_grid,选择SQL Select数据源,Grid形式,连接表Tab_teache

32、r,与窗口w_lookfor_teacher和w_weihu_teacher关联。l 数据窗口d_teacher, 选择Quick Select数据源、Freedom形式,连接表Tab_teacher,与窗口w_weihu_teacher_free关联。6 窗口对象w_insert_teacher此窗口功能是实现教师信息的录入,由主窗口的“教师信息管理”菜单的“教师信息录入"调用。运行界面如下:l 窗口w_insert的open脚本dw_insert_teacher。settransobject(sqlca)dw_insert_teacher.retrieve()long row_n

33、umberw_insert_teacher.dw_insert_teacher。reset()row_number=insertrow(w_insert_teacher。dw_insert_teacher,0)l 【保存】按钮控件的clicked事件用于对输入信息进行保存,若保存失败,系统会给予提示.脚本如下:string vxm,vxmpystring vhmselect to_char(ky.teacher_shunxuhao。nextval)into :vhmfrom dual;if sqlca。sqlcode<0 thenmessagebox(”错误!!!",”生成顺序

34、号失败!")returnend ifdw_insert_teacher。SetItem(1,'teacher_id',vhm)dw_insert_teacher。SetFocus()vxm=dw_insert_teacher.getitemstring(1,'teacher_name)select getpy(:vxm) into :vxmpyfrom dual;if sqlca。sqlcode<>0 thenmessagebox(”错误!!","生成拼音失败!”)returnend ifdw_insert_teacher。se

35、titem(1,'teacher_spell,vxmpy)if update(w_insert_teacher.dw_insert_teacher,true,false)=1 then/保存修改成功,提交修改w_insert_teacher.dw_insert_teacher.resetupdate()commit;w_insert_teacher。dw_insert_teacher.reset() row_number=insertrow(w_insert_teacher。dw_insert_teacher,0)else/保存修改失败,取消所作的修改rollback;/弹出一个对话框

36、警告messagebox(”错误!!",”数据保存失败!")end ifl 【退出】按钮控件的clicked事件用于关闭该输入窗口。在关闭窗口之前,首先判断用户是否对数据窗口中的记录做了修改而没有保存到数据库中,如果又这样的记录,则出现对话框询问用户是否保存所作的修改,脚本如下:int MCount /修改后没有保存的行数int UpdateOrNot /是否修改/得到修改后没有保存的行数MCount=w_insert_teacher.dw_insert_teacher。ModifiedCount()if MCount=0 then/没有未保存的修改close(w_inse

37、rt_teacher)elseif Mcount>0 then/询问是否保存所做的修改UpdateOrNot=MessageBox("保存修改",”您修改了数据窗口中的数据,现在是否保存?",Question!,YesNoCancel!)if UpdateOrNot=1 then/保存if update(w_insert_teacher。dw_insert_teacher,true,false)=1 then/保存修改成功,提交修改w_insert_teacher.dw_insert_teacher。resetupdate()commit;close(w_i

38、nsert_teacher)else/保存修改失败,取消所作的修改rollback;/弹出一个对话框警告messagebox("错误!”,"数据保存失败!")end ifelseif UpdateOrNot=2 then/不保存rollback;close(w_insert_teacher)end ifend if7 窗口对象w_weihu_teacher 此窗口实现教师信息的表格浏览,由主窗口的“教师信息管理"菜单的“教师信息维护”的“表格浏览"调用,可对信息进行修改、删除等操作。 运行界面如下: l 。数据窗口的clicked事件,其功能是

39、单击标题栏时实现对教师信息排序。脚本如下:string col_name/列名string col_text /列标题int length/列标题长度if sortway=” d” then /sortway 实例变量sortway=” a"else sortway=” d”end ifcol_text=;/dwo系统变量length=len(col_text);col_name=left(col_text,length - 2) if not isnull(col_name) thenif dw_weihu_teacher.setsort(col_name+sort

40、way)=1 thendw_weihu_teacher。sort()end ifend ifl 【保存】按钮控件的clicked事件用于对修改厚的信息进行保存,若保存失败,系统会给予提示.脚本如下:if update(w_weihu_teacher_free。dw_weihu_teacher_free,true,false)=1 then/保存修改成功,提交修改w_weihu_teacher_free.dw_weihu_teacher_free。resetupdate()commit;else/保存修改失败,取消所作的修改rollback;/弹出一个对话框警告messagebox(”错误!!!

41、”,"数据保存失败!”)dw_weihu_teacher_free。retrieve()end ifl 【删除】按钮控件的clicked事件用于删除当前光标所在的那条记录.如果该教师是某项目负责人,则根据参照完整性规则,该记录不能被删除.脚本如下:long current_rownumberint UpdateOrNot /是否删除/询问是否确定删除UpdateOrNot=MessageBox("删除记录?",”您确定要删除数据窗口中的数据?",Question!,YesNo!)if UpdateOrNot=1 then/删除current_rownum

42、ber=w_weihu_teacher。dw_weihu_teacher。getrow() deleterow(w_weihu_teacher。dw_weihu_teacher,current_rownumber) if update(w_weihu_teacher.dw_weihu_teacher,true,false)=1 then/保存修改成功,提交修改 w_weihu_teacher.dw_weihu_teacher.resetupdate()commit;else/保存修改失败,取消所作的修改rollback;/弹出一个对话框警告messagebox("错误!”,”数据删除

43、失败!")dw_weihu_teacher.retrieve()end ifelseif UpdateOrNot=2 then/不删除/rollback;end ifl 【退出】按钮控件的clicked事件用于关闭该窗口.在关闭窗口之前,首先判断用户是否对数据窗口中的记录做了修改而没有保存到数据库中,如果又这样的记录,则出现对话框询问用户是否保存所作的修改。脚本如下:int MCount /修改后没有保存的行数int UpdateOrNot /是否修改/得到修改后没有保存的行数dw_weihu_teacher.acceptText()MCount=w_weihu_teacher。dw

44、_weihu_teacher.ModifiedCount()if MCount=0 then/没有未保存的修改close(w_weihu_teacher)elseif Mcount0 then/询问是否保存所做的修改UpdateOrNot=MessageBox(”保存修改","您修改了数据窗口中的数据,现在是否保存?”,Question!,YesNoCancel!)if UpdateOrNot=1 then/保存if update(w_weihu_teacher.dw_weihu_teacher,true,false)=1 then/保存修改成功,提交修改w_weihu_t

45、eacher。dw_weihu_teacher。resetupdate()commit;close(w_weihu_teacher)else/保存修改失败,取消所作的修改rollback;/弹出一个对话框警告messagebox(”错误!!”,"数据保存失败!”)dw_weihu_teacher。retrieve()end ifelseif UpdateOrNot=2 then/不保存rollback;close(w_weihu_teacher)end ifend if8 窗口对象w_weihu_teacher_free此窗口实现教师信息的逐条浏览,由主窗口的“教师信息管理"

46、;菜单的“教师信息维护"的“逐条浏览”调用,可对信息进行修改、删除等操作。运行界面如下:l 按钮控件【第一条】的clicked事件用于显示第一条教师信息。脚本如下:w_weihu_teacher_free.ScrollToRow(0)l 按钮控件【前一条】的clicked事件用于显示当前记录的前一条记录,脚本如下:integer row_current /定义参数当前行行数/数据窗口向前滚动一条纪录row_current=dw_weihu_teacher_free。ScrollPriorRow()/如果已经到达第一条纪录,则弹出一个对话框警告if row_current=1 then

47、MessageBox(”警告!”,"已经是最前一条记录!”)end ifl 按钮控件【后一条】的clicked事件用于显示当前记录的后一条记录,脚本如下:integer row_count /定义参数 表的总行数integer row_current /定义参数 当前行/数据窗口向后滚动一条纪录row_current=dw_weihu_teacher_free.ScrollNextRow()/得到表的总行数row_count=dw_weihu_teacher_free。RowCount()/判断是否是最后一条记录if row_current= row_count then Messa

48、geBox(”警告!",”已经是最后一条记录!”)end ifl 按钮控件【最后一条】的clicked事件用于显示最后一条教师记录。脚本如下:/定义参数 表的总行数integer row_count/得到表的总行数row_count=dw_weihu_teacher_free。RowCount()/数据窗口滚动到表的最后一条记录dw_weihu_teacher_free.ScrollToRow(row_count)l 按钮控件【删除】的clicked事件用于删除当前所显示的那条记录.脚本如下:long current_rownumberint UpdateOrNot /是否删除/询问

49、是否确定删除UpdateOrNot=MessageBox("删除记录?”,"您确定要删除数据窗口中的数据?",Question!,YesNo!) if UpdateOrNot=1 then /删除 current_rownumber=w_weihu_teacher_free.dw_weihu_teacher_free.getrow() deleterow(w_weihu_teacher_free。dw_weihu_teacher_free,current_rownumber) if update(w_weihu_teacher_free。dw_weihu_teac

50、her_free,true,false)=1 then/保存修改成功,提交修改 w_weihu_teacher_free。dw_weihu_teacher_free.resetupdate()commit;else/保存修改失败,取消所作的修改rollback;/弹出一个对话框警告messagebox("错误!!","数据删除失败!”)dw_weihu_teacher_free.retrieve()end ifelseif UpdateOrNot=2 then/不删除/rollback;end ifl 按钮控件【保存修改】的clicked事件用于提交和确认对该数据

51、库表格中记录所作的修改,如果提交失败,则取消修改。脚本如下:if update(w_weihu_teacher_free。dw_weihu_teacher_free,true,false)=1 then/保存修改成功,提交修改 w_weihu_teacher_free.dw_weihu_teacher_free。resetupdate() commit;else/保存修改失败,取消所作的修改rollback;/弹出一个对话框警告messagebox("错误!!!","数据保存失败!")dw_weihu_teacher_free.retrieve()end

52、 ifl 按钮控件【退出】的clicked事件用于关闭该窗口。在关闭窗口之前,首先判断用户是否对数据窗口中的记录做了修改而没有保存到数据库中,如果又这样的记录,则出现对话框询问用户是否保存所作的修改。脚本如下:int MCount /修改后没有保存的行数int UpdateOrNot /是否修改/得到修改后没有保存的行数dw_weihu_teacher_free。acceptText()MCount=w_weihu_teacher_free.dw_weihu_teacher_free。ModifiedCount()if MCount=0 then/没有未保存的修改close(w_weihu_t

53、eacher_free)elseif Mcount0 then/询问是否保存所做的修改UpdateOrNot=MessageBox("保存修改",”您修改了数据窗口中的数据,现在是否保存?”,Question!,YesNoCancel!)if UpdateOrNot=1 then/保存if update(w_weihu_teacher_free。dw_weihu_teacher_free,true,false)=1 then/保存修改成功,提交修改w_weihu_teacher_free.dw_weihu_teacher_free。resetupdate()commit;c

54、lose(w_weihu_teacher_free)else/保存修改失败,取消所作的修改rollback;/弹出一个对话框警告messagebox(”错误!!",”数据保存失败!")dw_weihu_teacher_free。retrieve()end if elseif UpdateOrNot=2 then /不保存 rollback; close(w_weihu_teacher_free) end ifend if9.窗口w_lookfor_teacher此窗口实现教师信息的查询,由主窗口的“教师信息管理”菜单的“教师信息查询”调用,可以按姓名查询、按教师编号查询、按

55、拼音查询、姓氏查询。运行界面如下: l 窗口w_lookfor_teacher 的open事件脚本如下:dw_lookfor_teacher.SetTransObject(sqlca)/第一个下拉式列表框控件得到焦点ddlb_1.setfocus()dw_lookfor_teacher.retrieve()/获取数据窗口中最初的SQL Select语句oldsql=dw_lookfor_teacher.getsqlselect()l 按钮控件【查询】根据用户所选择查询列、查询符号、输入的查询内容,形成一个条件查询语句newsql,使用select查询条件过滤数据窗口,其clicked事件脚本如

56、下:string lookforItem1 /定义参数:要查询的列string lookforHow1 /定义参数:查询的符号string lookforWhat1/定义参数:查询的内容/设置数据窗口为最初条件dw_lookfor_teac7her.setsqlselect(oldsql)dw_lookfor_teacher.retrieve()/查询符号的选择 lookforHow1=ddlb_2。text/查询字段1和查询内容1的选择if ddlb_1。text=”教师编号” then lookforItem1="teacher_id” lookforwhat1="&#

57、39;”+sle_1.text+”"elseif ddlb_1。text=”教师姓名" thenlookforItem1="teacher_name”lookforwhat1=”'”+sle_1。text+”elseif ddlb_1。text="拼音” then lookforItem1="teacher_spell"lookforWhat1=”"+sle_1.text+""end ifstring wheresqlstring newsql/查询条件的综合if ddlb_1。text=&quo

58、t;” or ddlb_2。text="” then /用户没有输入查询条件else /用户输入一个查询条件wheresql="where tab_teacher."+lookforItem1+lookforHow1+"”+lookforwhat1+”"/合成新的SQL Select语句newsql=oldsql+wheresql/数据窗口进行查询dw_lookfor_teacher。setsqlselect(newsql)dw_lookfor_teacher。retrieve()end if/以下对查询结果进行统计int i_totalrow

59、i_totalrow=dw_lookfor_teacher。retrieve()if i_totalrow=-1 thenst_msg。text=”查询失败。"else st_msg.text=”查询出了”+string(i_totalrow)+”条记录符合条件."end ifl 按钮控件【退出】用于退出教师信息查询窗口,其clicked事件脚本如下: close(w_lookfor_teacher)l 数据窗口dw_lookfor_teacher的clicked事件用于实现对查询结果进行排序。脚本如下:string col_name/列名string col_text /

60、列标题int length/列标题长度if sortway=" d" then /sortway 实例变量sortway=" a"else sortway=" d”end ifcol_text=;/dwo系统变量length=len(col_text);col_name=left(col_text,length 2) if not isnull(col_name) thendw_lookfor_teacher.sort()end ifend if9 窗口对象w_about_keyan窗口W_about_keyan用于显示系统的版

61、权信息,由主窗口的“帮助”菜单调用。运行界面如下: l 窗口W_about_keyan的open事件脚本,以下脚本使窗口居中显示:Environment l_envint l_ScrWidth,l_ScrHeightsetredraw(false) /关闭窗口刷新/取得屏幕的高度和宽度getEnvironment(l_env)l_ScrWidth=PixelsToUnits(l_env.ScreenWidth,XpixelsToUnits!)l_ScrHeight=PixelsToUnits(l_env。ScreenHeight,YpixelsToUnits!)/移动窗口到屏幕中间Move(l

62、_scrwidth this.width)/2,(l_scrheight - this。height)/2)/打开窗口刷新setredraw(true)六开发中的难点和关键技术l 自动生成拼音码为了减少录入时的工作量,开发中在录入教师信息时,采用了自动生成拼音码技术,具体实现如下: 1 在sqlplus中执行 create or replace function getpy( chnstr in char) return varchar2 Is pytable long; no integer; py varchar2 (200); str varchar2(200); pyi integer; ch1 varchar2(2); len integer; begin pytable:= 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' aaaabbbbbbbbbbbbb

温馨提示

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

评论

0/150

提交评论