C++课程设计报告.docx

上传人:b****7 文档编号:8787182 上传时间:2023-02-01 格式:DOCX 页数:31 大小:839.37KB
下载 相关 举报
C++课程设计报告.docx_第1页
第1页 / 共31页
C++课程设计报告.docx_第2页
第2页 / 共31页
C++课程设计报告.docx_第3页
第3页 / 共31页
C++课程设计报告.docx_第4页
第4页 / 共31页
C++课程设计报告.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C++课程设计报告.docx

《C++课程设计报告.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告.docx(31页珍藏版)》请在冰豆网上搜索。

C++课程设计报告.docx

C++课程设计报告

青岛理工大学

C++面向对象课程设计报告

 

院(系)计算机工程学院

专业:

_计算机科学与技术

学生姓名:

__

班级:

___学号:

_

题目:

___人事管理系统_

起迄日期:

_12月20号—12月31号

设计地点:

_2#401室

指导教师:

_

 

完成日期:

2010年12月31日

目录

一、需求分析2

二、设计内容2

1、程序的主要功能模块:

2

2、主要模块的流程图6

(1)添加记录:

6

(2)修改记录:

6

(3)删除记录:

7

(4)查询记录:

7

(5)排序:

8

(6)统计人数:

8

3、数据库的建立及设计步骤:

9

【1】建立数据库及连接步骤9

【2】程序主要代码:

14

(1)添加记录14

(2)修改记录14

(3)删除记录15

(4)查询记录15

(5)排序15

(6)统计人数15

(7)初始化界面16

三、调试分析16

1.实际完成的情况说明:

16

2.程序的性能分析:

16

3.上机过程中出现的问题及其解决方案:

16

4.程序中可以改进的地方说明:

17

5.程序中可以扩充的功能及设计实现构想:

17

四、用户手册17

1建立数据库17

2登录界面:

17

3选择功能:

17

五、设计总结21

六、参考文献22

七、附录22

一、需求分析

1、开发这个系统的目的就是帮助企业的人力资源部门提高工作效率,实现企业人事信息管理的系统化,规范化和自动话。

在C++面向对象思想的指导下,用数据库系统设计方法对公司人事系统进行设计,使公司管理人员能够更容易、更方便的用计算机进行对人事的管理。

2、能够实现以下功能:

显示第一条记录,下一条记录,上一条记录,最后一条记录,添加记录,修改记录,删除记录,查询记录,排序和统计人数等功能。

二、设计内容

1、程序的主要功能模块:

 

(1)CAboutDlg类//系统自动定义生成

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

enum{IDD=IDD_ABOUTBOX};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

protected:

DECLARE_MESSAGE_MAP()

};

(2)CMainFrame类//系统自动定义生成

classCMainFrame:

publicCFrameWnd

{

protected:

CMainFrame();

DECLARE_DYNCREATE(CMainFrame)

public:

public:

virtualBOOLPreCreateWindow(CREATESTRUCT&cs);

public:

virtual~CMainFrame();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

CStatusBarm_wndStatusBar;

CToolBarm_wndToolBar;

protected:

afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);

DECLARE_MESSAGE_MAP()

};

(3)CMyApp类//系统自动定义生成

classCMyApp:

publicCWinApp

{

public:

CMyApp();

public:

virtualBOOLInitInstance();

afx_msgvoidOnAppAbout();

DECLARE_MESSAGE_MAP()

};

(4)CMyDoc类//系统自动定义生成

classCMyDoc:

publicCDocument

{

protected:

CMyDoc();

DECLARE_DYNCREATE(CMyDoc)

public:

CMySetm_mySet;

public:

public:

virtualBOOLOnNewDocument();

virtualvoidSerialize(CArchive&ar);

public:

virtual~CMyDoc();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

protected:

DECLARE_MESSAGE_MAP()

};

(5)CMySet类//系统自动定义生成

classCMySet:

publicCRecordset

{

public:

CMySet(CDatabase*pDatabase=NULL);

DECLARE_DYNAMIC(CMySet)

longm_column1;

CStringm_column2;

CStringm_column3;

CStringm_column4;

longm_column5;

CStringm_column6;

longm_column7;

CStringm_column8;

CStringm_column9;

public:

virtualCStringGetDefaultConnect();

virtualCStringGetDefaultSQL();

virtualvoidDoFieldExchange(CFieldExchange*pFX);

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

};

