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

📄 employeemanageunit.cpp

📁 指纹门禁机管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
   DeviceInfoArray_T aDeviceList;

   pDBAccess->GetDeviceList(aDeviceList);
   IterDeviceInfo_T IterDevice;
   DeviceInfo_T aDeviceInfo;
   for(IterDevice = aDeviceList.begin();IterDevice != aDeviceList.end();++IterDevice)
   {
     aDeviceInfo = *IterDevice;
     if (aDeviceInfo.DeviceStatus == dsRightStatus)  //只显示被启用的设备
     {
        TTreeNode* lNewNode = trDevice->Items->AddChild(pRootNode,aDeviceInfo.DeviceName);
        lNewNode->StateIndex = aDeviceInfo.DeviceID;
        lNewNode->ImageIndex = 2;
        lNewNode->SelectedIndex = 3;
     }
   }
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::FormDestroy(TObject *Sender)
{
   TEmployeeViewFrm::FormDestroy(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::sbSaveClick(TObject *Sender)
{
   int lSelectCount = GetSaveSelectedCount();
   if(lSelectCount <= 0)
   {
      Application->MessageBoxA("请选择要保存的员工!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }

   int i,j,k,lCaption,lTemplateCount;
   for(i=0;i<lvDeviceUser->Items->Count;i++)
   {
      if(!lvDeviceUser->Items->Item[i]->Checked)
         continue;
      lCaption = Trim(lvDeviceUser->Items->Item[i]->Caption).ToInt();
      lTemplateCount = pDBAccess->GetTemplateCount(lCaption);
      if(lTemplateCount > 0)
         pDBAccess->DeleteTemplateOneUser(lCaption);//先删光该员工所有指纹数据
   }

   AnsiString lDBTemplate;
   UserInfoEx_T lUserInfoEx;
   TemplateInfoArray_T lTemplateInfoList;
   IterTemplateInfo_T IterTemplate;
   int lRet;
   
   for(i=0;i<lvDeviceUser->Items->Count;i++)
   {
      if(!lvDeviceUser->Items->Item[i]->Checked)
         continue;

      lCaption = Trim(lvDeviceUser->Items->Item[i]->Caption).ToInt();
      

      //从临时表读取员工信息
      pDBAccess->GetUserInfo_T(lCaption,lUserInfoEx.BaseUserInfo);
      pDBAccess->GetTemplateInfoList_T(lCaption,lTemplateInfoList);

      //保存员工信息
      if(pDBAccess->IsUserIDExist(lCaption))
         pDBAccess->UpdateUserInfo(lCaption,lUserInfoEx.BaseUserInfo);
      else
         pDBAccess->InsertUserInfo(lUserInfoEx.BaseUserInfo);

      //保存员工指纹数据信息
      for(IterTemplate = lTemplateInfoList.begin();IterTemplate!=lTemplateInfoList.end();++IterTemplate)
      {
         TemplateInfo_T aTemplateInfo = *IterTemplate;
         if(pDBAccess->InsertTemplateInfo(aTemplateInfo) == DBAccess_E)
         {
            Application->MessageBoxA("保存指纹数据失败!","提示信息",MB_OK + MB_ICONINFORMATION);
            return;
         }
      }
   }

   Application->MessageBoxA("保存员工完成!","提示信息",MB_OK + MB_ICONINFORMATION);//*/
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::cbDBSelectClick(TObject *Sender)
{
   if(cbDBSelect->Checked)
   {
      for(int i=0;i<lvDeviceUser->Items->Count;i++)
      {
         lvDeviceUser->Items->Item[i]->Checked = true;
      }
   }
   else
   {
      for(int i=0;i<lvDeviceUser->Items->Count;i++)
      {
         lvDeviceUser->Items->Item[i]->Checked = false;
      }
   }
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::aAddEmpExecute(TObject *Sender)
{
    if (CurDeptID == 0)
    {
        Application->MessageBoxA("请选择新增员工所属部门!","提示信息",MB_OK + MB_ICONWARNING);
        return;
    }

    TEmployeeInfoFrm* pEmployeeInfoFrm = new TEmployeeInfoFrm(this);
    DeptInfo_T aDeptInfo;
    pEmployeeInfoFrm->SetCaption("员工管理->","新增员工");
    pDBAccess->GetDeptInfo(CurDeptID,&aDeptInfo);
    pEmployeeInfoFrm->SetOperateMode(omAdd);
    pEmployeeInfoFrm->SetDeptInfo(aDeptInfo);
    pEmployeeInfoFrm->ShowModal();
    UserInfoEx_T aUserInfo;
    bool lOK = pEmployeeInfoFrm->GetUserInfo(aUserInfo);
    if (lOK)
    {
      int lRV = pDBAccess->InsertUserInfo(aUserInfo.BaseUserInfo);
      if (lRV == OK)
      {
        AnsiString lMsg;
        lMsg = "在数据库新增员工:" + AnsiString(aUserInfo.BaseUserInfo.EmpName) + " 成功!";
        Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_OK + MB_ICONINFORMATION);
        RefreshListView();
      }
      else
      {
        Application->MessageBoxA("新增新员工失败!","提示信息",MB_OK + MB_ICONERROR);
      }
    }
    delete pEmployeeInfoFrm;

    
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::aEditEmpExecute(TObject *Sender)
{
   //:修改员工信息
   TListItem *pItem = lvRecordInfo->Selected;
   if(!pItem)
   {
      Application->MessageBoxA("请选择要修改的数据库员工记录!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }

   int lRV;
   if (!pItem->Caption.IsEmpty())
   {
      int lEmpID = pItem->Caption.ToInt();
      UserInfoEx_T aUserInfo;
      lRV = pDBAccess->GetUserInfo(lEmpID,aUserInfo);
      if (lRV == OK)
      {
        TEmployeeInfoFrm* pEmployeeInfoFrm = new TEmployeeInfoFrm(this);
        pEmployeeInfoFrm->SetCaption("员工管理->","修改员工信息");
        pEmployeeInfoFrm->SetOperateMode(omEdit);
        pEmployeeInfoFrm->SetUserInfo(aUserInfo);
        pEmployeeInfoFrm->ShowModal();
        bool lOK = pEmployeeInfoFrm->GetUserInfo(aUserInfo);
        if (lOK)
        {
           lRV = pDBAccess->UpdateUserInfo(aUserInfo.BaseUserInfo.UserID,aUserInfo.BaseUserInfo);
           if (lRV == OK)
           {
             AnsiString lMsg;
             lMsg = "修改数据库员工:" + AnsiString(aUserInfo.BaseUserInfo.EmpName) + " 成功!";
             Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_OK + MB_ICONINFORMATION);
             RefreshListView();
           }
           else
           {
             Application->MessageBoxA("修改员工信息失败!","提示信息",MB_OK + MB_ICONERROR);
           }
        }
        delete pEmployeeInfoFrm;
      }
   }

}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::aDeleteEmpExecute(TObject *Sender)
{
   int lSelectCount = GetSelectedCount();
   if(lSelectCount <= 0)
   {
      Application->MessageBoxA("请选择要删除的员工记录!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }

   AnsiString lMsg = "您确认要删除选中的员工记录吗?";
   if(Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_YESNO + MB_ICONQUESTION)==ID_NO)//ID_YES正确
        return;

   int lEmpID;
   for(int i=0;i<lvRecordInfo->Items->Count;i++)
   {
      if(lvRecordInfo->Items->Item[i]->Checked)
      {
         lEmpID = lvRecordInfo->Items->Item[i]->Caption.Trim().ToInt();
         if(pDBAccess->DeleteUserInfo(lEmpID) != OK)
         {
            Application->MessageBoxA("删除员工失败!","提示信息",MB_OK + MB_ICONERROR);
            return;
         }
      }
   }
   RefreshListView();
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::aCloseExecute(TObject *Sender)
{
   Close();
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::trDeviceClick(TObject *Sender)
{
   edtCurDeviceName->Text = trDevice->Selected->Text;
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::aClearDeviceEmpInfoExecute(TObject *Sender)
{
   int lRV;
   TTreeNode* lCurNode = trDevice->Selected;
   if(lCurNode == NULL || lCurNode == trDevice->Items->Item[0])
   {
      Application->MessageBoxA("请选择要清空的设备!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }

   if(Application->MessageBoxA("您确认要清空设备数据吗?","提示信息",MB_YESNO + MB_ICONQUESTION) == ID_NO)
     return;

   int lDeviceID = lCurNode->StateIndex;
   DeviceInfo_T aDeviceInfo;
   TEventEngine *pTEventEngine = GetEventEngineInstance();
   pTEventEngine->GetDeviceInfo(lDeviceID,&aDeviceInfo); //得到当前设备信息里的状态,是否在用
   nHandle = pTEventEngine->GetDeviceHandle(lDeviceID);
   if(nHandle == 0)
   {
      Application->MessageBoxA("打开要清空的设备失败!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }

   lRV = pTDeviceAccess->ClearUser(nHandle);
   pTEventEngine->ReleaseDeviceHandle(lDeviceID,nHandle);
   if(lRV != OK)
   {
      Application->MessageBoxA("清空设备数据失败!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }
   Application->MessageBoxA("设备数据已经清空!","提示信息",MB_OK + MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::aClearDBEmpInfoExecute(TObject *Sender)
{
   if(Application->MessageBoxA("您确认要清空员工信息吗?","提示信息",MB_YESNO + MB_ICONQUESTION) == ID_NO)
     return;

   int lRV;
   lRV = pDBAccess->ClearUserInfo();
   if(lRV != OK)
   {
      Application->MessageBoxA("清空员工信息失败!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }
   lRV = pDBAccess->ClearTemplateInfo();
   if(lRV != OK)
   {
      Application->MessageBoxA("清空员工指纹数据失败!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }
   RefreshListView();
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::spbnCancelClick(TObject *Sender)
{
   lvDeviceUser->Items->Clear();
   pDBAccess->ClearUserInfo_T();
   pDBAccess->ClearTemplateInfo_T();
   UpTimer->Enabled = false;
   spbnCancel->Enabled = false;
   pEngine->ReleaseDeviceHandle(nDeviceID,nHandle);
   sbInfo->Panels->Items[3]->Text = "";
}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::tvDeptClick(TObject *Sender)
{
   TEmployeeViewFrm::tvDeptClick(Sender);

   TTreeNode* lCurNode = tvDept->Selected;
   AnsiString lText = "当前部门:";
   sbInfo->Panels->Items[0]->Text = lText + lCurNode->Text;

   lText = "数据库员工信息记录条数:";
   sbInfo->Panels->Items[1]->Text = lText + AnsiString(lvRecordInfo->Items->Count) + "条";

}
//---------------------------------------------------------------------------


void __fastcall TEmployeeManageFrm::aViewDeviceExecute(TObject *Sender)
{
   //查看设备信息
   TTreeNode* lCurNode = trDevice->Selected;
   if(lCurNode == NULL || lCurNode == trDevice->Items->Item[0])
   {
      Application->MessageBoxA("请选择要查看的设备!","提示信息",MB_OK + MB_ICONINFORMATION);
      return;
   }                     
   int lDeviceID = lCurNode->StateIndex;
   if (lDeviceID != 0)
   {
     DeviceInfo_T aDeviceInfo;
     if (pDBAccess->GetDeviceInfo(lDeviceID,aDeviceInfo) == OK)
     {
        TDeviceInfoInputFrm* pDeviceInfoInputFrm = new TDeviceInfoInputFrm(this);
        pDeviceInfoInputFrm->SetOperateMode(omView);
        pDeviceInfoInputFrm->SetCaption("员工管理->","查看设备信息");
        pDeviceInfoInputFrm->SetDeviceInfo(aDeviceInfo);
        pDeviceInfoInputFrm->ShowModal();
        delete pDeviceInfoInputFrm;
     }
   }

}
//---------------------------------------------------------------------------

void __fastcall TEmployeeManageFrm::aSetDeptExecute(TObject *Sender)
{
   int lSelectCount = GetSelectedCount();
   if(lSelectCount <= 0)
   {
      Application->MessageBoxA("请选择要批量设置的员工记录!","提示信息",MB_OK + MB_ICONINFORMATION);

⌨️ 快捷键说明

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