⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pro_fun.prg

📁 酒店IC卡 餐饮娱乐管理系统源代码使用说明
💻 PRG
📖 第 1 页 / 共 5 页
字号:
    ERR = HANDSHAKE(SLA,@UC,@SC)
    IF ERR = 0
       EXIT 
    ENDIF 
 ENDFOR 
 WAIT CLEAR
 = RELASE_HS()
 = RELASE_COM()
 RETURN ERR
ENDPROC
*------
PROCEDURE modi_mach_time
 PARAMETER COM , BAUD , UC , SC , TIME , DATE
 PRIVATE COM , BAUD , UC , SC , TIME , DATE , ERR , LOOPBZ , YESNO , I
 DO KQ_MACH_COM
 LOCX = _SCREEN.CURRENTX + 13
 LOCY = _SCREEN.CURRENTY + 43
 WAIT WINDOW AT LOCX , LOCY NOCLEAR NOWAIT '正在校正考勤机时钟,请稍候...'
 = RELASE_HS()
 = RELASE_COM()
 ERR = SELE_COM(COM,BAUD)
 IF ERR <> 0
    WAIT CLEAR
    RETURN ERR
 ENDIF 
 ERR = HANDSHAKE(0,@UC,@SC)
 IF ERR <> 0
    WAIT CLEAR
    RETURN ERR
 ENDIF 
 ERR = MODIFYTIME(@TIME,@DATE)
 IF ERR <> 0
    RETURN ERR
 ENDIF 
 WAIT CLEAR
 = RELASE_HS()
 = RELASE_COM()
 RETURN ERR
ENDPROC
*------
PROCEDURE cj_kq_data
 PARAMETER COM , BAUD , SLA , UC , SC
 PRIVATE COM , BAUD , UC , SC , ERR , LOOPBZ , YESNO , I
 DO KQ_MACH_COM
 LOCX = _SCREEN.CURRENTX + 13
 LOCY = _SCREEN.CURRENTY + 43
 WAIT WINDOW AT LOCX , LOCY NOCLEAR NOWAIT '正在采集考勤数据,请稍候...'
 = RELASE_HS()
 = RELASE_COM()
 LOOPBZ = .T.
 DO WHILE LOOPBZ = .T.
    ERR = SELE_COM(COM,BAUD)
    IF ERR <> 0
       YESNO = RFALERT(ERR)
       IF YESNO = 2
          RETURN ERR
       ENDIF 
       LOOP 
    ENDIF 
    ERR = HANDSHAKE(SLA,@UC,@SC)
    IF ERR <> 0
       YESNO = RFALERT(ERR)
       IF YESNO = 2
          = MIF_CLOSECOM()
          RETURN ERR
       ENDIF 
       LOOP 
    ENDIF 
    KQ_DATALEN = REPLICATE('F',10)
    KQ_DATAF = REPLICATE('F',64)
    ERR = READ_ATTENDANCE(@KQ_DATALEN,@KQ_DATAF)
    IF ERR <> 0
       YESNO = RFALERT(ERR)
       IF YESNO = 2
          = MIF_CLOSECOM()
          RETURN ERR
       ENDIF 
       LOOP 
    ENDIF 
    LOOPBZ = .F.
    WAIT CLEAR
    = RELASE_HS()
    = RELASE_COM()
 ENDDO 
 RETURN KQ_DATAF
ENDPROC
*------
PROCEDURE first_check_kqmach
 PARAMETER COM , BAUD , UC , SC
 PRIVATE SLA , US , SC , ERR , LOOPBZ , YESNO , I
 DO KQ_MACH_COM
 = RELASE_COM()
 ERR = SELE_COM(COM,BAUD)
 IF ERR <> 0
    RETURN ERR
 ENDIF 
 ERR = HANDSHAKE(1,@UC,@SC)
 IF ERR = 0
    EXIT 
 ENDIF 
 = RELASE_HS()
 = RELASE_COM()
 RETURN ERR
