基于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