工资管理系统课程设计报告.docx

上传人:b****0 文档编号:12457326 上传时间:2023-04-19 格式:DOCX 页数:26 大小:234.67KB
下载 相关 举报
工资管理系统课程设计报告.docx_第1页
第1页 / 共26页
工资管理系统课程设计报告.docx_第2页
第2页 / 共26页
工资管理系统课程设计报告.docx_第3页
第3页 / 共26页
工资管理系统课程设计报告.docx_第4页
第4页 / 共26页
工资管理系统课程设计报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

工资管理系统课程设计报告.docx

《工资管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《工资管理系统课程设计报告.docx(26页珍藏版)》请在冰豆网上搜索。

工资管理系统课程设计报告.docx

工资管理系统课程设计报告

1:

课程设计介绍

设计题目:

工资管理系统

设计介绍:

利用所学知识,开发小型应用系统,使学生掌握运用可视化编程技术编写调试应用系统程序,训练学生独立开发应用系统、进行数据处理的综合能力,理解工程的概念和头文件的使用,熟悉封装、继承和多态性等这些面向对象编程的特点。

2:

开发环境

系统环境:

操作系统需要WindowsXp以上版本;

开发工具MicrosoftVisualc++6.0;

数据库使用MicrosoftofficeAccess2003;

3:

设计目的

(1)、进一步巩固、加深学生所学专业课程《可视化程序设计》的基本理论知识,理论联系实际。

(2)、利用所学知识,开发小型应用系统,掌握运用VC++语言编写调试应用系统程序。

(3)、熟练掌握C++语言的基本语法,灵活运用各种数据类型。

(4)、进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。

4:

设计要求:

(1)、创建类并使用类对象完成相应的任务。

(2)、深入理解封装、继承和多态这的等面向对象的编程的特点。

(3)、设计的小型工资管理系统可以收集、处理、存储信息,拥有查阅、增添、删除、修改等功能。

5:

流程图和模块图

设计步骤:

 

模块图:

主模块:

工资信息模块:

统计模块:

查阅模块:

 

增删操作模块:

6:

设计内容:

6.1.数据库与数据表的设计

 作为工资管理系统,它是数据库应用系统数据处理的典范,数据库应用系统开发的前提是首先开发数据库和数据库中的数据表。

因此在本案例中,我们采用MicrosoftAccess2003创建数据库和数据表。

为此我们先定义一个“职工工资数据表”的结构,如表所示。

 “职工工资数据表”结构

 

 字段名称

字段类型

字段大小

小数位数

索引

必须填写

年份

数字

整型

 

 

月份

数字

整型

 

 

职位

文本

整形

 

 

职工编号

数字

整型

 

 

职工姓名

文本

16

 

 

部门

文本

20

 

 

基本工资

数字

长整型

自动

 

业绩工资

数字

长整型

自动

 

奖金

数字

长整型

自动

 

津贴

数字

长整型

自动

 

各种补助

数字

长整型

自动

 

应发数

数字

长整型

自动

 

水电费

数字

长整型

自动

 

房租

数字

长整型

自动

 

储蓄

数字

长整型

自动

 

会费

数字

长整型

自动

 

保险

数字

长整型

自动

 

扣除总计

数字

长整型

自动

 

实发工资

数字

长整型

自动

 

6.2.创建工资管理系统基本框架

在前面我们已经创建了“工资管理数据库”、“职工工资数据表”。

它可为应用程序提供一个数据源。

应用程序就是对该数据源的记录进行访问、增加、删除以及数据管理的一切操作。

有了这一切的工作,我们就可以着手进行应用系统的构建了。

我们先要用ODBC驱动将我们建好的数据库。

在MicrosoftVisualc++6.0中建立工程,在选择数据源的时候选择开放式数据源连接的驱动程序类型作为系统的数据源也就是ODBC。

6.3.开发工资处理界面

应用系统向导只能生成一个应用程序基本框架,该框架还不具备任何功能,我们在框架的基础上进行系统各种功能的制作。

通常一个应用程序框架生成两个对话框,一个是IDD_ABOUTBOX对话框,它是一个说明该系统的对话框,是由向导自动完成该对话框仍然是基本的。