ENDPROC
*------
PROCEDURE xtqxctl
 PARAMETER NAMEPARA
 PRIVATE FILEBZ
 IF NAMEPARA == 'Admin'
    RETURN 
 ENDIF 
 SET SAFETY OFF
 IF FILE(DBFDIRECTORY + '\xtmk.dbf')
    = UNLOCKDB(DBFDIRECTORY + '\xtmk.dbf')
    USE IN 0 EXCLUSIVE xtmk.dbf ALIAS XTMK
    SELECT XTMK
    INDEX ON MKMC TO tempqxmk FOR ALLTRIM(CZYXM) == NAMEPARA
    SCAN 
       LNMKMC = ALLTRIM(MKMC)
       LNCZBZ = CZBZ
       DO CONMKQX WITH LNMKMC , LNCZBZ
    ENDSCAN 
    USE 
    = LOCKDB(DBFDIRECTORY + '\xtmk.dbf')
    FILEBZ = .T.
    DELETE File tempqxmk.idx
    LNBARNUM1 = CNTBAR('资料设置s')
    IF LNBARNUM1 = 2
       LNPOS = GETBAR('资料设置s',2)
       RELEASE BAR (LNPOS) OF 资料设置S
    ENDIF 
    LNBARNUM2 = CNTBAR('ic卡管理m')
    IF LNBARNUM2 = 2
       LNPOS = GETBAR('ic卡管理m',2)
       RELEASE BAR (LNPOS) OF IC卡管理M
    ENDIF 
    LNBARNUM3 = CNTBAR('门锁管理c')
    IF LNBARNUM3 = 2
       LNPOS = GETBAR('门锁管理c',2)
       RELEASE BAR (LNPOS) OF 门锁管理C
    ENDIF 
    LNBARNUM4 = CNTBAR('系统管理a')
    IF LNBARNUM4 = 2
       LNPOS = GETBAR('系统管理a',2)
       RELEASE BAR (LNPOS) OF 系统管理A
    ENDIF 
    LNBARNUM5 = CNTBAR('报表输出q')
    IF LNBARNUM5 = 2
       LNPOS = GETBAR('报表输出q',2)
       RELEASE BAR (LNPOS) OF 报表输出Q
    ENDIF 
 ELSE 
    FILEBZ = .F.
 ENDIF 
 IF FILEBZ = .F.
    = MESSAGEBOX('系统数据库缺少或不存在!',64,'信息提示')
    RETURN 
 ENDIF 