(6)CMyView类//定义编写的视图类

classCMyView:

publicCRecordView

{

protected:

CMyView();

DECLARE_DYNCREATE(CMyView)

public:

enum{IDD=IDD_MY_FORM};

CMySet*m_pSet;

longm_bianhao;

CStringm_xingming;

CStringm_xingbie;

CStringm_bumen;

intm_nianling;

CStringm_jingyan;

intm_gongzi;

CStringm_zhiwei;

CStringm_xueli;

intm_renshu;

public:

CMyDoc*GetDocument();

public:

public:

virtualCRecordset*OnGetRecordset();

virtualBOOLPreCreateWindow(CREATESTRUCT&cs);

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

virtualvoidOnInitialUpdate();//}}AFX_VIRTUAL

public:

voidRefreshData();

virtual~CMyView();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

protected:

afx_msgvoidOnButtonFIRST();

afx_msgvoidOnButtonNEXT();

afx_msgvoidOnButtonPREV();

afx_msgvoidOnButtonLAST();

afx_msgvoidOnButtonADD();

afx_msgvoidOnButtonMODIFY();

afx_msgvoidOnButtonDELETE();

afx_msgvoidOnButtonSEARCH();

afx_msgvoidOnButtonCHUSHIHUA();

afx_msgvoidOnButtonSORTRECO();

afx_msgvoidOnButtonCOUNT();

DECLARE_MESSAGE_MAP()

};

成员函数的功能

afx_msgvoidOnButtonFIRST();显示第一条记录

afx_msgvoidOnButtonNEXT();显示下一条记录

afx_msgvoidOnButtonPREV();显示前一条记录

afx_msgvoidOnButtonLAST();显示最后一条记录

afx_msgvoidOnButtonADD();添加记录

afx_msgvoidOnButtonMODIFY();修改记录

afx_msgvoidOnButtonDELETE();删除记录

afx_msgvoidOnButtonSEARCH();查询记录

afx_msgvoidOnButtonCHUSHIHUA();初始化界面

afx_msgvoidOnButtonSORTRECO();对数据库排序

afx_msgvoidOnButtonCOUNT();对人数进行统计

2、主要模块的流程图

(1)添加记录:

 

(2)修改记录:

(3)删除记录:

(4)查询记录:

 

(5)排序:

 

(6)统计人数:

3、数据库的建立及设计步骤:

【1】建立数据库及连接步骤

人事管理数据表结构创建

字段名称

字段类型

字段大小

索引

必须填写

职工编号

数字

长整型

惟一、主索引

职工姓名

文本

20

 

职工性别

文本

2

 

所在部门

文本

30

 

职工年龄

数字

整型

 

工作时间

文本

20

 

基本工资

数字

整型

 

职位

文本

20

 

学历

文本

20

 

用MicrosoftAccess建立数据库,数据类型如上表所示。

打开控制面板中的管理工具的数据源,点击添加。

【2】程序主要代码:

(1)添加记录

voidCMyView:

:

OnButtonADD()

{

try

{

m_pSet->AddNew();//设置数据集为添加记录状态

UpdateData(TRUE);//用控件的当前内容更新成员变量

m_pSet->m_column1=m_bianhao;//把成员变量的值赋给数据集的相应成员

m_pSet->m_column2=m_xingming;

m_pSet->m_column3=m_xingbie;

m_pSet->m_column4=m_bumen;

m_pSet->m_column5=m_nianling;

m_pSet->m_column6=m_jingyan;

m_pSet->m_column7=m_gongzi;

m_pSet->m_column8=m_zhiwei;

m_pSet->m_column9=m_xueli;

m_pSet->Update();//执行写入操作

m_pSet->Requery();//更新数据集

}

catch(CDBException*pe)

{

AfxMessageBox(pe->m_strError);//如果发生数据库异常则报告相应错误

pe->Delete();

}

}

(2)修改记录

voidCMyView:

:

OnButtonMODIFY()

