用VC制作一个工资管理系统_第1页
用VC制作一个工资管理系统_第2页
用VC制作一个工资管理系统_第3页
用VC制作一个工资管理系统_第4页
用VC制作一个工资管理系统_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

54/54案例四

用VC++制作一个工资治理系统

关键词:VC++数据库数据表控件绑定统计计算4.1

课程设计的目的和意义工资治理是任何企事业单位都需要进行的一项工作,因此,开发制作工资治理系统具有较大的社会现实意义,同时工资治理系统的最大特征是数据处理,它是数据库应用系统的典范,它具有一切数据库应用系统的特征,如数据录入,数据统计和数据报表等,其系统结构与现实生活紧密结合,具体直观。工资治理系统也是数据库应用开发中经常进行例证的好例子,它的开发应用简单而又不失一般性。作为一个案例,我们仍需要重复进行一些过程,如创建工程框架,引入数据源,建立消息映射,最终实现统计计算。本程序比较简单,我们的目的是让读者对VC的编程逐步加以理解,它的意义是特不重要的。4.2

系统功能设计在本系统的设计中,将要紧实现如下的一些功能:增加记录功能、修改记录功能、删除记录功能、刷新记录功能,最后实现统计计算功能。4.3

数据库与数据表的设计

作为工资治理系统,它是数据库应用系统数据处理的典范,数据库应用系统开发的前提是首先开发数据库和数据库中的数据表。因此在本案例中,我们仍采纳MicrosoftAccess2003创建数据库和数据表。为此我们先定义一个“职工工资数据表”的结构,如表4.1所示。

表4.1

“职工工资数据表”结构

字段名称字段类型字段大小小数位数索引必须填写年份数字整型

是月份数字整型

是输入日期日期/时刻默认

是职工编号数字整型

是姓名文本16

是部门文本20

是差不多工资数字长整型自动

是业绩工资数字长整型自动

是奖金数字长整型自动

是津贴数字长整型自动

是各种补助数字长整型自动

是应发数数字长整型自动

是水电费数字长整型自动

是房租数字长整型自动

是储蓄数字长整型自动

是会费数字长整型自动

是保险数字长整型自动

是扣除总计数字长整型自动

是实发工资数字长整型自动

创建数据库及其数据表的步骤如上:(1)启动MicrosoftOffice2003中的MicrosoftAccess应用程序,出现图4.1所示界面,通过该界面能够创建一个新的数据库或打开一个差不多存在的数据库。图4.1

新建数据库选择

(2)选择创建新数据库,即选择“空Access数据库”选项。(3)单击“确定”按钮之后出现保存对话框,确定保存数据库的文件位置(D:\VC++写作案例\CH4\)并给定数据库名称:工资治理数据库;然后出现图4.2所示界面。图4.2

数据库中的数据表设计界面

在数据库设计界面中,用户能够打开差不多存在的数据表,也能够创建新的数据表。(4)单击“设计”菜单,即出现一个数据表设计器,用户能够在其中设计一个新的数据表结构,如图4.3所示。图4.3

数据表设计器

在MicrosoftAccess2003数据库设计器中,用户能够定义数据表的字段名称、字段类型、字段大小等数据表结构的内容。数据表结构一经确定,用户能够打开该数据表,在数据表中输入一些差不多数据,以在后面的系统设计中体现设计的效果。最后,系统自动将创建的数据表保存在“D:\VC++写作案例\CH4\32资治理数据库”中,将创建的数据表命名为“职工工资数据表”。注意,在微软的MicrosoftAccess各版本之间,如在MicrosoftAccess98与MicrosoftAccess2003中,采纳旧版本创建的数据库及其数据库中的数据表如要在新的版本中运用,往往需要在新版本中进行转换才行。4.4

