计算机信息管理综合作业职员信息管理系统.doc_第1页
计算机信息管理综合作业职员信息管理系统.doc_第2页
计算机信息管理综合作业职员信息管理系统.doc_第3页
计算机信息管理综合作业职员信息管理系统.doc_第4页
计算机信息管理综合作业职员信息管理系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

计算机信息管理综合作业职员信息管理系统联系方式: QQ:104771507 Mail: 职员信息管理系统 需求分析和设计目标.2 开发和运行环境2 系统功能.3 系统功能模块结构图.3 数据库结构设计.5 主要模块的设计说明和程序代码.7登陆界面.7系统主界面.8“增加记录”模块.9“修改记录”模块.12“删除记录”模块.13查询.14报表打印.17“导航条”类18系统管理.20“修改密码”模块.21“增加用户”模块.23“删除用户”模块.24 “关于”模块.25“主程序.prg”代码.26 测试情况.26 程序文件清单.27 程序使用说明.28 参考文献.28需求分析和设计目标:随着经济的发展,企业正向着大型化、规模化的方向发展,企业职员数量急剧增加,有关职员的各种信息量也成倍增长。在这种情况下单靠人工来处理职员的信息,工作量将很大,若公司人员有几万甚至几十万,人工处理将变得不可想象。用计算机可使人们从繁重的劳动中解脱出来,仅使用一些简单的操作便可及时、准确地获得需要的信息。企业的职员信息往往是很复杂的,烦琐的。由于所掌握的职员信息各有差异,各个企业之间的管理体制不尽相同,各类统计计划报表繁多,因此职员信息必须实现计算机化,而且必须根据企业的具体情况制定相应的方案。该系统的具体任务就是设计一个企业职员信息管理系统,由计算机来代替人工执行一系列诸如增加新进职员信息、修改职员信息、删除离职职员信息、查询及打印等操作。这样就使管理部门可以轻松快捷地完成职员信息管理的任务,使企业的职员管理工作系统化、规范化、自动化,从而达到提高企业管理效率的目的。另外职员信息系统是一个机密的工厂信息,应配有相应的安全防护策略,并对用户权限作出规定,以防止机密信息的丢失或外泄。设计的指导思想是一切为用户着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的应用程序要有良好的容错性,在用户出现误操作时能尽量及时地给出警告,以便用户及时改正。开发和运行环境开发工具:Visual FoxPro 6.0运行环境:Windows 9x 、Windows 2000、Windows XP系统功能l 系统登陆;l 系统数据初始化;l 职员信息数据的增加;l 职员信息数据的修改;l 职员信息数据的删除;l 职员信息的一览和查询;l 职员信息的报表打印。l 修改登陆用户密码l 增加登陆用户l 删除登陆用户l 关于系统功能模块结构图系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。在系统功能分析的基础上,考虑Visual FoxPro 6.0程序编制的特点,得到如下所示的系统功能模块结构图。职员信息管理系统登陆界面 主界面系统维护关于退出报表打印修改记录查询删除记录增加记录打印报表打印预览一览修改密码删除用户增加用户条件查询系统功能模块结构图数据库逻辑结构设计本系统数据库表的设计结果如下:职员信息表职员号(主键)CHARACTER4姓名CHARACTER8性别CHARACTER2生日CHARACTER10学历CHARACTER8政治面貌CHARACTER4联系电话CHARACTER12家庭住址CHARACTER40所属部门CHARACTER10现任职务CHARACTER10进本单位年份CHARACTER4备注MEMO4用户表用户名CHARACTER10密码CHARACTER10数据库表测试记录如下(无“备注”):职员信息表用户表 主要模块的设计说明和程序代码登陆界面:在进入系统主界面之前,系统需要进行用户验证才能使用此系统,为防止密码泄露,需将密码显示成“*”号,将密码文本框的Passwordchar项,设成“*”在“确定”按钮的Click事件中添加如下代码:SET EXACT ONuse 用户表*搜索匹配的用户LOCATE FOR ALLTRIM(用户表.用户名)=ALLTRIM(THISFORM.Text1.VALUE)*如果找到,且密码也匹配,则运行主界面If found () IF ALLTRIM(密码)=ALLTRIM(THISFORM.Text2.VALUE) *保存登陆用户名 VarUser=ALLTRIM(用户名) ThisForm.Release Do form mainform Else*密码错误则报错并清空文本框 messagebox(密码错误,0,Warning!) ThisForm.Text1.Value= ThisForm.Text2.Value= THISFORM.Text1.SETFOCUS ENDIFELSE*没有找到则进行错误处理 MESSAGEBOX(用户名不存在,请重新输入,48,职员信息管理系统)THISFORM.Text1.VALUE=THISFORM.Text2.VALUE=THISFORM.Text1.SETFOCUSENDIFclose database Set Exact Off系统主界面系统主界面是用户进入系统后主要接触的界面,由它可以进入各个功能模块。分别单击按钮“增加记录”、“修改记录”、“删除记录”、“查询”、“报表打印”可进入与之相对应的功能模块,单击“退出”按钮退出本系统。在“增加记录”按钮的“Click”事件中添加代码如下:do form appendrecordthisform.release在“修改记录”按钮的“Click”事件中添加代码如下:do form modirecordthisform.release在“删除记录”按钮的“Click”事件中添加代码如下:do form delerecordthisform.release在“查询”按钮的“Click”事件中添加代码如下:do form queryrecordthisform.release在“报表打印”按钮的“Click”事件中添加代码如下:do form formprintthisform.release在“退出”按钮的“Click”事件中添加代码如下:thisform.releaseclear events在“系统管理”标签的“Click”事件中添加代码如下:Thisform.releasedo form maintain在“关于”标签的“Click”事件中添加代码如下:do form maintain“增加记录”模块企业新进职员都要为其建立人事档案,该模块的功能就是添加新职员信息。操作很简单,按要求输入完数据后,单击“确定”按钮即可,同时系统会弹出对话框提示输入成功。“取消”按钮的功能是清空所有文本框。该模块做了些限制性设计,以防用户误操作。如:将输入“职员号”、“入厂年份”的文本框的Format和InputMask属性都设为“9999”,使用户只能输入四位数字,输入其它字符无效。同样在输入“出生日期”的文本框的Format和InputMask属性都设为“9999/99/99”。单击“确定”后,如果没有输入“职员号”或输入的“职员号”已存在,系统都会弹出提示信息,以便用户改正。在“确定”按钮的“Click”事件中添加代码如下:* 检查“职员号”是否为空if empty(alltrim(thisform.txtID.value)messagebox(职员号不能为空,48,错误)thisform.txtID.setfocuselse * 获取各输入值inID=alltrim(thisform.txtID.value)inName=alltrim(thisform.txtName.value)inSex=alltrim(thisform.txtSex.value)inBirth=alltrim(thisform.txtBirth.value)inLearn=alltrim(thisform.txtLearn.value)inPolitics=alltrim(thisform.txtPolitics.value)inPhone=alltrim(thisform.txtPhone.value)inAddress=alltrim(thisform.txtAddress.value)inDepartment=alltrim(thisform.txtDepartment.value)inFunction=alltrim(thisform.txtFunction.value)inDate=alltrim(thisform.txtDate.value)inMemo=alltrim(thisform.edtMemo.value)* 检查输入的“职员号”是否已存在set order to 职员号seek inIDif !found()insert into 职员信息表 value(inID,inName,inSex,inBirth,inLearn,inPolitics,inPhone,inAddress,inDepartment,inFunction,inDate,inMemo) messagebox(添加成功!,48,信息) * 添加完毕后清空各文本框 thisform.txtID.value= thisform.txtName.value= thisform.txtSex.value= thisform.txtBirth.value= thisform.txtLearn.value= thisform.txtPolitics.value= thisform.txtPhone.value= thisform.txtAddress.value= thisform.txtDepartment.value= thisform.txtFunction.value= thisform.txtDate.value= thisform.edtMemo.value=else messagebox(此职员号已存在,请另输一个,48,错误) thisform.txtID.value= thisform.txtID.setfocusendifendif在“取消”按钮的“Click”事件中添加代码如下:* 清空各文本框thisform.txtID.value=thisform.txtName.value=thisform.txtSex.value=thisform.txtBirth.value=thisform.txtLearn.value=thisform.txtPolitics.value=thisform.txtPhone.value=thisform.txtAddress.value=thisform.txtDepartment.value=thisform.txtFunction.value=thisform.txtDate.value=thisform.edtMemo.value=thisform.txtID.setfocus在“退出”按钮的“Click”事件中添加代码如下:thisform.releasedo form 主界面“修改记录”模块职员信息的改变,如:部门的调动、职位的升降、搬家、换了电话,或者发现输入了错误的信息,就可以进入该模块进行修改。你可以单击“导航条”逐条定位查找,如果知道要修改职员的职员号,可在最下面的文本框里直接输入该职员号,单击“查找”,如果找到,系统会定位到该记录,如果没有找到,系统会给出提示信息。该模块也做了与“增加记录”模块相近的限制性设计。在该表单的数据环境(Data Environment)中添加“职员信息表”,将各文本框的ControlSource属性设置为在“职员信息表”中与之相对应的字段,这样便完成了与“职员信息表”的绑定。在“查找”按钮的“Click”事件中添加代码如下:set order to 职员号seek alltrim(thisform.text1.value)*错误处理if !found()messagebox(该职员号不存在,48,错误)go topendifthisform.text1.value=thisform.refresh在“退出”按钮的“Click”事件中添加代码如下:thisform.releasedo form 主界面“删除记录”模块如果因为职员离职、退休,或其它原因要删除某条记录,就可进入该模块进行删除。本模块的控件布局与“修改记录”模块基本相似,只是显示记录的各文本框的Enabled属性均设置为“.f.”(假)。同“修改记录”模块一样,设置与“职员信息表”的绑定。在“删除这条记录”按钮的“Click”事件中添加代码如下:nAnswer=messagebox(确定要删除吗?,36,信息)if nAnswer=6thisform.dataenvironment.closetables(职员信息表)* 以独占方式打开表,执行删除命令use 职员信息表 exclusivedelete from 职员信息表 where 职员号=alltrim(thisform.txtID.value)packusethisform.dataenvironment.opentables(职员信息表)thisform.refreshendif在“查找”按钮的“Click”事件中添加代码如下:set order to 职员号seek alltrim(thisform.text1.value)if !found()messagebox(该职员号不存在,48,错误)go topendifthisform.text1.value=thisform.refresh在“退出”按钮的“Click”事件中添加代码如下:thisform.releasedo form 主界面“查询”模块在本模块,你可以选择查询条件,快速查找到所需的职员信息,也可以一览整个“职员信息表”。可供选择的查询关键字有“职员号”、“部门”和“职称”3个字段,可单项查询,也可组合查询。首先,当表单被激活时,根据各复选框的选中情况决定相应的文本框是否可用。在表单的“Activate”事件中添加代码如下:flag1=this.check1.valuedo casecase flag1=0this.text1.enabled=.f. this.text1.value=case flag1=1 this.text1.enabled=.t.endcaseflag2=this.check2.valuedo casecase flag2=0 bo2.enabled=.f. bo2.value=case flag2=1 bo2.enabled=.t.endcaseflag3=this.check3.valuedo casecase flag3=0bo1.enabled=.f. bo1.value=case flag3=1 bo1.enabled=.t.endcase为减少用户输入,在“部门”复选框后用的是组合框。在组合框的“Init”事件中添加代码如下:* 为组合框添加选项this.clearlocal dm,idimension dm1select distinct 部门 from 职员信息表 into array dmfor each i in dmif !empty(i)this.additem(i)endifendfor当单击复选框后,如果框里有“”标记,则后面的文本框或组合框可用;反之,不可用。在“职员号”复选框的“Click”事件中添加代码如下:flag=thisform.check1.valuedo casecase flag=0thisform.text1.enabled=.f. thisform.text1.value=case flag=1 thisform.text1.enabled=.t.endcase在“姓名”复选框的“Click”事件中添加代码如下:flag=thisform.check2.valuedo casecase flag=0bo2.enabled=.f. bo2.value=case flag=1 bo2.enabled=.t.endcase在“部门”复选框的“Click”事件中添加代码如下:flag=thisform.check3.valuedo casecase flag=0 bo1.enabled=.f. bo1.value=case flag=1 bo1.enabled=.t.endcase选中“职称”查询方法同部门查询。在“查询”按钮的“Click”事件中添加代码如下:* 获取各查询关键字输入值getid=alltrim(thisform.text1.value)getzc=alltrim(bo2.value)getdepart=alltrim(bo1.value)* 获取各复选框的值flag1=thisform.check1.valueflag2=thisform.check2.valueflag3=thisform.check3.value* 按选中的查询关键字进行查询if flag1=0 and flag2=0 and flag3=0 messagebox(请输入查询条件,48,错误)endifif flag1=1 and flag2=0 and flag3=0 select * from 职员信息表 where 职员号=getidendifif flag1=0 and flag2=1 and flag3=0 select * from 职员信息表 where 职称=getzcendifif flag1=0 and flag2=0 and flag3=1 select * from 职员信息表 where 部门=getdepartendifif flag1=1 and flag2=1 and flag3=0 select * from 职员信息表 where 职员号=getid and 职称=getzcendifif flag1=1 and flag2=0 and flag3=1 select * from 职员信息表 where 职员号=getid and 部门=getdepartendifif flag1=0 and flag2=1 and flag3=1 select * from 职员信息表 where 职称=getzc and 部门=getdepartendifif flag1=1 and flag2=1 and flag3=1 select * from 职员信息表 where 职员号=getid and 职称=getzc and 部门=getdepartendif在“一览”按钮的“Click”事件中添加代码如下:select * from 职员信息表在“退出”按钮的“Click”事件中添加代码如下:thisform.releasedo form 主界面“报表打印”模块本模块实现两个功能:打印报表和打印预览。在“确定”按钮的“Click”事件中添加代码如下:do casecase thisform.optiongroup1.option1.value=1 report form 职员信息报表 to printcase thisform.optiongroup1.option2.value=1 report form 职员信息报表 to print previewendcase在“退出”按钮的“Click”事件中添加代码如下:thisform.releasedo form 主界面“导航条”类由于在“修改记录”和“删除记录”模块中都要用导航条,为简化代码,并方便系统的维护和修改,我做了一个“导航条”类。在类设计器中依次放置“第一条记录”、“上一条记录”、“下一条记录”和“最后一条记录”四个按钮。在“第一条记录”按钮的“Click”事件中添加代码如下:goto topthis.parent.cmdFirst.enabled=.f.this.parent.cmdPrevious.enabled=.f.this.parent.cmdNext.enabled=.t.this.parent.cmdLast.enabled=.t.thisform.refresh在“上一条记录”按钮的“Click”事件中添加代码如下:skip -1if bof()messagebox(已是第一条记录,48,信息窗口)this.parent.cmdFirst.enabled=.f.this.parent.cmdPrevious.enabled=.f.elsethis.parent.cmdFirst.enabled=.t.this.parent.cmdPrevious.enabled=.t.endifthis.parent.cmdNext.enabled=.t.this.parent.cmdLast.enabled=.t.thisform.refresh在“下一条记录”按钮的“Click”事件中添加代码如下:skipif eof()messagebox(已是最后一条记录,48,信息窗口)skip -1this.parent.cmdNext.enabled=.f.this.parent.cmdLast.enabled=.f.elsethis.parent.cmdNext.enabled=.t.this.parent.cmdLast.enabled=.t.endifthis.parent.cmdFirst.enabled=.t.this.parent.cmdPrevious.enabled=.t.thisform.refresh在“最后一条记录”按钮的“Click”事件中添加代码如下:goto bottomthis.parent.cmdFirst.enabled=.t.this.parent.cmdPrevious.enabled=.t.this.parent.cmdNext.enabled=.f.this.parent.cmdLast.enabled=.f.thisform.refresh“系统管理”模块 以管理员用户登陆 以普通用户登陆本模块主要是对使用该系统用户的管理,分为三个子模块“修改密码”,“添加用户”和“删除用户”,基于安全考量,系统设有管理员用户,只有当以管理用户登陆时,才可以使用“添加用户”和“删除用户”模块。系统默认“admin”,“cxk”为管理员用户在“修改密码”按钮的“Click”事件中添加代码如下:Thisform.releasedo form modipsw在“添加用户”按钮的“Click”事件中添加代码如下:Thisform.releasedo form adduser在“删除用户”按钮的“Click”事件中添加代码如下:Thisform.releasedo form deluser在“返回”标签的“Click”事件中添加代码如下:Thisform.releasedo form mainform“修改密码”模块 此模块只能修改当前登陆用户的密码,并且要提供登陆的原密码。修改时提供了相应的错误处理。在“确定”按钮的“Click”事件中添加代码如下:set exact onuse 用户表set order to 用户名txt1=alltrim(Thisform.txtold.value)txt2=alltrim(Thisform.txtnew.value)txt3=alltrim(Thisform.txtrenew.value)locate for alltrim(用户表.用户名)=VarUserif found() do case case alltrim(用户表.密码)=txt1 .AND. txt2=txt3 .AND. !empty(txt2) repl 密码 with txt2 messagebox(密码更改成功,0+48,更改密码) Thisform.txtold.value= Thisform.txtnew.value= Thisform.txtrenew.value= case empty(txt1) messagebox(请输入原密码,48,系统提示) case empty(txt2) messagebox(请输入新密码,48,系统提示) case empty(txt3) messagebox(请输入确认新密码,48,系统提示) case alltrim(用户表.密码)txt1 messagebox(原密码不正确,48,系统提示) Thisform.txtold.value= case txt2txt3 messagebox(新密码不一致,请重新输入,48,系统提示) Thisform.txtnew.value= Thisform.txtrenew.value= endcaseendif在“取消”按钮的“Click”事件中添加代码如下:Thisform.releasedo form mainform“添加密码”模块本模块主要考虑到该系统可以多人使用,即需要为每个用户设置一个登陆用户。此模块只有管理员用户可以使用。在“确定”按钮的“Click”事件中添加代码如下:set exact onuse 用户表set order to 用户名txt1=alltrim(thisform.txtname.value)txt2=alltrim(thisform.txtpsw.value)txt3=alltrim(thisform.txtrepsw.value)*错误分别处理do case case empty(txt1) messagebox(请输入用户名,48,系统提示) case empty(txt2) messagebox(请输入密码,48,系统提示) case empty(txt3) messagebox(请输入确认密码,48,系统提示) case txt2txt3 messagebox(密码不一致,请重新输入,48,系统提示) Thisform.txtpsw.value= Thisform.txtrepsw.value= endcase locate for alltrim(用户表.用户名)=txt1if found() messagebox(此用户已存在,48,系统提示)else if txt2txt3 insert into 用户表 value(txt1,txt2) messagebox(添加成功,48,系统提示) thisform.txtname.value= thisform.txtpsw.value= thisform.txtrepsw.value= endifendifset exact off 在“取消”按钮的“Click”事件中添加代码如下:Thisform.releasedo form mainform“删除用户”模块此模块是为了保持系统的机密性,对于不需要使用此系统用户的清理,此模块使用管理员用户登陆可使用,且管理员用户不可以被删除。在“确定”按钮的“Click”事件中添加代码如下:set exact onuse 用户表locate for alltrim(用户表.用户名)=alltrim(thisform.txtname.value)if !found() messagebox(此用户不存在,48,系统提示)else *不可以删除管理员用户 if alltrim(thisform.txtname.value)=admin .OR. alltrim(thisform.txtname.value)=cxk messagebox(此为管理员用户,不可以删除,48,系统提示) else nAnswer=messagebox(确定要删除吗?,36,信息) if nAnswer=6 delete from 用户表 where 用户名=alltrim(thisform.txtname.value) pack use thisform.refresh messagebox(删除成功,48,系统提示) thisform.txtname.value= endif endifendif在“取消”按钮的“Click”事件中添加代码如下:Thisform.releasedo form mainform“关于”模块 本模块用于显示作者信息以及其联系方式。 “main.prg”代码* 将程序的资源路径设为当前程序所在文件夹set directory to curdir()clear screenclear events* 设定系统运行环境SET ESCAPE OFFSET TALK OFFSET SAFETY OFF SET STAT BAR OFF SET SYSMENU OFF SET SYSMENU TO SET CENTURY ON SET DATE ANSI* 设置全局变量,用于保存当前登陆用户PUBLIC VarUser* 打开数据库open database 职员信息管理* 运行“主界面”表单do form 主界面* 为窗口提供关闭功能on shutdown quit* 开始响应事件read eventsclose database测试验证模块测试 在“登陆”模块测试中,先输入一个数据库中不存在的用户名和密码,系统报错,当输入正确的用户名

温馨提示

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

评论

0/150

提交评论