基于C++的企业考勤管理系统的设计代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目12 “公司员工考勤管理系统设计”
1、问题描述
某公司需要存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。
其中,雇员分为经理、技术人员、销售人员和销售经理。
定义一个将小时换成天数的类。
转换规则:8小时转换为一天,12小时转换为1.5天。
可进行天数的加、减。
定义一个记录员工生病、休假时间的类。
其中包括:员工生病没工作的天数、生病可以不工作的最多天数、员工已经带薪休假的天数、员工可以带薪休假的天数。
公司规定带薪休假不能超过24小时。
生病可以不工作的最多不能超过16小时。
设计一程序能够对公司人员的休假情况进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。
2、功能要求
(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
还可以添加带薪休假和生病休假的记录,每条记录中必须包含员工编号和姓名。
(2)查询功能:可根据编号、姓名等信息对已添加的员工信息和休假信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;
(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能:主要实现对已添加的人员记录和休假记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。
(6)统计功能:能根据多种参数进行人员的统计。
例如,统计四类人员数量以及总数,
统计任一员工的休假天数等信息。
(7)保存功能:可将当前系统中各类人员记录和休假记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
#import"msado15.dll" no_namespace rename("EOF,"adoEOF") class CADOConnection
{
private:
Static void InitADO();
Static void UnInitADO();
protected:
_ConnectionPtr m_Connection;
public:
BOOL IsOpen();
_ConnectionPtr GetConnection();
Cstring GetSQLConstr(CString IP,CString DBName);
BOOL Open(CString ConStr);
CADOConnection();
Virtual~CADOConnection();
};
CADOConnection*GetConnection();
Int ConCount = 0;
CADOConnection g_Connection;
CADOConnection*GetConnection()
{
Return & g_Connection;
}
CADOConnection::CADOConnection()
{
InitADO();
m_Connection.CreateInstance("ADODB.Connection"); }
CADOConnection::CADOConnection()
{
If(IsOpen());
m_Connection->Close();
m_Connection = NULL;
UnInitADO();
}
Void CADOConnection::InitADO()
{
If(ConCount ++ == 0)
CoInitialize(NULL);
};
void CADOConnection::UnInitADO()
{
if(~ConCount == 0)
CoUninitialize();
};
BOOL CADOConnection::Open(CString ConStr)
{
if(IsOpen())
m_Connection->Close();
m_Connection->Open((_bstr_t)ConStr,","adModeUnknown);
return IsOpen();
}
CString CADOConnection::GetSQLConStr(CString IP,CString DBName)
{
CString Str;
Str.Format("Provider = SQLOLEDB.1;Persist Security Info = False;User ID = sa;Initial Catalog = %s;Data Source = %s",DBName,IP);
return Str;
}
_ConnectionPtr CADOConnection::GetConnection()
{
return m_Connection:
}
BOOL CADOConnection::IsOpen()
{
long State;
m_Connection->get_State(&State);
if(State == adStateOpen)
return true;
return false;
}
class CADODataSet
{
protected:
_RecoedsetPtr m_DataSet;
CADOConnection *m_Connection
public:
void Delete();
int GetRecordNo();
void move(int nIndex);
void Save();
void SetFieldValue(CString FieldName,_variant_t Value);
void AddNew();
BOOL Next();
FieldsPtr GetFields();
int GetRecordCount();
void SetConnetion(CADOConnection *pCon);
BOOL Open(CString SQLStr);
CADODataSet();
virtual ~CADODataSet();
private:
BOOL IsOpen();
};
CADODataSet::CADODataSet()
{
m_DataSet.CreateInstance("ADODB.Recordset"); }
CADODataSet::~CADODataSet()
{
if(IsOpen())
m_DataSet->Close();
m_DataSet = NULL;
m_Connection = NULL;
}
void CADODataSet::SetConnection(CADOConnection *pCon) {
m_Connection = pCon;
}
int CADODataSet::GetRecordCount()
{
if(IsOpen())
return m_DataSet->GetRecordCount();
else
return 0;
}
BOOL CADODataSet::Open(CString SQLStr)
{
if(IsOpen)
m_DataSet->Close();
}
BOOL CADODataSet::IsOpen()
{
long State;
m_DataSet->get_State(&State);
if(State == adStateOpen)
return true;
return false;
}
FieldsPtr CADODataSet::GetFields()
{
return m_DataSet->GetFields();
}
BOOL CADODataSet::Next()
{
if(m_DataSet->adoEOF)
retuen false;
m_DataSet->MoveNext();
return true;
}
void CADODataSet::AddNew()
{
m_DataSet->AddNew();
}
void CADODataSet::SetFieldValue(CString FieldName,_variant_t Value0) {
m_DataSet->PutCollect((_bstr_t)FieldName,Value);
}
void CADODataSet::Save()
{
m_DataSet->Upsate();
}
void CADODataSet::Move(int nIndex)
{
m_DataSet->MoveFirst();
m_DataSet->Move(nIndex);
}
int CADODataSet::GetRecordNO()
{
return m_DataSet->AbsolutePositon;
}
void CADODataSet::Delete()
{
m_DateSet->Delete(adAffectCurent);
}
BOOL CPersonApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef_AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
LoadSkin();
BOOLbCon=
GetConnection()->Open(GetConnection()->GetSQLConStr("127.0.0.1"
,"tb_person"));
CLoginDialog logindlg;
if(logindlg.DoModal()! = IDOK)
return false;
CPersonDlg dlg;
m_pMainWnd =& dlg;
int nResponse = dlg.DoModal();
if(nResponse == IDOK)
{
}
else if(nResponse == IDCANCEL)
{
}
return FALSE;
}
BOOL CLoginDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_DataSet.SetConnection(GetConnection());
m_DataSet.Open("Select * From Tab_User");
int count = m_DataSet.GetRecordCount();
for(int i = 0;i < count;i++)
{
m_UserList.AddString((_bstr_t)m_DataSet.GetFields()->Item[L"User Name"]->Value);
m_DataSet.Next();
}
m_UserList.SetCurSel(0);
return TRUE;
}
void CLoginDialog::OnLogin()
{
CString sql,user,pass;
m_UserList.GetWindowText(user);
m_passWord.GetWindowText(pass);
sql.Format("Select * From tab_user Where UserName = '%s' and PassWord = '%s'",user,pass);
m_DataSet.Open(sql);
if(m_DataSet.GetRecordCount() == 1)
{
::SetUserName(user);
this->OnOk();
}
else
AfxMessageBox;
}
void CUserManage::UpdateGrid()
{
m_DataSet.Open("Select * From tab_User");
m_grid.DeleteAllItems();
for(int = 0;i < m_DataSet.GetRecordCount();i++)
{ m_grid.InsertItem(i,(_bstr_t)m_DataSet.GetFields()->Item [L"UserName"]->Value);
int no = m_DataSet.GetRecordNo();
m_grid.SetItemData(i,no);
m_DataSet.Next();
}
}
BOOL CUserManage::OnInitDialog()
{
CDialog::OnInitDialog();
m_grid.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_grid.InsertColumn(0,"用户名");
m_grid.SetColumnWidth(0,150);
m_DataSet.SetConnection(::GetConnection());
UpdateGrid();
return TRUE;
}
void CUserManage::OnAppend()
{
CUserEdit useredit;
if (useredit.DoModal() == IDOK)
{
m_DataSet.AddNew();
m_DataSet.SetFieldValue("UserName",(_bstr_t));
m_DataSet.Save();
UpdateGrid();
}
}
void CUserManage::OnEdit()
{
CUserEdit useredit;
int no = m_grid.GetItemData(m_grid.GetSelectionMark());
m_DataSet.move(no-1);
= (char *)(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value;
if (useredit.DoModal() == IDOK)
{
m_DataSet.SetFieldValue("UserName",(_bstr_t));
m_DataSet.Save();
UpdateGrid();
}
}
void CUserManage::OnDelete()
{
if (MessageBox("是否删除此记录!","提示",
MB_YESNO|MB_ICONWARNING) == IDYES)
{
int no = m_grid.GetItemData(m_grid.GetSelectionMark());
m_DataSet.move(no-1);
m_DataSet.Delete();
m_DataSet.Save();
UpdateGrid();
}
}
void CDeptManage::GetNode(HTREEITEM pNode,int nPid)
{
HTREEITEM node;
CADODataSet DataSet;
DataSet.SetConnection(::GetConnection());
CString str;
str.Format("Select * From tab_Dept where pid = %d,nPid ");
DataSet.Open(str);
int count = DataSet.GetRecordCount();
int ID;
_variant_t value;
for(int i = 0;i < count;i++)
{
node = m_tree.InsertItem((bstr_t)DataSet.GetFields()->Item["DeptName"]->Value
,pNode);
value = (_vaiant_t)DataSet.GetFields()->Item["ID"]->Value;
ID = value.intVal;
m_tree.SetItemData(node,ID);
GetNode(node,ID);
DataSet.Next();
}
}
void CDeptManage::UpdateDept()
{
m_tree.DeleteAllItems();
GetNode(TVI_ROOT,0);
}
void CDeptManage::GetNode(HTREEITEM pNode,int nPid)
{
HTREEITEM node;
CADODataSet DataSet;
DataSet.SetConnection(::GetConnection());
CString str;
str.Format("Select * From tab_Dept where pid = %d",nPid);
DataSet.Open(str);
int count = DataSet.GetRecordCount();
int ID;
_variant_t value;
for (int i = 0;i<count;i++)
{
node = m_tree.InsertItem((_bstr_t)DataSet.GetFields()->Item["DeptName"]->Value,pNode);
value = (_variant_t)DataSet.GetFields()->Item["ID"]->Value;
ID = value.intVal;
m_tree.SetItemData(node,ID);
GetNode(node,ID);
DataSet.Next();
}
}
void CDeptManage::OnAdd()
{
CDeptEdit deptedit;
if (deptedit.DoModal() == IDOK)
{
HTREEITEM pNode = m_tree.GetSelectedItem();
int pID;
if (deptedit.isroot)
pID = 0;
else
pID = m_tree.GetItemData(pNode);
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
dataset.Open("Select top 1 * From tab_Dept");
dataset.AddNew();
dataset.SetFieldValue("DeptName",(_variant_t));
dataset.SetFieldValue("memo",(_variant_t)deptedit.memo);
dataset.SetFieldValue("PID",(long)pID);
dataset.Save();
UpdateDept();
}
}
void CDeptManage::OnEdit()
{
CDeptEdit deptedit;
deptedit.visible = false;
HTREEITEM pNode = m_tree.GetSelectedItem();
if (pNode == 0)
return;
int pID = m_tree.GetItemData(pNode);
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
CString str;
str.Format("Select * From tab_Dept where id = %d",pID);
dataset.Open(str);
= (char *)(_bstr_t)dataset.GetFields()->Item[L"DeptName"]->Value;
deptedit.memo = (char *)(_bstr_t)dataset.GetFields()->Item["memo"]->Value;
if (deptedit.DoModal() == IDOK)
{
dataset.SetFieldValue("DeptName",(_variant_t));
dataset.SetFieldValue("memo",(_variant_t)deptedit.memo);
dataset.Save();
UpdateDept();
}
}
void CDeptManage::OnDelete()
{
HTREEITEM pNode = m_tree.GetSelectedItem();
if (pNode == 0)
return;
if (MessageBox("是否删除此记录!","提示",
MB_YESNO|MB_ICONWARNING) == IDYES)
{
int pID = m_tree.GetItemData(pNode);
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
CString str;
str.Format("Select * From tab_Dept where id = %d",pID);
dataset.Open(str);
dataset.Delete();
dataset.Save();
UpdateDept();
}
}
void CPersonManage::OnSelchangedTreedept(NMHDR * pNMHDR,LRESULT * pResult)
{
NM_TREEVIEW * pNMTreeView = (NM_TREEVIEW*)pNMHDR;
m_DeptID = m_tree.GetItemData(pNMTreeView->itemNew.hItem);
UpdatePerson();
*pResult = 0;
}
void CPersonManage::UpdatePerson()
{
m_list.DeleteAllItems();
CADODataSet DataSet;
DataSet.SetConnection(::GetConnection());
CString str;
if(m_DeptID == -1)
str.Format("Select * From tab_Employees");
else
str.Format("Select * From tab_Employees where Dept = %d",m_DeptID);
DataSet.Open(str);
int count = DataSet.GetRecordCount();
int n = 0;
_variant_t value;
for(int i = 0;i<count;i++)
{
int index = 1;
m_list.InsertItem(n,(_bstr_t)DataSet.GetFields()->Item["
Emp_Id"]->Value);
value = DataSet.GetFields()->Item["AutoID"]->Value;
m_list.SetItemData(n,value,lVal);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Emp_NAME"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Sex"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Nationality"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Birth"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Political_Party"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Culture_Level"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Marital_Condition"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Id_Card"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Office_phone"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Mobile"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["HireDate"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Duty"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Memo"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Files_Keep_Org"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Hukou"]->Value);
m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields( )->Item["Family_Place"]->Value);
n ++;
DataSet.Next();
}
}
BOOL CPersonManage::OnInitDialog()
{
CDialog::OnInitDialog();
m_DeptID = -1;
UpdateDept();
int i = 0;
m_list.InsertColumn(i,"人员编号"); m_list.SetColumnWidth(i++,80);
m_list.InsertColumn(i,"人员名称"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"性别");
m_list.SetColumnWidth(i++,50);
m_list.InsertColumn(i,"民族");
m_list.SetColumnWidth(i++,50);
m_list.InsertColumn(i,"出生日期"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"政治面貌"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"文化程度"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"婚姻状况");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"身份证号"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"办公电话"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"手机电话"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"到岗日期"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"职务");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"备注");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"家庭住址"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"档案所在地");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"户口所在地");
m_list.SetColumnWidth(i++,100);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
UpdatePerson();
return TRUE;
}
BOOL CPersonManage::OnInitDialog()
{
CDialog::OnInitDialog();
m_DeptID = -1;
UpdateDept();
int i = 0;
m_list.InsertColumn(i,"人员编号");
m_list.SetColumnWidth(i++,80);
m_list.InsertColumn(i,"人员名称"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"性别");
m_list.SetColumnWidth(i++,50);
m_list.InsertColumn(i,"民族");
m_list.SetColumnWidth(i++,50);
m_list.InsertColumn(i,"出生日期"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"政治面貌"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"文化程度"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"婚姻状况"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"身份证号"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"办公电话"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"手机电话"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"到岗日期"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"职务");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"备注");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"家庭住址"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"档案所在地"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"户口所在地");
m_list.SetColumnWidth(i++,100);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
UpdatePerson();
return TRUE;
}
void CPersonManage::OnEdit()
{
if (m_list.GetSelectionMark() == -1)
return;
int id = m_list.GetItemData(m_list.GetSelectionMark());
CPersonEdit personedit;
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
CString str;
str.Format("select * from tab_Employees where autoid = %d",id);
dataset.Open(str);
personedit.m_id = (char *)(_bstr_t)dataset.GetFields()->Item["Emp_Id"]->Value;
personedit.m_name = (char
*)(_bstr_t)dataset.GetFields()->Item["Emp_NAME"]->Value;
personedit.m_sex = (char *)(_bstr_t)dataset.GetFields()->Item["Sex"]->Value;
personedit.m_nationality = (char *)(_bstr_t)dataset.GetFields()->Item["Nationality"]->Value;
CString birth = (char *)(_bstr_t)dataset.GetFields()->Item["Birth"]->Value;
if (!birth.IsEmpty())
{
//设置日期数据
int yy=atoi(birth.Left(4));
int mm=atoi(birth.Mid(6,2));
int dd=atoi(birth.Mid(9,2));
CTime tbirth(yy,mm,dd,0,0,0);
personedit.m_birth = tbirth;
}
personedit.m_farty = (char *)(_bstr_t)dataset.GetFields()->Item["Political_Party"]->Value;
personedit.m_culture = (char *)(_bstr_t)dataset.GetFields()->Item["Culture_Level"]->Value;
personedit.m_marital = (char *)(_bstr_t)dataset.GetFields()->Item["Marital_Condition"]->Value;
personedit.m_card = (char
*)(_bstr_t)dataset.GetFields()->Item["Id_Card"]->Value;
personedit.m_office = (char *)(_bstr_t)dataset.GetFields()->Item["Office_phone"]->Value;
personedit.m_mobile = (char *)(_bstr_t)dataset.GetFields()->Item["Mobile"]->Value;
CString hire = (char *)(_bstr_t)dataset.GetFields()->Item["HireDate"]->Value;
if (!hire.IsEmpty())
{
//设置日期数据
int yy=atoi(hire.Left(4));
int mm=atoi(hire.Mid(6,2));
int dd=atoi(hire.Mid(9,2));
CTime thire(yy,mm,dd,0,0,0);
personedit.m_hire = thire;
}
personedit.m_duty =
(char *)(_bstr_t)dataset.GetFields()->Item["Duty"]->Value;
personedit.m_memo =
(char *)(_bstr_t)dataset.GetFields()->Item["Memo"]->Value;
personedit.m_files =
(char *)(_bstr_t)dataset.GetFields()->Item["Files_Keep_Org"]->Value;
personedit.m_hukou =
(char *)(_bstr_t)dataset.GetFields()->Item["Hukou"]->Value;
personedit.m_family =
(char *)(_bstr_t)dataset.GetFields()->Item["Family_Place"]->Value;
personedit.m_DeptData= dataset.GetFields()->Item["Dept"]->Value;
if (personedit.DoModal() == IDOK)
{
dataset.SetFieldValue("Emp_Id",(_bstr_t)personedit.m_id);
dataset.SetFieldValue("Emp_NAME",(_bstr_t)personedit.m_name);
dataset.SetFieldValue("Sex",(_bstr_t)personedit.m_sex);
dataset.SetFieldValue("Nationality",(_bstr_t)personedit.m_nationality) ;
dataset.SetFieldValue("Birth",(_bstr_t)personedit.m_birth.Format("%Y-% m-%d"));
dataset.SetFieldValue("Political_Party",(_bstr_t)personedit.m_farty);
dataset.SetFieldValue("Culture_Level",(_bstr_t)personedit.m_culture);
dataset.SetFieldValue("Marital_Condition",(_bstr_t)personedit.m_marita l);
dataset.SetFieldValue("Id_Card",(_bstr_t)personedit.m_card);
dataset.SetFieldValue("Office_phone",(_bstr_t)personedit.m_office);
dataset.SetFieldValue("Mobile",(_bstr_t)personedit.m_mobile);
dataset.SetFieldValue("HireDate",(_bstr_t)personedit.m_hire.Format("%Y -%m-%d"));
dataset.SetFieldValue("Duty",(_bstr_t)personedit.m_duty);
dataset.SetFieldValue("Memo",(_bstr_t)personedit.m_memo);
dataset.SetFieldValue("Files_Keep_Org",(_bstr_t)personedit.m_files);
dataset.SetFieldValue("Hukou",(_bstr_t)personedit.m_hukou);
dataset.SetFieldValue("Family_Place",(_bstr_t)personedit.m_family);
dataset.SetFieldValue("dept",personedit.m_DeptData);
dataset.Save();
UpdatePerson();
}
}
void CPersonManage::OnDelete()
{
if (MessageBox("是否删除此记录!","提示",
MB_YESNO|MB_ICONWARNING) == IDYES)
{
if (m_list.GetSelectionMark() == -1)
return;
int id = m_list.GetItemData(m_list.GetSelectionMark());
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
CString str;
str.Format("select * from tab_Employees where autoid = %d",id);
dataset.Open(str);
dataset.Delete();
dataset.Save();
UpdatePerson();
}
}
CTime CCheckManage::GetTimeForStr(CString timestr)
{
int h,m,s;
if (timestr.GetLength() < 8)
timestr = "0"+timestr;
h = atoi(timestr.Left(2));
m = atoi(timestr.Mid(3,2));
s = atoi(timestr.Right(2));
CTime result(2000,1,1,h,m,s);
return result;
}
CTime CCheckManage::GetDateForStr(CString datestr)
{
int y,m,d;
y = atoi(datestr.Left(4));
m = atoi(datestr.Mid(5,2));
d = abs(atoi(datestr.Right(2)));
CTime result(y,m,d,8,0,0);
return result;
}
CTime CCheckManage::DecTime(CTime one, CTime two)
{
int yy,mm,dd,h,s,m,onetemp,twotemp;
yy = 2000;//one.GetYear();// - two.GetYear();
mm = 1;
dd = 1;
onetemp = one.GetSecond() + one.GetMinute() * 60 + one.GetHour() * 60
* 60;
twotemp = two.GetSecond() + two.GetMinute() * 60 + two.GetHour() * 60 * 60;
if ((onetemp - twotemp) < 0)
{
h = m = s = 0;
}
else
{
h = (onetemp - twotemp) / 60 / 60;
m = ((onetemp - twotemp) - h * 60 * 60) / 60;
s = ((onetemp - twotemp) - h * 60 * 60) - m * 60;
}
CTime time (yy,mm,dd,h,m,s);
return time;
}
void CCheckManage::UpdateList()
{
this->UpdateData();
CString str;
if (m_check)
str.Format("Select * From tab_check");
else
{
CString Starttime,EndTime;
Starttime = m_yy + "-" + m_mm + "-1" ;
EndTime.Format("DATEADD(month,1,'%s')",Starttime);
if (m_emp == "(全部)")
str.Format("Select * From tab_check where checkdate between '%s' and %s",Starttime,EndTime);
else
str.Format("Select * From tab_check where name = '%s' and checkdate between '%s' and %s",m_emp,Starttime,EndTime);
}
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
dataset.Open(str);
m_list.DeleteAllItems();
for (int i = 0 ; i < dataset.GetRecordCount() ; i++)
{
int n = 0;
long data = dataset.GetFields()->Item["autoid"]->Value;
m_list.InsertItem(i,"");
m_list.SetItemData(i,data);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["name"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["ondutytime"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["offdutytime"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["ontime"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["offtime"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["leave"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["onleave"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["offleave"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["latetime"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["leaveearly"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["memo"]->Value);
m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["checkdate"]->Value);
dataset.Next();
}
}
BOOL CCheckManage::OnInitDialog()
{
CDialog::OnInitDialog();
int i = 0;
m_list.InsertColumn(i,"人员姓名");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"上班时间");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"下班时间");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"上班考勤时间"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"下班考勤时间"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"请假类别");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"请假起始时间"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"请假结束时间"); m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"迟到时间");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"早退时间");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"备注");
m_list.SetColumnWidth(i++,100);
m_list.InsertColumn(i,"考勤日期");
m_list.SetColumnWidth(i++,130);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_check = true;
this->UpdateData(false);
int curyear,curmonth;
CTime time(CTime::GetCurrentTime());
curyear = time.GetYear();
curmonth = time.GetMonth();
char value[10];
for (int y = 2000; y < 2100 ;y++)
{
_itoa(y,value,10);
m_cyy.InsertString(y-2000,value);
}
m_cyy.SetCurSel(curyear-2000);
for (int n = 1 ; n<=12 ;n++)
{
_itoa(n,value,10);
m_cmm.InsertString(n-1,value);
}
m_cmm.SetCurSel(curmonth-1);
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
dataset.Open("Select * From tab_Employees");
m_cemp.InsertString(0,"(全部)");
for (int index = 1 ; index <= dataset.GetRecordCount() ; index++) {
m_cemp.InsertString(index,(_bstr_t)dataset.GetFields()->Item["emp_n ame"]->Value);
dataset.Next();
}
m_cemp.SetCurSel(0);
UpdateList();
return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
void CCheckManage::OnAdd()
{
CCheckEdit checkedit;
if (checkedit.DoModal() == IDOK)
{
CString time;
CString str = "Select top 1 * From tab_check";
CADODataSet dataset;
dataset.SetConnection(::GetConnection());
dataset.Open(str);
dataset.AddNew();
dataset.SetFieldValue("name",(_bstr_t)checkedit.m_name);
dataset.SetFieldValue("checkdate",(_bstr_t)checkedit.m_datecheck.Fo rmat("%Y-%m-%d"));
dataset.SetFieldValue("ondutytime",(_bstr_t)checkedit.m_timeonduty. Format("%H:%M:%S"));
dataset.SetFieldValue("offdutytime",(_bstr_t)checkedit.m_timeoffdut y.Format("%H:%M:%S"));
dataset.SetFieldValue("ontime",(_bstr_t)checkedit.m_timeon.Format(" %H:%M:%S"));
dataset.SetFieldValue("offtime",(_bstr_t)checkedit.m_timeoff.Format ("%H:%M:%S"));
dataset.SetFieldValue("leave",(_bstr_t)checkedit.m_leave);
dataset.SetFieldValue("onleave",(_bstr_t)checkedit.m_timeonleave.Fo rmat("%H:%M:%S"));
dataset.SetFieldValue("offleave",(_bstr_t)checkedit.m_timeoffleave. Format("%H:%M:%S"));
dataset.SetFieldValue("memo",(_bstr_t)checkedit.m_memo);
CTime latetime = DecTime(checkedit.m_timeon,checkedit.m_timeonduty);。