1、面向对象编程技术课程设计试验汇报姓名: 学号:班级:指导老师:日期:目录:一 设计任务和要求.31. 设计目标32. 课程设计要求.3二 系统分析31. 需求分析:32. 功效分析:33. 系统功效模块.34. 功效实现35. 模块框架图.4三 系统设计.4四 问题分析和试验总结.10课程设计部分源代码11 一 设计任务和要求设计题目:人事管理系统1.设计目标:制作人事管理系统,实现对增加数据统计,删除统计,排序统计,筛选统计数据要求。2.课程设计要求A用access创建人事管理数据表,该表统计职员基础信息,其中包含职员编号,职员姓名,所在部门,职员年纪,工作时间,基础工资,职称和监理等信息。
2、B.创建新数据源C.叙述对“MFC AppEizard(exe)”生成应用程序框架认识,了解和开发心得二系统分析1.需求分析:l 可利用该程序实现对职员信息统计和浏览l 能够对职员信息进行输入、删除、排序、和筛选等操作;2.功效分析:l 新增统计:系统能在原有统计基础上增加新统计。l 删除统计:对数据表中数据进行删除。l 筛选统计:依据职员标号对职员进行筛选进行正确查找职员人员。l 排序统计:对职员信息编号进行从小到大排序3.系统功效模块人事管理系统有:新增统计、深处统计、排序统计、筛选及浏览统计。4.功效实现:1) “筛选及浏览统计”模块:在access中建表时,在职员编号栏开启关键词索引功
3、效,筛选时在对话框编辑框内输入要筛选职员标号即可进行筛选。2) “新增统计”模块:再新建一个对话框创建一个新类,给每个编辑框绑定变量,在人事管理系统view.cpp中添加自拟头文件3) “数据删除模块”显示目前数据内容,点击删除按钮将该职员全部信息删除。4) “排序统计”模块显示目前数据内容,点击排序按钮将目前表中全部职员信息从小到大排序。5.模块框架图人事管理系统该职员信息消失排序统计排序数据显示目前编号最小职员信息删除数据删除统计保留职员信息填写信息增加统计筛选统计输入编号显示职员信息三、系统设计人事管理系统.mdb表初始化结果 1.界面设计运行时主界面l 增加统计界面增加信息成功:l 筛
4、选界面筛选成功:l 排序和删除界面删除了李英信息排序功效:2、程序设计经过主窗体调用其它窗体,在调用增加统计时要弹出新对话框,一边输入要添加信息。筛选统计时,要实现在创建access数据库时打开索引功效。这么再点击筛选统计是只要在新对话框中输入关键词(职员编号)便可。四、课程设计问题分析和试验总结此次人事管理系统设计,关键是利用MFC操作,以让程序愈加便于操作和使用,这其中也出现了不少问题,走了很多弯路,比如:1. 创建数据源,用控制面板设置数据源文件时老是犯错。处理方法:先在access中创建人事管理系统表,然后在控制面板中标准添加指定数据源。2. 在写对话框类组员函数时总出现大小写错误,造
5、成程序编译不能经过。处理措施:仔细检验源代码,利用错误提醒更正。3. 在编写子对话框组员函数时,编译老提醒该类未申明。处理措施:原因是未在view.cpp文件中添加对应类头文件,所以在对应位置添加头文件。4. 在添加函数中,发觉试验指导步骤结果增加统计函数运行结果不能正常添加统计。处理措施:点击增加函数时,应该弹出输入信息对话框,方便新增职员信息,新增完成后,点击确定完成添加操作。上网查阅资料后,完善了增加函数代码,并新增了一个对话框和对应类CDlgAdd,使其能完成其指定功效。本程序部分源代码:/ 人事管理系统View.cpp : implementation of the CMyView
6、class/#include stdafx.h#include 人事管理系统.h#include DlgQuery.h#include DlgAdd.h#include 人事管理系统Set.h#include 人事管理系统Doc.h#include 人事管理系统View.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyViewIMPLEMENT_DYNCREATE(CMyView, CRecordView)BEGIN_MESSAGE_MAP(CMyView,
7、 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/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CRecordView:OnFilePrint)
8、ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView:OnFilePrintPreview)END_MESSAGE_MAP()/ CMyView construction/destructionCMyView:CMyView(): CRecordView(CMyView:IDD)/AFX_DATA_INIT(CMyView)m_pSet = NULL;m_gzsj = 0;/AFX_DATA_INIT/ TODO: add constructi
9、on code hereCMyView:CMyView()void CMyView: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
10、_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,
11、IDC_DATETIMEPICKER_GZSJ, m_pSet-m_gzsj);/AFX_DATA_MAPBOOL CMyView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CRecordView:PreCreateWindow(cs);void CMyView:OnInitialUpdate()m_pSet = &GetDocument()-m_mySet;CRecordView:OnInitia
12、lUpdate();GetParentFrame()-RecalcLayout();ResizeParentToFit();/ CMyView printingBOOL CMyView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMyView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid
13、CMyView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CMyView diagnostics#ifdef _DEBUGvoid CMyView:AssertValid() constCRecordView:AssertValid();void CMyView:Dump(CDumpContext& dc) constCRecordView:Dump(dc);CMyDoc* CMyView:GetDocument() / non-debug version is i
14、nlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMyDoc);return (CMyDoc*)m_pDocument;#endif /_DEBUG/ CMyView database supportCRecordset* CMyView:OnGetRecordset()return m_pSet;/ CMyView message handlersvoid CMyView:OnButtonAdd() / TODO: Add your control notification handler code here/*m_pSet-AddNew();m
15、_pSet-Update();/更新统计集m_pSet-Requery();/重新提取数据m_pSet-MoveLast();/移动下一条统计UpdateData(FALSE);/更新视图*/tryCDlgAdd DlgAdd;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=D
16、lgAdd.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);/对于异常信息处理,这里是简单输犯错误信息void CMyView:OnB
17、uttonDel() / TODO: Add your control notification handler code herem_pSet-Delete();m_pSet-MoveNext();if(m_pSet-IsEOF()m_pSet-MoveLast();if(m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);void CMyView:OnButtonFilter() / TODO: Add your control notification handler code hereCDlgQuery Dlgquery;CString value;if(Dlgquery.DoModal()=IDOK)/模式窗口方法打开,结束前不能操纵父窗口value=职员编号=+Dlgquery.m_query+;m_pSet-m_strFilter=value;m_pSet-Requery();UpdateData(FALSE);void CMyView:OnButtonSort() / TODO: Add your control notification handler code herem_pSet-m_strSort=职员编号;m_pSet-Requery();UpdateData(FALSE);
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100