职业中介信息管理系统课程设计文档.docx
《职业中介信息管理系统课程设计文档.docx》由会员分享,可在线阅读,更多相关《职业中介信息管理系统课程设计文档.docx(66页珍藏版)》请在冰豆网上搜索。
职业中介信息管理系统课程设计文档
《职业中介信息管理系统》课程设计文档
职业中介信息管理系统
一、需求分析
1.引言
随着经济改革的深入,一方面有下岗人员,一方面又精简机构,还有大量的毕业生,因而我们发现大量的人才市场、职业中介机构不断涌出,其中大部分的职业中介机构是面向本地待业人员。
经过调研,我们基于VisualFoxPro9.0设计开发一套“职业中介信息管理系统”,它能够迎合职业中介机构的需要,尤其是一些管理正规、业务量比较大的大中型职业中介机构。
职业中介机构主要是处理大量的岗位信息、求职信息及大量的查询工作,如果采用手工方式,速度之慢可想而知,当信息量达到一定程度,再想进行查询统计之类的工作是非常困难的,直接影响机构的工作效率,当然影响机构的形象和业务发展。
用一套使用简单、管理方便的计算机“职业中介信息管理系统”能够完善和优化职业中介管理,提高办事效率和经济效益。
用VisualFoxPro9.0实现“职业中介信息管理系统”可以充分发挥VisualFoxPro9.0在数据管理方面灵活的特点,能够从大量的数据中实现更多更方便的查询、统计功能,为“供求”双方提供更多的方便。
2.系统功能要求
✓人才(求职)信息管理功能
◆系统应提供人才信息的录入、修改与删除功能
◆中介机构有固定的人对求职者提供的信息进行管理
✓招聘(岗位)信息管理功能
◆系统提供岗位信息的录入、修改与删除功能
✓招聘单位基本信息管理
◆能对招聘单位的信息进行录入、修改与删除
✓查询、统计、报表预览及打印功能
◆应能根据需要对有关数据查询统计、预览及打印
二.软件设计
1.系统的功能模块图:
2.数据库设计
(1)系统E-R图
(2)数据表
三.设计系统的界面
1.单位表
2.单位表编辑
3.岗位表
4.岗位发布表
5.求职者表
6.求职者表编辑
7.行业表
8.性质表
9.专业表
四.系统的编程实现
1.单位表
代码:
(1)表单的init事件:
thisform.tablefilter=""
thisform.setgrid
thisform.showbuttons
bo1.ListIndex=1
thisform.olecontrol1.SetFocus
(2)表单的setgrid事件:
filterStr=ALLTRIM(thisform.tablefilter)
IFLEN(filterStr)=0THEN
SELECT*FROM用人单位表INTOCURSORtmp单位表
ELSE
SELECT*FROM用人单位表WHERE&filterStrINTOCURSORtmp单位表
ENDIF
thisform.istableempty=IIF(_tally=0,.t.,.f.)
thisform.showbuttons
thisform.grd用人单位表.RecordSourceType=1
thisform.grd用人单位表.RecordSource="tmp单位表"
thisform.grd用人单位表.column1.Width=60
thisform.grd用人单位表.column2.Width=190
thisform.grd用人单位表.column3.Width=50
thisform.grd用人单位表.column4.Width=50
thisform.grd用人单位表.column5.Width=100
thisform.grd用人单位表.column6.Width=50
thisform.grd用人单位表.column7.Width=110
thisform.grd用人单位表.column8.Width=200
thisform.grd用人单位表.column9.Width=50
thisform.grd用人单位表.column10.Width=200
thisform.grd用人单位表.column11.Width=200
thisform.grd用人单位表.SetAll("DynamicBackColor","iif(MOD(RECNO(),2)=0,;
RGB(255,255,255),RGB(192,192,192))","Column")
(3)表单的showbuttons事件:
thisform.cmdAdd.Enabled=.T.
IFthisform.istableempty=.t.THEN
thisform.cmdModify.Enabled=.F.
thisform.cmdDelete.Enabled=.F.
thisform.cmdPrint.Enabled=.F.
ELSE
thisform.cmdModify.Enabled=.T.
thisform.cmdDelete.Enabled=.T.
thisform.cmdPrint.Enabled=.T.
ENDIF
thisform.cmdExit.Enabled=.T.
(4)节点的init事件:
SETDELETEDON
SETEXACTON&&设置字符为精确比较
this.ImageList=thisform.olecontrol2
this.hideSelection=.F.
this.Nodes.Add(,0,"行业","按单位行业浏览",1)
this.Nodes("行业").Expanded=.T.
SELECT行业表
GOTOTOP
DOWHILE!
EOF()
this.Nodes.Add("行业",4,"行业"+行业编号,ALLTRIM(行业名称),2,3)
SKIP
ENDDO
this.Nodes.Add(,0,"性质","按单位性质浏览",1)
SELECT性质表
GOTOTOP
DOWHILE!
EOF()
this.Nodes.Add("性质",4,"性质"+性质编号,ALLTRIM(性质名称),2,3)
SKIP
ENDDO
(5)节点的Nodeclick事件:
LPARAMETERSnode
nodekey=node.key&&保存节点关键字
IFSUBSTR(nodekey,5)=""THEN&&根节点
thisform.tablefilter=""&&清空过滤字符串
ELSE
thisform.tablefilter=LEFT(nodekey,4)+"编号='"+RIGHT(nodekey,3)+"'"&&生成过滤条件
ENDIF
thisform.setgrid&&重新生成数据源
thisform.Refresh
this.SetFocus
(5)Combo1的InteractiveChange事件:
thisform.edit1.Value=""
thisform.edit1.SetFocus
(6)CmdFind(搜索)的Click事件:
tmpStr=ALLTRIM(thisform.edit1.Value)
tmpStr=CHRTRAN(tmpStr,CHR(13),"")
tmpStr=CHRTRAN(tmpStr,CHR(10),"")
IFLEN(tmpStr)=0THEN
RETURN
ELSE
thisform.tablefilter=ALLTRIM(bo1.Value)+"like'%"
thisform.tablefilter=thisform.tablefilter+tmpStr+"%'"
ENDIF
thisform.setgrid
(7)CmdAdd(增加)的Click事件:
SELECTtmp单位表
currec=RECNO()
DOFORMF:
\数据库\职业中介系统\forms\单位表编辑WITH.t.,.f.,""
thisform.setgrid
SELECTtmp单位表
currec=IIF(currec>RECCOUNT(),RECCOUNT(),currec)
IFcurrec=0THEN
GOTOTOP
ELSE
GOTOcurrec
ENDIF
thisform.grd用人单位表.SetFocus
(8)CmdModify(修改)的Click事件:
SELECTtmp单位表
currec=RECNO()
DOFORMF:
\数据库\职业中介系统\forms\单位表编辑WITH.f.,.t.,ALLTRIM(单位编号)
thisform.setgrid
SELECTtmp单位表
currec=IIF(currec>RECCOUNT(),RECCOUNT(),currec)
IFcurrec=0THEN
GOTOTOP
ELSE
GOTOcurrec
ENDIF
thisform.grd用人单位表.SetFocus
(9)CmdDelete(删除)的Click事件:
SELECTtmp单位表
IFMESSAGEBOX('你真的要删除"'+ALLTRIM(单位名称)+'"吗?
',32+3,"提示")=6THEN&&要删除
bh=单位编号&&保存编号
currec=RECNO()&&保存记录号,用于定位
DELETEFROM用人单位表WHERE单位编号=bh&&删除真实表
SELECT用人单位表
PACK&&物理删除
thisform.setgrid&&重新生成数据
SELECTtmp单位表
IFRECCOUNT()currec=RECCOUNT()
ENDIF
IFcurrec=0then
GOtop
ELSE
GOcurrec
ENDIF
thisform.grd用人单位表.Refresh
thisform.olecontrol1.SetFocus
ENDIF
(10)CmdExit(退出)的Click事件:
SETDELETEDOFF
thisform.Release
2.单位表编辑
代码:
(1)表单的Init事件:
PARAMETERSaddflag,modifyflag,dwbh&&接收参数
thisform.addflag=addFlag&&保存增加模式标记
thisform.modifyflag=modifyFlag&&保存修改模式标记
thisform.dwbh=dwbh&&保存单位编号
SETDELETEDON&&设置不显示被删除的记录
SETEXACTON&&设置精确比较模式
SETMULTILOCKSON&&锁定多条记录
=CURSORSETPROP("buffering",5,"用人单位表")&&打开表缓冲
SELECT用人单位表
IFthisform.addflag=.t.THEN&&增加模式
APPENDBLANK&&插入一条空记录
ELSE&&修改模式
LOCATEFOR单位编号=thisform.dwbh&&定位要修改的记录
IF!
FOUND()THEN
MESSAGEBOX("数据有误,不能修改",48,"警告")
thisform.Release
ELSE
thisform.currentrec=RECNO()&&保存当前记录号
性质编号=thisform.txt性质编号.Value&&保存性质编号
行业编号=thisform.txt行业编号.Value&&保存行业编号
SELECT性质表
LOCATEFOR性质编号=ALLTRIM(thisform.txt性质编号.Value)&&查找相应的单位性质
IFFOUND()THEN
bo1.Value=ALLTRIM(thisform.txt性质编号.Value)+"-"+性质名称
ENDIF
SELECT行业表
LOCATEFOR行业编号=ALLTRIM(thisform.txt行业编号.Value)&&查找相应的单位企业
IFFOUND()THEN
bo2.Value=ALLTRIM(thisform.txt行业编号.Value)+"-"+行业名称
ENDIF
ENDIF
ENDIF
thisform.settxtmask&&设置对象的输入掩码
thisform.showbuttons&&按钮状态刷新
(2)表单的QueryUnload事件:
IFthisform.addflag=.t.ORthisform.modifyflag=.t.THEN
MESSAGEBOX("请先按保存或取消!
",48,"警告")
NODEFAULT
ELSE
=CURSORSETPROP("buffering",1,"用人单位表")&&取消单位表的缓冲
ENDIF
(2)表单的SetTxtMask事件:
thisform.txt单位编号.InputMask="99999999"&&8位数字
thisform.txt联系电话.InputMask="(#####)99999999"&&8位数字
thisform.txt邮政编码.InputMask="999999"&&6位数字
thisform.txt工商执照.InputMask=REPLICATE("9",20)&&20位数字
(3)表单的ShowButtons事件:
IFthisform.addflag=.t.ORthisform.modifyflag=.t.THEN
thisform.cmdSave.Enabled=.T.
thisform.cmdCancel.Enabled=.T.
thisform.cmdadd.Enabled=.F.
ELSE
thisform.cmdSave.Enabled=.F.
thisform.cmdCancel.Enabled=.F.
thisform.cmdadd.Enabled=.T.
ENDIF
thisform.cmdexit.Enabled=.T.
(4)CmdAdd(增加)的Click事件:
thisform.SetAll("readonly",.f.,"textbox")&&取消文本框只读
thisform.txt备注.ReadOnly=.F.&&取消编辑框只读
thisform.SetAll("Enabled",.t.,"combobox")&&取消下拉框屏蔽
SELECT用人单位表
APPENDBLANK&&插入一条空记录
bo1.ListIndex=1&&默认为第一个性质
bo2.ListIndex=1&&默认为第一个行业
SELECT性质表
GOTOTOP
thisform.txt性质编号.Value=性质编号
SELECT行业表
GOTOTOP
thisform.txt行业编号.Value=行业编号
thisform.addflag=.t.&&设置表单为增加状态
thisform.showbuttons&&按钮状态刷新
thisform.txt单位编号.SetFocus
thisform.Refresh
(5)CmdSave(保存)的Click事件:
bh=ALLTRIM(thisform.txt单位编号.Value)
IFLEN(bh)<8THEN
MESSAGEBOX("单位编号格式错误或未输入!
",48,"警告")
thisform.txt单位编号.SetFocus
RETURN
ENDIF
dw=ALLTRIM(thisform.txt单位名称.Value)
IFLEN(dw)<=0THEN
MESSAGEBOX("单位名称未输入!
",48,"警告")
thisform.txt单位名称.SetFocus
RETURN
ENDIF
yzbh=ALLTRIM(thisform.txt邮政编码.Value)
IFLEN(yzbh)>0ANDLEN(yzbh)<6THEN
MESSAGEBOX("邮政编码格式错误或未输入!
",48,"警告")
thisform.txt邮政编码.SetFocus
RETURN
ENDIF
IFthisform.addflag=.t.THEN&&表单为增加模式
SELECT*FROM用人单位表WHERE单位编号=bhINTOCURSORtmpdb
ELSE&&表单为修改模式
SELECT*FROM用人单位表WHERE单位编号=bhANDRECNO()<>thisform.currentrecINTOCURSORtmpdb
ENDIF
IF_tally>0THEN&&单位编号重复
MESSAGEBOX("单位编号重复!
",48,"警告")
thisform.txt单位编号.SetFocus
RETURN
ENDIF
thisform.txt性质编号.Value=LEFT(bo1.Value,3)&&取出单位性质编号
thisform.txt行业编号.Value=LEFT(bo2.Value,3)&&取出单位行业编号
SELECT用人单位表
=TABLEUPDATE(.t.)&&保存数据
thisform.SetAll("readonly",.t.,"textbox")&&设置文本框只读
thisform.txt备注.ReadOnly=.T.&&设置编辑框为只读
bo1.Enabled=.F.&&屏蔽下拉框
bo2.Enabled=.F.&&屏蔽下拉框
thisform.addflag=.f.&&增加标记复位
thisform.modifyflag=.f.&&修改标记复位
thisform.showbuttons&&按钮状态刷新
thisform.Refresh&&表单刷新
(6)CmdCancel(取消)的Click事件:
SELECT用人单位表
=TABLEREVERT(.f.)&&取消保存
thisform.SetAll("readonly",.t.,"textbox")&&设置文本框只读
thisform.txt备注.ReadOnly=.T.&&设置编辑框为只读
thisform.SetAll("Enabled",.f.,"combobox")&&屏蔽下拉框
thisform.SetAll("DisabledForeColor",RGB(0,0,0),"combobox")
thisform.addflag=.f.&&增加标记复位
thisform.modifyflag=.f.&&修改标记复位
thisform.Refresh&&表单刷新
(7)CmdExit(退出)的Click事件:
IFthisform.addflag=.t.ORthisform.modifyflag=.t.THEN
MESSAGEBOX("请先保存或取消!
",48,"警告")
RETURN
ELSE
=CURSORSETPROP("Buffering",1,"用人单位表")&&取消数据表缓冲
thisform.Release
ENDIF
(8)Combo1的Init事件:
SELECT性质编号+"-"+ALLTRIM(性质名称)as性质FROM性质表INTOCURSORtmp性质表
this.RowSourceType=6&&指定组合框的数据源类型为字段
this.RowSource="alltrim(tmp性质表.性质)"&&指定组合框的数据源
this.ListIndex=1&&默认为第一项
3.岗位表
代码:
(1)表单的Init事件:
SETDELETEDON&&设置不显示被删除的记录
SETEXACTON&&设置精确比较
thisform.setgrid&&设置表格属性
thisform.addflag=.f.&&设置表单为非增加状态
thisform.modifyflag=.f.&&设置表单为非修改状态
thisform.showbuttons&&按钮状态刷新
(2)表单的Setgrid事件:
SELECT*FROM岗位表INTOCURSORtmp岗位表READWRITE&&生成可读写的临时表
thisform.isemptytable=IIF(_tally=0,.t.,.f.)&&判断数据表是否为空
SETMULTILOCKSON&&锁定多条记录
=CURSORSETPROP("Buffering",5,"tmp岗位表")&&打开缓冲
thisform.grid1.RecordSourceType=1&&指定表格的数据源类型为数据表
thisform.grid1.RecordSource="tmp岗位表"&&指定表格的数据源为tmp岗位表
thisform.grid1.column1.Width=thisform.grid1.Width*0.2&&设定第一列宽度
thisform.grid1.column2.Width=thisform.grid1.Width*0.735&&设定第二列宽度
thisform.grid1.ScrollBars=2&&设置垂直滚动条
thisform.grid1.SetAll("DynamicBackColor","IIF(MOD(RECNO(),2)=0,;
RGB(255,255,255),RGB(192,192,192))","Column")&&交替显示白色和灰色的记录
(3)表单的Showbuttons事件:
IFthisform.addflag=.f.ANDthisform.modifyflag=.f.THEN
thisform.cmdAdd.Enabled=.T.
IFthisform.isemptytable=.f.THEN&&数据表非空
thisform.cmdModify.Enabled=.T.
thisform.cmddelete.Enabled=.T.
ELSE&&数据表空
thisform.cmdmodify.Enabled=.F.
thisform.cmdDelete.Enabled=.F.
ENDIF
thisform.