{

try

{

m_pSet->Edit();//设置数据集为编辑记录状态

UpdateData(TRUE);//用控件的当前内容更新成员变量

m_pSet->m_column1=m_bianhao;//把成员变量的值赋给数据集的相应成员

m_pSet->m_column2=m_xingming;

m_pSet->m_column3=m_xingbie;

m_pSet->m_column4=m_bumen;

m_pSet->m_column5=m_nianling;

m_pSet->m_column6=m_jingyan;

m_pSet->m_column7=m_gongzi;

m_pSet->m_column8=m_zhiwei;

m_pSet->m_column9=m_xueli;

m_pSet->Update();//执行写入操作

m_pSet->Requery();//更新数据集

}

catch(CDBException*pe)

{

AfxMessageBox(pe->m_strError);//如果发生数据库异常则报告相应错误

pe->Delete();

}

}

(3)删除记录

voidCMyView:

:

OnButtonDELETE()

{

try

{

m_pSet->Delete();//设置数据集为删除状态

m_pSet->Requery();//更新数据集

RefreshData();//更新视图

}

catch(CDBException*pe)

{

AfxMessageBox(pe->m_strError);//如果发生数据库异常则报告相应错误

pe->Delete();

}

}

(4)查询记录

voidCMyView:

:

OnButtonSEARCH()

{

UpdateData(TRUE);

m_pSet->MoveFirst();

while(m_pSet->m_column1!

=m_bianhao)

m_pSet->MoveNext();

RefreshData();

}

(5)排序

voidCMyView:

:

OnButtonSORTRECO()

{

m_pSet->m_strSort="职工编号";//指定排序字段

m_pSet->Requery();//刷新数据库

UpdateData(FALSE);//更新表单

}

(6)统计人数

voidCMyView:

:

OnButtonCOUNT()

{

UpdateData(TRUE);//用控件的当前内容更新成员变量

longi;

m_pSet->MoveLast();

i=m_pSet->m_column1;

m_pSet->MoveFirst();

intj=1;

while(m_pSet->m_column1!

=i)

{

j+=1;

m_pSet->MoveNext();

}

m_renshu=j;//将J的值赋值给人数变量

m_pSet->m_column1=0;

m_pSet->m_column2=_T("");

m_pSet->m_column3=_T("");

m_pSet->m_column4=_T("");

m_pSet->m_column5=0;

m_pSet->m_column6=_T("");

m_pSet->m_column7=0;

m_pSet->m_column8=_T("");

m_pSet->m_column9=_T("");

RefreshData();//更新视图

}

(7)初始化界面

voidCMyView:

:

OnButtonCHUSHIHUA()

{

m_pSet->m_column1=0;

m_pSet->m_column2=_T("");

m_pSet->m_column3=_T("");

m_pSet->m_column4=_T("");

m_pSet->m_column5=0;

m_pSet->m_column6=_T("");

m_pSet->m_column7=0;

m_pSet->m_column8=_T("");

m_pSet->m_column9=_T("");

RefreshData();

}

三、调试分析

1.实际完成的情况说明:

本程序可以实现数据库记录的添加,修改、删除,查询,排序,初始化界面和统计人数等功能

2.程序的性能分析:

可以处理简单的数据,当数据不符合要求时会出现提示:

超出处理范围。

相关操作不能在界面中显示,例如排序,必须在界面中一个一个显示,不能一起显示出来。

添加,修改,删除都可以可以通过查询体现出来。

能够查询第一条,下一条记录,上一条记录和最后一条记录。

3.上机过程中出现的问题及其解决方案:

在设计定义表格时工作时间定义为数据库所提供的时间模式,出现错误,涉及相关知识,我并不太会,所以把时间都定义成文本类型。

通过MFC建立的登陆界面,在修改后,并不能在运行是体现出来。

可以换一台机器就可以了。

在建立数据库时,数据类型要和输入数据,编程变量保持一致。

数据源名必须与你所创建的数据库的名称一致。

在有数据源的情况下,程序才能正常运行。

4.程序中可以改进的地方说明:

可以分别统计各部门的人数或分别统计男女人数,统计工资超过一定数的人数等功能,设计一个列表功能,输出修改,删除,添加,排序等功能,使用户能够直接看到处理结果。

