




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南科技大学课 程 设 计 说 明 书课程名称 程序设计方法课程设计 题 目 公司人事管理系统的设计 院 系 * 班 级 * 学生姓名 * 指导教师 * 日 期 2012年12月28日 课程设计任务书(指导教师填写)课程设计名称 程序设计方法课程设计 学生姓名 张艳玲 专业班级信管101班 设计题目 公司人事管理系统 一、 课程设计目的该课程设计是信息管理本科集中实践性环节之一,是学习完数据库基础与应用和程序设计方法课程后进行的一次全面的综合练习。其目的是通过本课程设计使学生对具体问题应用程序设计方法课程中所学的方法与技术,进行需求分析及软件设计的过程,不仅对程序设计方法课程中的所有知识点进行一个全面的复习巩固,更重要的是增强学生解决实际问题的能力。二、 设计内容、技术条件和要求1、具有对公司组织信息和公司组织构架的查看功能;2、具有员工和主管信息的各种形式的查询功能;3、具有员工信息的添加、删除,修改等功能;4、具有部门主管管理本部门雇员信息的功能;5、具有人事部主管管理公司内部人力资源的功能;6、具有公司现状查看和评估的统计图功能。技术条件:powerbuilder开发工具的熟练运用,数据库理论知识和实际操作能力。要求:1、本课程设计要求学生独立设计完成。包括规划后台数据库、程序代码的编写以及软件界面的设计。2、数据库中不能少于3个表。3、程序应功能完善,界面友好,容错性好,操作方便。三、 时间进度安排系统分析与规划 半周系统设计与调试 一周撰写课程设计说明书 半周四、 主要参考文献1郑阿奇.PowerBuilder实用教程.第2版.北京:电子工业出版社,2004.2明德祥.PowerBuilder实例下.第1版.长沙:国防科技大学出版社,2002.6.3马承志.PowerBuilder编程实例与技巧.第1版.北京:机械工程出版社,2002.指导教师签字: 2012年12月14日目录1、系统功能介绍和设计11.1系统功能介绍11.2系统功能分析11.3系统功能模块设计22、 数据库设计32.1数据库概念结构设计32.2创建数据库42.3在数据库中创建表:52.4往公司的系统和结构表里添加数据73、 应用程序的创建84、 应用程序主窗口的创建84.1菜单的设计84.2系统用户登陆界面94.3组织信息窗口104.3.1组织结构图窗口104.3.2组织结构窗口124.4查询信息窗口174.4.1查询个人信息窗口174.4.2通讯录窗口184.5修改信息窗口194.5.1修改个人信息窗口194.5.2修改密码窗口224.6主管部门管理244.6.1修改雇员信息244.6.2增加删除雇员274.7人事管理窗口304.7.1雇员增删304.7.2人事调动344.8统计图窗口354.8.1HR现状354.8.2工资分布图365、 主界面运行窗口376、 程序设计方法课程设计评分表38公司人力资源管理系统1、系统功能介绍和设计1.1系统功能介绍1、具有系统登录和用户管理的功能。2、具有对公司组织信息和公司组织构架的查看功能;3、具有员工和主管信息的各种形式的查询功能;4、具有员工信息的添加、删除,修改等功能;5、具有部门主管管理本部门雇员信息的功能;6、具有人事部主管管理公司内部人力资源的功能;7、具有公司现状查看和评估的统计图功能。1.2系统功能分析作为公司的人事管理系统首先必须要具备查看本公司人事状况的功能,其次是修改现有人员信息的功能,还要有主管管理本部门职员的功能,另外还有有人事主管管理整个公司的能力。为更近一步完善次系统,设置了密码和权限。具体如下:1、密码设置。每个操作员均有自己的密码,可以防止非本系统人员进入本 系统;又因每个人的权限不一致,故可以防止越权操作。而且对于自身系统提供的密码,用户可以根据个人的情况进行修改。2、权限设置。设置每个人的权限,使个人有个人的操作范围,不能超出自己的范围操作。为此可以帮助部门主管管理本部门雇员和人事主管管理企业人员的调配、裁员和引进。4、档案更新。为了存放职工人事档案的全部数据,档案更新包括对各种表的记录修改、删除、添加等操作,而且通过设置密码怎家了修改、删除和添加的安丘性能。5、档案查询。可以按姓名、部门或任意条件查询个人和一部分人的情况,以及运用统计图方便只管的查看本公司及部门人员的情况。1.3系统功能模块设计14系统功能模块介绍1、组织结构查看模块:帮助公司内部人员很快的了解公司规模、公司的组织构架、公司管理层人员情况、以及其他员工的个人基本情况。2、雇员和主管信息查询模块:帮助公司内部人员根据自己的需求快婿查找员工、主管的信息以及部门间的人员情况。3、修改雇员和主管信息模块:修改个人信息必须只有本人才有此权限,而且工作的调换仅限于本部门内的职务。首先必须输入密码才能进修修改,而且主管只能修改本部门员工的信息。同时可以进行密码的修改功能。4、主管管理本部门雇员模块:部门主管仅可以修改本部门的成员信息和添加、删除本部门的雇员,没有权限干涉其他的部门。在删除本部门雇员时,对应人员的密码会随之注销。在添加本部门雇员时,会分配出事密码。5、人事主管进行人事管理模块:人事主管具有部门之间的人事调配权利,以及公司人员的辞退和招聘。6、人力资源状况图查看模块:帮助公司人员了解公司人力资源现状(学历分布)以及部门、个人、主管的工资的分布情况。2、 数据库设计2.1数据库概念结构设计设计规划出的实体有:主管信息实体 、雇员信息实体、部门实体、职务实体。主管信息实体的E-R图如图示:雇员信息实体的E-R图如图示:部门信息实体的E-R图如图示:职务信息实体的E-R图如图示:2.2创建数据库(1)单击工具栏上的Database图标按钮;(2)在弹出的Database画板中,打开Object子窗口,展开“ODB ODBC”项下的Utilities目录。(3)双击Utilities目录下的“Create ASA DataBase”对话框,如图示,弹出“Create Server AnyWhere Database”对话框。(4)单击“Broswe.”按钮,弹出“Create Dtabase”对话框,选择合适的路径,返回对话框。(5)使用默认的用户UserID项“dba”和默认的口令Password项“sql”,单击ok按钮,就可以创建一个ASA数据库humenresource,同时,系统自动的为数据库配置了ODBC和DB Profile,并且已经到新建的数据库。(可以看到数据库名huemnresource的图标上有一个绿色的小勾)。2.3在数据库中创建表:(1)展开数据库目录,选中“Tables”,单击鼠标右键,在弹出的选单中单击“New Tables”,就会出现表的设计子窗口。(2)在表的设计子窗口中,分别输入每个字段的名称,选择合适的数据类型,数据宽度,是否允许为空等。最后单击保存按钮,键入表的名字。 以此步骤建立了6个表,分别是major,employee、depart、duty、pass、passem。它们之间关系如下图所示:“employee”结构如下图所示“major”结构如图所示“depart”结构如图所示“duty”结构如图所示“pass(主管密码)” 结构如图所示“passem(雇员密码)”结构如图所示2.4往公司的系统和结构表里添加数据“depart”表“duty”表3、 应用程序的创建单击菜单File/New项,在弹出式对话框中选取Workspace标签下的Workspace,填入路径保存;然后单击菜单File/New项,选择Target标签下的Application,建立humen的应用。在该应用的open事件中添加如下脚本,用于链接数据库,打开运行主窗口。/ Profile 123SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=humen;UID=;PWD=connect;if sqlca.sqlcode0 then messagebox(提示,数据库连接错误!)returnend ifopen(w_login)4、 应用程序主窗口的创建4.1菜单的设计在菜单画面中设计的应用程序主窗口中创建菜单company。该菜单的具体结构如下图所示:4.2系统用户登陆界面“登陆”按钮的代码38string dl_name,dl_mima1,dl_mima2,lr_name,lr_mima int ilr_name=trim(sle_1.text)lr_mima=trim(sle_2.text)select count(*)into :i from passem,passwhere passem.id=:lr_name or pass.id=:lr_nameusing sqlca;if i1 thenmessagebox(对不起,该用户不存在!)sle_1.text = sle_2.text = sle_1.setfocus()returnend ifselect passem.password,pass.passwordinto :dl_mima1,:dl_mima2from passem,passwhere passem.id=:lr_name or pass.id=:lr_nameusing sqlca;if dl_mima1 lr_mima and dl_mima2lr_mima thenmessagebox(对不起,密码错!)sle_2.text = sle_2.setfocus()returnend ifopen(w-start)close(parent)“退出”按钮的代码close(parent)4.3组织信息窗口4.3.1组织结构图窗口核心代码首先创建treeview所需的datawindowinfor_departxx_duty1OPEN事件代码:datastore dt_dept,dt_dutylong ll_root,ll_hd_lv1integer li_deptcnt,li_dutycnt,i,jstring ls_deptid,ls_deptname,ls_dutyid,ls_dutynamestring ls_tempdt_dept = create datastore/创建数据存储对象dt_dept.dataobject = infor_departdt_dept.settransobject(sqlca)dt_dept.retrieve()dt_duty = create datastoredt_duty.dataobject = xs_duty1dt_duty.settransobject(sqlca)dt_duty.retrieve()/如是写在窗口的open()事件,此段代码可省略。ll_root = tv_1.finditem(roottreeitem!,0)tv_1.setredraw(false)tv_1.deleteitem(ll_root)/如需要插入的项的父项的句柄为零,则插入根级。ll_root = tv_1.insertitemlast(0,部门信息,1)li_deptcnt = dt_dept.rowcount()/得到部门个数for i = 1 to li_deptcntls_deptid = dt_dept.getitemstring(i,depart_id)ls_deptname = dt_dept.getitemstring(i,depart_name)ls_temp = ls_deptid + + ls_deptnamell_hd_lv1 = tv_1.insertitemsort(ll_root,ls_temp,1)dt_duty.reset()dt_duty.retrieve(ls_deptid)/为所建数据窗口中声明的参数li_dutycnt = dt_duty.rowcount()/得到该部门下属职务for j = 1 to li_dutycntls_dutyid = dt_duty.getitemstring(j,duty_id)ls_dutyname = dt_duty.getitemstring(j,duty_name)ls_temp = ls_dutyid + + ls_dutynametv_1.insertitemsort(ll_hd_lv1,ls_temp,2)nextnexttv_1.expanditem(ll_root)tv_1.setredraw(true)4.3.2组织结构窗口首先创建treeview所需的datawindowinfor_depart(同上)Infor_major Infor_employeeInfor_employee_oneOpen事件代码datastore dt_dept,dt_duty,dt_maj,dt_emplong ll_root,ll_hd_lv1integer li_deptcnt,li_empcnt,i,jstring ls_deptid,ls_deptname,ls_majid,ls_majname,ls_empid,ls_empnamestring ls_tempdt_dept = create datastore/创建数据存储对象dt_dept.dataobject = infor_departdt_dept.settransobject(sqlca)dt_dept.retrieve()dt_maj = create datastoredt_maj.dataobject = infor_majordt_maj.settransobject(sqlca)dt_maj.retrieve()dt_emp = create datastoredt_emp.dataobject = infor_employeedt_emp.settransobject(sqlca)dt_emp.retrieve()/如是写在窗口的open()事件,此段代码可省略。ll_root = tv_1.finditem(roottreeitem!,0)tv_1.setredraw(false)tv_1.deleteitem(ll_root)/如需要插入的项的父项的句柄为零,则插入根级。ll_root = tv_1.insertitemlast(0,部门信息,1)li_deptcnt = dt_dept.rowcount()/得到部门个数for i = 1 to li_deptcntls_deptid = dt_dept.getitemstring(i,depart_id)ls_deptname = dt_dept.getitemstring(i,depart_name)ls_temp = ls_deptid + + ls_deptnamell_hd_lv1 = tv_1.insertitemsort(ll_root,ls_temp,1)dt_emp.reset()dt_emp.retrieve(ls_deptid)/为所建数据窗口中声明的参数li_empcnt = dt_emp.rowcount()/得到该部门的人数for j = 1 to li_empcntls_empid = dt_emp.getitemstring(j,id)ls_empname = dt_emp.getitemstring(j,name)ls_temp = ls_empid + + ls_empnametv_1.insertitemsort(ll_hd_lv1,ls_temp,2)nextnexttv_1.expanditem(ll_root)tv_1.setredraw(true)/destroy dt_dept/destroy dt_empdw_1.dataobject = infor_departdw_1.settransobject(sqlca)dw_1.retrieve()tv_1控件下的代码:int li_tlv,li_majstring ls_deptid,ls_majid,ls_empidstring ls_tlabel,ls_mlabeltreeviewitem ltvi_tmp,ltvi_deptdw_1.reset()/handle为此事件的参数。this.getitem(handle,ltvi_tmp)li_tlv = ltvi_tmp.level/2li_maj = ltvi_dept.levells_tlabel = ltvi_tmp.labells_mlabel = ltvi_dept.labelif li_tlv = 1 thendw_1.dataobject = infor_departdw_1.settransobject(sqlca)dw_1.retrieve()elseif li_tlv = 2 thendw_1.dataobject = infor_majordw_1.settransobject(sqlca)ls_majid = mid(ls_tlabel,1,2)dw_1.retrieve(ls_majid)elseif li_tlv = 3 thendw_1.dataobject = infor_employee_onedw_1.settransobject(sqlca)ls_empid = mid(ls_tlabel,1,8)dw_1.retrieve(ls_empid)end if4.4查询信息窗口4.4.1查询个人信息窗口查询主管信息:创建名为“major”的datawindow: “查询”按钮下得代码:查询部门成员:创建名为bumen_empl的datawindow:“查询”按钮下得代码:string partnamepartname=trim(ddlb_2.text)dw_3.settransobject(sqlca) dw_3.retrieve(partname)4.4.2通讯录窗口创建名为infor_number的datawindow:“查询”按钮下的代码:string maj_name,maj_num,bumennameint dd_nobumenname=ddlb_1.textselect ,major.numberinto :maj_name,:maj_numfrom major,departwhere :bumenname= and depart.id=major.major;sle_1.text=maj_namesle_2.text=maj_numdw_1.settransobject(sqlca)dw_1.retrieve(bumenname)4.5修改信息窗口4.5.1修改个人信息窗口员工信息窗口的创建:创建名为“xg_emp”的datawindow:在job列悬挂xg_job数据窗口,xg_job的创建如下:“登陆”按钮下的代码是:string mima,xs_mima,cxeidint icxeid=trim(sle_3.text)mima=trim(sle_4.text)select count(*)into :i from passemwhere id=:cxeidusing sqlca;if i1 thenmessagebox(对不起,该用户不存在!)sle_3.text = sle_4.text = sle_3.setfocus()returnend ifselect passwordinto :xs_mimafrom passemwhere id=:cxeid; if xs_mima = mima thendw_2.settransobject(sqlca)dw_2.retrieve(cxeid)else messagebox(提示,密码输入错误,请重新输入!)sle_4.text=end if“保存”按钮下的代码是:string cxeid cxeid=trim(sle_3.text)dw_2.update() if sqlca.sqlcode=0 thencommit using sqlca;messagebox(提示,您已经成功保存修改的数据)else rollback using sqlca;messagebox(提示,数据保存失败)end if4.5.2修改密码窗口“修改密码”按钮下的代码:string id,ymima,xmima,qmima,y_mimaint iid = trim(sle_1.text)ymima=trim(sle_2.text)xmima=trim(sle_3.text)qmima=trim(sle_4.text)select count(*)into :i from passem,passwhere passem.id=:id or pass.id=:idusing sqlca;if i1 thenmessagebox(对不起,该用户不存在!)sle_1.text = sle_2.text = sle_1.setfocus()returnend ifif rb_1.checked and xmima then select password into :y_mima from passem where id=:id ; if y_mimaymima then messagebox(提示,您的原密码错误,请重新输入!) else if xmimaqmima thenmessagebox(提示,确认密码输入错误,请重新输入)sle_3.text=sle_4.text=sle_1.setfocus()else update passemset password=:xmimawhere id=:id; if sqlca.sqlcode = 0 thenmessagebox(提示,密码修改成功,请记好您新修改的密码!)end ifend ifend ifend if if rb_2.checked and xmima then select password into :y_mima from pass where id=:id ; if y_mimaymima then messagebox(提示,您的原密码错误,请重新输入!) else if xmimaqmima thenmessagebox(提示,确认密码输入错误,请重新输入)sle_3.text=sle_4.text=sle_1.setfocus()else update passset password=:xmimawhere id=:id; if sqlca.sqlcode = 0 thenmessagebox(提示,密码修改成功,请记好您新修改的密码!)end ifend ifend ifend if4.6主管部门管理4.6.1修改雇员信息创建名为lr_increase1的datawindow:在从属部门列悬挂“dd_part”数据窗口如下设置此数据窗口:在职务列悬挂xs_duty1数据窗口,次窗口的设置如下:“登陆”按钮的代码:string lr_id,lr_mima,dl_id,dl_mima,depidint ilr_id = trim(sle_1.text)lr_mima=trim(sle_2.text)select count(*)into :i from passwhere id=:lr_idusing sqlca;if i1 thenmessagebox(对不起,该用户不存在!)sle_1.text = sle_2.text = sle_1.setfocus()returnend ifselect password,partinto :dl_mima,:depidfrom passwhere id=:lr_id;if dl_mimalr_mima thenmessagebox(提示,对不起,您输入的密码错误!请重新输入。)else dw_1.retrieve(depid)end if数据窗口dw_1下得代码是:“更新”按钮下的代码是:int i_counti_count=dw_1.modifiedcount()if i_count0 thenif dw_1.update()=1 thencommit using sqlca;messagebox(提示,您已经成功保存+string(i_count)+条数据)else rollback using sqlca;messagebox(提示,数据保存失败)end if end if4.6.2增加删除雇员dw_1数据窗口的创建同“修改雇员信息”窗口所创建名为lr_increase1的datawindow一样.dw_2(用于修改密码表中的信息)的创建如下:“登陆”按钮下的代码是:string lr_id,lr_mima,dl_id,dl_mima,partidint ilr_id = trim(sle_1.text)lr_mima=trim(sle_2.text)select count(*)into :i from passwhere id=:lr_idusing sqlca;if i1 thenmessagebox(对不起,该用户不存在!)sle_1.text = sle_2.text = sle_1.setfocus()returnend ifselect password,partinto :dl_mima,:partidfrom passwhere id=:lr_id;if dl_mimalr_mima thenmessagebox(提示,对不起,您输入的密码错误!请重新输入。)else dw_1.retrieve(partid)cb_4.enabled = truecb_5.enabled=truecb_6.enabled=trueend if数据窗口dw_1下的代码是: “删除”按钮下的代码是:int i,jstring dwj=dw_1.getrow()dw=dw_1.getitemstring(j,id)dw_2.retrieve(dw)i=messagebox(提示,您真的要删除该记录吗?,question!,yesnocancel!,3)if i=1 thendw_2.deleterow(0)dw_1.deleterow(0)“添加”按钮下的代码是:string dwtjint ii=dw_1.rowcount()dw_1.insertrow(i+1)dw_1.setcolumn(id)dw_1.scrolltorow(i+1)dw_1.setfocus()“更新”按钮下的代码是:int i_count,j_counti_count=dw_1.modifiedcount()j_count=dw_1.deletedcount()if i_count0 or j_count 0 thenif dw_1.update()=1 and dw_2.update()=1 thencommit using sqlca;messagebox(提示,您已经成功添加+string(i_count)+条数据,新添加的雇员登陆密码为“0000”!)else rollback using sqlca;messagebox(提示,数据保存失败)end if end if4.7人事管理窗口4.7.1雇员增删在dw_1下悬挂名为“lr_increase2”的数据窗口,创建如下:在“depart”列悬挂名“dd_depart1”为的数据数据窗口,创建如下:在“job”列悬挂名“xs_duty”为的数据数据窗口,创建如下:dw_2(用于修改密码表中的信息)的创建如下:dw_1下的代码是:“登陆”按钮下的代码是:string lr_id,lr_mima,dl_id,dl_mima/int ilr_id = trim(sle_1.text)lr_mima=trim(sle_2.text)if lr_id0210101 thenmessagebox(提示,只有人事部主管有此权限可以添加和删除雇员!)else /if lr_id=0210101 then select password into :dl_mima from pass where id=0210101; if dl_mima=lr_mima t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州省卫生中心第十三届贵州人才博览会引才1人模拟试卷及答案详解(有一套)
- 2025年台州天台县医疗卫生事业单位公开招聘卫技人员31人考前自测高频考点模拟试题及答案详解(考点梳理)
- 班组安全培训计划方案课件
- 2025广西柳州城市职业学院招聘专任教师、辅导员38名考前自测高频考点模拟试题及答案详解(新)
- 2025福建福州文教职业中专学校招聘1人模拟试卷含答案详解
- 2025广东广州航海学院广州交通大学(筹)招聘高层次人才(学科领军人才)15人模拟试卷附答案详解(突破训练)
- 2025河南郑州城建职业学院招聘考前自测高频考点模拟试题及参考答案详解一套
- 2025湖北恩施州宣恩县园投人力资源服务有限公司招聘多家企业工作人员14人考前自测高频考点模拟试题带答案详解
- 2025呼伦贝尔发展和改革委员会所属事业单位引进人才5人考前自测高频考点模拟试题及答案详解(新)
- 2025贵州天柱县第二季度(第一次)拟招聘8个全日制城镇公益性岗位模拟试卷附答案详解(典型题)
- 2025年国企中层干部竞聘笔试题及答案
- 材料返款协议书
- DB3202∕T 1075-2024 职业健康检查质量控制技术规范
- 教育惩戒培训课件
- 期末教学质量分析会校长讲话:把脉找因、沉心补课教学质量没有“回头路”
- 调经补血中药液行业跨境出海项目商业计划书
- 五金公司质量管理制度
- 2025至2030中国DHA藻油行业发展趋势分析与未来投资战略咨询研究报告
- T/ZHCA 002-2018化妆品控油功效测试方法
- 青年急性心肌梗死诊断和治疗专家建议2025
- 幼儿园中班科学语言《望着月亮吃大饼》课件
评论
0/150
提交评论