1、题目12“企业员工考勤管理系统设计”1、问题描述某企业需要存储雇员 编号、姓名、性别、所在部门,级别,并进行工资 计算。其中,雇员分为经理、技术人员、销售人员和销售经理。定义一种将小时换整天数 类。转换规则:8小时转换为一天,12小时转换为1.5天。可进行天数加、减。定义一种统计员工生病、休假时间类。其中涉及:员工生病没工作天数、生病能够不工作最多天数、员工已经带薪休假 天数、员工能够带薪休假 天数。企业要求带薪休假不能超出二十四小时。生病能够不工作 最多不能超出16小时。设计一程序能够对企业人员 休假情况进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件 输入/输出等内容。2、功能要求
2、1) 添加功能:程序能够任意添加上述四类人员 统计,可提供选择界面供顾客选择所要添加人员类别,要求员工 编号要唯一,假如添加了反复编号 统计时,则提醒数据添加反复并取消添加。还能够添加带薪休假和生病休假 统计,每条统计中必须涉及员工编号和姓名。(2) 查询功能:可根据编号、姓名等信息对已添加 员工信息和休假信息进行查询,假如未找到,给出相应 提醒信息,假如找到,则显示相应 统计信息;(3) 显示功能:可显示目前系统中全部统计,每条统计占据一行。(4) 编辑功能:可根据查询成果对相应 统计进行修改,修改时注意编号 唯一性。(5) 删除功能:主要实现对已添加 人员统计和休假统计进行删除。假如目前
3、系统中没有相应人员统计,则提醒“统计为空!”并返回操作。(6) 统计功能:能根据多种参数进行人员 统计。例如,统计四类人员数量以及总数,统计任一员工休假天数等信息。(7) 保存功能:可将目前系统中各类人员统计和休假统计存入文件中,存入方式任意。(8) 读取功能:可将保存在文件中 信息读入到目前系统中,供顾客进行使用。3、问题处理方案根据系统功能要求,能够将问题处理分为如下环节:(1) 应用系统分析,建立该系统 功能模块框图以及界面 组织和设计;(2) 分析系统中 各个实体及它们之间 关系;(3) 根据问题描述,设计系统 类层次;(4) 完毕类层次中各个类 描述;(5) 完毕类中各个组员函数定义
4、6) 完毕系统应用模块;(7) 功能调试;(8) 完毕系统总结报告。#importmsado15.dll no_namespace rename(EOF,adoEOF)class CADOConnectionprivate:Static void InitADO();Static void UnInitADO();protected:_ConnectionPtr m_Connection;public:BOOL IsOpen();_ConnectionPtr GetConnection();Cstring GetSQLConstr(CString IP,CString DBName);BO
5、OL 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:
6、 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-
7、Open(_bstr_t)ConStr,adModeUnknown);return IsOpen();CString CADOConnection:GetSQLConStr(CString IP,CString 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:GetConnec
8、tion()return m_Connection:BOOL CADOConnection:IsOpen()long State;m_Connection-get_State(&State);if(State = adStateOpen)return true;return false;class CADODataSetprotected:_RecoedsetPtr m_DataSet;CADOConnection *m_Connectionpublic:void Delete();int GetRecordNo();void move(int nIndex);void Save();void
9、 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(ADO
10、DB.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
11、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;vo
12、id 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:GetRecord
13、NO()return m_DataSet-AbsolutePositon;void CADODataSet:Delete()m_DateSet-Delete(adAffectCurent);BOOL CPersonApp:InitInstance()AfxEnableControlContainer();#ifdef一AFXDLLEnable3dControls();#elseEnable3dControlsStatic();#endifLoadSkin();BOOLbCon=,tb_person);CLoginDialog logindlg;if(logindlg.DoModal()! =
14、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.Ge
15、tRecordCount();for(int i = 0;i ItemLUserName-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_Dat
16、aSet.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 ItemLUserName-Value);int no = m_DataSet.GetRecordNo();m_grid.SetItemData(i,no);m_DataSet.Next();B
17、OOL CUserManage:OnInitDialog()CDialog:OnInitDialog();m_grid.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_grid.InsertColumn (顾客名);m_grid.SetColumnWidth(0,150);m_DataSet.SetConnection(:GetConnection();UpdateGrid();return TRUE;void CUserManage:OnAppend()CUserEdit useredit;if (useredit.DoMo
18、dal() = IDOK)m_DataSet.AddNew();m_DataSet.SetFieldValue(UserName,(_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()-ItemLUserN
19、ame-Value;if (useredit.DoModal() = 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_DataSet.De
20、lete();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 = DataSet.GetRecordCount();int ID;_variant_t
21、 value;for(int i = 0;i ItemDeptName-Value,pNode);value = (_vaiant_t)DataSet.GetFields()-ItemID-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 nPi
22、d)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;iItemDeptName-Value,pNode);value = (_variant_t)DataSet.GetField
23、s()-ItemID-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 datas
24、et;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();UpdateDept();void CDeptManage:OnEd
25、it()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);deptedit.n
26、ame = (char *)(_bstr_t)dataset.GetFields()-ItemLDeptName-Value;deptedit.memo = (char *)(_bstr_t)dataset.GetFields()-Itemmemo-Value;if (deptedit.DoModal() = IDOK)dataset.SetFieldValue(DeptName,(_variant_t)deptedit.name);dataset.SetFieldValue(memo,(_variant_t)deptedit.memo);dataset.Save();UpdateDept()
27、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
28、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
29、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;_
30、variant_t value;for(int i = 0;iItemEmp_Id-Value);value = DataSet.GetFields()-ItemAutoID-Value;m_list.SetItemData(n,value,lVal);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemEmp_NAME-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemSex-Value);m_list.SetItemText(n,ind
31、ex+,(_bstr_t)DataSet.GetFields()-ItemNationality-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemBirth-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-Item叩olitical_Party-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemCulture_Level-Value);m_li
32、st.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemMarital_Condition-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemId_Card-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemOffice_phone-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-Item
33、Mobile-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemHireDate-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemDuty-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemMemo-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemFi
34、les_Keep_Org-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemHukou-Value);m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemFamily_Place-Value);n +;DataSet.Next();BOOL CPersonManage:OnInitDialog()CDialog:OnInitDialog();m_DeptID = -1;UpdateDept();int i = 0;m_list.Insert
35、Column 人,员编号);m_list.SetColumnWidth(i+,80);m_list.InsertColumn 人员名称);m_list.SetColumnWidth(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.SetColumnWi
36、dth(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.InsertColumn(i, );m_list.SetColumnWidth(i+,1);m_list.InsertColumn到岗日期
37、);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.InsertColumn 档案所在地);m_list.SetColumnWidth(i+,1);m_list.InsertColumnH, 所在地);m_list.SetColumnWidth(i+,1);m_
38、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+,1);m_list
39、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.InsertColumn(i,文化程度);m_list.SetColumnWidth(i+,1);m_list.InsertColumn(i,婚姻情况
40、);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_list.InsertColumn(i,职务);m_list.SetColumnWidth(i+,1)
41、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_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);UpdatePerson
42、);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
43、Open(str);personedit.m_id=(char*)(_bstr_t)dataset.GetFields()-ItemEmp_Id-Value;personedit.m_name=(char*)(_bstr_t)dataset.GetFields()-ItemEmp_NAME-Value;personedit.m_sex=(char*)(_bstr_t)dataset.GetFields()-ItemSex-Value;personedit.m_nationality=(char*)(_bstr_t)dataset.GetFields()-ItemNationality-Value;CStringbirth=(char*)(_bstr_t)dataset.GetFields()-ItemBirth-Value;