在基本框架中另外一个对话框就是主对话框IDD_MY_FORM,而它就是我们加工制作的主要内容,数据源也是专门为该对话框引入的。

6.4.主对话框IDD_MY_FORM中控件的加入与布局

在工资管理系统中,主对话框主要用于处理工资管理的一切内容。

根据自己设计和功能的需要在此窗口上添加需要的控件,如图。

为各个控件修改属性,具体属性如下表。

标签对象的基本属性

 ID

标题内容

IDC_STATICCAPTION

职工工资管理系统

IDC_STATICNE

年份

IDC_STATICYF

月份

IDC_STATICZGBH

职工编号

IDC_STATICZGXM

职工姓名

IDC_STATICZGBM

部门

IDC_STATICJBGZ

基本工资

IDC_STATICJJ

奖金

IDC_STATICYJGZ

业绩工资

IDC_STATICJT

津贴

IDC_STATICGZBZ

各种补助

IDC_STATICRDF

水电费

IDC_STATICFZOU

房租

IDC_STATICCX

储蓄

IDC_STATICHF

会费

IDC_STATICBX

保险

IDC_STATICYFHJ

应发合计

IDC_STATICKCHJ

扣除合计

IDC_STATICSFGZ

实发工资

 编辑框控件的基本属性和编辑内容

 ID

编辑内容

IDC_EDITNF

年份

IDC_EDITYF

月份

IDC_EDITZGBH

职工编号

IDC_EDITZGBM

所在部门

IDC_EDITZGXM

职工姓名

IDC_EDITJBGZ

基本工资

IDC_EDITJJ

奖金

IDC_EDITYJGZ

业绩工资

IDC_EDITJT

津贴

IDC_EDITGZBZ

各种补助

IDC_EDITRDF

水电费

IDC_EDITFZOU

房租

IDC_EDITCX

储蓄

IDC_EDITHF

会费

IDC_EDITBX

保险

IDC_EDITYFHJ

应发合计

IDC_EDITKCHJ

扣除合计

IDC_EDITSFGZ

实发工资

命令按钮对象的基本属性

 ID

标题内容

IDC_BUTIONFIRST

第一条

IDC_BUTIONNEXT

下一条

IDC_BUTIONPREV

前一条

IDC_BUTIONLAST

最后一条

IDC_BUTIONSUM

执行统计

IDC_RADIOADD

增加记录

IDC_RADIODELETE

删除记录

IDC_RADIOUPDATE

刷新记录

分组控件对象的基本属性

 ID

标题

IDC_STATICDATA

工资信息

IDC_STATICBROWSE

查阅浏览

IDC_STATICADDDELETUPD

增删操作

IDC_STATICCOUNT

统计

6.5.为编辑框控件建立数据字段映射

在对话框中的一切编辑框控件,均是用于进行数据处理和数据显示的,我们为它们建立字段映射,即将创建的数据集中的每一个字段与一个编辑框进行“数据绑定”,如图。

6.6.为命令按钮增加函数并编制过程代码

在此我们需要用一些命令来完成对数据的操作,需要为命令按钮建立函数和编制过程代码。

(1).“第一条记录”命令按钮代码

voidCMyView:

:

OnBUTTONfirst()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->MoveFirst();

if(m_pSet->IsBOF())

{

MessageBox("记录已在第一条");

m_pSet->MoveNext();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}

(2)、上一条按钮命令的代码

voidCMyView:

:

OnBUTTONprev()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->MovePrev();

if(m_pSet->IsBOF())

{

MessageBox("记录已在第一条");

m_pSet->MoveNext();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}

(3)、下一条按钮命令的代码

voidCMyView:

:

OnBUTTONnext()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->MoveNext();

if(m_pSet->IsEOF())

{

MessageBox("记录已是最后一条!

");

m_pSet->MovePrev();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}

(4)、最后一条按钮的代码

voidCMyView:

:

OnBUTTONlast()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->MoveLast();

if(m_pSet->IsEOF())

{

MessageBox("记录已是最后一条!

");

m_pSet->MovePrev;

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}

(5)、增加记录的代码

voidCMyView:

:

OnRADIOzjjl()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->AddNew();

UpdateData(FALSE);

}

(6)、删除记录的代码

voidCMyView:

:

OnRADIOsxjl()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();

UpdateData();

m_pSet->Update();

m_pSet->Requery();

m_pSet->CancelUpdate();

}