创建工资治理系统差不多框架在前面我们差不多创建了“工资治理数据库”、“职工工资数据表”。它可为应用程序提供一个数据源。应用程序确实是对该数据源的记录进行访问、增加、删除以及数据治理的一切操作。有了这一切的工作,用户就能够着手进行应用系统的构建了。与前面的案例一样,在VC++应用系统创建中,需要通过向导先创建一个应用程序框架,然后再加入数据控件,与数据源进行绑定,并进行程序的修改与加工制作。创建“工资治理系统”应用程序框架的步骤如下:(1)结束数据库的创建并启动VC++,出现VC++主控界面。(2)在VC++主控界面中单击“文件|新建...”菜单项,出现新建工程类型选择对话框,在工程类型列表中选择MFCAppWizard(EXE)工程类型。(3)输入工程名称为“工资治理系统”,并选择Win32平台类型。(4)单击“确定”按钮,进入文档类型设置。(5)选择单文档类型,即创建一个单文档界面的应用程序,设置资源使用语言为中文,选择文档/查看体系结构支持。(6)单击“下一步”按钮,进入框架设置的第2步,出现图4.4所示对话框。在该对话框中,需要用户对数据库的类型作一些相关的选择。图4.4

程序框架设置的第2步

(7)选择“查看数据库不使用文件支持”;这时候DataSource按钮处于可用状态(或激活状态);在这一种选择下,VC+将为应用系统引入数据环境,即数据源,该数据源确实是我们在前面创建的“工资数据库”,而不使用其他类型数据的文件支持。但数据源在系统制作中的引入需要用一定的驱动程序为之进行。(8)单击“DataSource”按钮,出现图4.5所示的选择数据源类型的对话框。图4.5

数据源创建类型

注意,在ODBC数据源文件列表中,我们差不多创建了一个ODBC数据源文件,因此能够在其中直接选择引用即可。假如没有“工资治理数据库”如此的文件,则往往需要用操作系统操纵面板中的ODBC程序加以创建,其方法参考案例一。(9)单击OK按钮,出现数据源中的数据表,即工资数据库中的数据表。选择“职工工资数据表”,如图4.6所示。图4.6

选择职工工资数据表

(10)单击OK按钮选定该数据表。然后返回到图4.4所示对话框,完成数据源的创建工作。(11)在图4.4所示对话框中单击“完成”按钮,即完成应用程序框架的生成工作,出现工程框架创建的全部信息,该信息将提示用户所创建的应用程序框架包括的内容,如:应用系统名称、界面类型、适合的操作系统、类文档的创建和系统特色等,如下所示:Applicationtypeof工资治理系统:

SingleDocumentInterfaceApplicationtargeting:Win32Classestobecreated:Application:CMyAppin工资治理系统.hand工资治理系统.cppFrame:CMainFrameinMainFrm.handMainFrm.cppDocument:CMyDocin工资治理系统Doc.hand工资治理系统Doc.CppRecordView:CMyViewin工资治理系统View.hand工资治理系统View.cppRecordset:CMyset.in工资治理系统Set.hand工资治理系统Set.cpp(connectedtotable‘[职工工资数据表]’indatasource‘工资治理数据库’)Features:+Initialtoolbarinmainframe+Initialstatusbarinmainframe+FrintingandPrintPreviewsupportinview+3DControls+UsessharedDLLimplementation(MFC42.DLL)+Databasesupport,withoutfilesupport+ActiveXControlssupportenabled+Localizabletextin:中文[中国]

确认创建信息之后,出现应用程序框架界面,如图4.7所示。图4.7

应用程序框架界面4.5

开发工资处理界面如前所述,应用系统向导只能生成一个应用程序差不多框架,该框架还不具备任何功能,我们需要在框架的基础上进行系统各种功能的制作。通常一个应用程序框架生成两个对话框,一个是IDD_ABOUTBOX对话框,它是一个讲明该系统的对话框,几乎由向导自动完成,如图4.8所示。图4.8

ABOUTBOX对话框

该对话框仍然是差不多的,假如用户需要修饰或修改,能够依照自己的需要进行。在差不多框架中另外一个对话框确实是主对话框IDD_MY_FORM,它是我们加工制作的要紧内容,数据源也是专门为该对话框引入的。4.5.1

