Pb学生管理系统源代码.docx

上传人:b****5 文档编号:5772832 上传时间:2023-01-01 格式:DOCX 页数:36 大小:26.60KB
下载 相关 举报
Pb学生管理系统源代码.docx_第1页
第1页 / 共36页
Pb学生管理系统源代码.docx_第2页
第2页 / 共36页
Pb学生管理系统源代码.docx_第3页
第3页 / 共36页
Pb学生管理系统源代码.docx_第4页
第4页 / 共36页
Pb学生管理系统源代码.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

Pb学生管理系统源代码.docx

《Pb学生管理系统源代码.docx》由会员分享,可在线阅读,更多相关《Pb学生管理系统源代码.docx(36页珍藏版)》请在冰豆网上搜索。

Pb学生管理系统源代码.docx

Pb学生管理系统源代码

PowerBuilder的创始人米歇尔克茨曼。

PowerBuilder奠基人大卫李特瓦克。

1991年6月。

Powersoft公司发布了其旗标式客户/服务器硬功开发工具。

1995年PowerBuilder1.0

1996年PowerBuilder5.0

2003年PowerBuilder9.0

PowerBuilder特点:

面向对象的编程和时间去懂的应用开发程序开发工具,

支持跨平台开发

可以轻松编写语句

人性化设计。

拥有独特的库文件画板和层次清晰的系统资源库。

提供了丰富多样不同风格的数据窗口

PowerBuilder9.0新特性。

支持快速开发的jsp编辑器。

支持xml、PBNI(PowerBuilderNativeInterface)、EJBClient、PB9.0与WebService的关系,PB9.0与.NET、其他增强功能。

建立应用对象

建立Student的工作区和目标,然后建立一个名为student的对象在其Open事件中加入如下脚本:

//设置SQLCA的属性,利用名为pbexam的数据源连接数据库

SQLCA.DBMS="ODBC"

SQLCA.AutoCommit=False

SQLCA.DBParm="Connectistring='DSN=pbexam'"

CONNECTUSINGSQLCA;

//打开登录窗口

open(w_register)

在应用程序的Close事件中加入如下脚本:

//断开数据库连接

DISCONNECTUSINGSQLCA;

登录窗口

在用户名的单行编辑框的ue_enterkey事件中加入如下脚本:

//判断用户是否按下回车

Ifkey=KeyEnter!

Then

//把输入焦点转移到"密码"单行编辑框

sle_2.SetFocus()

EndIf

在密码单行编辑框的ue_enterkey事件中加入如下脚本:

Ifkey=KeyEnter!

Then

//触发登录按钮的Clicked事件

