《面向对象的编程技术》课程设计实验报告Word格式.docx
《《面向对象的编程技术》课程设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《《面向对象的编程技术》课程设计实验报告Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
三、系统设计4
四、总结8
源代码9
1.设计任务与要求
设计题目:
人事管理系统
1、设计目的:
制作人事管理系统,实现对增加数据记录,删除记录,排序记录,筛选记录数据的的要求。
2、课程设计的要求:
A.用ACCESS创建人事管理数据表,该表记录职工的基本信息,其中包含职工编号、职工姓名、职工性别、所在部门、职工年龄、工作日期、基本工资、职称和简历等信息。
B.创建新的数据源
B.论述你对“MFCAppWizard(exe)”生成的应用程序的框架的认识、理解和开发新的。
二、系统分析
●可利用该程序实现对员工信息的记录与浏览
●能够对职工信息进行输入、删除、排序以及筛选等操作;
●新增记录:
系统能在原有记录的基础上增加新的纪录
●删除记录:
对数据表中的信息进行删除。
●筛选记录:
根据职工标号对职工进行筛选精确查找职工人员。
●排序记录:
对职工信息进行排序
3.系统功能模块
人事管理系统有:
新增记录、删除记录、排序记录、筛选及浏览记录。
1.“筛选及浏览记录”模块:
在access中建表时,在职工编号栏开启关键词索引功能,筛选时在话框的编辑框内输入要筛选的职工标号即可进行筛选。
2.“新增记录”模块:
在新建一个对话框创建一个新类,给每个编辑框绑定变量,在人事管理系统View.cpp中增添自拟文件头
3.“数据删除”模块:
显示当前的数据内容,点击删除按钮将该职工的所有信息删除。
6.模块框架图
三、系统设计
1、界面设计
运行时主界面
增加记录界面
筛选界面
2、程序设计
通过主窗体调用其他窗体,在调用增加记录是要弹出新的对话框,以便输入要添加的信息。
筛选记录时,要实现在创建ACCESS数据库时打开索引功能。
这样再点击筛选记录是只要在新对话框中输入关键词(职工编号)便可。
四、总结
此次的人事管理系统的设计,主要是运用的MFC操作,以让程序更加的便于操作,使用!
通过此次设计我最大的收获是直观的看见了程序设计的作用领域,为我以后的学习有添加了兴趣。
其次也让我初步了解了MFC程序的结构,最后在设计中,通过解决“日期/时间字段”问题,初步理解其的不同(其实在第三次设计时便运用老师给的第一种方法解决利日期/时间字段问题,但在后面的设计中不知又在哪错了一步,导致无法插入函数,输入数据。
所以又重新设计时便将其改为文本形式了,以避免后面的错误!
)
一、参考资料
源代码:
//人事管理系统View.cpp:
implementationoftheCMyViewclass
//
#include"
stdafx.h"
人事管理系统.h"
DlgQuery.h"
//因后面要用到对话框IDD_DIALOG1(CDlgQuery类)来输入筛选条件
DlgAdd.h"
人事管理系统Set.h"
人事管理系统Doc.h"
人事管理系统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:
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;
//}}AFX_DATA_INIT
//TODO:
addconstructioncodehere
}
~CMyView()
voidCMyView:
DoDataExchange(CDataExchange*pDX)
CRecordView:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyView)
DDX_FieldText(pDX,IDC_EDIT_GZSJ,m_pSet->
m_gzsj,m_pSet);
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);
//}}AFX_DATA_MAP
BOOLCMyView:
PreCreateWindow(CREATESTRUCT&
cs)
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCRecordView:
PreCreateWindow(cs);
OnInitialUpdate()
m_pSet=&
GetDocument()->
m_mySet;
OnInitialUpdate();
GetParentFrame()->
RecalcLayout();
ResizeParentToFit();
/////////////////////////////////////////////////////////////////
//CMyViewprinting
OnPreparePrinting(CPrintInfo*pInfo)
//defaultpreparation
returnDoPreparePrinting(pInfo);
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addextrainitializationbeforeprinting
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addcleanupafterprinting
///////////////////////////////////////////////////////////////
//CMyViewdiagnostics
AssertValid()const
AssertValid();
Dump(CDumpContext&
dc)const
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
OnButtonAdd()
Addyourcontrolnotificationhandlercodehere
//m_pSet->
AddNew();
Update();
//更新记录集
Requery();
//重新提取数据
MoveLast();
//移动下一条记录
//UpdateData(FALSE);
//更新视图
try
{
DlgAddCDlgAdd;
if(CDlgAdd.DoModal()==IDOK)//"
模式窗口方式打开,结束前不能操纵父窗口"
{
m_pSet->
m_zgbh=CDlgAdd.m_zgbh;
m_zgxm=CDlgAdd.m_zgxm;
m_zgnl=CDlgAdd.m_zgnl;
m_zgxb=CDlgAdd.m_zgxb;
m_zc=CDlgAdd.m_zc;
m_szbm=CDlgAdd.m_szbm;
m_jbgz=CDlgAdd.m_jbgz;
m_gzsj=CDlgAdd.m_gzsj;
m_jl=CDlgAdd.m_jl;
//更新记录集
//重新提取数据
UpdateData(FALSE);
}
catch(CDBException*e)
MessageBox(e->
m_strError);
//对于异常信息的处理,这里是简单输出错误的信息
OnButtonDel()
Delete();
MoveNext();
if(m_pSet->
IsEOF())
m_pSet->
IsBOF())
SetFieldNull(NULL);
OnButtonFilter()
CDlgQueryDlgquery;
CStringvalue;
if(Dlgquery.DoModal()==IDOK)//"
value="
职工编号=+"
+Dlgquery.m_query+"
"
;
m_strFilter=value;
UpdateData(FALSE);
MessageBox(e->
OnButtonSort()
m_strSort="
职工编号"