基于C++的企业考勤管理系统的设计代码.docx
- 文档编号:6934023
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:36
- 大小:23.60KB
基于C++的企业考勤管理系统的设计代码.docx
《基于C++的企业考勤管理系统的设计代码.docx》由会员分享,可在线阅读,更多相关《基于C++的企业考勤管理系统的设计代码.docx(36页珍藏版)》请在冰豆网上搜索。
基于C++的企业考勤管理系统的设计代码
题目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_namespacerename("EOF,"adoEOF")
classCADOConnection
{
private:
StaticvoidInitADO();
StaticvoidUnInitADO();
protected:
_ConnectionPtrm_Connection;
public:
BOOLIsOpen();
_ConnectionPtrGetConnection();
CstringGetSQLConstr(CStringIP,CStringDBName);
BOOLOpen(CStringConStr);
CADOConnection();
Virtual~CADOConnection();
};
CADOConnection*GetConnection();
IntConCount=0;
CADOConnectiong_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();
}
VoidCADOConnection:
:
InitADO()
{
If(ConCount++==0)
CoInitialize(NULL);
};
voidCADOConnection:
:
UnInitADO()
{
if(~ConCount==0)
CoUninitialize();
};
BOOLCADOConnection:
:
Open(CStringConStr)
{
if(IsOpen())
m_Connection->Close();
m_Connection->Open((_bstr_t)ConStr,","adModeUnknown);
returnIsOpen();
}
CStringCADOConnection:
:
GetSQLConStr(CStringIP,CStringDBName)
{
CStringStr;
Str.Format("Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=%s;DataSource=%s",DBName,IP);
returnStr;
}
_ConnectionPtrCADOConnection:
:
GetConnection()
{
returnm_Connection:
}
BOOLCADOConnection:
:
IsOpen()
{
longState;
m_Connection->get_State(&State);
if(State==adStateOpen)
returntrue;
returnfalse;
}
classCADODataSet
{
protected:
_RecoedsetPtrm_DataSet;
CADOConnection*m_Connection
public:
voidDelete();
intGetRecordNo();
voidmove(intnIndex);
voidSave();
voidSetFieldValue(CStringFieldName,_variant_tValue);
voidAddNew();
BOOLNext();
FieldsPtrGetFields();
intGetRecordCount();
voidSetConnetion(CADOConnection*pCon);
BOOLOpen(CStringSQLStr);
CADODataSet();
virtual~CADODataSet();
private:
BOOLIsOpen();
};
CADODataSet:
:
CADODataSet()
{
m_DataSet.CreateInstance("ADODB.Recordset");
}
CADODataSet:
:
~CADODataSet()
{
if(IsOpen())
m_DataSet->Close();
m_DataSet=NULL;
m_Connection=NULL;
}
voidCADODataSet:
:
SetConnection(CADOConnection*pCon)
{
m_Connection=pCon;
}
intCADODataSet:
:
GetRecordCount()
{
if(IsOpen())
returnm_DataSet->GetRecordCount();
else
return0;
}
BOOLCADODataSet:
:
Open(CStringSQLStr)
{
if(IsOpen)
m_DataSet->Close();
}
BOOLCADODataSet:
:
IsOpen()
{
longState;
m_DataSet->get_State(&State);
if(State==adStateOpen)
returntrue;
returnfalse;
}
FieldsPtrCADODataSet:
:
GetFields()
{
returnm_DataSet->GetFields();
}
BOOLCADODataSet:
:
Next()
{
if(m_DataSet->adoEOF)
retuenfalse;
m_DataSet->MoveNext();
returntrue;
}
voidCADODataSet:
:
AddNew()
{
m_DataSet->AddNew();
}
voidCADODataSet:
:
SetFieldValue(CStringFieldName,_variant_tValue0)
{
m_DataSet->PutCollect((_bstr_t)FieldName,Value);
}
voidCADODataSet:
:
Save()
{
m_DataSet->Upsate();
}
voidCADODataSet:
:
Move(intnIndex)
{
m_DataSet->MoveFirst();
m_DataSet->Move(nIndex);
}
intCADODataSet:
:
GetRecordNO()
{
returnm_DataSet->AbsolutePositon;
}
voidCADODataSet:
:
Delete()
{
m_DateSet->Delete(adAffectCurent);
}
BOOLCPersonApp:
:
InitInstance()
{
AfxEnableControlContainer();
#ifdef_AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
LoadSkin();
BOOLbCon=GetConnection()->Open(GetConnection()->GetSQLConStr("127.0.0.1","tb_person"));
CLoginDialoglogindlg;
if(logindlg.DoModal()!
=IDOK)
returnfalse;
CPersonDlgdlg;
m_pMainWnd=&dlg;
intnResponse=dlg.DoModal();
if(nResponse==IDOK)
{
}
elseif(nResponse==IDCANCEL)
{
}
returnFALSE;
}
BOOLCLoginDialog:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
m_DataSet.SetConnection(GetConnection());
m_DataSet.Open("Select*FromTab_User");
intcount=m_DataSet.GetRecordCount();
for(inti=0;i { m_UserList.AddString((_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value); m_DataSet.Next(); } m_UserList.SetCurSel(0); returnTRUE; } voidCLoginDialog: : OnLogin() { CStringsql,user,pass; m_UserList.GetWindowText(user); m_passWord.GetWindowText(pass); sql.Format("Select*Fromtab_userWhereUserName='%s'andPassWord='%s'",user,pass); m_DataSet.Open(sql); if(m_DataSet.GetRecordCount()==1) { : : SetUserName(user); this->OnOk(); } else AfxMessageBox; } voidCUserManage: : UpdateGrid() { m_DataSet.Open("Select*Fromtab_User"); m_grid.DeleteAllItems(); for(int=0;i {m_grid.InsertItem(i,(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value); intno=m_DataSet.GetRecordNo(); m_grid.SetItemData(i,no); m_DataSet.Next(); } } BOOLCUserManage: : 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(); returnTRUE; } voidCUserManage: : OnAppend() { CUserEdituseredit; if(useredit.DoModal()==IDOK) { m_DataSet.AddNew(); m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.name); m_DataSet.Save(); UpdateGrid(); } } voidCUserManage: : OnEdit() { CUserEdituseredit; intno=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.DoModal()==IDOK) { m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.name); m_DataSet.Save(); UpdateGrid(); } } voidCUserManage: : OnDelete() { if(MessageBox("是否删除此记录! ","提示", MB_YESNO|MB_ICONWARNING)==IDYES) { intno=m_grid.GetItemData(m_grid.GetSelectionMark()); m_DataSet.move(no-1); m_DataSet.Delete(); m_DataSet.Save(); UpdateGrid(); } } voidCDeptManage: : GetNode(HTREEITEMpNode,intnPid) { HTREEITEMnode; CADODataSetDataSet; DataSet.SetConnection(: : GetConnection()); CStringstr; str.Format("Select*Fromtab_Deptwherepid=%d,nPid"); DataSet.Open(str); intcount=DataSet.GetRecordCount(); intID; _variant_tvalue; for(inti=0;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(); } } voidCDeptManage: : UpdateDept() { m_tree.DeleteAllItems(); GetNode(TVI_ROOT,0); } voidCDeptManage: : GetNode(HTREEITEMpNode,intnPid) { HTREEITEMnode; CADODataSetDataSet; DataSet.SetConnection(: : GetConnection()); CStringstr; str.Format("Select*Fromtab_Deptwherepid=%d",nPid); DataSet.Open(str); intcount=DataSet.GetRecordCount(); intID; _variant_tvalue; for(inti=0;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(); } } voidCDeptManage: : OnAdd() { CDeptEditdeptedit; if(deptedit.DoModal()==IDOK) { HTREEITEMpNode=m_tree.GetSelectedItem(); intpID; if(deptedit.isroot) pID=0; else pID=m_tree.GetItemData(pNode); CADODataSetdataset; dataset.SetConnection(: : GetConnection()); dataset.Open("Selecttop1*Fromtab_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(); } } voidCDeptManage: : OnEdit() { CDeptEditdeptedit; deptedit.visible=false; HTREEITEMpNode=m_tree.GetSelectedItem(); if(pNode==0) return; intpID=m_tree.GetItemData(pNode); CADODataSetdataset; dataset.SetConnection(: : GetConnection()); CStringstr; str.Format("Select*Fromtab_Deptwhereid=%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)deptedit.name); dataset.SetFieldValue("memo",(_variant_t)deptedit.memo); dataset.Save(); UpdateDept(); } } voidCDeptManage: : OnDelete() { HTREEITEMpNode=m_tree.GetSelectedItem(); if(pNode==0) return; if(MessageBox("是否删除此记录! ","提示", MB_YESNO|MB_ICONWARNING)==IDYES) { intpID=m_tree.GetItemData(pNode); CADODataSetdataset; dataset.SetConnection(: : GetConnection()); CStringstr; str.Format("Select*Fromtab_Deptwhereid=%d",pID); dataset.Open(str); dataset.Delete(); dataset.Save(); UpdateDept(); } } voidCPersonManage: : OnSelchangedTreedept(NMHDR*pNMHDR,LRESULT*pResult) { NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR; m_DeptID=m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C+ 企业 考勤 管理 系统 设计 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)