cb_1.TriggerEvent(Clicked!

EndIf

在登录按钮的Clicked事件的脚本中加入如下脚本:

Stringpassword,right

//用SQL语句根据用户名查找密码

//right为一全局变量,用来保存用户权限

SELECTmm,qx

INTO:

password,right

FROM"yh"

WHERE"yh"."hm"=:

sle_1.text;

//SQLCode等于100代替没有得到任何记录。

IfSQLCA.SQLCode=100Then

MessageBox("提示消息","没有此用户")

sle_1.text=""

sle_1.SetFocus()

ElseIfpassword<>sle_2.textThen

MessageBox("提示信息","密码错误!

")

sle_2.text=""

sle_2.SetFocus()

Else

//打开主窗口,关闭登录窗口

Open(w_main)

Close(Parent)

EndIf

在取消按钮的Clicked事件的中加入如下脚本:

Close(parent)//关闭登录窗口

菜单设计

在学生管理菜单项的Clicked事件中加入如下脚本:

//打开学生管理窗口

OpenSheet(w_student,w_main,4)

在页面设置菜单项的Clicked事件中加入如下脚本:

windowactsheet

//取得当前活动窗口

actsheet=w_main.GetActiveSheet()

//触发活动窗口的ue_pageset事件

actsheet.TriggerEvent("ue_pageset")

在打印菜单项的Clicked事件中加入如下脚本:

windowactsheet

actsheet=w_main.GetActiveSheet()

actsheet.TriggerEvent("ue_print")

在退出菜单项的Clicked事件中加入如下脚本:

Close(ParentWindow)

在窗口级联菜单项的Clicked事件中加入如下脚本:

//修改菜单的选中标志

m_jilian.checked=True

m_chongdie.checked=False

m_shuiping.checked=False

m_chuizhi.checked=False

//改变工作表的排列方式

ParentWindow.ArrangeSheets(cascade!

在窗口重叠菜单项的Clicked事件中加入如下脚本:

m_jilian.checked=False

m_chongdie.checked=True

m_shuiping.checked=False

m_chuizhi.checked=False

ParentWindow.ArrangeSheets(Layer!

在窗口水平菜单项的Clicked事件中加入如下脚本:

m_jilian.checked=False

m_chongdie.checked=False

m_shuiping.checked=True

m_chuizhi.checked=False

ParentWindow.ArrangeSheets(Tile!

在窗口垂直菜单项的Clicked事件中加入如下脚本:

m_jilian.checked=False

m_chongdie.checked=False

m_shuiping.checked=False

m_chuizhi.checked=True

ParentWindow.ArrangeSheets(TileHorizontal!

在个人成绩统计菜单项的Clicked事件中加入如下脚本:

//打开专业选择窗口,并把统计的类型作为参数传递给专业选择窗口

OpenWithParm(w_selectzy,"person",w_main)

MDI主窗口

在主窗口的Open事件中加入如下脚本:

//如果不是系统管理员则屏蔽用户管理菜单项

Ifright<>1thenm_main.m_file.m_id.visible=False

//因为打开主窗口后还没有打开任何工作表,所以把和工作表相关的功能菜单的Enabled属性设为false

m_main.m_file.m_pageset.enabled=False

m_main.m_file.m_preview.enabled=False

m_main.m_file.m_previewcancle.enabled=False

m_main.m_file.m_print.enabled=False

m_main.m_edit.m_insert.enabled=False

m_main.m_edit.m_del.enabled=False

m_main.m_edit.m_save.enabled=False

m_main.m_edit.m_append.enabled=False

m_main.m_edit.m_retrieve.enabled=False

m_main.m_edit.m_prior.enabled=False

m_main.m_edit.m_next.enabled=False

m_main.m_edit.m_first.enabled=False

m_main.m_edit.m_last.enabled=False

m_main.m_caozuo.m_select.enabled=False

m_main.m_caozuo.m_find.enabled=False

m_main.m_caozuo.m_sortasc.enabled=False

m_main.m_caozuo.m_sortdesc.enabled=False

m_main.m_window.m_jilian.enabled=False

m_main.m_window.m_chongdie.enabled=False

m_main.m_window.m_shuiping.enabled=False

m_main.m_window.m_chuizhi.enabled=False

学生管理窗口

在学生管理窗口的Open事件中加入如下脚本:

//为数据窗口分配事务对象,并检索数据

dw_stu.SetTransObject(SQLCA)

dw_stu.Retrieve)_

//用静态文本显示当前日期

st_1.text=string(today(),"yyyy/mm/dd")

在查询按钮的Clicked事件中加入如下脚本:

Ifsle_1.text=""Then

//如果没有输入查询关键字提示输入

MessageBox("提示","请输入您要查询的关键字")

sle_1.SetFocus()

Else

//按输入的姓名查询,并用like事件模糊查询

dw_stu.setFilter("xmlike'%"+sle_1.text+"%'")

dw_stu.filter()

dw_stu.SetFocus()

EndIf

在学生管理窗口的Activate事件中加入如下脚本:

//此事件在当前窗口获得焦点时触发

//如果当前用户不是系统管理员和数据管理员则屏蔽和数据修改有关的菜单项

Ifright>2Then

m_main.m_edit.m_insert.enabled=False

m_main.m_edit.m_del.enabled=False

m_main.m_edit.m_save.enabled=False

m_main.m_edit.m_append.enabled=False

Else

m_main.m_edit.m_insert.enabled=True

m_main.m_edit.m_del.enabled=True

m_main.m_edit.m_save.enabled=True

m_main.m_edit.m_append.enabled=True

EndIf

//在当前窗口得到焦点后设置菜单项的enabled属性为True

//在窗口得到焦点时使用菜单项即可

m_main.m_file.m_pageset.enabled=True

m_main.m_file.m_preview.enabled=True

m_main.m_file.m_previewcancle.enabled=True

m_main.m_file.m_print.enabled=True

m_main.m_edit.m_retrieve.enable=Ture

m_main.m_edit.m_prior.enable=Ture

m_main.m_edit.m_next.enable=Ture

m_main.m_edit.m_first.enable=Ture

m_main.m_edit.m_last.enable=Ture

m_main.m_caozuo.m_select.enabled=True

m_main.m_caozuo.m_find.enabled=True

m_main.m_caozuo.m_sortasc.enabled=True

m_main.m_caozuo.m_sortdesc.enabled=True

m_main.m_window.m_jilian.enabled=True

m_main.m_window.m_chongdie.enabled=True

m_main.m_window.m_shuiping.enabled=True

m_main.m_window.m_chuizhi.enabled=True

在学生管理窗口的CloseQuery事件中加入如下脚本:

Integeri

//判断是否有数据的修改

Ifdw_stu.ModifiedCount()+dw_stu.DeletedCount()>oThen

i=MessageBox("提示","是否保存对数据的修改?

",Exclamation!

YesNoCancel!

Choosecasei

case1

//保存数据

Ifdw_stu.UpDate()=1Then

//如果保存成功则提交

COMMIT;

Else

ROLLBACK;

MessageBox("错误","数据库内容更新失败")

EndIf

case2

//不保存数据

Return0

case3

//阻止窗口的关闭

Return1

EndChoose

EndIf

在学生管理窗口的Resize事件中加入如下脚本:

//此事件在窗口改变大小时触发

//修改数据窗口的控件的位置及大小,使其随窗口的大小的改变而改变

dw_stu.x=10

dw_stu.y=150

//newwidth和newheight为该事件传递的参数,代表窗口的新宽度和高度

dw_stu.width=newwidth-20

dw_stu.height=newheight-160

在学生管理窗口的ue_append事件中加入如下脚本:

//事件追加功能

Longtherow

//在数据窗口最后一行插入

therow=dw_stu.insertrow(0)

//滚动到新加入的行

dw_stu.ScrollToRow(therow)

dw_stu.SetFocus()

在学生管理窗口的ue_del事件中加入如下脚本:

//实现删除功能

Integeri,m

m=0

Longtherow

i=MessageBox("提示信息","确认要删除行?

",exclamation!

YesNoCancel!

Ifi=1Then

//如果当前数据窗口中选择了多行则用循环语句删除多行

Do

//因为如果删除了第3行,那么原来第四行就变成了现在的第三行

//所以要把搜索的行号减1

therow=dw_stu.GetSelectedRow(therow-1)

Iftherow<>0Then

m=1

dw_stu.DeleteRow(therow)

EndIf

LoopWhiletherow<>0

//如果没有选中多行则删除当前行

Ifm=0Then

dw_stu.DeleteRow(0)

EndIf

EndIf

dw_stu.SetFocus()

在学生管理窗口的ue_filter事件中加入如下脚本:

//实现查询功能,打开查询窗口,并把数据窗口dw_stu作为参数传递过去,

//可以使用多个窗口功用一个查询窗口

OpenWithParm(w_filter,dw_stu,w_student)

在学生管理窗口的ue_find事件中加入如下脚本:

//实现查询功能,打开查询窗口,并把数据窗口dw_stu作为参数传递过去,

//可以使用多个窗口功用一个查询窗口

OpenWithParm(w_filter,dw_stu,w_student)

在学上管理窗口的ue_first事件中加入如下脚本:

//滚动到第一行,实现最前一个的功能

dw_stu.ScrollToRow

(1)

dw_stu.SetFocus()

在学上管理窗口的ue_insert事件中加入如下脚本:

//实现插入功能

Longtherow,therow1

//得到当前数据窗口当前行,并在当前行前面插入

therow=dw_stu.GetRow()

therow1=dw_stu.InsertRow(therow)

dw_stu.SetRow(therow1)

dw_stu.SetFocus()

在学上管理窗口的ue_last事件中加入如下脚本:

//滚动到最后一行,实现最后一个的功能

Longtherow

therow=dw_stu.RowCount()

dw_stu.ScrollToTow(therow)

dw_stu.SetFocus()

在学上管理窗口的ue_next事件中加入如下脚本:

//滚动到下一行,实现下一个功能

dw_stu.ScrollPriorRow()

dw_stu.SetFocus()

在学上管理窗口的ue_prior事件中加入如下脚本:

//滚动到上一行,实现上一个的功能

dw_stu.ScrollPriorRow()

dw_stu.SetFocus()

在学上管理窗口的ue_pageset事件中加入如下脚本:

//实现页面设置功能,打开页面设置窗口,并把数据窗口dw_stu作为参数传递过去,

//可以使多个窗口共用一个页面设置窗口

OpenWithParm(w_pageset,dw_stu,w_student)

在学上管理窗口的ue_preview事件中加入如下脚本:

//实现打印预览功能,打开打印预览窗口,并把数据窗口dw_stu作为参数传递过去

//可以使多个窗口功用一个打印预览窗口

OpenWithParm(w_preview,dw_stu,w_student)

在学生管理窗口的ue_previewcancle事件中加入如下脚本:

//取消数据窗口的预览模式

dw_stu.modify("datawindwo.print.preview=No")

dw_stu.SetFocus()

在学生管理窗口的ue_print事件中加入如下脚本:

//实现打印预览功能,打开打印预览窗口,并把数据窗口dw_stu作为参数传递过去,

//可以使多个窗口功用一个打印预览窗口

OpenWithParm(w_pageset,dw_stu,w_student)

在学生管理窗口的ue_retrieve事件中加入如下脚本:

//实现检索功能,把过滤条件设置为空,并重新检索数据

dw_stu.setFilter("")

dw_stu.SetSort("")

dw_stu.SetTransObject(SQLCA)

dw_stu.Retrieve()

dw_stu.SetFocus()

在学生管理窗口的ue_save事件中加入如下脚本:

//实现保存功能

Ifdw_stu.UpDate()=1Then

COMMIT;

Else

ROLLBACK;

MessageBox("错误","数据库内容更新失败")

EndIf

在学生管理窗口的ue_sortasc事件中加入如下脚本:

//实现升序的功能

Stringls_ColumnName

//得到数据窗口中当前列的列名

Is_ColumnName=dw_stu.GetCOlumnName()

IfIs_ColumnName<>""Then

dw_stu.SetSort(Is_ColumnName+"A")

dw_stu.Sort()

Else

MessageBox("提示","请您点击数据窗口中的某一列,将此列按升序排列")

EndIf

在学生管理窗口的ue_sortdesc事件中加入如下脚本:

//实现降序的功能

StirngIs_ColumnName

Is_ColumnName=dw_stu.GetColumnName()

IfIs_ColumnName<>""Then

dw_stu.SetSort(Is_ColumnName+"D")

dw_stu.Sort()

Else

MessageBox("提示","请您点击数据窗口中的某一列,将此列按升序排列")

EndIf

在数据窗口控件dw_stu的Clicked事件中加入如下脚本:

//通过单击可以选择一行或多行

Longtherow,startrow,endrow

IfKeyDown(KeyControl!

)Then//如果按着Ctrl键则使点击的行被选择

Ifrow>0Then

//row是系统传递到Clicked事件的参数,代表当前鼠标点击的行

//事件的参数可以在脚本编辑器的“PasteArgument”下拉列表框中查看

this.SelectRow(row,True)

Else

Return

EndIf

ElseIfkeyDown(keyShift!

)Then//如果按着shift键则选择一定范围内的行

startrow=this.GetRow()

endrow=row

Ifstartrow>endrowThen

Fortherow=startrowToendRowStep-1

this.SelectRow(therow,True)

Next

Else

Fortherow=startrowToendrow

this.SelectRow(therow,True)

Next

EndIf

Else

//如果没有按Ctrl和Shift键,则取消选中状态

this.SelectRow(0,False)

EndIf

在数据窗口控件dw_stu的DBError事件中加入如下脚本:

//用自己的错误提示来屏蔽某些系统的错误提示

ChoosecaseSQLDBCode

//SQLAnywhere8.0主码重复的错误脚本为-193

//可以特意发生错误从而得到数据库管理系统的特定的错误脚本

case-193

MessageBox("提示信息","第"+string(row)+&"行学生编号重复",Exclamation!

OK!

ScrollToRow(row)

Return1

EndChoose

Return0

在数据窗口控件dw_stu的DoubleClicked事件中加入如下脚本:

//双击打开成绩管理窗口,显示该学生的成绩

StringExpression

//得到当前行的学号,并拼出成绩的窗口的数据的过滤条件

Expression="xk_xh='"+this.object.xh[row]+"'"

OpenSheetWithParm(w_score,Expression,w_main,4)

在数据窗口控件dw_stu的RetrieveEnd事件中加入如下脚本:

//此事件在数据检索完成后处罚

IntegerColIndex,ColNum

Ifright>2Then

//如果不是系统管理员和数据管理员则通过把列对象的Order

//设为0来阻止对数据的修改

ColNum=integer(this.describe("datawindow.column.count"))

ForColIndex=1ToColNum

this.SetTabOrder(ColIndex,0)

Next

End

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1