(7)修改记录的代码

voidCMyView:

:

OnRADIOscjl()

{

//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);

}

(8)、统计的代码

voidCMyView:

:

OnBUTTONtongji()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();

m_pSet->m_ydgz=m_pSet->m_jbgz+m_pSet->m_jj+m_pSet->m_yj+m_pSet->m_jt+m_pSet->m_gzbz;

m_pSet->m_ykgz=m_pSet->m_cx+m_pSet->m_hf+m_pSet->m_bx+m_pSet->m_fz+m_pSet->m_sdf;

m_pSet->m_sdgz=m_pSet->m_ydgz-m_pSet->m_ykgz;

UpdateData(FALSE);

m_pSet->Requery();

}

7:

调试

1.主界面:

2.统计

3.下一条

4.上一条

5.最后一条

 

6.第一条

 

7.删除操作

 

8修改操作

8.程序清单

#include"stdafx.h"

#include"工资管理系统.h"

#include"¹工资管理系统Set.h"

#include"工资管理系统Doc.h"

#include"工资管理系统View.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CMyView

BOOLm_Add=false;

IMPLEMENT_DYNCREATE(CMyView,CRecordView)

BEGIN_MESSAGE_MAP(CMyView,CRecordView)

//{{AFX_MSG_MAP(CMyView)

ON_BN_CLICKED(IDC_BUTTON_first,OnBUTTONfirst)

ON_BN_CLICKED(IDC_BUTTON_prev,OnBUTTONprev)

ON_BN_CLICKED(IDC_BUTTON_next,OnBUTTONnext)

ON_BN_CLICKED(IDC_BUTTON_last,OnBUTTONlast)

ON_BN_CLICKED(IDC_RADIO_zjjl,OnRADIOzjjl)

ON_BN_CLICKED(IDC_RADIO_sxjl,OnRADIOsxjl)

ON_BN_CLICKED(IDC_RADIO_scjl,OnRADIOscjl)

ON_BN_CLICKED(IDC_BUTTON_tongji,OnBUTTONtongji)

//}}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;

//}}AFX_DATA_INIT

//TODO:

addconstructioncodehere

}

CMyView:

:

~CMyView()

{

}

voidCMyView:

:

DoDataExchange(CDataExchange*pDX)

{

CRecordView:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMyView)

DDX_FieldText(pDX,IDC_EDIT_bm,m_pSet->m_bm,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_cx,m_pSet->m_cx,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_gzbz,m_pSet->m_gzbz,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_hf,m_pSet->m_hf,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_jbgz,m_pSet->m_jbgz,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_jj,m_pSet->m_jj,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_jt,m_pSet->m_jt,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_sdf,m_pSet->m_sdf,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_nf,m_pSet->m_nf,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_yf,m_pSet->m_yf,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_yj,m_pSet->m_yj,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_zgbh,m_pSet->m_zgbh,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_zgxm,m_pSet->m_zgxm,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_zw,m_pSet->m_zw,m_pSet);

DDX_FieldText(pDX,IDC_EDIT1_bx,m_pSet->m_bx,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_sdgz,m_pSet->m_sdgz,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_ydgz,m_pSet->m_ydgz,m_pSet);

DDX_FieldText(pDX,IDC_EDIT_ykgz,m_pSet->m_ykgz,m_pSet);

DDX_FieldText(pDX,IDC_EDIT1_fz,m_pSet->m_fz,m_pSet);

//}}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:

:

OnBUTTONfirst()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->MoveFirst();

if(m_pSet->IsBOF())

{

MessageBox("记录已经在第一条¡");

m_pSet->MoveNext();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}

voidCMyView:

:

OnBUTTONprev()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_pSet->MovePrev();

if(m_pSet->IsBOF())

{

MessageBox("记录已经在第一条¡");

m_pSet->MoveNext();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}

 

voidCMyView:

:

OnBUTTONnext()

{

//TODO

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

当前位置:首页 > 法律文书 > 判决书

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

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