5.程序中可以扩充的功能及设计实现构想:

可以在该系统中添加工资管理系统。

并且直接显示排序后的数据库,并可以通过对话框进入不同的处理功能。

不用通过主键,只要输入相关信息,就可显示所有满足条件的记录信息

四、用户手册

1、建立数据库

2登录界面:

3选择功能:

(1)排序:

单击排序按钮,对数据库中的成员,按编号排序

数据库排序后的情况:

(2)查询记录:

输入职工编号编号,单击查询记录按钮

(3)添加记录:

输入所要添加的记录,再单击添加记录按钮

添加记录后的数据库

(4)删除记录:

查询到所要删除的记录,再单击按钮删除

删除后的数据库

(5)修改记录:

查询到所要修改的记录,然后修改后,单击修改按钮。

修改后的数据库

(6)初始化界面:

单击按钮,即可进入初始化界面

(7)统计人数:

单击统计人数按钮,即可输出数据库中的人数

五、设计总结

经过不到两个星期的课程设计,通过看书和问同学和老师,顺利完成该课程设计。

通过该次设计,收获颇多。

但是我编写的人事管理系统并不实用,并不符合实际人事管理的情况,并不能满足对象的需求,这是因为我对实际情况的不了解以及知识不足所造成的。

但是通过该课程设计,我了解怎样建立数据库,并对其进行连接,了解了其各阶段的基本任务,熟悉了程序总流程框图,了解了程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,同时对于MFC有了一定的了解,MFC通过四个宏来声明和实现消息映射表。

MFC的这种表驱动的机制使消息处理结构变得更加清晰,明了。

MFC应用程序框架  应用程序类,框架窗口类,试图类,文档类构成了应用程序的框架,框架的功能是通过各类之间的协调工作实现的类。

MFC采用文档/试图结构来实现数据和数据表现的分离,文档试图的分离有利于数据和数据表现的单独改变。

MFC用类信息存储了动态创建类对象时所需要的消息。

把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

通过把该程序设计的内容,算法的执行顺序在计算机上实现,知道和理解了怎样制一个人事管理系统,但其中还有很多不足,很多方面都和实际情况不相符,但是对该理论在实践中的应用有深刻的理解。

通过该次课程设计,全面系统的理解了数据库创建和连接以及MFC编程的原理,程序构造的一般原理和基本实现方法。

把课本知识和实际操作相结合,激发了学习的积极性。

把学过的C++面相对象的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

该课程设计中程序比较复杂,不一定能一次性通过,在调试时应该仔细,在程序调试时,一定要有耐心,找出出错的原因。

在这次实习中,我按照实验指导的思想来完成。

加深了MFC编程的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。

只看和想,不实际编程,很难发现自己的错误,只有通过编程运行才能更好的指导我们学习,让我们知道自己的不足,以及怎样处理编程期间出现的问题,更有利于我们的学习。

六、参考文献

1.李兰、任凤华.C++面向对象程序设计.西安:

西安电子科技大学出版社,2010.9

2.郑莉.C++语言程序设计(第3版).北京:

清华大学出版社,2005.7

3.钱能.C++程序设计教程(第2版).北京:

清华大学出版社,2005.8

4.黄维通.VisualC++面向对象与可视化程序设计(第2版).北京:

清华大学出版社,2003.12

5.刘路放.VisualC++与面向对象程序设计教程(第二版).北京:

高等教育出版社,2007.8

七、附录

MainFrm.cpp//人事管理框架类

StdAfx.cpp//人事管理头文件类实现

人事管理系统.cpp//人事管理主程序类实现

人事管理系统Doc.cpp//人事管理文档类实现

人事管理系统Set.cpp//人事管理数据集类实现

人事管理系统View.cpp//人事管理数据集类实现

MainFrm.h//人事管理框架类

Resource.h//人事管理资源类

StdAfx.h//人事管理头文件类

人事管理系统.h//人事管理主程序类

人事管理系统Doc.h//人事管理文档类

人事管理系统Set.h//人事管理数据类

人事管理系统View.h//人事管理视图类

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1