基于C++的企业考勤管理系统的设计代码
- 格式:doc
- 大小:250.00 KB
- 文档页数:58
题目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_Connectionpublic: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();elsereturn 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_AFXDLLEnable3dControls();#elseEnable3dControlsStatic();#endifLoadSkin();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();}elseAfxMessageBox;}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;elsepID = 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");elsestr.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);elsestr.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);。