已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
吉林化工学院课程设计目录第1章 系统需求分析21.1 系统设计目标21.2 开发和运行环境21.3 系统功能分析2第2章 系统设计42.1系统功能模块设计 42.2 数据库设计 52.2.1 E-R图 52.2.2 密码表62.2.3 职员信息表62.3数据库表测试记录 6第3章 主要模块的设计说明和程序代码83.1 首页及程序介绍 83.2 登陆页面 93.3 系统主界面 93.4 “增加记录”模块113.5 “修改记录”模块133.6 “删除记录”模块 143.7 查询 153.8 报表打印 193.9 “导航条”类 203.10 “setting.prg”代码 213.11 “主程序.prg”代码 233.12 “reset.prg”代码 23第4章 程序有关说明244.1主程序、数据表、功能模块及报表对应文件名244.2程序使用说明24第5章 测试情况255.1 模块测试255.2 系统测试25参考文献26第1章 系统需求分析1.1 系统设计目标随着经济的发展,企业正向着大型化、规模化的方向发展,企业职员数量急剧增加,有关职员的各种信息量也成倍增长。在这种情况下单靠人工来处理职员的信息,工作量将很大,若公司人员有几万甚至几十万,人工处理将变得不可想象。用计算机可使人们从繁重的劳动中解脱出来,仅使用一些简单的操作便可及时、准确地获得需要的信息。该系统的具体任务就是设计一个企业职员信息管理系统,由计算机来代替人工执行一系列诸如增加新进职员信息、变更职员信息、删除离职职员信息、查询及打印等操作。这样就使办公人员可以轻松快捷地完成职员信息管理的任务,使企业的职员管理工作系统化、规范化、自动化,从而达到提高企业管理效率的目的。设计的指导思想是一切为用户着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的应用程序要有良好的容错性,在用户出现误操作时能尽量及时地给出警告,以便用户及时改正。1.2 开发和运行环境开发工具:Visual FoxPro 6.0运行环境:Windows 9x 、Windows 2000、Windows XP1.3 系统功能分析l 系统数据初始化;l 职员信息数据的增加;l 职员信息数据的修改;l 职员信息数据的删除;l 职员信息的一览和查询;l 职员信息的报表打印。第2章 系统设计2.1 系统功能模块设计系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。在系统功能分析的基础上,考虑Visual FoxPro 6.0程序编制的特点,得到如下所示的系统功能模块结构图。职员信息管理系统进入系统主界面增加记录修改记录删除记录查询报表打印退出打印预览打印报表一览条件查询功能模块图2.2 数据库设计2.2.1 E-R图该节介绍实体属性及实体之间的联系。实体、属性、联系及数据结构描述如下:管理员拥有的属性:姓名,密码职工拥有的属性:职员号,姓名,性别,生日,学历,政治面貌,联系电话,家庭住址,所属部门,现任职务,进本单位年份E-R图如下:姓名密码管理员管理进单位年份职员号现任职务姓名职工所属部门性别家庭住址生日联系电话政治面貌学历ER图2.2.2 密码表存储管理员姓名和密码字段名类型宽度Name字符型10Password字符型102.2.3 职员信息表职员信息表字段名数据类型字段大小职员号(主键)CHARACTER4姓名CHARACTER8性别CHARACTER2生日CHARACTER10学历CHARACTER8政治面貌CHARACTER4联系电话CHARACTER12家庭住址CHARACTER40所属部门CHARACTER10现任职务CHARACTER10进本单位年份CHARACTER4备注MEMO42.3 数据库表测试记录数据库表测试记录如下(无“备注”):职员号 姓名 性别 生日 学历 政治面貌 联系电话 家庭住址 所属部门 现任职务 进本单位年份0001 刘备 男 1960/09/10 博士 党员武汉市洪山区关山 无 CEO 19850002 关羽 男 1965/04/15 本科 党员武汉市洪山区卓刀泉 销售部 经理 19850003 张飞 男 1966/07/30 本科 党员武汉市洪山区鲁巷 生产部 经理 19850004 赵云 男 1967/12/02 本科 党员武汉市洪山区中南路 配送部 经理 19880005 诸葛亮 男 1970/06/06 博士 党员武汉市武昌区大成路 无 CIO 19900006 孙乾 男 1966/07/17 专科 团员武汉市青山区八大家 人事部 职员 19880007 赵敏 女 1972/05/30 博士 党员武汉市桥口区武胜路 财务部 经理 19930008 郭襄 女 1974/11/08 硕士 党员武汉市江汉区江汉路 广告部 经理 19950009 苗若兰 女 1976/02/14 本科 党员武汉市武昌区中山路 财务部 主管 19970010 周芷若 女 1975/10/25 本科 党员武汉市汉阳区钟家村 广告部 主管 19960011 简雍 男 1967/09/27 专科 团员武汉市青山区红钢城 后勤部 职员 19870012 糜竺 男 1967/07/12 专科 团员武汉市青山区任家路 后勤部 职员 19870013 徐庶 男 1969/03/05 硕士 党员武汉市武昌区积玉桥 人事部 经理 19890014 钟灵 女 1978/06/16 专科 团员武汉市洪山区街道口 广告部 职员 19990015 穆婉清 女 1977/12/24 专科 团员武汉市武昌区武泰闸 财务部 职员 19980016 庞统 男 1966/01/31 博士 党员武汉市武昌区小东门 技术部 经理 19900017 蒋琬 男 1972/10/07 本科 党员武汉市桥口区易家墩 技术部 主管 19950018 马超 男 1975/06/12 本科 党员武汉市江汉区姑嫂树 销售部 主管 19960019 黄忠 男 1955/09/26 本科 党员武汉市武昌区梅家山 配送部 主管 19910020 廖化 男 1968/05/11 专科 团员武汉市江岸区永清街 销售部 职员 1988第3章 主要模块的设计说明和程序代码3.1 首页及程序介绍此页面是欢迎页面单击“进入系统”便可进入登陆页面“进入”按钮的“click”事件中添加代码如下:release thisform DO FORM 管理员登陆.scx3.2 登陆页面此页面是登陆页面,管理员输入正确的姓名和密码后便可进入系统主界面“确定”按钮的“click”事件中添加代码如下:sele 密码表o=thisformif empt(o.txtuser.text) messagebox(用户名不能为空!,48+0+0,操作提示) o.txtuser.setfocus() retuendifloca for allt(name)=allt(o.txtuser.text); .and. allt(password)=allt(o.txtpassword.text)if found() m.密码表=allt(name) *user变量以后要用到对菜单的控制 thisform.release DO FORM 主界面.scxelse messagebox(用户名错或密码错!,48+0+0,操作提示) endifretu“退出”按钮的“click”事件中添加代码如下:release thisformDO FORM 进入系统.scx3.3 系统主界面系统主界面是用户进入系统后主要接触的界面,由它可以进入各个功能模块。分别单击按钮“增加记录”、“修改记录”、“删除记录”、“查询”、“报表打印”可进入与之相对应的功能模块,单击“退出”按钮退出本系统。为使界面不至于单调,可以为主界面加入背景。在“增加记录”按钮的“Click”事件中添加代码如下:do form 增加记录thisform.release在“修改记录”按钮的“Click”事件中添加代码如下:do form 修改记录thisform.release在“删除记录”按钮的“Click”事件中添加代码如下:do form 删除记录thisform.release在“查询”按钮的“Click”事件中添加代码如下:do form 查询thisform.release在“报表打印”按钮的“Click”事件中添加代码如下:do form 报表打印thisform.release在“退出”按钮的“Click”事件中添加代码如下:thisform.releaseclear events3.4 “增加记录”模块企业新进职员都要为其建立人事档案,该模块的功能就是添加新职员信息。操作很简单,按需要输入完数据后,单击“确定”按钮即可,同时系统会弹出对话框提示输入成功。“取消”按钮的功能是清空所有文本框。该模块做了些限制性设计,以防用户误操作。如:将输入“职员号”、“进本单位年份”的文本框的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 主界面3.5 “修改记录”模块职员信息的改变,如:部门的调动、职位的升降、搬家、换了电话,或者发现输入了错误的信息,就可以进入该模块进行修改。你可以单击“导航条”逐条定位查找,如果知道要修改职员的职员号,可在最下面的文本框里直接输入该职员号,单击“查找”,如果找到,系统会定位到该记录,如果没有找到,系统会给出提示信息。该模块也做了与“增加记录”模块相近的限制性设计。在该表单的数据环境(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 主界面3.6 “删除记录”模块如果因为职员离职、退休,或其它原因要删除某条记录,就可进入该模块进行删除。本模块的控件布局与“修改记录”模块基本相似,只是显示记录的各文本框的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.7 查询在本模块,你可以选择查询条件,快速查找到所需的职员信息,也可以一览整个“职员信息表”。可供选择的查询关键字有“职员号”、“姓名”和“所属部门”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 this.text2.enabled=.f. this.text2.value=case flag2=1 this.text2.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=0thisform.text2.enabled=.f. thisform.text2.value=case flag=1 thisform.text2.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)getname=alltrim(thisform.text2.value)getdepart=alltrim(bo1.value)* 获取各复选框的值flag1=thisform.check1.valueflag2=thisform.check2.valueflag3=thisform.check3.value* 按选中的查询关键字进行查询if flag1=0 and flag2=0 and flag3=0messagebox(请输入查询条件,48,错误)endifif flag1=1 and flag2=0 and flag3=0select * from 职员信息表 where 职员号=getidendifif flag1=0 and flag2=1 and flag3=0select * from 职员信息表 where 姓名=getnameendifif flag1=0 and flag2=0 and flag3=1select * from 职员信息表 where 所属部门=getdepartendifif flag1=1 and flag2=1 and flag3=0select * from 职员信息表 where 职员号=getid and 姓名=getnameendifif flag1=1 and flag2=0 and flag3=1select * from 职员信息表 where 职员号=getid and 所属部门=getdepartendifif flag1=0 and flag2=1 and flag3=1select * from 职员信息表 where 姓名=getname and 所属部门=getdepartendifif flag1=1 and flag2=1 and flag3=1select * from 职员信息表 where 职员号=getid and 姓名=getname and 所属部门=getdepartendif在“一览”按钮的“Click”事件中添加代码如下:select * from 职员信息表在“退出”按钮的“Click”事件中添加代码如下:thisform.releasedo form 主界面3.8 报表打印本模块实现两个功能:打印报表和打印预览。在“确定”按钮的“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 主界面3.9 “导航条”类由于在“修改记录”和“删除记录”模块中都要用导航条,为简化代码,并方便系统的维护和修改,我做了一个“导航条”类。在类设计器中依次放置“第一条记录”、“上一条记录”、“下一条记录”和“最后一条记录”四个按钮。在“第一条记录”按钮的“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.refresh3.10 “setting.prg”代码 “setting.prg”代码该程序功能为设置系统环境配置。* 关闭系统菜单set sysmenu offset sysmenu to * 不显示图形状态框set status bar offset talk offset notify off* 将时钟在指定的位置上显示set clock status* 不使用Visual FoxPro默认的调色板set palette off* 打开计算机喇叭set bell on* 指定在覆盖已有的文件时不打开一个对话框set safety off* 指定在按下ESC键后,中断命令和程序的运行set escape onset keycomp to windowsset carry onset confirm on* 指定两个表达式必须长度相等才能进行比较set exact onset near onset ansi offset lock onset multilocks onset deleted onset optimize on* 设定网络中表的刷新时间set refresh to 0,5* 设定字符型字段的排列顺序set collate to stroke* 设置默认文件目录set default to sys(5)+curdir()* 指定查找文件目录set path to sys(5)+curdir()set sysformats offset seconds onset century offset currency leftset currency to nt$set hours to 12set date to usaset decimals to 2set fdow to 1set fweek to 1set mark to .set separator to ,set point to .3.11 “主程序.prg”代码“主程序.prg”代码* 将程序的资源路径设为当前程序所在文件夹set directory to curdir()clear screenclear events* 执行“setting.prg”文件do setting* 打开数据库open database 职员信息管理* 运行“主界面”表单do form 主界面* 为窗口提供关闭功能on shutdown quit* 开始响应事件read eventsclose database* 执行“reset.prg”文件do reset3.12 “reset.prg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿科主治医师相关专业知识(呼吸系统疾病)模拟试卷及答案
- 2025版类风湿性关节炎症状辨识及护理方法
- 2025年第二全国应急管理知识竞赛题库(含参考答案)
- 如何介绍人物
- (正式版)DB65∕T 3695-2015 《维吾尔文软件界面术语缩写规则》
- 耳鼻喉科鼻窦炎治疗要点
- 护士资格考试试题及答案
- 2022年护士职业资格考试《专业实务》过关检测试题 附答案
- 2025年工会相关业务知识竞赛题库工会相关业务知识竞赛试题(含答案)
- 2025年工会基础知识考试题库附含答案
- 《西式烹饪工艺》课件-刀工技术、果蔬原料加工
- 2024年第二十五届“飞向北京·飞向太空”全国青少年航空航天模型教育竞赛活动竞赛规则
- 七年级数学(上)有理数混合运算100题(含答案)
- 公共事业行业财务人员培训:财务管理与预算编制
- 制冷与空调安全培训课件
- 新时代大中小学思政课课程内容一体化建设研究
- 《普通生物学》第二版讲义第1章陈阅增普通生物学绪论
- 胆囊炎伴胆结石护理查房
- 发展汉语-初级读写-第一课-你好
- 《雪地寻踪》选择题及答案
- 《HSK六级辅导》课件
评论
0/150
提交评论