ENDPROC
*------
PROCEDURE conmkqx
 PARAMETER MKMCPARA , CZBZPARA
 DO CASE 
 CASE MKMCPARA == '资料设置(菜单项)'
    RELEASE BAR 1 OF 资料设置S
    RELEASE BAR 2 OF 资料设置S
    RELEASE BAR 3 OF 资料设置S
    RELEASE BAR 4 OF 资料设置S
    RELEASE BAR 5 OF 资料设置S
    RELEASE BAR 6 OF 资料设置S
    RELEASE BAR 7 OF 资料设置S
 CASE MKMCPARA == 'IC卡管理(菜单项)'
    RELEASE PAD _0H80JGMLI OF _MSYSMENU
 CASE MKMCPARA == '门锁管理(菜单项)'
    RELEASE PAD _0H80JGMLJ OF _MSYSMENU
 CASE MKMCPARA == '系统管理(菜单项)'
    RELEASE PAD _0H80JGMLK OF _MSYSMENU
 CASE MKMCPARA == '报表输出(菜单项)'
    RELEASE PAD _0H80JGMLL OF _MSYSMENU
 CASE MKMCPARA == '系统参数设置'
    RELEASE BAR 1 OF 资料设置S
    RELEASE BAR 2 OF 资料设置S
 CASE MKMCPARA == '客房参数设置'
    RELEASE BAR 3 OF 资料设置S
 CASE MKMCPARA == '客房地址设置'
    RELEASE BAR 4 OF 资料设置S
    RELEASE BAR 5 OF 资料设置S
 CASE MKMCPARA == '钥匙卡定义'
    RELEASE BAR 6 OF 资料设置S
    RELEASE BAR 7 OF 资料设置S
 CASE MKMCPARA == '新卡初始化'
    RELEASE BAR 1 OF IC卡管理M
 CASE MKMCPARA == '重新初始化'
    RELEASE BAR 2 OF IC卡管理M
    RELEASE BAR 3 OF IC卡管理M
 CASE MKMCPARA == '发行钥匙卡'
    RELEASE BAR 4 OF IC卡管理M
    RELEASE BAR 5 OF IC卡管理M
 CASE MKMCPARA == '修改卡片信息'
    RELEASE BAR 6 OF IC卡管理M
    RELEASE BAR 7 OF IC卡管理M
 CASE MKMCPARA == '挂失卡片'
    RELEASE BAR 8 OF IC卡管理M
 CASE MKMCPARA == '取消挂失'
    RELEASE BAR 9 OF IC卡管理M
    RELEASE BAR 10 OF IC卡管理M
 CASE MKMCPARA == 'IC卡检测'
    RELEASE BAR 11 OF IC卡管理M
    RELEASE BAR 12 OF IC卡管理M
 CASE MKMCPARA == '回收卡片'
    RELEASE BAR 13 OF IC卡管理M
    RELEASE BAR 12 OF IC卡管理M
 CASE MKMCPARA == '修改门锁安装信息'
    RELEASE BAR 1 OF 门锁管理C
    RELEASE BAR 2 OF 门锁管理C
 CASE MKMCPARA == '维护门锁'
    RELEASE BAR 3 OF 门锁管理C
    RELEASE BAR 4 OF 门锁管理C
    RELEASE BAR 5 OF 快捷菜单
 CASE MKMCPARA == '清除门锁信息'
    RELEASE BAR 5 OF 门锁管理C
    RELEASE BAR 6 OF 门锁管理C
 CASE MKMCPARA == '读取门锁记录'
    RELEASE BAR 7 OF 门锁管理C
    RELEASE BAR 6 OF 门锁管理C
 CASE MKMCPARA == '操作员管理'
    RELEASE BAR 1 OF 系统管理A
    RELEASE BAR 2 OF 系统管理A
 CASE MKMCPARA == '操作员属性'
    RELEASE BAR 3 OF 系统管理A
    RELEASE BAR 4 OF 系统管理A
 CASE MKMCPARA == '清除资料'
    RELEASE BAR 5 OF 系统管理A
    RELEASE BAR 6 OF 系统管理A
 CASE MKMCPARA == '初始化系统'
    RELEASE BAR 7 OF 系统管理A
    RELEASE BAR 8 OF 系统管理A
 CASE MKMCPARA == '维护数据库'
    RELEASE BAR 9 OF 系统管理A
    RELEASE BAR 10 OF 系统管理A
 CASE MKMCPARA == '备份系统数据'
    RELEASE BAR 11 OF 系统管理A
 CASE MKMCPARA == '恢复系统数据'
    RELEASE BAR 12 OF 系统管理A
    RELEASE BAR 13 OF 系统管理A
 CASE MKMCPARA == '压缩与解压数据'
    RELEASE BAR 14 OF 系统管理A
    RELEASE BAR 13 OF 系统管理A
 CASE MKMCPARA == '登录信息'
    RELEASE BAR 1 OF 报表输出Q
 CASE MKMCPARA == '操作日志'
    RELEASE BAR 2 OF 报表输出Q
    RELEASE BAR 3 OF 报表输出Q
 CASE MKMCPARA == '删除操作员'
    RELEASE BAR 4 OF 报表输出Q
    RELEASE BAR 5 OF 报表输出Q
 CASE MKMCPARA == '卡基本信息'
    RELEASE BAR 6 OF 报表输出Q
    RELEASE BAR 7 OF 报表输出Q
 CASE MKMCPARA == '定义钥匙卡名称'
    RELEASE BAR 8 OF 报表输出Q
 CASE MKMCPARA == '后台发行钥匙卡'
    RELEASE BAR 9 OF 报表输出Q
    RELEASE BAR 10 OF 报表输出Q
 CASE MKMCPARA == '前台开房记录'
    RELEASE BAR 11 OF 报表输出Q
 CASE MKMCPARA == '客房退房'
    RELEASE BAR 12 OF 报表输出Q
 CASE MKMCPARA == '客房预订'
    RELEASE BAR 13 OF 报表输出Q
    RELEASE BAR 14 OF 报表输出Q
 CASE MKMCPARA == '现住客房'
    RELEASE BAR 15 OF 报表输出Q
    RELEASE BAR 16 OF 报表输出Q
 CASE MKMCPARA == '门锁信息'
    RELEASE BAR 17 OF 报表输出Q
    RELEASE BAR 16 OF 报表输出Q
 ENDCASE 
ENDPROC
*------
PROCEDURE popqxctl
 PARAMETER NAMEPARA
 PRIVATE FILEBZ
 IF NAMEPARA == 'Admin'
    RETURN 
 ENDIF 
 SET SAFETY OFF
 IF FILE(DBFDIRECTORY + '\xtmk.dbf')
    = UNLOCKDB(DBFDIRECTORY + '\xtmk.dbf')
    USE IN 0 EXCLUSIVE xtmk.dbf ALIAS XTMK
    SELECT XTMK
    INDEX ON MKMC TO tempqxmk FOR ALLTRIM(CZYXM) == NAMEPARA
    SCAN 
       LNMKMC = ALLTRIM(MKMC)
       DO POPMKQX WITH LNMKMC
    ENDSCAN 
    USE 
    = LOCKDB(DBFDIRECTORY + '\xtmk.dbf')
    DELETE File tempqxmk.idx
    LNBARNUM = CNTBAR('快捷菜单')
    IF LNBARNUM = 2
       LNPOS = GETBAR('快捷菜单',2)
       RELEASE BAR (LNPOS) OF 快捷菜单
    ENDIF 
 ELSE 
    RETURN 
 ENDIF 
