Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Page1.cpp
Upload User: bjvcxy
Upload Date: 2021-05-06
Package Size: 2054k
Code Size: 9k
Category:
Compress-Decompress algrithms
Development Platform:
Visual C++
- // Page1.cpp : implementation file
- //
- #include "stdafx.h"
- #include "Attendance.h"
- #include "Page1.h"
- #include "DepartRS.h"
- #include "PersonRS.h"
- #include "CounterRS.h"
- #include "AttDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- extern CDatabase db;
- /////////////////////////////////////////////////////////////////////////////
- // CPage1 property page
- IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)
- CPage1::CPage1() : CPropertyPage(CPage1::IDD)
- {
- // 得到当前时间并格式化
- CTime t=CTime::GetCurrentTime();
- CString str=t.Format("%Y-%m-%d %H:%M");
- //{{AFX_DATA_INIT(CPage1)
- m_strIOTime = str;
- m_strDepartID = _T("");
- m_strDepartName = _T("");
- m_strPersonID = _T("");
- m_strPersonName = _T("");
- //}}AFX_DATA_INIT
- }
- CPage1::~CPage1()
- {
- }
- void CPage1::DoDataExchange(CDataExchange* pDX)
- {
- CPropertyPage::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CPage1)
- DDX_Control(pDX, IDC_LIST1, m_cList);
- DDX_Control(pDX, IDC_PROGRESS1, m_cProgress);
- DDX_Text(pDX, IDC_EDT_IOTIME, m_strIOTime);
- DDX_Text(pDX, IDC_EDT_DEPARTID, m_strDepartID);
- DDX_Text(pDX, IDC_EDT_DEPARTNAME, m_strDepartName);
- DDX_Text(pDX, IDC_EDT_PERSONID, m_strPersonID);
- DDX_Text(pDX, IDC_EDT_PERSONNAME, m_strPersonName);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
- //{{AFX_MSG_MAP(CPage1)
- ON_EN_CHANGE(IDC_EDT_DEPARTID, OnChangeEdtDepartid)
- ON_EN_CHANGE(IDC_EDT_PERSONID, OnChangeEdtPersonid)
- ON_BN_CLICKED(IDC_BTN_ADDPERSON, OnBtnAddperson)
- ON_BN_CLICKED(IDC_BTN_ADDDEPART, OnBtnAdddepart)
- ON_BN_CLICKED(IDC_BTN_ADDALL, OnBtnAddall)
- ON_BN_CLICKED(IDC_BTN_DELETEATTEND, OnBtnDeleteattend)
- ON_BN_CLICKED(IDC_BTN_SEEKIO, OnBtnSeekio)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CPage1 message handlers
- BOOL CPage1::OnInitDialog()
- {
- CPropertyPage::OnInitDialog();
- // 出入情况缺省为出
- ((CButton*)GetDlgItem(IDC_RADIO_OUT))->SetCheck(TRUE);
- // 为List添加网格
- m_cList.SetExtendedStyle(LVS_EX_GRIDLINES);
- // 设置List的列
- int nWidth=110;
- m_cList.InsertColumn(0, "记录编号", LVCFMT_LEFT, nWidth);
- m_cList.InsertColumn(1, "员工号", LVCFMT_LEFT, nWidth);
- m_cList.InsertColumn(2, "出入情况", LVCFMT_LEFT, nWidth);
- m_cList.InsertColumn(3, "时间", LVCFMT_LEFT, nWidth);
- CAttendanceRS rs(&db); // 构造出勤记录表
- UpdateList(rs); // 更新List
- return TRUE; // return TRUE unless you set the focus to a control
- // EXCEPTION: OCX Property Pages should return FALSE
- }
- void CPage1::OnChangeEdtDepartid()
- {
- UpdateData(); // 更新数据
- CDepartRS rs(&db); // 构造记录集
- rs.m_strFilter = "ID='" + m_strDepartID + "'"; // 设置过滤条件
- rs.Open(); // 打开记录集
- if(rs.GetRecordCount()==1) // 判断部门代码输入是否正确
- {
- m_strDepartName=rs.m_NAME; // 提取部门名称
- }
- else m_strDepartName.Empty(); // 清除部门名称
- rs.Close(); // 关闭记录集
- UpdateData(FALSE); // 更新界面数据
- }
- void CPage1::OnChangeEdtPersonid()
- {
- UpdateData(); // 更新数据
- CPersonRS rs(&db); // 构造PERSON记录表
- rs.m_strFilter = "ID='" + m_strPersonID + "'"; // 设置过滤条件
- rs.Open(); // 打开记录表
- if(rs.GetRecordCount()==1) // 判断员工号是否正确
- {
- m_strPersonName=rs.m_NAME; // 提取员工姓名
- m_strDepartID=rs.m_DEPARTMENT; // 提取员工所在部门编号
- }
- else m_strPersonName.Empty(); // 清除员工姓名显示
- rs.Close(); // 关闭记录表
- UpdateData(FALSE); // 更新界面数据
- OnChangeEdtDepartid(); // 显示部门名称
- }
- // 添加出勤记录函数
- void CPage1::IO_Add(CString strPersonID)
- {
- int counter; // 用于计数
- CString strIO; // 保存出入情况
- CCounterRS rs_counter(&db); // 构造计数器记录表
- // 记录编号
- rs_counter.m_strFilter = "ID='A'"; // 设置过滤器,提取计数值
- rs_counter.Open(); // 打开计数器记录表
- counter=rs_counter.m_COUNTER_VALUE; // 提取计数值
- counter++; // 计数值加1
- rs_counter.Edit(); // 编辑计数器
- rs_counter.m_COUNTER_VALUE=counter; // 保存当前计数
- rs_counter.Update(); // 提交修改
- rs_counter.Close(); // 关闭计数器记录表
- // 添加记录
- // 判断确定出入情况
- if(((CButton*)GetDlgItem(IDC_RADIO_OUT))->GetCheck())
- strIO="O";
- else strIO="I";
- // 转换出入时间类型
- int nYear,nMonth,nDay,nHour,nMinute; // 年,月,日,时,分
- sscanf(m_strIOTime.Left(4), "%d", &nYear); // 得到年
- sscanf(m_strIOTime.Mid(5,2), "%d", &nMonth); // 得到月
- sscanf(m_strIOTime.Mid(8,2), "%d", &nDay); // 得到日
- sscanf(m_strIOTime.Mid(11,2), "%d", &nHour); // 得到时
- sscanf(m_strIOTime.Mid(14,2), "%d", &nMinute); // 得到分
- // 得到出入时间
- CTime IO_time(nYear,nMonth,nDay,nHour,nMinute,0);
- CAttendanceRS rs_attendance(&db); // 构造考勤记录表
- rs_attendance.Open(); // 打开考勤记录表
- rs_attendance.AddNew(); // 追加考勤记录
- rs_attendance.m_ID=counter;
- rs_attendance.m_PERSON=strPersonID;
- rs_attendance.m_IN_OUT=strIO;
- rs_attendance.m_IO_TIME=IO_time;
- rs_attendance.Update();
- rs_attendance.Close(); // 关闭考勤记录表
- UpdateList(rs_attendance); // 更新列表框
- }
- void CPage1::OnBtnAddperson() // 追加单个员工考勤记录
- {
- if(!m_strPersonName.IsEmpty()) // 判断员工是否存在
- {
- IO_Add(m_strPersonID); // 追加单个员工记录
- }
- }
- void CPage1::OnBtnAdddepart() // 追加部门员工考勤记录
- {
- int i,n; // 用于保存记录条数
- CPersonRS rs_person(&db); // 构造员工信息表
- if(m_strDepartName.IsEmpty()) return; // 判断部门代号是否正确
- // 设置过滤条件
- rs_person.m_strFilter="DEPARTMENT='"+m_strDepartID+"' and STATE='T'";
- rs_person.Open(); // 打开员工信息表
- n=rs_person.GetRecordCount(); // 获取员工人数
- i=0; // 初始化已添加记录条数
- // 初始化进度条
- m_cProgress.SetRange(0, n);
- m_cProgress.SetPos(0);
- while(!rs_person.IsEOF()) // 对数据表中所有记录进行处理
- {
- IO_Add(rs_person.m_ID); // 添加当前员工出勤记录
- rs_person.MoveNext(); // 跳到下一个员工记录
- m_cProgress.SetPos(++i); // 显示进度
- }
- rs_person.Close(); // 关闭员工信息表
- }
- void CPage1::OnBtnAddall() // 添加所有员工出勤记录
- {
- int i,n; // 用于保存记录条数
- CPersonRS rs_person(&db); // 构造员工信息表
- // 设置过滤条件,提取员工列表
- rs_person.m_strFilter = "STATE='T'";
- rs_person.Open(); // 打开员工信息表
- n=rs_person.GetRecordCount(); // 获取员工人数
- i=0; // 初始化已添加记录条数
- // 初始化进度条
- m_cProgress.SetRange(0, n);
- m_cProgress.SetPos(0);
- while(!rs_person.IsEOF()) // 对数据表中所有记录进行处理
- {
- IO_Add(rs_person.m_ID); // 添加当前员工出勤记录
- rs_person.MoveNext(); // 跳到下一个员工记录
- m_cProgress.SetPos(++i); // 显示进度
- }
- rs_person.Close(); // 关闭员工信息表
- }
- void CPage1::UpdateList(CAttendanceRS& rs) // 更新列表框内容
- {
- int i=0;
- CString strID,strTime;
- rs.Open(); // 打开出勤记录表
- m_cList.DeleteAllItems(); // 清除列表框内容
- while(!rs.IsEOF()) // 对数据表中所有记录进行处理
- {
- m_cList.InsertItem(i, ""); // 添加新Item
- strID.Format("%d", rs.m_ID); // 转换为字符串
- m_cList.SetItemText(i, 0, strID);
- m_cList.SetItemText(i, 1, rs.m_PERSON);
- m_cList.SetItemText(i, 2, rs.m_IN_OUT);
- m_cList.SetItemText(i, 3, rs.m_IO_TIME.Format("%Y-%m-%d %H:%M"));
- rs.MoveNext(); // 跳到下一条记录
- i++;
- }
- rs.Close(); // 关闭出勤记录表
- }
- void CPage1::OnBtnDeleteattend() // 删除出勤记录列表中所选记录
- {
- CString strSQL;
- int nItem;
- // 得到第一个被选择Item的位置
- POSITION pos = m_cList.GetFirstSelectedItemPosition();
- if(pos==NULL)
- {
- AfxMessageBox("没有选择记录!");
- return;
- }
- while(pos) // 遍历所有被选Item
- {
- nItem=m_cList.GetNextSelectedItem(pos); // 得到Item Index
- // 构造SQL语句
- strSQL="delete from ATTENDANCE where ID="
- + m_cList.GetItemText(nItem, 0);
- db.ExecuteSQL(strSQL); // 执行
- }
- CAttendanceRS rs(&db); // 构造出勤记录表
- UpdateList(rs); // 更新列表框
- }
- void CPage1::OnBtnSeekio()
- {
- CAttendanceRS rs(&db); // 构造出勤记录表
- CAttDlg *pDlg; // 指向包含本对象的CAttDlg的指针
- CString strFilter; // 用于保存过滤字符串
- CString strSTime,strETime; // 起始,结束时间
- pDlg=(CAttDlg*)GetParent()->GetParent(); // 得到指针
- pDlg->UpdateData(); // 更新数据
- strSTime=pDlg->m_StartTime.Format("%Y-%m-%d");
- strETime=pDlg->m_EndTime.Format("%Y-%m-%d");
- if(pDlg->m_bSeekbyperson) // 判断是否根据员工号检索
- strFilter="PERSON='" + pDlg->m_strPersonID + "'"; // 添加过滤条件
- if(pDlg->m_bSeekbytime) // 判断是否有时间范围
- {
- if(strFilter.GetLength()>0) // 判断是否已有过滤条件
- strFilter += " and "; //如果是,需要添加and连接符
- strFilter += "IO_TIME>#" + strSTime + "#"; // 添加开始时间过滤
- strFilter += " and IO_TIME<#" + strETime + "#"; // 添加结束时间过滤
- }
- if(strFilter.GetLength()>0) // 判断是否有过滤条件
- rs.m_strFilter=strFilter; // 设置Filter
- UpdateList(rs); // 更新列表框
- }