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 + -
显示快捷键?