主对话框IDD_MY_FORM中控件的加入与布局在工资治理系统中,主对话框要紧用于处理工资治理的一切内容。制作该对话框的要紧步骤如下:(1)在主对话框IDD_MY_FORM中将提示文本框“TODO:在那个对话框里设置表格操纵。”删除。(2)在主对话框IDD_MY_FORM中放入各种需要的控件,如标签控件、编辑框控件、命令按钮控件,其对话框布局如图4.9所示。图4.9

主对话框IDD_MY_FORM控件布局

其中,各个控件的属性设置如表4.2-表4.5所示。

表4.2标签对象的差不多属性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实发工资

表4.3

编辑框控件的差不多属性和编辑内容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实发工资

表4.4

命令按钮对象的差不多属性ID标题内容IDC_BUTIONFIRST|《-第一条IDC_BUTIONNEXT-》下一条IDC_BUTIONPREV《-前一条IDC_BUTIONLAST-》|最后一条IDC_BUTIONSUM执行统计IDC_RADIOADD增加记录IDC_RADIODELETE删除记录IDC_RADIOUPDATE刷新记录

表4.5

分组控件对象的差不多属性ID标题IDC_STATICDATA工资数据处理IDC_STATICBROWSE工资数据扫瞄IDC_STATICADDDELETUPD增加与删除IDC_STATICCOUNT个人工资统计4.5.2

为编辑框控件建立数据字段映射在对话框中的一切编辑框控件,均是用于进行数据处理和数据显示的,但首先我们应该为它们建立字段映射,立即创建的数据集中的每一个字段与一个编辑框进行‘数据绑定”。其方法我们在前面的案例中差不多有所涉及。我们以其中的一个编辑框,即“年份”编辑框为例,讲明为编辑框与数据集中的字段建立映射关系的方法。为此进行如下操作:(1)在主对话框IDD_MYFORM中选取“年份”编辑框控件。(2)用鼠标右键单击该对话框,出现一个快捷菜单。(3)在快捷菜单中单击“建立类向导”,出现类向导对话框。(4)在类向导对话框中将页面切换至MemberVariables页面并设置类名为CmySet。该对话框列出了数据集的全部字段名、字段类型和字段的成员变量名称,但成员变量名是在创建数据源时自动生成的,往往不便于与编辑框建立映射关系,为此将全部成员变量名称删除,并重新定义字段的成员变量名称。重新定义后的字段变量名称如图4.10所示。图4.10

重新定义的字段变量名称(5)在Classname列表中选择CmyView,出现为编辑框控件与字段成员变量建立消息映射的页面,如图4.11所示。图4.1l

编辑框控件与字段变量映射页面

(6)选中IDC_EDITNF(年份编辑)控件资源索引,再单击AddVariable按钮,出现变量选择列表框。在字段选择列表框中选择“年份”成员变量,如图4.12所示。图4.12

字段成员变量列表

(7)单击OK按钮,即完成“年份”编辑框与“年份”字段成员变量的映射。采纳相同的方法为全部编辑框控件建立消息映射,然后编译对话框,则发觉能够在编辑框中修改数据表中的记录。4.5.3