ENDPROC
*------
PROCEDURE popmkqx
 PARAMETER MKMCPARA
 DO CASE 
 CASE MKMCPARA == '资料设置(菜单项)'
    RELEASE BAR 7 OF 快捷菜单
 CASE MKMCPARA == '门锁管理(菜单项)'
    RELEASE BAR 3 OF 快捷菜单
    RELEASE BAR 4 OF 快捷菜单
    RELEASE BAR 5 OF 快捷菜单
    RELEASE BAR 6 OF 快捷菜单
 CASE MKMCPARA == 'IC卡管理(菜单项)'
    RELEASE BAR 1 OF 快捷菜单
    RELEASE BAR 2 OF 快捷菜单
 CASE MKMCPARA == '钥匙卡定义'
    RELEASE BAR 6 OF 快捷菜单
    RELEASE BAR 7 OF 快捷菜单
 CASE MKMCPARA == '发行钥匙卡'
    RELEASE BAR 1 OF 快捷菜单
    RELEASE BAR 2 OF 快捷菜单
 CASE MKMCPARA == '修改门锁安装信息'
    RELEASE BAR 5 OF 快捷菜单
    RELEASE BAR 6 OF 快捷菜单
 CASE MKMCPARA == '维护门锁'
    RELEASE BAR 3 OF 快捷菜单
    RELEASE BAR 4 OF 快捷菜单
 ENDCASE 
ENDPROC
*------
PROCEDURE sure32wc
&&----无事件!
ENDPROC
PROCEDURE lc32rw
 CLEAR DLLS
 LOCATE FOR ALLTRIM(CONT) == 'readwrite'
 IF  .NOT. FOUND()
    DECLARE INTEGER init_com IN lc32rw INTEGER 
    DECLARE INTEGER close_com IN lc32rw
    DECLARE INTEGER sele_card IN lc32rw INTEGER 
    DECLARE INTEGER power_on IN lc32rw
    = MESSAGEBOX('请插入安装卡,否则系统无法自动检测读写器!!',64,'信息提示')
    LOCATE FOR ALLTRIM(CONT) == 'com'
    M.COMC = ALLTRIM(DATA)
    DO CASE 
    CASE M.COMC = '串口一'
       COM = 0
    CASE M.COMC = '串口二'
       COM = 1
    CASE M.COMC = '串口三'
       COM = 2
    CASE M.COMC = '串口四'
       COM = 3
    OTHERWISE 
       = MESSAGEBOX('请设置正确的串口!',64,'信息提示')
       RETURN 
    ENDCASE 
    ERR = INIT_COM(COM)
    ERR = SELE_CARD(42)
    ERR = POWER_ON()
    IF ERR = 0
       DEFINEID = 1
       ERR = CLOSE_COM()
    ELSE 
       ERR = CLOSE_COM()
       CLEAR DLLS
       DECLARE INTEGER init_com IN sure32wc INTEGER 
       DECLARE INTEGER close_com IN sure32wc
       DECLARE INTEGER sele_card IN sure32wc INTEGER 
       DECLARE INTEGER power_on IN sure32wc
       ERR = INIT_COM(COM)
       ERR = SELE_CARD(42)
       ERR = POWER_ON()
       IF ERR = 0
          DEFINEID = 2
       ELSE 
          = MESSAGEBOX('您没有插入安装卡或者读写器连接有误,请插卡或者检查线路连接!',64,'信息提示')
          RETURN 
       ENDIF 
    ENDIF 
    APPEND BLANK
    REPLACE CONT WITH 'readwrite'
    REPLACE DATA WITH ALLTRIM(STR(DEFINEID))
    ERR = CLOSE_COM()
    CLEAR DLLS
 ELSE 
    DEFINEID = INT(VAL(DATA))
 ENDIF 
 IF DEFINEID = 1
    DECLARE INTEGER init_com IN lc32rw INTEGER 
    DECLARE INTEGER close_com IN lc32rw
    DECLARE INTEGER power_on IN lc32rw
    DECLARE INTEGER power_off IN lc32rw
    DECLARE INTEGER sele_card IN lc32rw INTEGER 
    DECLARE INTEGER chk_sc IN lc32rw INTEGER , INTEGER , STRING @
    DECLARE INTEGER rd_str IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER wr_str IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER rd_asc IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER wr_asc IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER rd_sm IN lc32rw STRING @
    DECLARE INTEGER wr_sc IN lc32rw STRING @
    DECLARE INTEGER cpwr_str IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER cpwr_asc IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
 ELSE 
    DECLARE INTEGER init_com IN sure32wc INTEGER 
    DECLARE INTEGER close_com IN sure32wc
    DECLARE INTEGER power_on IN sure32wc
    DECLARE INTEGER power_off IN sure32wc
    DECLARE INTEGER sele_card IN sure32wc INTEGER 
    DECLARE INTEGER chk_sc IN sure32wc INTEGER , INTEGER , STRING @
    DECLARE INTEGER rd_str IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER wr_str IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER rd_asc IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER wr_asc IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER rd_sm IN sure32wc STRING @
    DECLARE INTEGER wr_sc IN sure32wc STRING @
    DECLARE INTEGER cpwr_str IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
    DECLARE INTEGER cpwr_asc IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
 ENDIF 
