public.cpp
来自「是我编写的一个考勤机管理系统,用于计算某员工某段时间以来的迟到与早退等情况.」· C++ 代码 · 共 1,010 行 · 第 1/3 页
CPP
1,010 行
{
ClassArr[i].ClassName = QurFree->FieldByName("ClassName")->AsString;
ClassArr[i].ClassID = QurFree->FieldByName("ClassID")->AsInteger;
tmps = QurFree->FieldByName("OnDutyTime")->AsString;
tmps1 = MidStr(tmps,0,AnsiPos(":",tmps)-1);
if (Trim(tmps1)=="")
iValue =0;
else
iValue = StrToInt(Trim(tmps1));
tmps1 = MidStr(tmps,AnsiPos(":",tmps)+1,tmps.Length());
if (Trim(tmps1)=="")
iValue = iValue * 60;
else
iValue=StrToInt(Trim(tmps1)) + iValue * 60;
ClassArr[i].InTime = iValue;
tmps = QurFree->FieldByName("OffDutyTime")->AsString;
tmps1 = MidStr(tmps,0,AnsiPos(":",tmps)-1);
if (Trim(tmps1)=="")
iValue =0;
else
iValue = StrToInt(Trim(tmps1));
tmps1 = MidStr(tmps,AnsiPos(":",tmps)+1,tmps.Length());
if (Trim(tmps1)=="")
iValue = iValue * 60;
else
iValue=StrToInt(Trim(tmps1)) + iValue * 60;
ClassArr[i].OutTime = iValue;
QurFree->Next();
}
}
//===================DefClass===================================================
OpenSQL(QurFree, "select * from DefClass_D");
iCount = QurFree->RecordCount;
if (iCount > 0)
{
delete DefClassArr;
DefClassArr=NULL;
DefClassArr =new SDefClass[iCount];
DefClassArr[0].Length=iCount;
QurFree->First();
for(int i=0;i<iCount;i++)
{
DefClassArr[i].DefClassID = QurFree->FieldByName("DefClassID")->AsInteger;
DefClassArr[i].ClassID = QurFree->FieldByName("ClassID")->AsInteger;
tmps = FormatDateTime("yyyy-mm-dd",QurFree->FieldByName("BeginDate")->AsDateTime);
DefClassArr[i].BeginDate = StrToInt(MidStr(tmps, 1, 4)) * 600 + StrToInt(MidStr(tmps, 6, 2)) * 50 + StrToInt(MidStr(tmps, 9, 2));
tmps = FormatDateTime("yyyy-mm-dd",QurFree->FieldByName("EndDate")->AsDateTime);
DefClassArr[i].EndDate = StrToInt(MidStr(tmps, 1, 4)) * 600 + StrToInt(MidStr(tmps, 6, 2)) * 50 + StrToInt(MidStr(tmps, 9, 2));
if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每天")
DefClassArr[i].TimeMode = 0;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每周")
DefClassArr[i].TimeMode = 1;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每月")
DefClassArr[i].TimeMode = 2;
if (QurFree->FieldByName("BeginTime")->IsNull || QurFree->FieldByName("BeginTime")->AsString=="")
DefClassArr[i].BeginTime =0;
else
DefClassArr[i].BeginTime = StrToInt(QurFree->FieldByName("BeginTime")->AsString);
if (QurFree->FieldByName("EndTime")->IsNull || QurFree->FieldByName("EndTime")->AsString =="" )
DefClassArr[i].EndTime =0;
else
DefClassArr[i].EndTime = StrToInt(QurFree->FieldByName("EndTime")->AsString);
QurFree->Next();
}
}
//==============DefVac=========================================================
OpenSQL(QurFree, "select * from DefVac_D order by DefVacID,TimePos,TimeMode");
iCount = QurFree->RecordCount;
if( iCount > 0 )
{
delete DefVacArr;
DefVacArr=NULL;
DefVacArr = new SDefVac[iCount];
DefVacArr[0].Length=iCount;
QurFree->First();
for (int i=0;i<iCount;i++)
{
DefVacArr[i].DefVacID = QurFree->FieldByName("DefVacID")->AsInteger;
DefVacArr[i].BeginDate = QurFree->FieldByName("BeginDate")->AsDateTime;
DefVacArr[i].EndDate = QurFree->FieldByName("EndDate")->AsDateTime;
if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每天")
DefVacArr[i].TimeMode = 0;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每周")
DefVacArr[i].TimeMode = 1;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每月")
DefVacArr[i].TimeMode = 2;
if (QurFree->FieldByName("BeginTime")->IsNull || QurFree->FieldByName("BeginTime")->AsString=="")
DefVacArr[i].BeginTime =0;
else
DefVacArr[i].BeginTime = StrToInt(QurFree->FieldByName("BeginTime")->AsString);
if (QurFree->FieldByName("EndTime")->IsNull || QurFree->FieldByName("EndTime")->AsString =="" )
DefVacArr[i].EndTime =0;
else
DefVacArr[i].EndTime = StrToInt(QurFree->FieldByName("EndTime")->AsString);
if (QurFree->FieldByName("TimePos")->AsString == "全天")
DefVacArr[i].TimePos = 0;
else
DefVacArr[i].TimePos = StrToInt(Trim(MidStr(QurFree->FieldByName("TimePos")->AsString,7,
QurFree->FieldByName("TimePos")->AsString.Length() - 6)));
QurFree->Next();
}
}
//===================EmployeeInfo===============================================
OpenSQL(QurFree,"select * from Employee order by Card");
iCount = QurFree->RecordCount;
if (iCount > 0)
{
delete EmployeeArr;
EmployeeArr = NULL;
EmployeeArr = new SEmployee[iCount];
EmployeeArr[0].Length=iCount;
QurFree->First();
for (int i=0;i<iCount;i++)
{
if (QurFree->FieldByName("EmployeeID")->IsNull)
EmployeeArr[i].EmployeeID = 0 ;
else
EmployeeArr[i].EmployeeID = QurFree->FieldByName("EmployeeID")->AsInteger;
if (QurFree->FieldByName("Name")->IsNull)
EmployeeArr[i].EmployeeName = "";
else
EmployeeArr[i].EmployeeName = QurFree->FieldByName("Name")->AsString;
if (QurFree->FieldByName("Code")->IsNull)
EmployeeArr[i].Code = "";
else
EmployeeArr[i].Code = QurFree->FieldByName("Code")->AsString;
if (QurFree->FieldByName("Card")->IsNull)
EmployeeArr[i].Card = "";
else
EmployeeArr[i].Card = QurFree->FieldByName("Card")->AsString;
if (QurFree->FieldByName("DefClassID")->IsNull)
EmployeeArr[i].DefClassID = 0 ;
else
EmployeeArr[i].DefClassID = QurFree->FieldByName("DefClassID")->AsInteger;
if (QurFree->FieldByName("DefVacID")->IsNull)
EmployeeArr[i].DefVacID = 0 ;
else
EmployeeArr[i].DefVacID = QurFree->FieldByName("DefVacID")->AsInteger;
QurFree->Next();
}
}
//============SetClassInfo======================================================
SQL= "select * from setclass where EndDate>= #"
+ sBeginDate + "# and BeginDate<=#" + sEndDate + "# order by AddClass desc";
// Message(SQL);
OpenSQL(QurFree,SQL);
iCount = QurFree->RecordCount;
if (iCount > 0)
{
delete SetClassArr;
SetClassArr=NULL;
SetClassArr = new SSetClass[iCount];
SetClassArr[0].Length=iCount;
QurFree->First();
for (int i=0; i<iCount ;i++ )
{
SetClassArr[i].EmployeeID = QurFree->FieldByName("EmployeeID")->AsInteger;
SetClassArr[i].AddClass = QurFree->FieldByName("AddClass")->AsBoolean;
//SetClassArr[i].BeginDate = QurFree->FieldByName("BeginDate")->AsDateTime;
//SetClassArr[i].EndDate = QurFree->FieldByName("EndDate")->AsDateTime;
tmps = FormatDateTime("yyyy-mm-dd",QurFree->FieldByName("BeginDate")->AsDateTime);
SetClassArr[i].BeginDate = StrToInt(MidStr(tmps, 1, 4)) * 600 + StrToInt(MidStr(tmps, 6, 2)) * 50 + StrToInt(MidStr(tmps, 9, 2));
tmps = FormatDateTime("yyyy-mm-dd",QurFree->FieldByName("EndDate")->AsDateTime);
SetClassArr[i].EndDate = StrToInt(MidStr(tmps, 1, 4)) * 600 + StrToInt(MidStr(tmps, 6, 2)) * 50 + StrToInt(MidStr(tmps, 9, 2));
if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每天")
SetClassArr[i].TimeMode = 0;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每周")
SetClassArr[i].TimeMode = 1;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每月")
SetClassArr[i].TimeMode = 2;
if (QurFree->FieldByName("BeginTime")->IsNull || Trim(QurFree->FieldByName("BeginTime")->AsString)=="")
SetClassArr[i].BeginTime = 0;
else
SetClassArr[i].BeginTime = StrToInt(QurFree->FieldByName("BeginTime")->AsString);
if (QurFree->FieldByName("EndTime")->IsNull || Trim(QurFree->FieldByName("EndTime")->AsString)=="")
SetClassArr[i].EndTime = 0;
else
SetClassArr[i].EndTime = StrToInt(QurFree->FieldByName("EndTime")->AsString);
SetClassArr[i].ClassID = QurFree->FieldByName("ClassID")->AsInteger;
SetClassArr[i].Card = EmployeeIDToCard(SetClassArr[i].EmployeeID);
QurFree->Next();
}
}
//=================SetVacInfo===================================================
SQL="select * from SetVac order by EmployeeID,TimePos,TimeMode";
OpenSQL(QurFree,SQL);
iCount=QurFree->RecordCount;
if (iCount > 0)
{
delete SetVacArr;
SetVacArr=NULL;
SetVacArr = new SSetVac[iCount];
SetVacArr[0].Length=iCount;
QurFree->First();
for (int i=0;i<iCount;i++)
{
SetVacArr[i].EmployeeID = QurFree->FieldByName("EmployeeID")->AsInteger;
if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每天")
SetVacArr[i].TimeMode = 0;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每周")
SetVacArr[i].TimeMode = 1;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每月")
SetVacArr[i].TimeMode = 2;
if (Trim(QurFree->FieldByName("TimePos")->AsString) == "全天")
SetVacArr[i].TimePos = 0 ;
else
SetVacArr[i].TimePos =
StrToInt(Trim(MidStr(QurFree->FieldByName("TimePos")->AsString, 7, QurFree->FieldByName("TimePos")->AsString.Length() - 6)));
SetVacArr[i].BeginDate = QurFree->FieldByName("BeginDate")->AsDateTime;
SetVacArr[i].EndDate = QurFree->FieldByName("EndDate")->AsDateTime;
if (QurFree->FieldByName("BeginTime")->IsNull || QurFree->FieldByName("BeginTime")->AsString=="")
SetVacArr[i].BeginTime =0;
else
SetVacArr[i].BeginTime = StrToInt(QurFree->FieldByName("BeginTime")->AsString);
if (QurFree->FieldByName("EndTime")->IsNull || QurFree->FieldByName("EndTime")->AsString =="" )
SetVacArr[i].EndTime =0;
else
SetVacArr[i].EndTime = StrToInt(QurFree->FieldByName("EndTime")->AsString);
QurFree->Next();
}
}
//=============================LeaveInfo=======================================
SQL = " select a.EmployeeID,b.BeginDate,b.EndDate,b.TimeMode,b.BeginTime,b.EndTime,b.TimePos from LeaveInfo a "
" left outer join LeaveInfo_D b on a.LeaveID=b.LeaveID where "
" EndDate>= #" + sBeginDate + "# and BeginDate<=#" + sEndDate + "# order by EmployeeID,TimePos" ;
//Message(SQL);
OpenSQL(QurFree,SQL);
iCount=QurFree->RecordCount;
if (iCount > 0)
{
delete LeaveArr;
LeaveArr=NULL;
LeaveArr= new SLeave[iCount];
LeaveArr[0].Length=iCount;
for (int i=0;i<iCount;i++)
{
LeaveArr[i].EmployeeID = QurFree->FieldByName("EmployeeID")->AsInteger;
LeaveArr[i].BeginDate = QurFree->FieldByName("BeginDate")->AsDateTime;
LeaveArr[i].EndDate = QurFree->FieldByName("EndDate")->AsDateTime;
if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每天")
LeaveArr[i].TimeMode = 0;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每周")
LeaveArr[i].TimeMode = 1;
else if (Trim(QurFree->FieldByName("TimeMode")->AsString) == "每月")
LeaveArr[i].TimeMode = 2;
if (Trim(QurFree->FieldByName("TimePos")->AsString) == "全天")
LeaveArr[i].TimePos = 0;
else
LeaveArr[i].TimePos = StrToInt(Trim(MidStr(QurFree->FieldByName("TimePos")->AsString, 7,
QurFree->FieldByName("TimePos")->AsString.Length() - 6)));
if (QurFree->FieldByName("BeginTime")->IsNull || QurFree->FieldByName("BeginTime")->AsString=="")
LeaveArr[i].BeginTime =0;
else
LeaveArr[i].BeginTime = StrToInt(QurFree->FieldByName("BeginTime")->AsString);
if (QurFree->FieldByName("EndTime")->IsNull || QurFree->FieldByName("EndTime")->AsString =="" )
LeaveArr[i].EndTime =0;
else
LeaveArr[i].EndTime = StrToInt(QurFree->FieldByName("EndTime")->AsString);
QurFree->Next();
}
}
QurFree=NULL;
delete QurFree;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?