为命令按钮增加函数并编制过程代码事实上,在前面我们差不多在编辑框与数据集之间建立了一种映射关系,但处理数据的功能还不是专门完善。为此我们需要用一些命令来完成对数据的操作,需要为命令按钮建立函数和编制过程代码。同样,在对话框中存在多个命令按钮,我们以“第一条记录”命令按钮为例来讲明建立函数与编制过程的方法。1.“第一条记录”命令按钮的过程代码(1)在对话框中选取“第一条记录”命令按钮。(2)用鼠标右键单击该命令按钮,出现一个快捷菜单。(3)在快捷菜单中单击“建立类向导”菜单项,出现一个消息映射的对话框。(4)在消息映射的对话框中选择MessageMaps页面,选择消息类型为“ON_CLICKED”并单击AddFunction按钮,出现一个函数命令对话框,建议同意系统命名的函数名即可。(5)确认函数名后单击EditCode按钮,出现代码编辑框,在代码编辑框中编辑命令按钮的代码,如下所示:voidCMyView::OnButtonfirst(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MoveFirst();if(m_pSet->IsBOF()){MessageBox(“记录差不多在第一条!”)m_pSet->MoveNext();UpdateData(FALSE);Return;}UpdateData(FALSE);

}如此,“第一条记录”命令按钮的过程代码就编辑完成了。采纳同样的方法,我们能够编辑其他命令按钮的过程代码。2.“下一条记录”命令按钮的过程代码voidCMyView::OnButtonnext(){//TODO:Addyourcontrolnotificationhandlerodeherem_pSet->MoveNext();if(m_pSet->IsEOF()){MessageBox(“记录差不多在最后一条!”);m_pSet->MovePrev();UpdateData(FALSE);Return;}UpdateData(FALSE);

}3.“前一条记录”命令按钮的过程代码voidCMyView::OnButtonprev(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MovePrev();if(m_pSet->IsBOF()){MessageBox(“记录差不多在第一条!”);m_pSet->MoveNext();UpdateData(FALSE);return;}UpdateData(FALSE);

}4.“最后一条记录”命令按钮的过程代码voidCMyView::OnButtonlast(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MoveLast();if(m_pSet->IsEOF()){MessageBox(“记录差不多在最后一条!”);m_pSet->MovePrev();UpdateData(FALSE);Return;}UpdateData(FALSE);}5.“增加记录”选项按钮的过程代码voidCMyView::OnRadiodd(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->AddNew();UpdateData(FALSE);

}6.“删除记录”选项按钮的过程代码voidCMyView::OnRadiodelete(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->Delete();m_pSet->MoveNext();if(m_pSet->IsEOF())

m_pSet

->MoveLast();if(m_pSet->IsBOf())

m_pSet->SetFieldNull(NULL);UpdateData(FALSE);

}7.“刷新记录”选项按钮的过程代码voidCMyView::OnRadioupdate(){//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();UpdateData();m_pSet->Update();m_pSet->Requery();m_pSet->CancelUpdate();

}8.“执行统计”命令按钮的过程代码voidCMyView::OnButtonsum(){//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->Edit();m_pSet->m_YES=m_pSet->m_JBGZ+m_pSet->m_JJ+m_pSet->m_YJGZ+m_pSet->m_JT+m_pSet->m_GZBZ;m_pSet->m_KCZJ=m_pSet->m_CX+m_pSet->m_HF+m_pSet->m_FZOU+m_pSet->m_RDF+m_pSet->m_BX;m_pSet->m_SFGZ=m_pSet->m_YES-m_pSet->m_KCZZ;UpdateData(FALSE);m_pSet->Requery();m_pSet->Update();}最后编译执行工程,检验对话框中的数据处理效果,如图4.13所示。图4.13

对话框运行效果4.5.4

资源文件分析在工程创建完成后,读者能够对差不多创建的工程的一些文件进行阅读和分析。人们常讲:软件=文档+代码,这一“等式”几乎关于一切的开发平台差不多上适用的;那个地点的文档包括用户创建的文档和系统派生的文档两类,不管是用户创建的文档或是系统派生的文档,它们往往差不多上对系统开发的过程的“记录”。因此,通过阅读这些“记录”,不仅对VC++开发环境有了更深入的了解,而且对整个系统的实现全过程也一清二楚。本小节分析两个文档,一个是工程实现文档,另一个是工程设置文档。1.“工资治理系统”工程实现文件工资治理系统实现文件记录了该工程创建的声明、编写的过程代码、资源的消息映射、数据集的创建和控件映射等等内容,工程实现文档往往是用户开发过程中编写最多的文档,一切的过程代码编制往往差不多上在工程实现文档中进行的。“工资治理系统”工程实现文档的全部内容如下所示(仅供读者在开发实践中参考,若无必要,也能够略去对这部分的阅读)://工资治理系统View.cpp:implementationoftheCMyViewclass

#include“stdafx.h”#include“工资治理系统.h”

#include“工资治理系统Set.h”#include“工资治理系统Doc.h”#include“工资治理系统View.h”

#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////CMyView

IMPLEMENT_DYNCREATE(CMyView,CRecordView)

BEGIN_MESSAGE_MAP(CMyView,CRecordView)//{{AFX_MSG_MAP(CMyView)ON_BN_CLICKED(IDC_BUTTONFIRST,OnButtonfirst)ON_BN_CLICKED(IDC_BUTTONNEXT,OnButtonnext)ON_BN_CLICKED(IDC_BUTTONPREV,OnButtonprev)ON_BN_CLICKED(IDC_BUTTONLAST,OnButtonlast)ON_BN_CLICKED(IDC_RADIODD,OnRadiodd)ON_BN_CLICKED(IDC_RADIODELETE,OnRadelete)ON_BN_CLICKED(IDC_RADIOUPDATE,OnRadioupdate)ON_BN_CLICKED(IDC_BUTTONSUM,OnButtonsum)ON_BN_CLICKED(IDC_RADIOEDIT,OnRadioedit)//}}AFX_MSG_MAP//StandardprintingcommandsON_COMMAND(ID_FILE_PRINT,CRecordView::OnFilePrint)ON_COMMAND(ID_FILE_DIRECT,CRecordView::OnFilePrint)ON_COMMAND(ID_FILE_PREVIEW,CRecordView::OnFilePrieview)END_MESSAGE_MAP()

///////////////////////////////////////////////////////////CMyViewconstruction/destructionCMyView::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_EDITNF,m_pSet->m_NF,m_pSet);DDX_FieldText(pDX,IDC_EDITYF,m_pSet->m_YF,m_pSet);DDX_FieldText(pDX,IDC_EDITZGBH,m_pSet->m_ZGBH,m_pSet);DDX_FieldText(pDX,IDC_EDITZGBM,m_pSet->m_BM,m_pSet);DDX_FieldText(pDX,IDC_EDITZGXM,m_pSet->m_XM,m_pSet);DDX_FieldText(pDX,IDC_EDITJBGZ,m_pSet->m_JBGZ,m_pSet);DDX_FieldText(pDX,IDC_EDITJJ,m_pSet->m_JJ,m_pSet);DDX_FieldText(pDX,IDC_EDITSFGZ,m_pSet->m_SFGZ,m_pSet);DDX_FieldText(pDX,IDC_EDITYFHJ,m_pSet->m_YFS,m_pSet);DDX_FieldText(pDX,IDC_EDITKCHJ,m_pSet->m_KCZJ,m_pSet);DDX_FieldText(pDX,IDC_EDITBX,m_pSet->m_NF,m_pSet);DDX_FieldText(pDX,IDC_EDITBX,m_pSet->m_BX,m_pSet);DDX_FieldText(pDX,IDC_EDITCX,m_pSet->m_CX,m_pSet);DDX_FieldText(pDX,IDC_EDITFZOU,m_pSet->m_FZOU,m_pSet);DDX_FieldText(pDX,IDC_EDITGZBZ,m_pSet->m_GZBZ,m_pSet);DDX_FieldText(pDX,IDC_EDITHF,m_pSet->m_HF,m_pSet);DDX_FieldText(pDX,IDC_EDITJT,m_pSet->m_JT,m_pSet);DDX_FieldText(pDX,IDC_EDITRDF,mpSet->m_RDF,mpSet);DDX_FieldText(pDX,IDC_EDITYJGZ,m_pSet->m_YJGZ,m_pSet);//}}AFX_DATA_MAP}BOOLCMyView::PreCreateWindow(CREATESTRUCT&{//TODO:ModifytheWindowclassorstylesherebymodifying//theCREATESTRUCTcs

returnCRecordView::PreCreateWindow(cs);}voidCMyView::OnInitialUpdate(){m_pSet=&GetDocument()->m_mySet;CRecordView::OnInitialUpdate();GetParentFrame()->RecalcLayout();ResizeParentToFit();}///////////////////////////////////////////////////////////////////////////////////////////////////////////CMyViewprintingBOOLCMyView::OnPreparePrinting(CPrintInfo*pInfo){//defaultpreparationreturnDoPreparePrinting(pInfo);}voidCMyView::OnBeginPrinting(CDC*/*pDC*/,

