37、办公室日常管理信息系统(7)

2019-03-22 23:38

CPersonSet rs_person; // 构造员工表 rs_person.Open(); // 打开员工表

n=rs_person.GetRecordCount(); // 记录员工人数 i=0; // 初始化已处理员工人数

while(!rs_person.IsEOF()) // 依次对每个员工进行统计 {

//获取出勤记录 // 执行查询

CString stringStime=strSTime; CString stringEtime=strETime;

rs_attend.Open(CRecordset::forwardOnly,

\where PERSON='\+ \+ \+ \

strTmp1.Empty(); // 清空strTmp1 // 初始化

nWorkHour=nOverHour=0; nLeaveHDay=nErrandHDay=0;

nLateTimes=nEarlyTimes=nAbsentTimes=0;

TimeStamp=m_STime; // 初始化时间戳为统计开始时间

while(TimeStamp < m_ETime+tp_02) // 判断是否超出统计结束时间 {

if(TimeStamp.GetDayOfWeek()!=1 &&

TimeStamp.GetDayOfWeek()!=7) // 判断是否工作日 { for(j=0;j<=1;j++) // 遍历班次 {

记录

rs_attend.Close();

LateTime=TimeStamp+TimeSpan[2*j]; // 设置迟到时间 EarlyTime=TimeStamp+TimeSpan[2*j+1]; // 设置早退时间 // 判断是否请假

rs_leave.Open(CRecordset::forwardOnly, \VE where\\ PERSON='\ + \

+ LateTime.Format(\ + \

+ EarlyTime.Format(\

+ \

bLeave=(rs_leave.GetRecordCount()>0); // 判断是否有请假rs_leave.Close(); // 关闭记录集 // 判断是否出差

rs_errand.Open(CRecordset::forwardOnly, \ PERSON='\ + \

+ LateTime.Format(\ + \

+ EarlyTime.Format(\

+ \

记录

bErrand=(rs_errand.GetRecordCount()>0); // 判断是否有出差rs_errand.Close(); // 关闭记录集 rs_attend.Open(CRecordset::forwardOnly,

\where PERSON='\+ \+ \+ \

if(bLeave) // 如果有请假记录

nLeaveHDay++; // 请假记录加1

else if(bErrand) // 如果有出差记录 { }

else // 正常上班 {

WorkStart=LateTime; // 设置工作开始时间 WorkEnd=EarlyTime; // 设置工作结束时间 bLate=TRUE; // 初始化迟到判断 bAbsent=FALSE; // 初始化旷工判断 // 判断是否迟到

nErrandHDay++; // 出差计数加1

nWorkHour+=nHours[j]; // 按正常班累加工作时间

if(!rs_attend.IsEOF() && // 记录集不空 strTmp1.IsEmpty()) // 空,第一次GetFieldValue

rs_attend.GetFieldValue(\得到IO_TIME

while(!rs_attend.IsEOF()

&& StrToTime(strTmp1)<=LateTime)

{// 根据时间顺序判断是否迟到

// 得到IN_OUT

rs_attend.GetFieldValue(\

bLate=(strTmp2==\判断上班时间前是否报到

rs_attend.MoveNext(); // 跳到下一条出勤记录

}

// 判断是否旷工 if(bLate) // 判断是否迟到 {

if(!rs_attend.IsEOF()

&&

// 得到IO_TIME if(!rs_attend.IsEOF())

rs_attend.GetFieldValue(\

StrToTime(strTmp1)

WorkStart=StrToTime(strTmp1); // 记录迟到时间

else bAbsent=TRUE; // 如果下班前仍未报到记为旷工

}

bEarly=FALSE; // 判断是否早退

while(!rs_attend.IsEOF() && StrToTime(strTmp1)

{

// 得到IN_OUT

rs_attend.GetFieldValue(\bEarly=(strTmp2==\判断是否有早退 if(bEarly) { }

// 将早退时间记录为工作结束时间 WorkEnd=StrToTime(strTmp1);

else WorkEnd=EarlyTime; // 将下班时间记录为工作结束时间

}

}

// 如果旷工,增加旷工次数记录 if(bAbsent) nAbsentTimes++; else { }

// 如果迟到,增加迟到次数记录 if(bLate) nLateTimes++;

// 如果早退,增加早退次数记录 if(bEarly) nEarlyTimes++; // 计算实际工作时间

nWorkHour+=(WorkEnd-WorkStart).GetTotalHours(); if((WorkEnd-WorkStart).GetMinutes()>30)

nWorkHour++; // 四舍五入

rs_attend.MoveNext(); // 跳至下一条出勤记录 // 得到IO_TIME if(!rs_attend.IsEOF())

rs_attend.GetFieldValue(\

} // End of 遍历班次

} // End of 是否工作日 TimeStamp+=tp_1; // 推进一天

} // End of TimeStamp < m_ETime+tp_02 rs_attend.Close(); // 关闭Q_attend记录集 // 统计加班时间

CRecordset rs_overtime(&db); // 构造Q_overtime记录集 rs_overtime.Open(CRecordset::forwardOnly,


37、办公室日常管理信息系统(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:水处理作业题1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: