(招聘面试)模拟人才招聘
选拔群体决策支持系统
模拟人才招聘选拔群体决策支持系统
人才招聘是企业人力资源管理的源头工作,对企业员工队伍的质
量起着关键的把关作用。由于有关人才招聘选拔的决策问题大都是板
结构化和非结构化问题,并且需要多个部门的主管或资历较深的管理
人员及技术人员共同参与决策,目前还少有可供企业选用的决策支持
系统。本节针对人才招聘这一颇有难度的群体决策支持问题,介绍华
东理工大学研制的“模拟人才招聘选拔群体决策支持系统”,试图通
过该案例系统,进一步说明群体决策支持系统的基本构造和工作原理。
一. 系统基本思路
本系统根据人才招聘的特点,按同地异时群体决策类型设计,以
工作流程方式布置一定数量的决策进程步骤,分设进程主控和招聘操
作处理两个部分,在一个局域网上运行。整个流程分应聘者材料阅读
评价、应聘者形象评价、面试提问、应聘者答问、招聘者评分以及最
终的选拔表决等 15个步骤。其中问题提问、答问和评分等步骤设两
轮。因为是一个模拟系统,应聘者采用虚拟技术预设,面试以不见面
的问答形式进行,所提问题和回答也预先按数倍使用量设置,应聘者
的答问随机从预置答案中抽取。
系统设模拟时钟,记录进程时间,步骤切换由主持者触发控制,
可进可退。招聘者的分析评价采用打分制,部分内容采用模糊区间值,
汇总统计采用平均、加权综合等简易算法。
本系统主要用于群体决策支持系统的实验教学和企业招聘人
员的操作训练,但根据具体企业的特定要求,经过少量的改动和参数
设置后也能用于辅助企业实际的人才招聘选拔工作。基于上述想法,
系统综合应用了以下方法和技术。
1. 管理决策基本思想和决策支持系统的基本原理。
2. 群体决策支持系统的结构和构造方法。
3. 计算机网络技术、数据库和应用开发技术。
4. 人才招聘选拔的基本流程和简易人才评价方法。
5. 时钟推进、事件驱动以及管理对象模拟等模拟技术。
二. 系统构成
本系统按照基本的群体决策支持系统结构构造,在三库结构的基
础上加入规程库和通讯库,分设供主持者和选拔者使用的两套人机接
口,见图。
数据库储存与管理应聘者材料、交付应聘者回答的问题和系统运
招聘选拔
处理模块
通信库
招聘选拔
数据库
招聘选拔
模型库
方法库
规程库
应聘者材料预
置提问问题、
答问、评价、
选拔结论
内置邮件
系统发布
信息
评审意见综合、提
问随机抽取、选拔
结论表决
平均综合法、
加权综合法、
模糊评判法、
时间随机函数
招聘选拔规程、
招聘选拔流程、
进程状态
招聘者 1 招聘者 2 招聘者 n 主持者
行过程中产生的数据,运行过程所产生的数据包括应聘者的问题回答,
招聘者对应聘者印象、材料和答问的评价意见等。模型库储存有招聘
者评审意见综合、提问随机抽取以及选拔结论表决等模型。方法库储
存评审和表决等决策中使用的平均综合法、加权综合法和模糊评判法
等简易的数学计算方法。
本系统的特点主要反映在群体决策规程和通信两个方面。规程库
设有招聘选拔的规则和流程、招聘者进入确认、进程状态监视和进程
步骤进退等控制机制,主持者遵循以规程和时间为依据的进程控制机
制组织和操纵系统的运行;通讯库设置内部邮件系统和信息发布模块,
支持主持者与招聘者、招聘者相互之间在系统运行过程中的交流、讨
论和协商,发布规程、进程和各个阶段成果等信息。
主持者和招聘者分别使用不同的人机接口,均以按钮和菜单进行
交互。前者的人机接口设有主控界面,实现进程的监控和推进、与招
聘者的联络、进程信息的发布和最终结论的宣布等;后者的人机接口
设有运行操作界面,供招聘者报道,按规程要求操作招聘选拔各步骤,
与主持者和其他招聘者进行联系交流。招聘选拔处理模块是系统的核
心,接受主持者进程控制调度和招聘者步骤操作的请求,在进程控制
调度上,结合工作流程,采用时间随机函数实现推进,对步骤操作,
调用模型库相关模型和数据库中的数据,作相应处理,返回处理结果。
三. 系统运行
本系统按照规程预定内容、要求和时间运作,从招聘者报道开始
至宣布选拔结束,共分 15步骤,在主持者的控制下推进,必要时也
可逆向返回上一步骤,作修改和补充工作。系统运作流程见图:
本系统的运作现由主持者启动并作初始化处理,然后各招聘者以
报到的方式回答用户名和口令进入系统。系统运转后主持者如果退出
或不做任何操作,不影响造聘者的工作,但步骤将停止推进。在运作
中途,招聘者也能暂时退出系统,然后再报到进入,且不影响先前所
做的工作。这些特点可以使规程的某些特殊步骤延续较长时间,让决
策参与者有一定的时间动机,实现异时的群体决策。
当进入系统的招聘者达到规定的人数时,主持者宣布招聘活动开
始,招聘者根据每个步骤的要求单独执行决策分析工作,一个步骤完
成后发出执行完毕的确认信息,等待下一步骤的开始。期间,招聘者
可以通过内置的邮件系统就自己的观点和意见进行私下交流。
在系统运行中,主持者监视每个招聘者执行步骤地进度,向招聘者发
布进程信息,,但在不违反规定的情况下,不干预他们具体的分析评
判工作。主持者根据预定的步骤进度决定按时、提前或延迟步骤的切
换,并及时通报阶段性的招聘成果。
系统对进程调度和每个步骤操作的处理,除招聘者人数和提问问
题数等需积累的内容外,均在步骤切换时提交招聘选拔处理模款完成。
四、数据文件说明
(1)Agenda:活动步骤表,共 10个步骤,每个步骤一条记录,共十
条记录(已预置)
(2)Answer:提问答案表,对应六个题目,每位应聘者六条记录(两
层:3位应聘者 X 6个题目,已预置)
(3)Applican:应聘者材料表,每位应聘者一条记录,三位应聘者
共三条记录(已预置)
(4)Mail: 邮件收发周转表,每个评委一条记录
(5)Manager:招聘评委工作状态表,每个评委一条记录(主持者事
先添置)
(6)Myscore1:招聘评委个人各项打分表,每个招聘评委对应每个
应聘者一条记录,即每个评委三条记录(两层:评委数 X 3位
应聘者,初始化时重新设置记录)
(7)Myscore2:招聘评委提问问题及打分表,每个评委对每个应聘
者打分三题,三位应聘者共九题。每个评委九条记录(三层:
评委数 X 3位应聘者 X 3个题目,初始化时重新设置记录)
(8)Notes:活动事项表(已预置)
(9)Ourquest:招聘评委提问问题汇总表
(10)Question:待抽提问问题表(已预置)
(11)Readlist:供阅读的材料清单表(已预置)
(12)Seledeci:决策表决记录表,结构与与 Applican相同
********** 程序开始
PARAMETERS controlx && 活动主持者代号
SET TALK OFF
SET SAFETY OFF
SET DATE ANSI
SET REFRESH TO 5
SET EXACT OFF
SET SYSMENU OFF
SET SCOR OFF
SET STATUS BAR OFF
CLOSE ALL
CLEAR
server_path = "e:\czg_research\books-mis-2004\pgdss" &&
SET DEFAULT TO &server_path
IF PARAMETERS()=0
controlx = " "
managerx = " " && 本机评委代号
ELSE
IF controlx<>"MIS" AND controlx<>"RESET"
controlx = " "
managerx = " "
ELSE
managerx = controlx
ENDIF
ENDIF
SELECT 0
USE agenda SHARE && 进程表
SELECT 0
USE answer SHARE && 提问答案表
SELECT 0
USE applican SHARE && 应聘者材料表
SELECT 0
USE mail SHARE && 邮件收发周转表
SELECT 0
USE manager SHARE && 招聘评委工作状态表表
SELECT 0
USE myscore1 SHARE && 招聘评委个人各项打分表(包括两个提问问题号、简历分、印
象分、答题分)
SELECT 0
USE myscore2 SHARE && 招聘评委提问问题及打分表
SELECT 0
USE notes SHARE && 活动事项表
LOCATE FOR Item_no="应聘人数"
REPLACE Item_x WITH STR(RECCOUNT("applican"), 2)
LOCATE FOR Item_no="评委人数"
REPLACE Item_x WITH STR(RECCOUNT("manager"), 2)
SELECT 0
USE ourquest SHARE && 招聘评委提问问题汇总表
SELECT 0
USE question SHARE && 待抽提问问题表
SELECT 0
USE readlist SHARE && 供阅读的材料清单表
IF EOF()
APPEND BLANK
REPLACE Read_item WITH "活动事项"
ENDIF
************************************** 如果 seledeci为空白则自动添加记录(条数
= applican)
SELECT 0
USE seledeci SHARE && 决策表决记录表
SELECT applican
SCAN
SCATTER TO xxx MEMO
SELECT seledeci
IF EOF()
APPEND BLANK
ENDIF
GATHER FROM xxx MEMO
SKIP
SELECT applican
ENDSCAN
**************************************
************************************** 产生应聘者姓名字符串
SELECT applican
GO TOP
appx = App_name && 当前翻选应聘者名称
appnames = ""
SCAN
appnames = appnames+IIF(EMPTY(appnames), "", ";")
appnames = appnames+App_name
ENDSCAN
**************************************
SELECT 0
CREATE CURSOR quest_temp(Quest_no C(3), Quest_num N(3))
*******************************************************************************
* 初始化段
IF parameters()=1 AND controlx="RESET"
DO do_reset
RETURN
ENDIF
*******************************************************************************
*
*******************************************************************************
*
*******************************************************************************
*
DEFINE WINDOW person FROM 5, 10 SIZE 30, 120 TITLE "人才招聘选拔系统" SYSTEM
COLOR RGB(, , , 192, 192, 192)
MOVE WINDOW person CENTER
ACTIVATE WINDOW person
@ 1, 3 SAY "议程:" FONT "宋体", 12 STYLE "BT" COLOR n
@ , 3 FILL TO 28, 41 COLOR n/bg* && n/b
IF controlx<>" "
@ 2, 54 SAY "人才招聘选拔系统" FONT "宋体", 28 STYLE "B" COLOR gr+/b*
ELSE
@ 2, 54 SAY "人才招聘选拔系统" FONT "宋体", 28 STYLE "BT" COLOR n
ENDIF
@ 8, 44 TO 24, 116 PEN 2 STYLE "20" COLOR rb
@ 9, 47 TO 23, 113 PEN 1 STYLE "20" COLOR rb
cur_status = .F. && 实际未用
step_time0 = SECONDS()
DO WHILE .T.
SELECT agenda
GO TOP
SCAN WHILE Is_pass AND managerx<>" "
@ RECNO()*+1, 4 SAY "√" FONT "宋体", 13 STYLE "B" COLOR r/gb*
@ RECNO()*+1, 7 SAY Step_no+" "+TRIM(Step_name) FONT "宋 体 ", 13
STYLE "B" COLOR N/gb* && b/bg*
ENDSCAN
@ RECNO()*+1, 4 SAY " " FONT "宋体", 13 COLOR b/gb*
@ RECNO()*+1, 7 SAY Step_no+" "+TRIM(Step_name) FONT "宋体", 13 STYLE "B"
COLOR r+/gb* && b
IF EOF()
GO BOTTOM
ENDIF
cur_stepno = Step_no
IF VAL(cur_stepno)<1
cur_stepno = "01"
ENDIF
cur_step = TRIM(Step_name)
cur_data = TRIM(Step_data)
DO CASE
CASE controlx<>" "
cur_steppm = TRIM(Step_name)
CASE _&cur_stepno AND managerx<>" "
cur_steppm = TRIM(Step_prom2)
OTHERWISE
cur_steppm = TRIM(Step_prom1)
ENDCASE
cur_stepp3 = TRIM(Step_prom3)
@ 12, 48 CLEAR TO 14, 112
@ 12, 82-LEN(cur_steppm)/-LEN(cur_steppm)/2 SAY cur_steppm FONT "宋体",
18 STYLE "B" COLOR RGB(0, 0, 0, 192, 192, 192)
IF controlx<>" "
cur_second = ROUND(SECONDS(), 0)
step_timex = cur_second - step_time0 + Step_time2
step_time0 = cur_second
REPLACE Step_time2 WITH step_timex
ENDIF
step_minx = INT(Step_time2 / 60)
step_secx = MOD(Step_time2, 60)
SELECT manager
COUNT TO arrive_no FOR Is_&cur_stepno
LOCATE FOR Manager_id=managerx
IF cur_stepno="01"
SELECT notes
LOCATE FOR Item_no="实到人数"
REPLACE Item_x WITH STR(arrive_no, 2)
ENDIF
this_prompt = cur_stepp3+IIF(cur_step<>"宣布招聘结果", ALLTRIM(STR(arrive_no,
2)), "")
@ 15, 48 CLEAR TO 17, 110
@ 15, 74-LEN(this_prompt)/2 SAY this_prompt FONT "宋体", 16 STYLE "B" COLOR
RGB(0, 0, 0, 192, 192, 192)
SELECT agenda
@ 20, 64 SAY "时间 :"+STR(Step_time1, 2)+"分钟 -- "+STR(step_minx,
2)+":"+RIGHT("00"+LTRIM(STR(step_secx, 2)), 2)+" " ;
FONT "宋体", 12 STYLE "B" COLOR RGB(0, 0, 0, 192, 192, 192)
IF NOT EOF()
SKIP
ENDIF
SCAN REST
@ RECNO()*+1, 4 SAY " " FONT "宋体", 13 COLOR N/gb* && b/b
@ RECNO()*+1, 7 SAY Step_no+" "+Step_name FONT "宋体 ", 13 COLOR
N/gb* && COLOR w+/b
ENDSCAN
choice1 = ""
menu1 = IIF(controlx=" ", "执行", "控制")
@ 26, 52 GET choice1 PICTURE "@*H "+menu1+";阅读;邮件;退出" SIZE , 8, 2
FONT "宋体", 12 STYLE "B"
IF controlx<>" "
@ , TO 28, PEN 3 COLOR gr+/b, gr+/b, gr+/b
ENDIF
*******************************************************************************
*****************************
SELECT mail
GO BOTTOM
SKIP
LOCATE FOR Manager_id=managerx
in_mailx = In_mail
IF NOT EMPTY(in_mailx) && AND NOT Is_read
@ , 77 SAY "有你的邮件." FONT "宋体", 11 STYLE "B" COLOR w+/b*
?? CHR(7)
ELSE
@ , 75 CLEAR TO , 100
ENDIF
READ TIMEOUT 3
SELECT manager
cur_stepx = cur_step
DO CASE
CASE choice1="控制"
DO do_control WITH cur_stepx
CASE choice1="执行"
DO do_step WITH cur_stepx
CASE choice1="阅读"
DO do_read WITH controlx
CASE choice1="邮件"
DO do_mail WITH controlx
CASE choice1="退出"
EXIT
ENDCASE
ENDDO
CLEAR GETS
CLOSE ALL
RELEASE WINDOW person
RETURN
**********************************************************************
**********************************************************************
**********************************************************************
PROCEDURE do_reset
SELECT agenda &&
REPLACE ALL Step_promx WITH "", Step_time2 WITH 0, Is_pass WITH .F., Is_passed
WITH ""
SELECT manager &&
SCAN
FOR i=1 TO 10
si = RIGHT("0"+ALLTRIM(STR(i, 2)), 2)
REPLACE Is_&si WITH .F., Is_& WITH ""
ENDFOR
REPLACE In_mail WITH "", Out_mail WITH "", To_who WITH "", Is_read
WITH .F.
ENDSCAN
SELECT applican &&
REPLACE ALL Score1 WITH 0, Score2 WITH 0, Score3 WITH 0, Score4 WITH 0, Score0
WITH 0, Got_num WITH 0, Sele_deci WITH ""
SELECT notes &&
REPLACE ALL Item_x WITH ""
SELECT myscore1 && 记录数 = 评委数 X 应聘者数
dbfx = DBF()
USE &dbfx EXCLUSIVE
ZAP
SELECT manager
SCAN
SELECT applican
SCAN
SELECT myscore1
APPEND BLANK
REPLACE Manager_id WITH _id, App_name WITH
_name
SELECT applican
ENDSCAN
SELECT manager
ENDSCAN
SELECT myscore1
REPLACE ALL Quest_no1 WITH "", Quest_no2 WITH "", Resume_sc WITH 0, Impress_sc
WITH 0, Sele_deci WITH ""
SELECT myscore2 && 记录数 = 评委数 X 3位应聘者数 X 3个题目
dbfx = DBF()
USE &dbfx EXCLUSIVE
ZAP
SELECT manager
SCAN
SELECT applican
SCAN
SELECT myscore2
FOR i=1 TO 3
si = STR(i, 1)
APPEND BLANK
REPLACE Manager_id WITH _id, App_name WITH
_name
ENDFOR
SELECT applican
ENDSCAN
SELECT manager
ENDSCAN
SELECT ourquest &&
REPLACE ALL Quest_no WITH "", Quest_as WITH "", Answ_sc WITH 0
SELECT mail
REPLACE ALL In_mail WITH ""
CLOSE DATABASE
RETURN
*******************************************************************************
*
PROCEDURE do_control
PARAMETERS stepx
DEFINE WINDOW p_control FROM 1, 1 SIZE 10, 80 TITLE "活动控制窗" SYSTEM COLOR
RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_control CENTER
ACTIVATE WINDOW p_control
@ 2, 10 SAY "当前活动:"+stepx FONT "宋体", 12 STYLE "B"
choice2 = "退出"
@ 6, 12 GET choice2 PICTURE "@*H 下一活动;上一活动;退出" SIZE , 8, 3 FONT "宋
体", 12 STYLE "B"
READ MODAL
IF choice2="下一活动"
DO CASE
CASE stepx="评委报到"
SELECT manager
COUNT TO sum_n
COUNT TO arrive_n FOR Is_&cur_stepno
SELECT notes
LOCATE FOR Item_no="评委人数"
REPLACE Item_x WITH STR(sum_n, 2)
LOCATE FOR Item_no="实到人数"
REPLACE Item_x WITH STR(arrive_n, 2)
CASE stepx="活动开始" && 下一步:评委阅读
SELECT readlist
LOCATE FOR Read_item="应聘者材料" OR Read_item=" "
IF EOF()
APPEND BLANK
ENDIF
REPLACE Read_item WITH "应聘者材料"
CASE stepx="阅读材料" && 打简历分,&& 下一步:评委提问
SELECT myscore1
INDEX ON App_name TO quest_t
DO WHILE NOT EOF()
whox = App_name
i = 0
sum_sc = 0
DO WHILE App_name=whox
IF Resume_sc<>0
i = i+1
sum_sc = sum_sc+Resume_sc
ENDIF
SKIP
ENDDO
ave_sc = ROUND(sum_sc/i, 2)
SELECT applican
LOCATE FOR App_name=whox
REPLACE Score1 WITH ave_sc
SELECT myscore1
ENDDO
CASE stepx="评委提问" && 下一步:提问汇总
SELECT ourquest
REPLACE ALL App_name WITH "", Quest_no WITH "", Quest_as WITH "",
Answ_sc WITH 0
SELECT applican
SCAN
SELECT quest_temp
ZAP
INDEX ON Quest_no TO qno
SELECT myscore1
SCAN FOR App_name=_name AND Quest_no1<>" "
SELECT quest_temp
SEEK _no1
IF NOT FOUND()
APPEND BLANK
REPLACE Quest_no WITH _no1
ENDIF
REPLACE Quest_num WITH Quest_num+1
SELECT myscore1
ENDSCAN
SCAN FOR App_name=_name AND Quest_no2<>" "
SELECT quest_temp
SEEK _no2
IF NOT FOUND()
APPEND BLANK
REPLACE Quest_no WITH _no2
ENDIF
REPLACE Quest_num WITH Quest_num+1
SELECT myscore1
ENDSCAN
SELECT quest_temp
DO WHILE RECCOUNT("quest_temp")<3
SELECT question
SCAN
SELECT quest_temp
SEEK _no
IF NOT FOUND()
APPEND BLANK
REPLACE Quest_no WITH _no
ENDIF
SELECT question
ENDSCAN
ENDDO
SELECT quest_temp
INDEX ON 0-Quest_num TO qnum
GO TOP
i = 1
SCAN NEXT 3
si = STR(i, 1)
SELECT ourquest
LOCATE FOR App_name=" " AND Quest_no=" "
IF NOT FOUND()
APPEND BLANK
ENDIF
REPLACE App_name WITH _name
REPLACE Quest_no WITH _no
SELECT quest_temp
i = i+1
ENDSCAN
SELECT applican
ENDSCAN
CASE stepx="提问汇总" && 下一步:应聘者答
SELECT ourquest
SCAN
SELECT answer
LOCATE FOR App_name+Quest_no=_name+_no
SELECT question
LOCATE FOR Quest_no=_no
SELECT ourquest
REPLACE Quest_as WITH _no +":"+ _text
+ CHR(13)+CHR(13) + _text
ENDSCAN
SELECT manager
SCAN FOR Is_01
mx = Manager_id
SELECT myscore2
LOCATE FOR Manager_id=mx
SELECT ourquest
GO TOP
DO WHILE NOT EOF()
SELECT myscore2
REPLACE Quest_no WITH _no
SKIP
SELECT ourquest
SKIP
ENDDO
SELECT manager
ENDSCAN
CASE stepx="应聘者答" && 下一步:打印象分
SELECT myscore2
INDEX ON App_name+Quest_no TO score_t
GO TOP
DO WHILE NOT EOF()
app_quest = App_name+Quest_no
i = 0
sum_sc = 0
DO WHILE App_name+Quest_no=app_quest
IF Answ_sc<>0
i = i+1
sum_sc = sum_sc+Answ_sc
ENDIF
SKIP
ENDDO
ave_sc = ROUND(sum_sc/i, 2)
SELECT ourquest
LOCATE FOR App_name+Quest_no=app_quest
REPLACE Answ_sc WITH ave_sc
SELECT myscore2
ENDDO
SELECT applican
SCAN
SELECT ourquest
SUM Answ_sc TO sum_sc FOR App_name=_name
SELECT applican
REPLACE Score3 WITH sum_sc
ENDSCAN
SELECT readlist
LOCATE FOR Read_item="您的评分" OR Read_item=" "
IF EOF()
APPEND BLANK
ENDIF
REPLACE Read_item WITH "您的评分"
LOCATE FOR Read_item="答题平均分" OR Read_item=" "
IF EOF()
APPEND BLANK
ENDIF
REPLACE Read_item WITH "答题平均分"
CASE stepx="打印象分" && 下一步:评分综合
SELECT myscore1
INDEX ON App_name TO quest_t
DO WHILE NOT EOF()
whox = App_name
i = 0
sum_sc = 0
DO WHILE App_name=whox
IF Impress_sc<>0
i = i+1
sum_sc = sum_sc+Impress_sc
ENDIF
SKIP
ENDDO
ave_sc = ROUND(sum_sc/i, 2)
SELECT applican
LOCATE FOR App_name=whox
REPLACE Score4 WITH ave_sc
SELECT myscore1
ENDDO
SELECT applican
REPLACE ALL Score1 WITH MIN(30, Score1), Score4 WITH MIN(20, Score4)
REPLACE ALL Score0 WITH Score1+Score2+Score3+Score4
SELECT readlist
LOCATE FOR Read_item="您的印象分" OR Read_item=" "
IF EOF()
APPEND BLANK
ENDIF
REPLACE Read_item WITH "您的印象分"
CASE stepx="评分综合" && 下一步:选拔表决
CASE stepx="选拔表决" && 下一步:宣布招聘结果
SELECT applican
REPLACE ALL Got_num WITH 0
SELECT myscore1
INDEX ON App_name TO quest_t
DO WHILE NOT EOF()
whox = App_name
i = 0
DO WHILE App_name=whox
IF Sele_deci="√"
i = i+1
ENDIF
SKIP
ENDDO
SELECT applican
LOCATE FOR App_name=whox
REPLACE Got_num WITH i
SELECT myscore1
ENDDO
SELECT applican
GO TOP
sele_x = Got_num
sele_y = Score0
sele_z = App_name
SCAN
DO CASE
CASE Got_num>sele_x
sele_x = Got_num
sele_y = Score0
sele_z = App_name
CASE Got_num=sele_x AND Score0>sele_y
sele_x = Got_num
sele_y = Score0
sele_z = App_name
ENDCASE
ENDSCAN
SELECT applican
REPLACE ALL Sele_deci WITH ""
LOCATE FOR App_name=sele_z
REPLACE Sele_deci WITH "√"
ENDCASE
SELECT agenda
LOCATE FOR Step_name=stepx
REPLACE Is_pass WITH .T., Is_passed WITH "√"
step_time0 = SECONDS()
cur_step = " "
@ 10, 46 CLEAR TO 22, 120
ENDIF
IF choice2="上一活动"
SELECT agenda
LOCATE FOR Step_name=stepx
IF RECNO()>1
SKIP -1
ENDIF
REPLACE Is_pass WITH .F., Is_passed WITH ""
step_time0 = SECONDS()
cur_step = " "
@ 10, 46 CLEAR TO 22, 120
ENDIF
RELEASE WINDOW p_control
RETURN
**********************************************************************
**********************************************************************
PROCEDURE do_step
PARAMETERS stepx
choice2 = "退出"
DO CASE
CASE stepx="评委报到"
DEFINE WINDOW p_register FROM 1, 1 SIZE 10, 50 TITLE "评委报到窗" SYSTEM
COLOR RGB(, , , 192, 192, 192)
MOVE WINDOW p_register CENTER
ACTIVATE WINDOW p_register
choicex = "确认"
@ 2, 8 SAY "用户号:" FONT "宋体", 12 STYLE "B"
@ 2, 24 GET manager_no DEFAULT " " FONT "宋体", 12 COLOR , w+/b
@ 4, 8 SAY "口 令:" FONT "宋体", 12 STYLE "B"
@ 4, 24 GET manager_pw DEFAULT " " FONT "宋体", 12 COLOR , w+/b
@ 7, 9 GET choicex PICTURE "@*HT 确认;取消" FONT "宋体", 12 STYLE "B"
SIZE , 8, 4
READ MODAL
IF manager_no="MIS" AND choicex<>"取消"
controlx = manager_no
RELEASE WINDOW p_register
RETURN
ENDIF
IF choicex="取消" OR EMPTY(TRIM(manager_no)) OR EMPTY(TRIM(manager_pw))
RELEASE WINDOW p_register
RETURN
ENDIF
IF manager_no<>"DSS"
DO p_info WITH "非 法 用 户 !", 1
RELEASE WINDOW p_register
RETURN
ENDIF
SELECT manager
LOCATE FOR Manager_id=TRIM(manager_pw)
IF NOT FOUND()
DO p_info WITH "口 令 错 误 !", 1
RELEASE WINDOW p_register
RETURN
ENDIF
REPLACE Is_01 WITH .T., Is_01ed WITH "√"
cur_status = .T.
managerx = Manager_id
RELEASE WINDOW p_register
@ 5, 78 SAY managerx FONT "宋体", 16 STYLE "B" COLOR rg+/b*
CASE stepx="活动开始" OR stepx="提问汇总"
DEFINE WINDOW p_win FROM 1, 1 SIZE 26, 100 TITLE "材料阅读窗" SYSTEM COLOR
RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_win CENTER
ACTIVATE WINDOW p_win
@ 1, 42 SAY cur_data FONT "宋体", 12 STYLE "B"
@ , 38 GET choice2 PICTURE "@*H 阅毕;退出" SIZE , 8, 2 FONT "宋体",
12 STYLE "B"
textx = ""
DO p_disp WITH cur_data
READ
is_x = IIF(stepx="活动开始", "02", IIF(stepx="提问汇总", "05", " "))
IF choice2="阅毕" AND stepx<>" "
SELECT manager
LOCATE FOR Manager_id=managerx
REPLACE Is_&is_x WITH .T., Is_& WITH "√"
ENDIF
RELEASE WINDOW p_win
CASE stepx="阅读材料" && 打简历分
DO p_disp WITH cur_data, .T.
IF choice2="评毕"
SELECT manager
LOCATE FOR Manager_id=managerx
REPLACE Is_03 WITH .T., Is_03ed WITH "√"
ENDIF
CASE stepx="评委提问"
DEFINE WINDOW p_quest FROM 1, 1 SIZE 28, 100 TITLE "问题选择窗" SYSTEM
COLOR RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_quest CENTER
ACTIVATE WINDOW p_quest
@ 25, 16 GET choice2 PICTURE "@*N 选择" SIZE , 8 FONT "宋体", 12 STYLE
"B" VALID p_sele()
@ 25, 33 GET choice2 PICTURE "@*N 阅读" SIZE , 8 FONT "宋体", 12 STYLE
"B" VALID do_read(controlx)
@ 25, 50 GET choice2 PICTURE "@*H 选毕;退出" SIZE , 8, 2 FONT "宋体",
12 STYLE "B"
DEFINE WINDOW p_browseq FROM 1, 2 SIZE 14, 95 IN p_quest
ACTIVATE WINDOW p_browseq
SELECT question
GO TOP
BROWSE FIELD Quest_no:H='':R, Quest_text:H='问 题 ':R:50 IN p_browseq
NODELETE NOEDIT NOWAIT ;
TITLE "问题选择" FONT "宋体", 12
DEFINE WINDOW p_myscore1 FROM 16, 2 SIZE 8, 95 IN p_quest
ACTIVATE WINDOW p_myscore1
SELECT myscore1
LOCATE FOR Manager_id=managerx
BROWSE FIELD App_name:H='应 聘 者 ':R:15, Quest_no1:H='问 题 1':R,
Quest_no2:H='问题 2':R IN p_myscore1 NODELETE NOWAIT ;
TITLE "已选问题" FONT "宋体", 12 FOR Manager_id=managerx noedit
READ
RELEASE WINDOW p_browseq
RELEASE WINDOW p_myscore1
RELEASE WINDOW p_quest
IF choice2="选毕"
SELECT manager
LOCATE FOR Manager_id=managerx
REPLACE Is_04 WITH .T., Is_04ed WITH "√"
ENDIF
RELEASE WINDOW p_win
CASE stepx="应聘者答" && 评委打分
DO p_disp WITH cur_data, .T.
IF choice2="评毕"
SELECT manager
LOCATE FOR Manager_id=managerx
REPLACE Is_06 WITH .T., Is_06ed WITH "√"
ENDIF
CASE stepx="打印象分"
DO p_disp WITH cur_data, .T.
IF choice2="评毕"
* SELECT applican
* REPLACE ALL Score0 WITH Score1+Score2+Score3+Score4
SELECT manager
LOCATE FOR Manager_id=managerx
REPLACE Is_07 WITH .T., Is_07ed WITH "√"
ENDIF
CASE stepx="评分综合"
DO p_disp WITH cur_data, .T.
IF choice2="阅毕"
SELECT manager
LOCATE FOR Manager_id=managerx
REPLACE Is_08 WITH .T., Is_08ed WITH "√"
ENDIF
CASE stepx="选拔表决"
DO p_disp WITH cur_data, .T.
IF choice2="选毕"
SELECT seledeci
LOCATE FOR sele_deci="√"
IF FOUND()
appy = App_name
SELECT myscore1
REPLACE Sele_deci WITH "" FOR Manager_id=managerx
LOCATE FOR Manager_id=managerx AND App_name=appy
REPLACE Sele_deci WITH "√"
ENDIF
SELECT manager
LOCATE FOR Manager_id=managerx
REPLACE Is_09 WITH .T., Is_09ed WITH "√"
ENDIF
CASE stepx="宣布招聘结果"
DO p_disp WITH cur_data, .T.
ENDCASE
RETURN
******************************************************************** p_sele
PROCEDURE p_sele
SELECT myscore1
DO CASE
CASE EMPTY(Quest_no1)
REPLACE Quest_no1 WITH _no
CASE EMPTY(Quest_no2)
REPLACE Quest_no2 WITH _no
OTHERWISE
REPLACE Quest_no1 WITH Quest_no2, Quest_no2 WITH _no
ENDCASE
RETURN
******************************************************************** do_read
PROCEDURE do_read
PARAMETERS conx
DEFINE WINDOW p_win FROM 1, 1 SIZE 28, 100 TITLE "材料阅读窗" SYSTEM COLOR
RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_win CENTER
ACTIVATE WINDOW p_win
IF conx<>" "
listx = "活动进程情况;评委工作情况" && 主持人在可读材料
selex = "活动进程情况"
ELSE
SELECT readlist
GO TOP
selex = Read_item
listx = ""
SCAN WHILE Read_item<>" "
listx = listx+IIF(EMPTY(listx), "", ";")
listx = listx+Read_item
ENDSCAN
ENDIF
choicex = "退出"
@ 1, 32 GET selex PICTURE "@^N "+listx SIZE , 20 FONT "宋体", 12 VALID
p_disp(selex)
@ 25, 40 GET choicex PICTURE "@*H 退出" SIZE , 8, 2 FONT "宋体", 12 STYLE
"B"
READ MODAL
RELEASE WINDOW p_win
RETURN
******************************************************************** p_disp
PROCEDURE p_disp
PARAMETERS dispx, is_do
parax = PARA()
menux = IIF(PARAMETERS()=2 AND is_do, "阅毕;", "")
DO CASE
CASE dispx="活动进程情况"
DEFINE WINDOW p_browse FROM 3, 2 SIZE 17, 95 IN p_win
ACTIVATE WINDOW p_browse
MOVE WINDOW p_browse CENTER
SELECT agenda
GO TOP
BROWSE FIELD Step_no:H='':R, Step_name:H='步骤':R, Step_time1:H='限定时间
':R, ;
Is_passed:H='已 完 成 ':R IN p_browse NODELETE NOWAIT TITLE
dispx FONT "宋体", 12 noedit
CASE dispx="评委工作情况"
DEFINE WINDOW p_browse FROM 3, 2 SIZE 17, 95 IN p_win
ACTIVATE WINDOW p_browse
MOVE WINDOW p_browse CENTER
SELECT manager
GO TOP
BROWSE FIELD Manager_id:H='评委':R, Is_01ed:H='报到 ':R, Is_02ed:H='读事
项':R, ;
Is_03ed:H='读材料':R, Is_04ed:H='提问 ':R, Is_05ed:H='读汇总
':R, ;
Is_06ed:H='打 分 ':R, Is_07ed:H='印 象 分 ':R IN p_browse
NODELETE NOEDIT NOWAIT TITLE dispx FONT "宋体", 11
*CASE dispx="添加评委"
* DEFINE WINDOW p_win2 FROM 1, 1 SIZE 26, 70 TITLE "添加评委" SYSTEM COLOR
RGB(, , , 192, 192, 192) IN DESKTOP
* MOVE WINDOW p_win2 CENTER
* ACTIVATE WINDOW p_win2
* DEFINE WINDOW p_browse FROM 1, 1 SIZE 24, 40 IN p_win2
* ACTIVATE WINDOW p_browse
* SELECT manager
* GO TOP
* BROWSE FIELD Manager_id:H='评委' IN p_browse NOWAIT TITLE dispx FONT "宋
体", 11
* ACTIVATE WINDOW p_win2
* choice2 = "退出"
* @ 18, 55 GET choice2 PICTURE "@*H 退出" SIZE , 8 FONT "宋体", 12 STYLE
"B"
* READ
* RELEASE WINDOW p_win2
CASE dispx="活动事项"
textx = "" && CHR(13)
SELECT notes
SCAN
textx = textx+" "+TRIM(Item_text)+ALLTRIM(Item_x)+CHR(13)
ENDSCAN
DEFINE WINDOW p_browse FROM 3, 2 SIZE 17, 95 IN p_win
ACTIVATE WINDOW p_browse
MOVE WINDOW p_browse CENTER
@ 3, 2 SAY textx SIZE 15, 60 FONT "宋体", 12
CASE dispx="应聘者材料" OR dispx="您给的简历分" OR dispx="您给的印象分" OR
dispx="综合评分"
DEFINE WINDOW p_win2 FROM 1, 1 SIZE 26, 120 TITLE "材料阅读窗 " SYSTEM
COLOR RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_win2 CENTER
ACTIVATE WINDOW p_win2
DO CASE
CASE dispx="您给的简历分"
@ , 45 SAY "满分 30分" FONT "宋体", 12 STYLE "B"
DEFINE WINDOW p_browse FROM 1, 1 SIZE 8, 40 IN p_win2
ACTIVATE WINDOW p_browse
SELECT myscore1
BROWSE FIELD App_name:H='应 聘 者 ':R, Resume_sc:H='简 历 分 ' FOR
Manager_id=managerx ;
IN p_browse NODELETE NOWAIT TITLE dispx FONT "宋体", 12 WHEN
p_memo("App_docum", App_name)
menux = "评毕;"
CASE dispx="您给的印象分"
@ , 45 SAY "满分 20分" FONT "宋体", 12 STYLE "B"
DEFINE WINDOW p_browse FROM 1, 1 SIZE 8, 40 IN p_win2
ACTIVATE WINDOW p_browse
SELECT myscore1
BROWSE FIELD App_name:H='应 聘 者 ':R, Impress_sc:H='印 象 分 ' FOR
Manager_id=managerx ;
IN p_browse NODELETE NOWAIT TITLE dispx FONT "宋体", 12 WHEN
p_memo("App_docum", App_name)
menux = "评毕;"
OTHERWISE
DEFINE WINDOW p_browse FROM 1, 1 SIZE 8, 80 IN p_win2
ACTIVATE WINDOW p_browse
SELECT applican
GO TOP
BROWSE FIELD App_name:H='应聘者':R, Score1:H='简历分':R,Score2:H='试
卷分':R, Score3:H='面试分':R,Score4:H='印象分':R, Score0:H='总分':R ;
IN p_browse NODELETE NOWAIT TITLE dispx FONT "宋体", 12 WHEN
p_memo("App_docum")
menux = "阅毕;"
ENDCASE
ACTIVATE WINDOW p_win2
@ , 3 TO 22, 117 PEN 2 STYLE "10"
DO p_memo WITH "App_docum", App_name
choice2 = "退出"
menux = IIF(PARAMETERS()=2 AND is_do, menux,"")
@ 23, 42 GET choice2 PICTURE "@*H "+menux+"退出" SIZE , 8 FONT "宋体",
12 STYLE "B"
READ
RELEASE WINDOW p_win2
CASE dispx="提问汇总"
DEFINE WINDOW p_browseq FROM , 2 SIZE 11, 95 IN p_win
ACTIVATE WINDOW p_browseq
SELECT question
GO TOP
BROWSE FIELD Quest_no:H='':R, Quest_text:H='问 题 ':50:R IN p_browseq
NODELETE NOWAIT TITLE "问题选择" FONT "宋体", 11
DEFINE WINDOW p_browse FROM 14, 2 SIZE 9, 95 IN p_win
ACTIVATE WINDOW p_browse
SELECT ourquest
GO TOP
BROWSE FIELD App_name:H='应 聘 者 ':R, Quest_no:H='问 题 ':R IN p_browse
NODELETE NOWAIT TITLE dispx FONT "宋体", 11
CASE dispx="您给的答题分" OR dispx="平均答题分"
DEFINE WINDOW p_win2 FROM 1, 1 SIZE 26, 120 TITLE "评委打分窗 " SYSTEM
COLOR RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_win2 CENTER
ACTIVATE WINDOW p_win2
@ 1, 2 SAY dispx FONT "宋体", 11 STYLE "B"
DEFINE WINDOW p_browse FROM 3, 1 SIZE 17, 37 IN p_win2
ACTIVATE WINDOW p_browse
IF dispx="您给的答题分"
SELECT myscore2
GO TOP
BROWSE FIELD App_name:H='应聘者':10:R, Quest_no:H='题号':R, Answ_sc:H='
得分' FOR Manager_id=managerx ;
IN p_browse NODELETE NOWAIT TITLE dispx FONT "宋体 ", 11 WHEN
p_answ(App_name+Quest_no)
ELSE
SELECT ourquest
GO TOP
BROWSE FIELD App_name:H='应聘者':10:R, Quest_no:H='题号':R, Answ_sc:H='
得分' ;
IN p_browse NODELETE NOWAIT TITLE dispx FONT "宋体 ", 11 WHEN
p_answ(App_name+Quest_no)
ENDIF
ACTIVATE WINDOW p_win2
@ 1, 30 SAY "每题满分:10分" FONT "宋体", 12 STYLE "B"
@ 3, 41 TO 20, 115 PEN 2 STYLE "10"
DO p_answ WITH App_name+Quest_no
choice2 = "退出"
menux = IIF(parax=2 AND is_do, "评毕;", "")
@ 22, 42 GET choice2 PICTURE "@*H "+menux+"退出" SIZE , 8 FONT "宋体",
12 STYLE "B"
READ
SELECT myscore2
REPLACE ALL Answ_sc WITH MIN(10, Answ_sc) FOR Manager_id = managerx
RELEASE WINDOW p_win2
CASE dispx="您的选择"
DEFINE WINDOW p_win2 FROM 1, 1 SIZE 26, 120 TITLE "选拔表决窗 " SYSTEM
COLOR RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_win2 CENTER
ACTIVATE WINDOW p_win2
DEFINE WINDOW p_browse FROM 1, 1 SIZE 8, 88 IN p_win2
ACTIVATE WINDOW p_browse
SELECT seledeci
GO TOP
SELECT applican
SCAN
SCATTER TO xxx MEMO
SELECT seledeci
IF EOF()
APPEND BLANK
ENDIF
GATHER FROM xxx MEMO
SKIP
SELECT applican
ENDSCAN
SELECT seledeci
REPLACE ALL sele_deci WITH ""
GO TOP
BROWSE FIELD App_name:H='应聘者':R, Score1:H='简历分':R, Score2:H='试卷分
':R, ;
Score3:H='面试分':R, Score4:H='印象分':R, Score0:H='总分':R,
Sele_deci:H='选拔':R ;
IN p_browse NODELETE NOWAIT TITLE dispx FONT "宋体", 12 WHEN
p_memo("App_docum", App_name)
ACTIVATE WINDOW p_win2
@ , 3 TO 22, 117 PEN 2 STYLE "10"
DO p_memo WITH "App_docum", App_name
choice2 = "退出"
menux = IIF(PARAMETERS()=2 AND is_do, "选毕;", "")
IF PARAMETERS()=2 AND is_do
@ 23, 26 GET choice2 PICTURE "@*N 表决" SIZE , 8 FONT "宋体", 12
STYLE "B" VALID p_selex()
ENDIF
@ 23, 42 GET choice2 PICTURE "@*H "+menux+"退出" SIZE , 8 FONT "宋体",
12 STYLE "B"
READ
RELEASE WINDOW p_win2
CASE dispx="招聘结果"
DEFINE WINDOW p_win2 FROM 1, 1 SIZE 26, 120 TITLE "招聘结果窗 " SYSTEM
COLOR RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_win2 CENTER
ACTIVATE WINDOW p_win2
SELECT applican
LOCATE FOR Sele_deci="√"
@ 5, 25 SAY "招聘决定:选聘 "+App_name FONT "宋体", 24 STYLE "B"
@ 9, 50 SAY App_pict SIZE 9, 25
choice2 = "退出"
@ 23, 42 GET choice2 PICTURE "@* 退出" SIZE , 8 FONT "宋体", 12 STYLE
"B"
READ
RELEASE WINDOW p_win2
ENDCASE
RETURN
******************************************************************** p_memo
PROCEDURE p_memo
PARAMETERS memox, whox
cur_alias = ALIAS()
IF PARAMETERS()=2
SELECT applican
LOCATE FOR App_name=whox
ENDIF
@ 12, 5 SAY &memox SIZE 8, 60 FONT "宋体", 11
@ , 94 SAY App_pict SIZE 9, 25
SELECT (cur_alias)
RETURN
******************************************************************** p_answ
PROCEDURE p_answ
PARAMETERS memox
*IF dispx="您的评分"
* SELECT myscore2
*ELSE
SELECT ourquest
*ENDIF
LOCATE FOR App_name+Quest_no=memox
@ , 44 SAY Quest_as SIZE 12, 44 FONT "宋体", 12
SELECT myscore2
RETURN
******************************************************************** p_sele
PROCEDURE p_selex
SELECT seledeci
appy = App_name
REPLACE ALL Sele_deci WITH ""
LOCATE FOR App_name=appy
REPLACE Sele_deci WITH "√"
RETURN
******************************************************************** p_info
PROCEDURE p_info
PARAMETERS informx, buttons
DEFINE WINDOW attentn AT 0, 0 SIZE , 40 TITLE "请注意:" FONT "宋体", 12
STYLE "B" ;
NOFLOAT NOMINIMIZE SYSTEM COLOR RGB(, , , 0, 128, 128) IN DESKTOP
MOVE WINDOW attentn CENTER
ACTI WINDOW attentn SAME
continue = 1
@ 2, SAY informx PICTURE "@I" FONT "宋体", 11 STYLE "BT" COLOR w+/bg
DO CASE
CASE PARAMETERS()=1
@ 5, 9 GET continue PICTURE "@*H \<1.确认;\<2.取消" SIZE , 8, 8 FONT "
宋体", 12 STYLE "B"
CASE buttons=1
@ 5, 17 GET continue PICTURE "@*H \<1.退出" SIZE , 8 FONT "宋体", 12
STYLE "B"
ENDCASE
READ MODAL
RELEASE WINDOW attentn
RETURN continue
********************************************************************** do_mail
PROCEDURE do_mail
PARAMETERS conx
DEFINE WINDOW p_win FROM 1, 1 SIZE 20, 100 TITLE "邮件处理窗" SYSTEM COLOR
RGB(, , , 192, 192, 192) IN DESKTOP
MOVE WINDOW p_win CENTER
ACTIVATE WINDOW p_win
choice2 = "退出"
DO WHILE .T.
menux = "编辑;阅读;退出"
@ 15, 30 CLEAR
@ 15, 30 GET choice2 PICTURE "@*H "+menux SIZE , 8, 2 FONT "宋体", 12
STYLE "B"
READ
IF choice2="退出"
EXIT
ENDIF
IF choice2="编辑"
DO WHILE .T.
SELECT manager
@ 2, 5 SAY "收件人:" FONT "宋体", 12 STYLE "B"
@ 2, 16 GET To_who FONT "宋体", 12 COLOR , n/w*
@ 4, 5 EDIT Out_mail SIZE 8, 55 FONT "宋体", 12 COLOR , n/w*
@ 15, 30 CLEAR
choice2 = "发送"
@ 15, 30 GET choice2 PICTURE "@*H 发送;取消" SIZE , 8, 2 FONT "宋体
", 12 STYLE "B"
READ
IF choice2="发送"
to_whox = To_who
out_mailx = Out_mail
REPLACE Out_mail WITH ""
SELECT mail
LOCATE FOR Manager_id=to_whox
IF FOUND()
REPLACE In_mail WITH
out_mailx+CHR(13)+SPACE(30)+managerx+CHR(13)+In_mail
DO p_info WITH "发送完毕!", 1
EXIT
ELSE
DO p_info WITH "收件人地址错!", 1
ENDIF
ENDIF
IF choice2="取消"
REPLACE Out_mail WITH ""
EXIT
ENDIF
ENDDO
GO BOTTOM
SKIP
SELECT manager
@ 2, 4 CLEAR TO 16, 100
ENDIF
IF choice2="阅读"
in_mailx = ""
SELECT mail
LOCATE FOR Manager_id=managerx
IF NOT EMPTY(In_mail)
in_mailx = In_mail
REPLACE In_mail WITH ""
ENDIF
SELECT manager
IF NOT EMPTY(in_mailx)
REPLACE In_mail WITH in_mailx+CHR(13)+In_mail
ENDIF
@ 4, 5 EDIT In_mail SIZE 8, 55 FONT "宋体", 12 SCROLL NOMODIFY COLOR n/w*
ENDIF
ENDDO
RELEASE WINDOW p_win
RETURN