CPrintInfo*/*pInfo*/){//TODO:addextrainitializationbeforeprinting}voidCMyView::OnBeginPrinting(CDC*/*pDC*/,

CPrintInfo*/*pInfo*/)//TODO:addcleanupafterprinting////////////////////////////////////////////////////////////////////////////////////////////////////////////CMyViewdiagnostics

#ifdef_DEBUGvoidCMyView::AssertValid()const{CRecordView::AssertValid();}voidCMyView::

Dump(CDumpContext&sc)const{CRecordView::Dump(dc);{CMyDoc*CMyView::GetDocument()

//non-debugversionisinlineASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));Return

(CMyDoc*)m_pDocument;}#endif//_DEBUG//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CMyViewdatabasesupportCRecordset*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::OnButtonnext(){

//TODO:Addyourcontrolnotificationhandlercodehere

M_pSet->MoveNext();

If(m_pSet->IsEOF())

{

MessageBox("记录差不多在最后一条!");

m_pSet->MovePrev();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);}voidCMyView::OnButtonprev(){

//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->MovePrev();

if(m_pSet->IsBOF())

{

MessageBox("记录差不多在第一条!");

m_pSet->MoveNext();

UpdateData(FALSE);

return;

}

UpdateData(FALSE);}voidCMyView::OnButtonlast()}

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();

