版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目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)完成类中各个成员函数的定义;(6)
4、完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。#import"msado15.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(CStri
5、ng IP,CString 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("ADOD
6、B.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(
7、)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
8、",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 CADODataSetprotected:_RecoedsetPtr m_DataSet;CADOConnection *m_Connectionp
9、ublic: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();pr
10、ivate: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
11、(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-&
12、gt;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()
13、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();#ifde
14、f_AFXDLLEnable3dControls();#elseEnable3dControlsStatic(); #endifLoadSkin();BOOLbCon=GetConnection()->Open(GetConnection()->GetSQLConStr("","tb_person");CLoginDialog logindlg;if(logindlg.DoModal()! = IDOK)return false;CPersonDlg dlg;m_pMainWnd =& dlg;int nRespon
15、se = 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_U
16、serList.AddString(_bstr_t)m_DataSet.GetFields()->ItemL"UserName"->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 U
17、serName = '%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 <
18、; m_DataSet.GetRecordCount();i+) m_grid.InsertItem(i,(_bstr_t)m_DataSet.GetFields()->ItemL"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
19、|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",(_bst
20、r_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()->ItemL"UserName"->Value;if (useredit.DoModal() = IDOK)m_Data
21、Set.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
22、_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;_vari
23、ant_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 = Val;m_tree.SetItemData(node,ID);GetNode(node,ID);DataSet.Next();void CDept
24、Manage: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 = Data
25、Set.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 = Val;m_tree.SetItemData(node,ID);GetNode(
26、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 to
27、p 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 deptedi
28、t;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); = (ch
29、ar *)(_bstr_t)dataset.GetFields()->ItemL"DeptName"->Value;deptedit.memo = (char *)(_bstr_t)dataset.GetFields()->Item"memo"->Value;if (deptedit.DoModal() = IDOK)dataset.SetFieldValue("DeptName",(_variant_t));dataset.SetFieldValue("memo"
30、,(_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.SetC
31、onnection(: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 =
32、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("Sele
33、ct * 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()->
34、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.
35、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.Ge
36、tFields()->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)DataSe
37、t.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.GetFi
38、elds()->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()->
39、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.SetCol
40、umnWidth(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.Ins
41、ertColumn(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,"办公
42、电话");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.SetColu
43、mnWidth(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);UpdatePer
44、son();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.Set
45、ColumnWidth(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_li
46、st.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,&q
47、uot;到岗日期");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.
48、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.GetSelecti
49、onMark();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_n
50、ame = (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
51、*)(_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&qu
52、ot;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.GetField
53、s()->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
54、"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 =
55、(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 *)(
56、_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)
57、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_marital);dataset.SetFieldValue("Id_Card",(_bstr_t)personedit.m_card);dataset.Set
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室外监控安装服务合同
- 下列各项中关于合同
- 贵州省地理学考试及答案
- 拆农村房子合同协议
- 生产质量协议书范本
- 推土机修路合同范本
- 物业交费旅游协议书
- 捷途沙特签约协议书
- 无碘盐供应合同范本
- 授权活动招商协议书
- 检验检测管理办法
- 20以内的加法口算练习题5000题每页100题
- 《三借芭蕉扇》课件
- 国网公司薪酬与管理制度
- 文物古建筑单位消防课件
- 心电监护操作常见并发症预防及处理
- 观赏之礼班会课件
- 国家级高技能人才培训基地建设项目实施方案实施计划书
- 《电子技能与实训》校本教材
- 2025年江苏省公安机关公务员录用考试模拟试卷
- DB31∕T 1553-2025 城市轨道交通设施设备日常维护与大修更新改造技术要求
评论
0/150
提交评论