1、基于C+的企业考勤管理系统的设计代码题目12 “公司员工考勤管理系统设计1、问题描述某公司需要存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。其中,雇员分为经理、技术人员、销售人员和销售经理。定义一个将小时换成天数的类。转换规则:8小时转换为一天,12小时转换为1.5天.可进行天数的加、减.定义一个记录员工生病、休假时间的类。其中包括:员工生病没工作的天数、生病可以不工作的最多天数、员工已经带薪休假的天数、员工可以带薪休假的天数。公司规定带薪休假不能超过24小时。生病可以不工作的最多不能超过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,CStrin
5、g DBName);BOOL Open(CString ConStr);CADOConnection();VirtualCADOConnection();CADOConnection*GetConnection();Int ConCount = 0;CADOConnection g_Connection;CADOConnection*GetConnection()Return g_Connection;CADOConnection::CADOConnection()InitADO();m_Connection.CreateInstance(ADODB.Connection”);CADOConn
6、ection: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_Conn
7、ection-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 CADOConnectio
8、n::GetConnection()return m_Connection:BOOL CADOConnection:IsOpen()long State;m_Connectionget_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 Sa
9、ve();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。CreateInstan
10、ce(”ADODB。Recordset”);CADODataSet:CADODataSet()if(IsOpen()m_DataSetClose();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(C
11、String 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
12、 true;void CADODataSet:AddNew()m_DataSet-AddNew();void CADODataSet::SetFieldValue(CString FieldName,_variant_t Value0)m_DataSetPutCollect((_bstr_t)FieldName,Value);void CADODataSet:Save()m_DataSet-Upsate();void CADODataSet:Move(int nIndex)m_DataSet-MoveFirst();m_DataSet-Move(nIndex);int CADODataSet:
13、:GetRecordNO()return m_DataSetAbsolutePositon;void CADODataSet:Delete()m_DateSet-Delete(adAffectCurent);BOOL CPersonApp::InitInstance()AfxEnableControlContainer();#ifdef_AFXDLLEnable3dControls();#elseEnable3dControlsStatic(); #endifLoadSkin();BOOLbCon= GetConnection()Open(GetConnection()-GetSQLConSt
14、r(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(GetC
15、onnection());m_DataSet.Open(”Select From Tab_User”);int count = m_DataSet。GetRecordCount();for(int i = 0;i ItemLUserNameValue);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。Forma
16、t(Select From tab_user Where UserName = s and PassWord = s,user,pass);m_DataSet.Open(sql);if(m_DataSet.GetRecordCount() = 1):SetUserName(user);thisOnOk(); elseAfxMessageBox;void CUserManage:UpdateGrid() m_DataSet。Open(”Select * From tab_User”); m_grid.DeleteAllItems(); for(int = 0;i Item L”UserName”
17、-Value); int no = m_DataSet。GetRecordNo(); m_grid。SetItemData(i,no); m_DataSet.Next(); BOOL CUserManage::OnInitDialog() CDialog:OnInitDialog(); m_grid。SetExtendedStyle(LVS_EX_FULLROWSELECTLVS_EX_GRIDLINES); m_grid。InsertColumn(0,”用户名”); m_grid.SetColumnWidth(0,150); m_DataSet。SetConnection(:GetConne
18、ction()); UpdateGrid(); return TRUE; void CUserManage:OnAppend() CUserEdit useredit; if (useredit。DoModal() = 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。GetItemDat
19、a(m_grid.GetSelectionMark()); m_DataSet.move(no1); useredit.name = (char *)(_bstr_t)m_DataSet。GetFields()-ItemLUserName-Value; if (useredit.DoModal() = IDOK) m_DataSet.SetFieldValue(”UserName,(_bstr_t)useredit。name); m_DataSet.Save(); UpdateGrid(); void CUserManage:OnDelete() if (MessageBox(”是否删除此记录
20、!,提示”, MB_YESNOMB_ICONWARNING) = IDYES) int no = m_grid。GetItemData(m_grid.GetSelectionMark()); m_DataSet。move(no1); m_DataSet。Delete(); m_DataSet.Save(); UpdateGrid(); void CDeptManage::GetNode(HTREEITEM pNode,int nPid)HTREEITEM node;CADODataSet DataSet;DataSet。SetConnection(::GetConnection();CStri
21、ng 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()-ItemDeptNameValue,pNode);value = (_vaiant_t)DataSet。GetFields()ItemID-Value;ID =
22、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
23、(”Select * From tab_Dept where pid = %d”,nPid); DataSet.Open(str); int count = DataSet.GetRecordCount(); int ID; _variant_t value; for (int i = 0;icount;i+) node = m_tree.InsertItem((_bstr_t)DataSet。GetFields()-ItemDeptName”-Value,pNode); value = (_variant_t)DataSet.GetFields()Item”IDValue; ID = val
24、ue.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
25、。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(PID,(long)pID); dataset.Save(); UpdateDept(); void CDeptManage::OnEdi
26、t() 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
27、); deptedit。name = (char )(_bstr_t)dataset。GetFields()-ItemLDeptName”-Value; deptedit。memo = (char *)(_bstr_t)dataset。GetFields()-Item”memo”-Value; if (deptedit。DoModal() = IDOK) dataset.SetFieldValue(”DeptName”,(_variant_t)deptedit。name); dataset.SetFieldValue(memo”,(_variant_t)deptedit.memo); data
28、set.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 =