ENDPROC
*------
PROCEDURE lockda
 PARAMETER MHMMML , KHKMKL
 PRIVATE MHMMML , KHKMKL , KH , KM , KL , MH , MM , ML , MHB , MMB , MLB , KHB , KMB ,  ;
      KLB , XH , XM , XL , RHB , RMB , RLB , RHB1 , RHB2 , RMB1 , RMB2 , RLB1 ,  ;
      RLB2 , SB , SB1 , SB2
 MHMMML = ALLTRIM(MHMMML)
 KHKMKL = ALLTRIM(KHKMKL)
 ML = SUBSTR(MHMMML,1,2)
 MM = SUBSTR(MHMMML,3,2)
 MH = SUBSTR(MHMMML,5,2)
 KH = SUBSTR(KHKMKL,1,2)
 KM = SUBSTR(KHKMKL,3,2)
 KL = SUBSTR(KHKMKL,5,2)
 MHB = HEXBIN(MH)
 MMB = HEXBIN(MM)
 MLB = HEXBIN(ML)
 KHB = HEXBIN(KH)
 KMB = HEXBIN(KM)
 KLB = HEXBIN(KL)
 XH = BINDEC(SUBSTR(KHB,6,3))
 XM = BINDEC(SUBSTR(KMB,6,3))
 XL = BINDEC(SUBSTR(KLB,6,3))
 RHB = XOR(MHB,KHB)
 RMB = XOR(MMB,KMB)
 RLB = XOR(MLB,KLB)
 RHB1 = SUBSTR(RHB,1,XH)
 RHB2 = SUBSTR(RHB,XH + 1)
 RHB = RHB2 + RHB1
 RMB1 = SUBSTR(RMB,1,XM)
 RMB2 = SUBSTR(RMB,XM + 1)
 RMB = RMB2 + RMB1
 RLB1 = SUBSTR(RLB,1,XL)
 RLB2 = SUBSTR(RLB,XL + 1)
 RLB = RLB2 + RLB1
 SB = RHB + RMB + RLB
 SB1 = SUBSTR(SB,1,4)
 SB2 = SUBSTR(SB,5)
 SB = SB2 + SB1
 SH = BINHEX(SB)
 SH = SWAP(SH)
 RETURN SH
ENDPROC
*------
PROCEDURE unlockda
 PARAMETER SH , KHKMKL
 PRIVATE SH , KHKMKL , KH , KM , KL , MH , MM , ML , SHB , SHBL , SHBR , NHNMNL , NHB ,  ;
      NMB , NLB , KHB , KMB , KLB , XH , XM , XL
 SH = SWAP(SH)
 KHKMKL = ALLTRIM(KHKMKL)
 KH = SUBSTR(KHKMKL,1,2)
 KM = SUBSTR(KHKMKL,3,2)
 KL = SUBSTR(KHKMKL,5,2)
 SHB = HEXBIN(SH)
 SHBL = RIGHT(SHB,4)
 SHBR = LEFT(SHB,20)
 NHNMNL = SHBL + SHBR
 NHB = SUBSTR(NHNMNL,1,8)
 NMB = SUBSTR(NHNMNL,9,8)
 NLB = SUBSTR(NHNMNL,17,8)
 KHB = HEXBIN(KH)
 KMB = HEXBIN(KM)
 KLB = HEXBIN(KL)
 XH = BINDEC(SUBSTR(KHB,6,3))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -