1、题目12“企业员工考勤管理系统设计” 1、问题描述 某企业需要存储雇员 编号、姓名、性别、所在部门,级别,并进行工资 计算。其中,雇员分为经理、技术人员、销售人员和销售经理。 定义一种将小时换整天数 类。转换规则:8小时转换为一天,12小时转换为1.5天。可进行天数加、减。 定义一种统计员工生病、休假时间类。其中涉及:员工生病没工作天数、生病能够不工作 最多天数、员工已经带薪休假 天数、员工能够带薪休假 天数。企业要求带薪休假不能超出二十四小时。生病能够不工作 最多不能超出16小时。 设计一程序能够对企业人员 休假情况进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件 输入/
2、输出等内容。 2、功能要求 (1) 添加功能:程序能够任意添加上述四类人员 统计,可提供选择界面供顾客选择所要添加 人员类别,要求员工 编号要唯一,假如添加了反复编号 统计时,则提醒数据添加反复并取消 添加。还能够添加带薪休假和生病休假 统计,每条统计中必须涉及员工编号和姓名。 (2) 查询功能:可根据编号、姓名等信息对已添加 员工信息和休假信息进行查询,假如未找 到,给出相应 提醒信息,假如找到,则显示相应 统计信息; (3) 显示功能:可显示目前系统中全部统计,每条统计占据一行。 (4) 编辑功能:可根据查询成果对相应 统计进行修改,修改时注意编号 唯一性。 (5) 删除
3、功能:主要实现对已添加 人员统计和休假统计进行删除。假如目前系统中没有相应 人员统计,则提醒“统计为空!”并返回操作。 (6) 统计功能:能根据多种参数进行人员 统计。例如,统计四类人员数量以及总数, 统计任一员工休假天数等信息。 (7) 保存功能:可将目前系统中各类人员统计和休假统计存入文件中,存入方式任意。 (8) 读取功能:可将保存在文件中 信息读入到目前系统中,供顾客进行使用。 3、问题处理方案 根据系统功能要求,能够将问题处理分为如下环节: (1) 应用系统分析,建立该系统 功能模块框图以及界面 组织和设计; (2) 分析系统中 各个实体及它们之间 关系; (3)
4、 根据问题描述,设计系统 类层次; (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 IsOp
5、en(); _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_Conn
6、ection; } 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(
7、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,CSt
8、ring DBName) { CString Str; Str.Format(叩rovider = 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_Co
9、nnection->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,_var
10、iant_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.Recor
11、dset"); } 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(); els
12、e 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(); }
13、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
14、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::InitInstanc
15、e() { AfxEnableControlContainer(); #ifdef一AFXDLL Enable3dControls(); #else Enable3dControlsStatic(); #endif LoadSkin(); BOOLbCon= ,"tb_person")); CLoginDialog logindlg; if(logindlg.DoModal()! = IDOK) return false; CPersonDlg dlg; m_pMainWnd =& dlg; int nResponse = dlg.DoModal(); i
16、f(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++)
17、 { 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_us
18、er 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_D
19、ataSet.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|L
20、VS_EX_GRIDLINES); m_grid.InsertColumn (顾客名"); 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
21、",(_bstr_t)useredit.name); m_DataSet.Save(); UpdateGrid(); } } void CUserManage::OnEdit() { CUserEdit useredit; int no = m_grid.GetItemData(m_grid.GetSelectionMark()); m_DataSet.move(no-1); useredit.name=(char *)(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value; if (useredit.DoMod
22、al() == IDOK) { m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.name); 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_
23、DataSet.Delete(); m_DataSet.Save(); UpdateGrid(); } void CDeptManage::GetNode(HTREEITEM pNode,int nPid){ HTREEITEM node; CADODataSet DataSet; DataSet.SetConnection(::GetConnection()); CString str; str.Format("Selec*t From tab_Dept where pid = %d,nPid "); DataSet.Open(str); int count = Dat
24、aSet.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);
25、 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
26、pid = %d",nPid);
DataSet.Open(str);
int count = DataSet.GetRecordCount();
int ID;
_variant_t value;
for (int i = 0;i
27、Val; 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); CADOData
28、Set dataset; dataset.SetConnection(::GetConnection()); dataset.Open("Select top 1 * From tab_Dept"); dataset.AddNew(); dataset.SetFieldValue("DeptName",(_variant_t)deptedit.name); dataset.SetFieldValue("memo",(_variant_t)deptedit.memo); dataset.SetFieldValue(叩ID",(long)pID); dataset.Save();
29、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("Se
30、lect * From tab_Dept where id = %d",pID); dataset.Open(str); deptedit.name = (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)d
31、eptedit.name); 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.GetI
32、temData(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 *pResu
33、lt) { 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_
34、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 35、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"]->Va 36、lue);
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[叩olitical_Party"]->Value);
m_list.SetItemText(n,in 37、dex++,(_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. 38、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 39、);
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++,(_bs 40、tr_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 人,员编号");
m_list.SetColumnWidth(i++,80);
m_list.InsertColumn 人员名称");
m_list.SetCo 41、lumnWidth(i++,1);
m_list.InsertColumn 性别");
m_list.SetColumnWidth(i++,50);
m_list.InsertColumn 民族");
m_list.SetColumnWidth(i++,50);
m_list.InsertColumn出生日期");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn 政治面貌");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn 文化程度");
m_list.SetColum 42、nWidth(i++,1);
m_list.InsertColumn 婚姻情况");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn 身份证号");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn 办公"");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i," ");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn到岗日期");
m_list.SetColumnW 43、idth(i++,1);
m_list.InsertColumn 职务"");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn 备注");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn 家庭住址");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn 档案所在地");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumnH, 所在地");
m_list.SetColumnW 44、idth(i++,1);
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.InsertColum 45、n(i,"人员名称");
m_list.SetColumnWidth(i++,1);
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++,1);
m_list.InsertColumn(i,"政治面貌");
m_list.SetColumnWidth(i++,1);
m_list. 46、InsertColumn(i,"文化程度");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,"婚姻情况");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,"身份证号");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,"办公 ");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,m_list.SetColumnWidth(i++,1);
m_l 47、ist.InsertColumn(i,"到岗日期");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,"职务");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,"备注");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,"家庭住址");
m_list.SetColumnWidth(i++,1);
m_list.InsertColumn(i,"档案所在地");
m_list.SetColumnWidth( 48、i++,1);
m_list.InsertColumn(i,"户所在地”);m_list.SetColumnWidth(i++,1);
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 49、));
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
* 50、)(_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;
CStringbirth=(char
*)(_bstr_t)dataset.GetFields()->Item["Birth"]->Value;
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818