资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
. .一、目录一、目录1二、任务书2三、正文23.1设计目的23.2建立用户全局函数及自定义事件33.2.1全局函数f_encypt33.2.2自定义事件uo_dw_freedow33.2.3自定义事件uo_dw_delete43.2.4自定义事件shifter43.2.4自定义事件dberror43.3功能分析53.4表的设计63.5系统实现83.5.1主窗口83.5.2用户登陆窗口93.5.3部门数据录入与维护窗口103.5.4人员信息窗口123.5.5人员数据检索窗口133.5.6工程数据管理窗口163.5.7工程数据查询窗口183.5.8工程数据录入、编辑窗口193.5.9用户管理窗口223.5.10密码修改窗口243.5.11用户数据的录入和编辑窗口253.5.12数据备份窗口263.5.13运行界面28四、总结284.1系统评价284.1 .1系统特色294.1.2系统缺乏及改良294.1.3课程设计心得29五、参考文献30二、任务书图书馆查阅资料: 王雪娥 方俊 X翠丽 设计并创立并联接数据库: 方俊 王雪娥 创立表格及主键、外键、及索引,并编入数据: 方俊王雪娥 代码编写: 王雪娥 方俊 X翠丽 吕剑豪 创立数据窗口对象: X翠丽 王雪娥 方俊 建立用户自定义事件并建立全局函数:方俊 各功能窗口模块化设计: 王雪娥:用户登陆窗口 部门数据录入和维护窗口 人员数据检索窗口 用户管理窗口 方俊: 人员数据录入、维护和查询窗口 工程数据显示窗口 工程录入、编辑窗口 用户数据录入、编辑窗口 X翠丽: 工程数据查询窗口 部门人数统计窗口 更改密码窗口 吕剑豪:系统主窗口数据备份窗口菜单应用设计:王雪娥论文编写:王雪娥 方俊 X翠丽吕剑豪三、正文3.1设计目的进一步加深、稳固学生所学专业课程的根本理论知识,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。使学生得到搜集、处理、应用资料信息的实践训练,同时全面考察学生所掌握的根本理论知识及其实际业务能力,从而到达提高学生素质的最终目的。3.2建立用户全局函数及自定义事件3.2.1全局函数f_encypt/功能:加密/参数:字符串/返回值:字符串integer i,li_kllenstring ls_zmklli_kllen=len(a_ymm)for i=1 to li_kllenls_zmkl=ls_zmkl+char(asc(mid(a_ymm,i,1)+i+li_kllen)nextreturn ls_zmkl3.2.2自定义事件uo_dw_freedowif getrow()0 thenif deleterow(0)=1 thenmessagebox(提示,当前记录已被删除,请按“保存按纽提交) end ifend if3.2.3自定义事件uo_dw_deleteif this.update()0 thenmit using sqlca;messagebox(提示,数据已存盘)elserollback using sqlca;messagebox(提示,数据无法存盘,exclamation!)end if3.2.4自定义事件shifterif key=keyenter! or key=keydownarrow! thenkeybd_event(9,0,0,0)keybd_event(9,0,2,0)return(0)end ifif key=keydownarrow! thenkeybd_event(16,0,0,0)keybd_event(9,0,0,0)keybd_event(9,0,2,0)keybd_event(16,0,2,0)return(1)end if3.2.4自定义事件dberror/显示错误信息messagebox(数据库错误,错误代码+string(sqldbcode)+rn+错误信息+sqlerrtext)return(1)3.3功能分析本系统以工程信息工程编码,工程名称,开发经费,应用情况和参加人员,以及工程开发人员自身的信息编码,*,性别,出生年月,职称和部门为主线,以部门表等为辅表,实现了工程和人员信息的录入、查询和管理等功能,展示了用POWERBUILDER9.0开发系统的方法和技巧。系统功能模块分析(1) 系统登陆2 数据处理l 部门数据维护l 人员数据维护、查询l 工程数据维护、查询3统计报表l 部门人数统计l 工程数据统计4系统管理l 更改密码l 数据备份5窗口管理6系统帮助3.4表的设计部门信息表部门信息表用于记录单位中所有部门及部门编码,主键为部门号dept_id。表构造如上表所示人员信息表人员信息表用于记录单位员工的主要信息,主键是员工号p_id。表构造如上表所示。其中性别字段用1位字符表示,M表示男,F表示女。工程信息表工程信息表用于记录工程信息,主键是工程编码pro_id。表构造如上表所示。工程参与人员表工程参与人员表member用于记录工程开发的参与人员,主键是工程编码和员工号。因为一个工程可能有多人参与,而一个人也可能参与多个开发工程,因此单独用此表来记录,而没有在工程信息表或人员信息表中几记载,这样做的目的在于减少数据的冗余。系统用户信息表其中,用户类型字段用1位字符表示,0表示管理用户,1表示普通用户。3.5系统实现3.5.1主窗口这是窗口的closequery事件脚本long ll_returnll_return=messagebox(提示,确定要退出吗!,question!,yesno!,1)if ll_return=2 thenreturn 1 /不关闭窗口elsereturn 0 /关闭窗口end if这段程序的作用是当用户系统主窗口时,系统会提示用户是否确认退出,以防止用户的误操作导致系统终止运行,如上图所示。3.5.2用户登陆窗口定义全局变量string gs_userid,gs_pwdboolean gb_manager确定按纽的clicked事件代码string ls_name,ls_pw,ls_typels_name=sle_name.textls_pw=sle_pw.textif ls_name thenselect passwd,user_typeinto :gs_pwd,:ls_typefrom userswhere user_id=:ls_name;if f_encypt(ls_pw)gs_pwd or sqlca.sqlcode0 thenif ii_time=3 thenmessagebox(error,sorry you can not!)halt closeelseii_time+messagebox(error,please again!)end ifsle_name.setfocus()elseif ls_type=0 thengb_manager=trueend ifgs_userid=ls_nameopen(w_main)close(parent)end ifend if单行编辑框的modified事件代码if keydown(keyenter!) then if this.text= then return else setfocus(cb_ok) cb_ok.triggerevent(clicked!) end ifend if3.5.3部门数据录入与维护窗口定义窗口的实例变量integer ii_id新增按钮的clicked事件代码string ls_maxidlong ll_rowcount,ll_rowll_rowcount=dw_department.rowcount()if ll_rowcount0 thenls_maxid=dw_department.getitemstring(ll_rowcount,dept_id)ii_id=integer(ls_maxid)+1elseii_id=1end ifll_row=dw_department.insertrow(0)dw_department.scrolltorow(ll_row)dw_department.setitem(ll_row,dept_id,string(ii_id)dw_department.setfocus()下面的代码作用是给数据窗口设定事物对象并检索数据。dw_department.settransobject(sqlca)dw_department.retrieve()下面依次是删除、更新、保存、关闭按钮的clicked事件dw_department.deleterow(0)dw_department.update()dw_department.event ue_save()close(parent)该窗口用来录入、维护和查询人员数据3.5.4人员信息窗口下面的代码作用是给数据窗口设定事物对象并检索数据。dw_personnel.settransobject(sqlca)dw_personnel.retrieve()/保存数据窗口的selete语法is_selete=dw_personnel.describe(daeawindow.table.selete)新增按钮的clicked事件代码string ls_maxidlong ll_rowcount,ll_rowll_rowcount=dw_personnel.rowcount()if ll_rowcount0 thenls_maxid=dw_personnel.getitemstring(ll_rowcount,p_id)ii_id=integer(ls_maxid)+1elseii_id=1end ifll_row=dw_personnel.insertrow(0)dw_personnel.scrolltorow(ll_row)dw_personnel.setitem(ll_r
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号