public.cpp
来自「是我编写的一个考勤机管理系统,用于计算某员工某段时间以来的迟到与早退等情况.」· C++ 代码 · 共 1,010 行 · 第 1/3 页
CPP
1,010 行
//---------------------------------------------------------------------------
#include "Public.h"
#include <StrUtils.hpp>
#include "DM.h"
extern int WAddClassCount=0;
extern int WLateTime=0;
extern AnsiString WRptMemo="";
extern cEmployee *CEmp=NULL;
extern cClass *CC=NULL;
extern cDefClass *CDC=NULL;
extern cDefVac *CDV=NULL;
extern SClass *ClassArr=NULL;
extern SDefClass *DefClassArr=NULL;
extern SDefVac *DefVacArr=NULL;
extern SSetClass *SetClassArr=NULL;
extern SSetVac *SetVacArr=NULL;
extern SEmployee *EmployeeArr=NULL;
extern SLeave *LeaveArr=NULL;
extern SInData *InDataArr=NULL;
extern StmpClassID *tmpClassIDArr=NULL;
extern StmpClass *tmpClassArr=NULL;
extern void __fastcall OpenSQL(TADOQuery *QurFree,AnsiString Sql)
{
QurFree->Close();
QurFree->SQL->Clear();
QurFree->SQL->Add(Sql);
QurFree->Open();
}
extern void __fastcall Message(AnsiString Msg)
{
Application->MessageBox(Msg.c_str(),"提示",MB_OK|MB_ICONASTERISK);
}
extern bool __fastcall QueryDly(AnsiString Msg)
{
if (Application->MessageBox(Msg.c_str(),"询问",MB_YESNO|MB_ICONQUESTION)==IDYES )
return true;
else
return false;
}
extern int __fastcall CardToDefClassID(AnsiString ACard)
{
if (EmployeeArr != NULL)
{
for (int i=0;i<EmployeeArr[0].Length;i++)
{
if (EmployeeArr[i].Card == ACard)
{
return EmployeeArr[i].DefClassID;
}
}
}
return 0;
}
extern AnsiString __fastcall EmployeeIDToCard(int EmployeeID)
{
if (EmployeeArr != NULL)
{
for (int i=0;i<EmployeeArr[0].Length;i++)
{
if (EmployeeArr[i].EmployeeID == EmployeeID)
{
return EmployeeArr[i].Card;
}
}
}
return 0;
}
extern void __fastcall CreateDefTmpClassID(AnsiString ACard, TDate ADate)
{
AnsiString sDate;
sDate=FormatDateTime("yyyy-mm-dd",ADate);
int iDate;
iDate = StrToInt(MidStr(sDate, 1, 4)) * 600
+ StrToInt(MidStr(sDate, 6, 2)) * 50 + StrToInt(MidStr(sDate, 9, 2));
int iDefClassID;
iDefClassID = CardToDefClassID(ACard);
if (DefClassArr != NULL)
{
delete tmpClassIDArr;
tmpClassIDArr=NULL;
tmpClassIDArr = new StmpClassID[DefClassArr[0].Length];
tmpClassIDArr[0].Length=0;
for(int i=0;i<DefClassArr[0].Length;i++)
{
if (DefClassArr[i].DefClassID == iDefClassID)
{
if (iDate >= DefClassArr[i].BeginDate && iDate <= DefClassArr[i].EndDate)
{
if (DefClassArr[i].TimeMode == 0)
{
tmpClassIDArr[tmpClassIDArr[0].Length].AddClass = False;
tmpClassIDArr[tmpClassIDArr[0].Length].ClassID = DefClassArr[i].ClassID;
}
if (DefClassArr[i].TimeMode == 1)
{
int iWeek;
iWeek = DayOfWeek(ADate);
if (iWeek == 1)
iWeek = 7;
else
iWeek = iWeek - 1;
if (iWeek >= DefClassArr[i].BeginTime && iWeek <= DefClassArr[i].EndTime)
{
tmpClassIDArr[tmpClassIDArr[0].Length].AddClass = False;
tmpClassIDArr[tmpClassIDArr[0].Length].ClassID = DefClassArr[i].ClassID;
}
}
if (DefClassArr[i].TimeMode == 2)
{
int iDay;
iDay =StrToInt(RightStr(sDate, 2));
if (iDay >= DefClassArr[i].BeginTime && iDay <= DefClassArr[i].EndTime)
{
tmpClassIDArr[tmpClassIDArr[0].Length].AddClass = False;
tmpClassIDArr[tmpClassIDArr[0].Length].ClassID = DefClassArr[i].ClassID;
}
}
tmpClassIDArr[0].Length=tmpClassIDArr[0].Length+1;
}
}
}
}
}
extern void __fastcall CreateTmpClassID(AnsiString ACard, TDate ADate)
{
AnsiString sDate;
sDate=FormatDateTime("yyyy-mm-dd",ADate);
int iDate;
iDate = StrToInt(MidStr(sDate, 1, 4)) * 600
+ StrToInt(MidStr(sDate, 6, 2)) * 50 + StrToInt(MidStr(sDate, 9, 2));
if (SetClassArr != NULL)
{
delete tmpClassIDArr;
tmpClassIDArr=NULL;
tmpClassIDArr = new StmpClassID[DefClassArr[0].Length];
tmpClassIDArr[0].Length=0;
for (int i=0;i<SetClassArr[0].Length;i++)
{
if (SetClassArr[i].Card == ACard)
{
if (i==0 && SetClassArr[i].AddClass)
{
CreateDefTmpClassID(ACard, ADate);
}
if (iDate >= SetClassArr[i].BeginDate && iDate <= SetClassArr[i].EndDate)
{
if (SetClassArr[i].TimeMode == 0)
{
tmpClassIDArr[tmpClassIDArr[0].Length].AddClass = SetClassArr[i].AddClass;
tmpClassIDArr[tmpClassIDArr[0].Length].ClassID = SetClassArr[i].ClassID;
}
if (SetClassArr[i].TimeMode == 1)
{
int iWeek;
iWeek = DayOfWeek(ADate);
if (iWeek == 1)
iWeek = 7;
else
iWeek = iWeek - 1;
if (iWeek >= SetClassArr[i].BeginTime && iWeek <= SetClassArr[i].EndTime)
{
tmpClassIDArr[tmpClassIDArr[0].Length].AddClass = SetClassArr[i].AddClass;
tmpClassIDArr[tmpClassIDArr[0].Length].ClassID = SetClassArr[i].ClassID;
}
}
if (SetClassArr[i].TimeMode == 2)
{
int iDay;
iDay = StrToInt(RightStr(sDate, 2));
if (iDay >= SetClassArr[i].BeginTime && iDay <= SetClassArr[i].EndTime)
{
tmpClassIDArr[tmpClassIDArr[0].Length].AddClass = SetClassArr[i].AddClass;
tmpClassIDArr[tmpClassIDArr[0].Length].ClassID = SetClassArr[i].ClassID;
}
}
tmpClassIDArr[0].Length=tmpClassIDArr[0].Length+1;
}
}
}
}
if ((tmpClassIDArr==NULL) || (tmpClassIDArr!=NULL && tmpClassIDArr[0].Length==0))
CreateDefTmpClassID(ACard, ADate);
}
extern int __fastcall CreateTmpClass(void)
{
WAddClassCount = 0 ;
WRptMemo = "" ;
if (ClassArr==NULL)
return 0;
if (tmpClassIDArr==NULL)
return 0;
delete tmpClassArr;
tmpClassArr=NULL;
tmpClassArr = new StmpClass[ClassArr[0].Length];
tmpClassArr[0].Length=0;
for (int i=0;i<tmpClassIDArr[0].Length;i++)
{
for (int j=0;j<ClassArr[0].Length;j++)
{
if (ClassArr[j].ClassID == tmpClassIDArr[i].ClassID)
{
if (tmpClassIDArr[i].AddClass)
WAddClassCount=WAddClassCount+1;
tmpClassArr[tmpClassArr[0].Length].AddClass = tmpClassIDArr[i].AddClass;
tmpClassArr[tmpClassArr[0].Length].ClassID = tmpClassIDArr[i].ClassID;
tmpClassArr[tmpClassArr[0].Length].bTime = ClassArr[j].InTime;
tmpClassArr[tmpClassArr[0].Length].eTime = ClassArr[j].OutTime;
tmpClassArr[0].Length = tmpClassArr[0].Length + 1;
}
}
}
if (tmpClassArr==NULL)
return 0;
int tmpbtime,tmpetime,tmpClassID;
bool tmpbln;
WRptMemo = "加班:";
for (int i=0;i<tmpClassArr[0].Length-1;i++)
{
for (int j=i+1;j<tmpClassArr[0].Length;j++)
{
if (tmpClassArr[i].bTime > tmpClassArr[j].bTime)
{
tmpbln = tmpClassArr[i].AddClass;
tmpbtime = tmpClassArr[i].bTime;
tmpetime = tmpClassArr[i].eTime;
tmpClassID = tmpClassArr[i].ClassID;
tmpClassArr[i].AddClass = tmpClassArr[j].AddClass;
tmpClassArr[i].bTime = tmpClassArr[j].bTime;
tmpClassArr[i].eTime = tmpClassArr[j].eTime;
tmpClassArr[i].ClassID = tmpClassArr[j].ClassID;
tmpClassArr[j].ClassID = tmpClassID;
tmpClassArr[j].AddClass = tmpbln;
tmpClassArr[j].bTime = tmpbtime;
tmpClassArr[j].eTime = tmpetime;
}
}
}
for (int i=0;i<tmpClassArr[0].Length;i++)
{
if (i<tmpClassArr[0].Length-1 && tmpClassArr[i + 1].bTime <= tmpClassArr[i].eTime)
{
WRptMemo = "时间段设置有冲突!" ;
return -1;
}
if (tmpClassArr[i].AddClass)
WRptMemo = WRptMemo + "时间段" + IntToStr(i+1) + "," ;
}
if (WRptMemo == "加班:")
WRptMemo = "";
else
WRptMemo = LeftStr(WRptMemo, WRptMemo.Length() - 1);
// g_GetTimeCount = tmpClassCount
// GetClassCount = (tmpClassCount) * 2
return tmpClassArr[0].Length * 2;
}
extern int __fastcall GetTimePosCount(void)
{
TADOQuery *QurFree;
QurFree = new TADOQuery(Application);
QurFree->Connection = frmDM->Con;
int iCount,iValue;
AnsiString tmps,tmps1,SQL;
SQL="select a.ClassID,a.ClassName,b.OnDutyTime,b.OffDutyTime from class a "
"left outer join class_d b on a.ClassID=b.ClassID" ;
OpenSQL(QurFree,SQL);
iCount=QurFree->RecordCount;
if (iCount>0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?