ifm_pSet->IsEOF())

{

MessageBox("记录差不多在第一条!");m_pSet->MovePrev();

-

UpdateData(FALSE);

return;

}

UpdateData(FALSE);

}voidCMyView::OnRadiodd(){

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->AddNew();

UpdateData(FALSE);}voidCMyView::OnRadiodelete(){

//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::OnRadioupdate(){

//TODO:Addyourcontrolnotificationhandlercodehere

m_pSet->Edit();

UpdateData();

m_pSet->Update();

m_pSet->Requery();

//m_pSet->CancelUpdate();

}

voidCMyView::OnButtonsum()

{//TODO:Addyourcontrolnotificationhandlercodeherem_pSet->Edit();m_pSet->m_YFS=0;m_pSet->m_KCZJ=0;m_pSet->m_SFGZ=0;m_pSet->Update();m_pSet->Edit();(m_pSet->m_YFS)=(m_pSet->m_JBGZ)+(m_pSet->m_JJ)+(m_pSet->m_YJGZ)+(m_pSet->mJT)+(m_pSet->m_GZBZ);(m_pSet->m_KCZJ)=(m_pSet->m_CX)+(m_pSet->m_HF)+(m_pSet->m_FZOU)+(mpSet->m_RDF)+(m_pSet->m_BX);(m_pSet->m_SFGZ)=(m_pSet->m_YFS)-(m_pSet->mKCZJ);m_pSet->Update();UpdateData(FALSE);m_pSet->Requery();

}2.“工资治理系统”工程设置文档(Set.cpp)工程设置文档用来记录工程中关于头文件的声明设置、预定义变量、给变量赋初值、记录字段变量定义等,请参考如下内容://工资治理系统Set.cpp:implementationoftheCMySetclass

#include“stdafx.H”#include“工资治理系统.h”#include“工资治理系统Set.h”

#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHISFILE[]=__FILE__;#endif/////////////////////////////////////////////////////////////////CMySetimplementation

IMPLEMENT_DYNAMIC(CMySet,CRecordset)

CMySet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论