课程设计报告完整版.docx
- 文档编号:30666219
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:30
- 大小:426.72KB
课程设计报告完整版.docx
《课程设计报告完整版.docx》由会员分享,可在线阅读,更多相关《课程设计报告完整版.docx(30页珍藏版)》请在冰豆网上搜索。
课程设计报告完整版
基于VC++的职工工资管理系统
学生姓名:
余明银指导老师:
谢中科
搞要本系统主要解决一个学校或一般的企事单位内的工资管理问题,建立一个透明、相容、一致、易查的工资管理信息系统。
本系统开发平台为WindowsXP,程序设计设计语言采用VisualC++,数据库采用McrosoftAccess,程序运行平台为Windows98/2000/XP。
本系统主要实现对职工工资的查询、添加、修改、删除和统计功能,通过对各个模块的设计来实现不同的功能。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。
关键词程序设计;职工工资管理系统;VisualC++;Access;ODBC
1引言
员工工资管理问题,一直是企业内的一个大问题。
工资问题的有效解决将有利于管理者更好的管理企业,也有利于员工安心工作,所以对于一个企事业单位来说有一个好的工资管理系统是必不可少的。
工资管理系统应包括员工的基本工资的浏览查询等功能。
并且有一个方便易操作的界面对管理者来说是很必要的。
本系统基于这些原因以精简的界面和方便易操作的设计思想设计了该小型的职工工资管理系统。
1.1课题背景
随着市场竞争的日趋激烈,人才已成为实现企业自身战略目标的一个非常关键的因素。
企业中人心的向背和员工对工作的投入程度在很大程度上决定了该企业的兴衰与成败。
如何能保持本企业员工的工作责任感,激励他们的工作热情,减少人才的流失,已成为困扰企业主管的一个日益尖锐的问题,可以说企业管理从根本上来讲就是对人的管理。
现在“公平、公正、合理”的企业管理原则已为不少企业所采纳。
但是要实现“公平、公正、合理”绝非易事,它不是光靠规章制度和政策就可以解决的。
通过建立透明、相容、一致、易查和全面的工资管理系统,将与人相关的信息统一地管理起来,才有可能为“公平、公正、合理”原则的实现,以及企业在运作和劳资纠纷等方面的风险规避等建立一套科学的保障体系。
1.2 设计职工工资管理系统的目的
员工工资管理系统是基于先进的软件和高速、大容量的硬件基础上的新的工资管理模式,通过集中式的信息库、自动处理信息、员工自助服务、外协以及服务共享,达到降低成本、提高效率、改进员工服务模式的目的。
本课题将达到以下几个目的:
(1)提供更好的服务
员工工资管理系统可以迅速、有效地收集各种信息,加强内部的信息沟通。
各种用户可以直接从系统中获得自己所需的各种信息,并根据相关的信息做出决策和相应的行动方案。
(2)降低成本
员工工资管理系统通过减少员工工资管理工作的操作成本、降低员工流动率以及减少通信费用等达到降低企业运作成本的目的。
(3)革新工资管理理念
员工工资管理系统的最终目的是达到革新企业的管理理念,而不仅是改进管理方式,优化员工工资管理。
先进技术应用于员工工资管理不仅是为了将现有的员工工资工作做得更好,更重要的是,做些对于企业来讲更有效率的事情,成为管理层的决策支持者,为决策提供信息和解决方案[1]。
2员工工资管理系统可行性分析
(1)技术可行性
系统的性质为管理软件,因而数据库的设计与操纵是系统设计的核心。
我在大一期间学习了数据库的有关知识,具备一定的系统分析与设计能力,基本熟悉数据库的设计与操纵;指导老师谢中科多年从事数据库的教学与研究工作,因而该系统的实现在技术上是可行的。
(2)人员可能性
我有上机实验经验,目前时间充足,可以完成开发任务。
我有深厚的文字功底,可以参与用户文档的制作、内部文档整理、后期测试等任务。
(3)系统工作量
该系统的工作量相对于我来说很大,必须保证按进度完成任务。
实际工作量预计超过一个月(每天4-8小时)。
如包含软件维护及技术文档的整理、制作,工作量将更大。
(4)代码工作量
预计需10天左右。
(5)文档要求
依据国家《计算机软件产品开发文件编制指南》和《现代软件工程》的理论与原则编制标
准的软件技术文档。
3本系统关键技术简介
3.1C++介绍
C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序设计方法[1]。
(1)C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。
这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。
(2)C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。
这对于设计、编制和调试一些大型的软件尤为重要。
(3)C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。
通常,C++程序环境约定:
当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。
(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。
其优点是给用户编程带来书写上的方便。
其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误不容易发现,给用户编程增加了难度。
3.2ODBC介绍
(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的核心文件。
3.3 CRecordset类
CRecordset类代表一个记录集.该类是MFC的ODBC类中最重要、功能最强大的类。
域数据成员用来保存某条记录的各个字段,它们是程序与记录之间的缓冲区.域数据成员代表当前记录,当在记录集中滚动到某一记录时,框架自动地把记录的各个字段拷贝到记录集对象的域数据成员中.当用户要修改当前记录或增加新记录时,程序先将各字段的新值放入域数据成员中,然后调用相应的CRecordset成员函数把域数据成员设置到数据源中。
3.4 MicrosoftAccess数据库
Access2003拥有一套功能强大的应用工具,其完善程度足以满足专业开发人员的需要。
虽然如此,新手也能十分容易的学习和掌握该产品。
通过创建或使用强大的数据库解决方案,您能够更为轻松地组织、访问和共享信息资源。
(1)访问和使用来自不同资源的信息
在熟悉的界面下使用不同格式和来自程序的信息。
(2)合并大量数据资源。
Access2003支持多种数据格式,包括扩展标记语言(XML)、OLE、开放式数据库连接(ODBC)和MicrosoftWindowsSharePointServices。
(3)链接各种业务系统。
通过表格链接,您可以在Access2003窗体、报表和数据访问页面中同时访问来自多个数据库的数据。
它还能够将来自其他MicrosoftAccess数据库、MicrosoftExcel电子表格、ODBC数据源、MicrosoftSQLServer数据库以及其他的数据库资源的表格进行链接。
(4)轻松共享信息
您设计的窗体和报表可以在旧版的Access中保存和打开,使您能够更轻松地共享信息。
更有效地共享信息。
您可以导出或导入数据,或链接到WindowsSharePointServices站点的列表。
这样团队中的其他成员也能够访问到您的数据。
构建这样的站点需要运行了WindowsSharePointServices的MicrosoftWindowsServer2003。
使用强大的工具来设计Web页面。
您可以在Web上发布窗体和报表,或将您的信息绑定在一个记录资源上,用来显示、更新和操作数据库中的数据。
使用兼容的文件格式。
Access2003使用Access2000作为新数据库的默认文件格式。
由于Access2002和Access2000可以使用和修改同一个数据库,因此公司可以在保持现有Access用户和解决方法的前提下,轻松升级到Access2003。
4职工工资管理系统需求分析
4.1 职工工资管理个功能模块分析
修改用于改员工的信息,包括职员编号、姓名、职称、现从事职业、工作岗位等。
删除主要功能是删除当前查看的内容。
添加主要用来向数据库中添加纪录使新的纪录纪录在里面。
工资统计结果用来计算和显示当前浏览的员工的工资统计情况。
4.2 数据库分析
根据以上的需求分析,该课程一共需要2张表,分别存放相应的数据信息,其中工资数据表是关键表,用于存放基础数据信息。
它涉及职员信息和工资情况的表;另一张表用来存放登录的用户名和密码用来登录的时候用,这两张表是关键[2]。
表4-1 工资数据表
表4-2 用户信息数据表
5 职工工资管理系统的实现与测试
VisualC++资源通常由窗体、模块和类模块等构成[1][3]。
对话框是VisualC++.程序中必不可少的资源。
它可以实现程序的外观显示,实现需要的功能。
模块可以用来管理全局常量、变量和用户自定义函数等。
在一个工程中可以有多个模块同时存在。
本次设计用类来管理数据库中的每个表,类的成员变量对应表中的每个列,类的成员函数则实现对表的各种操作,例如添加、修改、删除和读取数据等
5.1 登录模块和系统主界面设计
当系统运行时,首先打开登录窗体,只有有权限的用户才能进入系统。
登录成功后,将显示系统主界面。
(1)登录界面
进入程序后,首先出现的是【用户登陆】对话框,在【用户名】文本框中输入后按Tab键,程序将自动查询用户名并跳到【密码】文本框中,输入密码后按Enter键即可进入系统,登录对话框如图5.1所示。
图5.1用户登录对话框
(2)登录成功后将显示主界面主界面如图5.2所示,在此界面可以选择各种按钮进行不同的操作。
图5.2主界面
5.2 系统功能的实现
(1)增加功能
单击“增加“按钮,进入增加记录功能窗体,如图5.3所示。
在上边的编辑框中,可以很清楚看到整个表中的记录和主视图一致,在编辑框中输入完成了记录后按确定按钮,这样刚才输入的内容就同过m_pSet这个指针写如了数据库;按取消则推出刚才的操作。
图5.3增加界面
(2)删除功能
完成机构“增加“功能后,进入主界面,按下删除按钮,则删除当前显示的记录。
这个窗体相对简单,它实际上是管理各个记录的删除的,以便能即时更新旧的记录,删除旧的没用的记录。
(3)修改功能
对于有些写错了的记录,我们往往需要在事后才能进行修改,这个功能就为我们提供了很好的操作界面。
它先把当前记录的信息显示在另外一个窗口里如图5.4,这样能避免对记录的误操作。
(4)工资统计结果
完成当前记录下的工资的统计功能,单击“工资统计”按钮,则进入“工资统计”窗体。
该窗体中显示了员工的应发合计,扣除合计,实发工资,如图5.4所示。
图5.4统计结果界面
6存在的不足与对策
由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,此外,该界面只能在Dos界面显示,没有能很好把握在图形界面显示。
因此,请不要故意输入错误信息。
这些不足请老师多多谅解。
今后设计者会更多的学习编程技巧,不断的提高程序设计水平。
7 总 结
我设计该职工工资管理系统花了很长时间,因为是一个人单独完成,所以还有很多没有做好的地方和没有想到的地方。
开始时我先是做了一个单文挡应用程序主要用来显示职工的各种工资情况,这也是我设计的主界面,在界面上有五个功能按钮分别是增加、修改、删除、查询和工资统计结果。
增加和修改都是另外弹出一个对话框来实现各自的功能;删除就是删除当前浏览界面上的记录;查询只提供了按职工编号查询的方法,只要输入职工编号就可以直接查询了;工资统计结果就是计算出当前职工的个人所得工资。
后来在添加程序代码的时候又遇到了好多麻烦,但在同学的帮助下我都顺利的解决了。
整个系统大概花了4个周,在这之中我知道我还有很多的不足之处和很多错误没能想到,希望在以后的学习中能够努力弥补自己的不足争取在以后的课程设计中能够有好的成绩。
参考文献
[1]郑阿奇主编,丁有和编著.《VisualC++教程》.北京:
机械工程出版社,2006
[2](美)CaryN.Prague等著,赵传启...等译.《中文版Access2003宝典》.电子工业出版社
[3]陈志泊王春玲编著.《面向对象的程序设计语言—C++》.邮电出版社
致 谢
在这次C++的课程设计中,曾遇到过不少问题,单靠我个人的努力,很难按时完成该课程设计,在此,我衷心感谢我的指导老师——谢中科。
谢中科老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。
另外,还要感谢学校领导、班主任、各位同学对我们的关怀、帮助,为我们提供了良好的设计环境以及各方面的支持。
附录A职工工资管理系统源程序代码
//程序名称:
CMyset.h
//程序功能:
数据库连接类,数据库基类CDatabase的派生类
//程序作者:
余明银
//最后修改日期:
2007-7-13
//数据连接类
//职工工资管理系统Set.cpp:
implementationoftheCMySetclass
//
//包含头文件
#include"stdafx.h"
#include"职工工资管理系统.h"
#include"职工工资管理系统Set.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//CMySetimplementation
IMPLEMENT_DYNAMIC(CMySet,CRecordset)
//定义CMset类
CMySet:
:
CMySet(CDatabase*pdb):
:
CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CMySet)//校验校验机制
m_BX=0;
m_CX=0;
m_FZ=0;
m_GZBZ=0;
m_HF=0;
m_JBGZ=0;
m_JJ=0;
m_JT=0;
m_NF=0;
m_SDF=0;
m_YF=0;
m_YJGZ=0;
m_ZGBH=_T("");
m_ZGBM=_T("");
m_ZGXM=_T("");
m_nFields=15;
//}}AFX_FIELD_INIT
m_nDefaultType=snapshot;
}
CStringCMySet:
:
GetDefaultConnect();//数据连接机制
{
//连接数据库和相关的表
return_T("ODBC;DSN=职工工资管理数据库");
}
CStringCMySet:
:
GetDefaultSQL()
{
return_T("[工资数据表]");//数据表名
}
//数据校验机制
voidCMySet:
:
DoFieldExchange(CFieldExchange*pFX)
{
//{{AFX_FIELD_MAP(CMySet)
pFX->SetFieldType(CFieldExchange:
:
outputColumn);
RFX_Long(pFX,_T("[BX]"),m_BX);
RFX_Long(pFX,_T("[CX]"),m_CX);
RFX_Long(pFX,_T("[FZ]"),m_FZ);
RFX_Long(pFX,_T("[GZBZ]"),m_GZBZ);
RFX_Long(pFX,_T("[HF]"),m_HF);
RFX_Long(pFX,_T("[JBGZ]"),m_JBGZ);
RFX_Long(pFX,_T("[JJ]"),m_JJ);
RFX_Long(pFX,_T("[JT]"),m_JT);
RFX_Int(pFX,_T("[NF]"),m_NF);
RFX_Long(pFX,_T("[SDF]"),m_SDF);
RFX_Int(pFX,_T("[YF]"),m_YF);
RFX_Long(pFX,_T("[YJGZ]"),m_YJGZ);
RFX_Text(pFX,_T("[ZGBH]"),m_ZGBH);
RFX_Text(pFX,_T("[ZGBM]"),m_ZGBM);
RFX_Text(pFX,_T("[ZGXM]"),m_ZGXM);
//}}AFX_FIELD_MAP
}
//CMySetdiagnostics
#ifdef_DEBUG
voidCMySet:
:
AssertValid()const
{
CRecordset:
:
AssertValid();
}
voidCMySet:
:
Dump(CDumpContext&dc)const
{
CRecordset:
:
Dump(dc);
}
#endif//_DEBUG
//定义和数据库的连接结素。
//程序名称:
CMview.h
//程序功能:
完成各个功能的实现。
//程序作者:
余明银
//最后修改日期:
2007-7-7
//职工工资管理系统View.cpp:
implementationoftheCMyViewclass
//包含头文件
#include"stdafx.h"
#include"职工工资管理系统.h"
#include"MainFrm.h"
#include"职工工资管理系统Set.h"
#include"职工工资管理系统Doc.h"
#include"职工工资管理系统View.h"
#include"EditDlg.h"
#include"denglu.h"
#include"Tongji.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CMyView
IMPLEMENT_DYNCREATE(CMyView,CRecordView)
BEGIN_MESSAGE_MAP(CMyView,CRecordView)
//{{AFX_MSG_MAP(CMyView)
ON_BN_CLICKED(IDC_CHAXUNZGBH,OnChaxunzgbh)//用MFCCLASSWizard为查询按钮添加ON_BN_CLICKED消息映射
ON_BN_CLICKED(IDC_BUTTON_ADD,OnButtonAdd)//用MFCCLASSWizard为添加按钮添加ON_BN_CLICKED消息映射
ON_BN_CLICKED(IDC_BUTTON_DELETE,OnButtonDelete)//用MFCCLASSWizard为删除按钮添加ON_BN_CLICKED消息映射
ON_BN_CLICKED(IDC_BUTTON_EDIT,OnButtonEdit)//用MFCCLASSWizard为修改按钮添加ON_BN_CLICKED消息映射
ON_BN_CLICKED(IDC_ButtonEdit,OnButtonEdit)//用MFCCLASSWizard为修改按钮添加ON_BN_CLICKED消息映射
ON_BN_CLICKED(IDC_BUTTON_TONGJI,OnButtonTongji)//用MFCCLASSWizard为工资统计结果添加ON_BN_CLICKED消息映射
//command消息映射声明
//}}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
//定义CMView类构造函数
CMyView:
:
CMyView()
:
CRecordView(CMyView:
:
IDD)
{
//{{AFX_DATA_INIT(CMyView)
m_pSet=NULL;
m_ZGBH=_T("");
//}}AFX_DATA_INIT
//TODO:
addconstructioncodehere
}
CMyView:
:
~CMyView()//析构函数
{
}
voidCMyV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 完整版
![提示](https://static.bdocx.com/images/bang_tan.gif)