大学员工工资管理系统课程设计报告.docx
《大学员工工资管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《大学员工工资管理系统课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
![大学员工工资管理系统课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-12/1/4cf1fdbe-3c5a-4f8a-8db6-943be376e460/4cf1fdbe-3c5a-4f8a-8db6-943be376e4601.gif)
大学员工工资管理系统课程设计报告
搞要本系统主要解决西北民族大学员工工资情况,建立一个透明、相容、一致、易查的工资管理信息系统。
本系统开发平台为WindowsXP,程序设计设计语言采用VisualC++,数据库采用McrosoftAccess,程序运行平台为Windows98/2000/XP。
本系统主要实现对职工工资的查询、添加、修改、删除功能,通过对各个模块的设计来实现不同的功能。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。
设计西本民族大学员工工资管理系统的目的
员工工资管理系统是基于先进的软件和高速、大容量的硬件基础上的新的工资管理模式,通过集中式的信息库、自动处理信息、员工自助服务、外协以及服务共享,达到降低成本、提高效率、改进员工服务模式的目的。
本课题将达到以下几个目的:
(1)提供更好的服务
员工工资管理系统可以迅速、有效地收集各种信息,加强内部的信息沟通。
各种用户可以直接从系统中获得自己所需的各种信息,并根据相关的信息做出决策和相应的行动方案。
(2)降低成本
员工工资管理系统通过减少员工工资管理工作的操作成本、降低员工流动率以及减少通信费用等达到降低学校运作成本的目的。
(3)革新工资管理理念
员工工资管理系统的最终目的是达到革新企业的管理理念,而不仅是改进管理方式,优化员工工资管理。
先进技术应用于员工工资管理不仅是为了将现有的员工工资工作做得更好,更重要的是,做些对于企业来讲更有效率的事情,成为管理层的决策支持者,为决策提供信息和解决方案[1]。
框图设计
流程图设计
本系统关键技术简介
VC++介绍
VC++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序设计方法[1]。
(1)VC++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在VC++的集成环境下调试和运行。
这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。
(2)VC++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。
这对于设计、编制和调试一些大型的软件尤为重要。
(3)VC++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。
(4)VC++语句非常简练,对语法限制比较宽松,因此VC++语法非常灵活。
其优点是给用户编程带来书写上的方便。
其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误不容易发现,给用户编程增加了难度。
ODBC介绍
(1)开放数据库互联
ODBC(OpenDatabaseConnectivity),即开放数据库互联。
ODBC基于SQL(StructuredQueryLanguage),并把它作为访问数据库的标准。
这个接口提供了最大限度的相互可操作性:
一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。
一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。
ODBC可以为不同的数据库提供相应的驱动程序。
对于ASP程而言,ODBC数据源是ASP程序的ADO组件和数据库之间的接口。
(2)配置ODBC数据源
图3.1ODBC数据管理器
用户DSN:
ODBC用户数据源存贮了如何与指定数据库提供者连接的信息。
只对当前用户可户可见,而且只能用于当前机器上。
这里的当前机器是只这个配置只对当前的机器有效,而不是说只能只配置本机上的数据库。
它可以配置局域网中另一台机器上的数据库的。
系统DSN:
ODBC系统数据源存贮了如何指定数据库提供者连接的信息。
系统数据源对当前机器上的所有用户都是可见的,包括NT服务。
也就是说在这里配置的数据源,只要是这台机器的用户都可以访问。
文件DSN:
ODBC文件数据源允许用户连接数据提供者。
文件DSN可以由安装了相同驱动程序的用户共享。
这是界于用户DSN和系统DSN之间的一种共享情况。
驱动程序:
这页列出了本机上所有安装的数据库驱动程序。
里面列举了每个驱动程序的名称,版本,提供商公司,驱动程序文件名,以及安装日期。
跟踪:
ODBC跟踪允许创建调用ODBC的日志,提供给技术人员查看。
里面可设定日志的路径和文件名。
技术人员通过这里面的信息可以看到本机上所有的数据库访问的时间,用户,以及出错信息等情况。
也可以通过这个辅助调试应用程序,可以启动VisualStudio的分析器,来进行ODBC的跟踪。
连接池:
连接池允许应用程序重用原来打开的的连接句柄,这样可以节省到服务器的往返过程。
关于:
最后这一页列出了所有的ODBC的核心文件。
员工工资管理系统需求分析
1 职工工资管理个功能模块分析
修改用于改员工的信息,包括职员编号、姓名、职称、现从事职业、工作岗位等。
删除主要功能是删除当前查看的内容。
添加主要用来向数据库中添加纪录使新的纪录纪录在里面。
工资统计结果用来计算和显示当前浏览的员工的工资统计情况。
2 数据库分析
根据以上的需求分析,该课程需要一张表,用来存放相应的数据信息,其中工资数据表是关键表,用于存放基础数据信息。
它涉及职员信息和工资情况的表;
表1 工资数据表
职工工资管理系统的实现与测试
1. 系统功能的实现
(1)增加功能
单击“增加“按钮,进入增加记录功能窗体,如图2所示。
在上边的编辑框中,可以很清楚看到整个表中的记录和主视图一致,在编辑框中输入完成了记录后按确定按钮,这样刚才输入的内容就同过m_pSet这个指针写如了数据库;按取消则推出刚才的操作。
图2
(2)删除功能
完成机构“增加“功能后,进入主界面,按下删除按钮,则删除当前显示的记录。
这个窗体相对简单,它实际上是管理各个记录的删除的,以便能即时更新旧的记录,删除旧的没用的记录。
(3)修改功能
对于有些写错了的记录,我们往往需要在事后才能进行修改,这个功能就为我们提供了很好的操作界面。
它先把当前记录的信息显示在另外一个窗口里如图5.4,这样能避免对记录的误操作。
课程步骤
创建数据库及其数据表的步骤如上:
(1)启动MicrosoftOffice2003中的MicrosoftAccess应用程序,出现图3所示界面,通过该界面可以创建一个新的数据库或打开一个已经存在的数据库。
图1 新建数据库选择
(2)选择创建新数据库,即选择“空Access数据库”选项。
(3)单击“确定”按钮之后出现保存对话框,确定保存数据库的文件位置(D:
\VC++课程设计\gz\)并给定数据库名称;工资。
然后出现图4所示界面。
图2 数据库中的数据表设计界面
在数据库设计界面中,用户可以打开已经存在的数据表,也可以创建新的数据表。
(4)单击“设计”菜单,即出现一个数据表设计器,用户可以在其中设计一个新的数据表结构,如图5所示。
图3 数据表设计器
在MicrosoftAccess2003数据库设计器中,用户可以定义数据表的字段名称、字段类型、字段大小等数据表结构的内容。
数据表结构一经确定,用户可以打开该数据表,在数据表中输入一些基本数据,以在后面的系统设计中体现设计的效果。
最后,系统自动将创建的数据表保存在“D:
\VC++课程设计\gz\工资”中,将创建的数据表命名为“职工工资数据表”。
四创建工资管理系统基本框架
在前面我们已经创建了“工资管理数据库”、“职工工资数据表”。
它可为应用程序提供一个数据源。
应用程序就是对该数据源的记录进行访问、增加、删除以及数据管理的一切操作。
有了这一切的工作,用户就可以着手进行应用系统的构建了。
与前面的案例一样,在VC++应用系统创建中,需要通过向导先创建一个应用程序框架,然后再加入数据控件,与数据源进行绑定,并进行程序的修改与加工制作。
创建“工资管理系统”应用程序框架的步骤如下:
(1)结束数据库的创建并启动VC++,出现VC++主控界面。
(2)在VC++主控界面中单击“文件|新建...”菜单项,出现新建工程类型选择对话框,在工程类型列表中选择MFCAppWizard(EXE)工程类型。
(3)输入工程名称为“Ex_Gz”,并选择Win32平台类型。
(4)单击“确定”按钮,进入文档类型设置。
(5)选择单文档类型,即创建一个单文档界面的应用程序,设置资源使用语言为中文,选择文档/查看体系结构支持。
(6)单击“下一步”按钮,进入框架设置的第2步,出现图6所示对话框。
在该对话框中,需要用户对数据库的类型作一些相关的选择。
图6程序框架设置的第2步
(7)选择“查看数据库使用文件支持”;这时候DataSource按钮处于可用状态(或激活状态);在这一种选择下,VC+将为应用系统引入数据环境,即数据源,该数据源就是我们在前面创建的“工资”,而不使用其他类型数据的文件支持。
但数据源在系统制作中的引入需要用一定的驱动程序为之进行。
(8)单击“DataSource”按钮,出现以下对话框。
程序所需的代码
#include"stdafx.h"
#include"Ex_Gz.h"
#include"MainFrm.h"
#include"Ex_GzSet.h"
#include"Ex_GzDoc.h"
#include"Ex_GzView.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CEx_GzApp
BEGIN_MESSAGE_MAP(CEx_GzApp,CWinApp)
//{{AFX_MSG_MAP(CEx_GzApp)
ON_COMMAND(ID_APP_ABOUT,OnAppAbout)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG_MAP
//Standardfilebaseddocumentcommands
ON_COMMAND(ID_FILE_NEW,CWinApp:
:
OnFileNew)
ON_COMMAND(ID_FILE_OPEN,CWinApp:
:
OnFileOpen)
//Standardprintsetupcommand
ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp:
:
OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CEx_GzAppconstruction
CEx_GzApp:
:
CEx_GzApp()
{
//TODO:
addconstructioncodehere,
//PlaceallsignificantinitializationinInitInstance
}
/////////////////////////////////////////////////////////////////////////////
//TheoneandonlyCEx_GzAppobject
CEx_GzApptheApp;
/////////////////////////////////////////////////////////////////////////////
//CEx_GzAppinitialization
BOOLCEx_GzApp:
:
InitInstance()
{
AfxEnableControlContainer();
//Standardinitialization
//Ifyouarenotusingthesefeaturesandwishtoreducethesize
//ofyourfinalexecutable,youshouldremovefromthefollowing
//thespecificinitializationroutinesyoudonotneed.
#ifdef_AFXDLL
Enable3dControls();//CallthiswhenusingMFCinasharedDLL
#else
Enable3dControlsStatic();//CallthiswhenlinkingtoMFCstatically
#endif
//Changetheregistrykeyunderwhichoursettingsarestored.
//TODO:
Youshouldmodifythisstringtobesomethingappropriate
//suchasthenameofyourcompanyororganization.
SetRegistryKey(_T("LocalAppWizard-GeneratedApplications"));
LoadStdProfileSettings();//LoadstandardINIfileoptions(includingMRU)
//Registertheapplication'sdocumenttemplates.Documenttemplates
//serveastheconnectionbetweendocuments,framewindowsandviews.
CSingleDocTemplate*pDocTemplate;
pDocTemplate=newCSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CEx_GzDoc),
RUNTIME_CLASS(CMainFrame),//mainSDIframewindow
RUNTIME_CLASS(CEx_GzView));
AddDocTemplate(pDocTemplate);
//Parsecommandlineforstandardshellcommands,DDE,fileopen
CCommandLineInfocmdInfo;
ParseCommandLine(cmdInfo);
//Dispatchcommandsspecifiedonthecommandline
if(!
ProcessShellCommand(cmdInfo))
returnFALSE;
//Theoneandonlywindowhasbeeninitialized,soshowandupdateit.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
returnTRUE;
}
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//Appcommandtorunthedialog
voidCEx_GzApp:
:
OnAppAbout()
{
CAboutDlgaboutDlg;
aboutDlg.DoModal();
}
/////////////////////////////////////////////////////////////////////////////
//CEx_GzAppmessagehandlers
#if!
defined(AFX_EX_GZ_H__77AE4ED5_2CA0_4BCF_94BB_99622D69EA7F__INCLUDED_)
#defineAFX_EX_GZ_H__77AE4ED5_2CA0_4BCF_94BB_99622D69EA7F__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
#ifndef__AFXWIN_H__
#errorinclude'stdafx.h'beforeincludingthisfileforPCH
#endif
#include"resource.h"//mainsymbols
/////////////////////////////////////////////////////////////////////////////
//CEx_GzApp:
//SeeEx_Gz.cppfortheimplementationofthisclass
//
classCEx_GzApp:
publicCWinApp
{
public:
CEx_GzApp();
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CEx_GzApp)
public:
virtualBOOLInitInstance();
//}}AFX_VIRTUAL
//Implementation
//{{AFX_MSG(CEx_GzApp)
afx_msgvoidOnAppAbout();
//NOTE-theClassWizardwilladdandremovememberfunctionshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//!
defined(AFX_EX_GZ_H__77AE4ED5_2CA0_4BCF_94BB_99622D69EA7F__INCLUDED_)
#if!
defined(AFX_EX_GZDOC_H__0C4CEE17_77F6_401F_94CC_1C638447D9B4__INCLUDED_)
#defineAFX_EX_GZDOC_H__0C4CEE17_77F6_401F_94CC_1C638447D9B4__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
#include"Ex_GzSet.h"
classCEx_GzDoc:
publicCDocument
{
protected:
//createfromserializationonly
CEx_GzDoc();
DECLARE_DYNCREATE(CEx_GzDoc)
//Attributes
public:
CEx_GzSetm_ex_GzSet;
//Operations
public:
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CEx_GzDoc)
public:
virtualBOOLOnNewDocument();
virtualvoidSerialize(CArchive&ar);
//}}AFX_VIRTUAL
//Implementation
public:
virtual~CEx_GzDoc();
#ifdef_DEB