C++课程设计人事管理系统培训资料.docx
《C++课程设计人事管理系统培训资料.docx》由会员分享,可在线阅读,更多相关《C++课程设计人事管理系统培训资料.docx(15页珍藏版)》请在冰豆网上搜索。
![C++课程设计人事管理系统培训资料.docx](https://file1.bdocx.com/fileroot1/2023-1/3/ac521979-0ad9-49bf-b4e2-ad90872d2b8e/ac521979-0ad9-49bf-b4e2-ad90872d2b8e1.gif)
C++课程设计人事管理系统培训资料
C++课程设计人事管理系统
《面向对象编程技术》课程设计实验报告
姓名:
学号:
班级:
指导老师:
日期:
目录:
一.设计任务与要求……………………………………………………….3
1.设计目的……………………………………………………………………3
2.课程设计的要求………………………………………………………..3
二.系统分析……………………………………………………………………3
1.需求分析:
………………………………………………………………3
2.功能分析:
………………………………………………………………3
3.系统功能模块………………………………………………………..3
4.功能的实现……………………………………………………………3
5.模块框架图…………………………………………………………...4
三.系统设计…………………………………………………………………...4
四.问题分析和实验总结………………………………………………..10
课程设计部分源代码…………………………………………………………11
一.设计任务与要求
设计题目:
人事管理系统
1.设计目的:
制作人事管理系统,实现对增加数据记录,删除记录,排序记录,筛选记录数据的要求。
2.课程设计的要求
A.用access创建人事管理数据表,该表记录职工的基本信息,其中包括职工编号,职工姓名,所在部门,职工年龄,工作时间,基本工资,职称和监理等信息。
B.创建新的数据源
C.论述对“MFCAppEizard(exe)”生成的应用程序的框架的认识,理解和开发心得
二.系统分析
1.需求分析:
●可利用该程序实现对员工信息的记录和浏览
●能够对职工信息进行输入、删除、排序、以及筛选等操作;
2.功能分析:
●新增记录:
系统能在原有记录的基础上增加新的记录。
●删除记录:
对数据表中的数据进行删除。
●筛选记录:
根据职工标号对职工进行筛选进行精确查找职工人员。
●排序记录:
对职工信息编号进行从小到大的排序
3.系统功能模块
人事管理系统有:
新增记录、深处记录、排序记录、筛选及浏览记录。
4.功能的实现:
1)“筛选及浏览记录”模块:
在access中建表时,在职工编号栏开启关键词索引功能,筛选时在对话框的编辑框内输入要筛选的职工标号即可进行筛选。
2)“新增记录”模块:
再新建一个对话框创建一个新类,给每个编辑框绑定变量,在人事管理系统view.cpp中添加自拟头文件
3)“数据删除模块”
显示当前的数据内容,点击删除按钮将该职工的所有信息删除。
4)“排序记录”模块
显示当前数据内容,点击排序按钮将当前表中所有员工信息从小到大排序。
5.模块框架图
三、系统设计
人事管理系统.mdb表的初始化结果
1.界面设计
运行时主界面
●增加记录界面
增加信息成功:
●筛选界面
筛选成功:
●排序和删除界面
删除了李英的信息
排序功能:
2、程序设计
通过主窗体调用其他窗体,在调用增加记录时要弹出新的对话框,一边输入要添加的信息。
筛选记录时,要实现在创建access数据库时打开索引功能。
这样再点击筛选记录是只要在新对话框中输入关键词(职工编号)便可。
四、课程设计的问题分析和实验总结
此次的人事管理系统的设计,主要是运用MFC操作,以让程序更加的便于操作和使用,这其中也出现了不少问题,走了很多弯路,比如:
1.创建数据源,用控制面板设置数据源文件时老是出错。
解决方法:
先在access中创建人事管理系统表,然后在控制面板中原则添加指定数据源。
2.在写对话框类成员函数时总出现大小写错误,导致程序编译不能通过。
解决办法:
仔细检查源代码,利用错误提示改正。
3.在编写子对话框成员函数时,编译老提示该类未申明。
解决办法:
原因是未在view.cpp文件中添加对应的类头文件,所以在对应位置添加头文件。
4.在添加函数中,发现实验指导的步骤结果增加记录函数运行结果不能正常添加记录。
解决办法:
点击增加函数时,应该弹出输入信息对话框,以便新增职工信息,新增完毕后,点击确定完成添加操作。
上网查阅资料后,完善了增加函数代码,并新增了一个对话框和对应类CDlgAdd,使其能完成其指定功能。
本程序部分源代码:
//人事管理系统View.cpp:
implementationoftheCMyViewclass
//
#include"stdafx.h"
#include"人事管理系统.h"
#include"DlgQuery.h"
#include"DlgAdd.h"
#include"人事管理系统Set.h"
#include"人事管理系统Doc.h"
#include"人事管理系统View.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CMyView
IMPLEMENT_DYNCREATE(CMyView,CRecordView)
BEGIN_MESSAGE_MAP(CMyView,CRecordView)
//{{AFX_MSG_MAP(CMyView)
ON_BN_CLICKED(IDC_BUTTON_ADD,OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_DEL,OnButtonDel)
ON_BN_CLICKED(IDC_BUTTON_FILTER,OnButtonFilter)
ON_BN_CLICKED(IDC_BUTTON_SORT,OnButtonSort)
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_COMMAND(ID_FILE_PRINT,CRecordView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CRecordView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CRecordView:
:
OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CMyViewconstruction/destruction
CMyView:
:
CMyView()
:
CRecordView(CMyView:
:
IDD)
{
//{{AFX_DATA_INIT(CMyView)
m_pSet=NULL;
m_gzsj=0;
//}}AFX_DATA_INIT
//TODO:
addconstructioncodehere
}
CMyView:
:
~CMyView()
{
}
voidCMyView:
:
DoDataExchange(CDataExchange*pDX)
{
CRecordView:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyView)
DDX_FieldText(pDX,IDC_EDIT_JBGZ,m_pSet->m_jbgz,m_pSet);
DDX_FieldText(pDX,IDC_EDIT_JL,m_pSet->m_jl,m_pSet);
DDX_FieldText(pDX,IDC_EDIT_SZBM,m_pSet->m_szbm,m_pSet);
DDX_FieldText(pDX,IDC_EDIT_ZC,m_pSet->m_zc,m_pSet);
DDX_FieldText(pDX,IDC_EDIT_ZGBH,m_pSet->m_zgbh,m_pSet);
DDX_FieldText(pDX,IDC_EDIT_ZGNL,m_pSet->m_zgnl,m_pSet);
DDX_FieldText(pDX,IDC_EDIT_ZGXB,m_pSet->m_zgxb,m_pSet);
DDX_FieldText(pDX,IDC_EDIT_ZGXM,m_pSet->m_zgxm,m_pSet);
DDX_DateTimeCtrl(pDX,IDC_DATETIMEPICKER_GZSJ,m_pSet->m_gzsj);
//}}AFX_DATA_MAP
}
BOOLCMyView:
:
PreCreateWindow(CREATESTRUCT&cs)
{
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCRecordView:
:
PreCreateWindow(cs);
}
voidCMyView:
:
OnInitialUpdate()
{
m_pSet=&GetDocument()->m_mySet;
CRecordView:
:
OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
/////////////////////////////////////////////////////////////////////////////
//CMyViewprinting
BOOLCMyView:
:
OnPreparePrinting(CPrintInfo*pInfo)
{
//defaultpreparation
returnDoPreparePrinting(pInfo);
}
voidCMyView:
:
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addextrainitializationbeforeprinting
}
voidCMyView:
:
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addcleanupafterprinting
}
/////////////////////////////////////////////////////////////////////////////
//CMyViewdiagnostics
#ifdef_DEBUG
voidCMyView:
:
AssertValid()const
{
CRecordView:
:
AssertValid();
}
voidCMyView:
:
Dump(CDumpContext&dc)const
{
CRecordView:
:
Dump(dc);
}
CMyDoc*CMyView:
:
GetDocument()//non-debugversionisinline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
return(CMyDoc*)m_pDocument;
}
#endif//_DEBUG
/////////////////////////////////////////////////////////////////////////////
//CMyViewdatabasesupport
CRecordset*CMyView:
:
OnGetRecordset()
{
returnm_pSet;
}
/////////////////////////////////////////////////////////////////////////////
//CMyViewmessagehandlers
voidCMyView:
:
OnButtonAdd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
/*m_pSet->AddNew();
m_pSet->Update();//更新记录集
m_pSet->Requery();//重新提取数据
m_pSet->MoveLast();//移动下一条记录
UpdateData(FALSE);//更新视图*/
try
{
CDlgAddDlgAdd;
if(DlgAdd.DoModal()==IDOK)//"模式窗口方式打开,结束前不能操纵父窗口"
{
m_pSet->AddNew();
m_pSet->m_zgbh=DlgAdd.m_zgbh;
m_pSet->m_zgxm=DlgAdd.m_zgxm;
m_pSet->m_zgnl=DlgAdd.m_zgnl;
m_pSet->m_zgxb=DlgAdd.m_zgxb;
m_pSet->m_zc=DlgAdd.m_zc;
m_pSet->m_szbm=DlgAdd.m_szbm;
m_pSet->m_jbgz=DlgAdd.m_jbgz;
m_pSet->m_gzsj=DlgAdd.m_gzsj;
m_pSet->m_jl=DlgAdd.m_jl;
m_pSet->Update();//更新记录集
m_pSet->Requery();//重新提取记录集
m_pSet->MoveLast();//移动下一条记录
UpdateData(FALSE);//更新视图
}
}
catch(CDBException*e)
{
MessageBox(e->m_strError);//对于异常信息的处理,这里是简单的输出错误的信息
}
}
voidCMyView:
:
OnButtonDel()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->Delete();
m_pSet->MoveNext();
if(m_pSet->IsEOF())
m_pSet->MoveLast();
if(m_pSet->IsBOF())
m_pSet->SetFieldNull(NULL);
UpdateData(FALSE);
}
voidCMyView:
:
OnButtonFilter()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CDlgQueryDlgquery;
CStringvalue;
if(Dlgquery.DoModal()==IDOK)//"模式窗口方式打开,结束前不能操纵父窗口"
{
value="职工编号=+"+Dlgquery.m_query+"";
m_pSet->m_strFilter=value;
m_pSet->Requery();
UpdateData(FALSE);
}
}
voidCMyView:
:
OnButtonSort()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->m_strSort="职工编号";
m_pSet->Requery();
UpdateData(FALSE);
}