摘 要
企业工资管理系统是公司管理的一个重要内容,是一种典型的管理系统企业工资管理系统是公司管理的一个重要内容,是一种典型的管理系统,其开发主要包括后台的数据库的建立、维护以及前端的相应应用程序的开发两个方面的内容,系统的建立和维护主要要求其管理数据的系统性、规范性、自动性等特点,而前台的应用程序开发则要求做到各项功能要完备、操作要简便、易学易用等特点。
综合上述各项要求,本问首先分析了企业工资管理系统的应用现状,阐述了本工资管理系统的开发目的,通过对数据库技术的现状与发展,数据库系统的选择原则,系统开发工具的选择一系列问题的分析确定了系统的开发平台。接着阐述了MIS系统基本理论,并在此理论知道下,详细给除了从工资管理系统分析到总体设计详细设计与实现及测试的各个环节,最后对本系统作了客观评价指明了系统的现实意义,缺点以及系统的升级方向。利用其能快速地构建各类对象,特别是数据窗口这一能方便而简洁操纵数据库的最具特色的智能化控件,在短时间内快速建立起系统的原型,然后再对原型不断地根据需要进行修正和改进,直到形成用户满意的可行系统为止。
【关键字】:控件,窗体 ,企业工资管理系统,数据库,MIS
目 录
1 企业工资管理系统概述.. 1
1.1 系统的主要功能.. 1
1.2 方法概要.. 1
1.3 企业工资管理系统的现状分析.. 2
2 企业工资管理系统平台的选用.. 2
2.1 数据库技术的现状与发展.. 2
2.2 数据库系统的选择原则.. 3
2.3 系统开发工具的选择.. 3
3 企业工资管理系统分析.. 3
3.1 系统目标.. 3
3.2 系统可行性分析研究.. 4
3.3 需求分析.. 4
3.4 数据流程图: 5
4 系统总体设计.. 5
4.1 系统功能模块图.. 6
4.2 功能的说明.. 6
4.3 系统的运行要求.. 7
5 详细设计与实现.. 7
5.1 数据库设计.. 7
5.2 系统中有关数据库表结构设计.. 8
5.3 系统模块设计举例.. 9
6 系统测试.. 14
6.1 系统开发环境.. 14
6.2 系统测试.. 15
6.3 系统运行与维护.. 16
6.4 系统的转换方案.. 17
7 系统评价.. 17
7.1 系统的特点.. 17
7.2 系统的缺点.. 17
7.3 将来可能提出的要求.. 17
8 总结.. 18
企业工资管理系统的开发
1 企业工资管理系统概述
1.1 系统的主要功能
企业工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、增加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,快速打印出工资报表,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能:
(1)对单位人员的变动进行处理。一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。
(2)对职工的工资进行计算、修改。可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算应发金额、应扣金额及实发金额等。
(3)查询统计功能。要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某部门工资数在某一范围的职工的工资情况等。
(4)报表打印功能。每月发放工资时,要求能够打印本月的工资表、随工资发给每个职工的工资条以及工资统计表。
1.2 方法概要
本工资管理系统是采用面向对象的程序设计思想进行编制的,整个系统由若干个表单、类、报表以及一个主菜单组成,有项目管理器统一管理全部程序的编写和调试。用户可以通过主菜单或总表单调用系统的各项功能。
1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。
2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。
3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。
4、面向对象设计的核心是类的设计。例如:可以定义一个“工资查询表单”类,该类中可以定义查询的姓名、年龄、工资等等信息,则以此类为原型可以设计出众多的“工资查询表单”类的对象实例,这些实体都具有类中所定义的特征。
5、设计的工资管理系统也是建立在一系列类基础之上的,其编程的思想是:先根据一定的需要创建一系列的子类或直接调用vfp提供的基类,编制程序时,由这些类派生出相应的对象,所派生出的对象继承了其父类所有的功能,而且具有很好的封装性,这样就可利用派生出的对象像搭积木一样来设计自己的程序。打个比方,就比如要制造一台机器,首先要制造各种零件的模具,然后用制造好的模具生产出所需的零件,所有这些做完后,剩下的就只是如何把这些零件组装起来,这样一台机器就很容易制造出来了。实际编程也是如此。每个表单都是由一定数量的对象按某一种方式组合在一起的,程序编制的核心是类的设计。
1.3 企业工资管理系统的现状分析
1.3.1企业工资管理的应用现状
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统来进行管理,那么势必会给管理人员带来种种麻烦,因此类似工资管理系统之类的财务软件的开发势在必行。
1.3.2管理系统开发的目的
本系统开发的主要目的就是要使企事业单位工资管理实现计算机管理,使管理员能够有序的管理每一位职工的各项工资条款的发放以及员工个人台帐的生成,使企业运用现代化技术创造更多更高的经济效益。
2 企业工资管理系统平台的选用
2.1 数据库技术的现状与发展
数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间上都得到了和很大的发展。现在,数据库是数据处理的主要工具,是管理信息系统(MIS)的核心部分。数据库系统是当今计算机信息系统的核心,是计算机技术和应用发展的关键。传统的数据库系统旨在处理永久、稳定的数据,强调维护数据的完整性、一致性。
数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功。计算机世界报社与ibm公司联合举办了"21世纪数据库技术发展专家研讨会"。ibm DB2的创始人Donald Haderle先生与国内著名数据库专家,就下世纪数据库发展的趋势、数据库领域革命性的突破、ibm DB2的应用、数据仓库的实施、我国数据库技术和应用的现状及趋势、我国数据库用户的需求等问题,进行了广泛而深入的讨论。
2.2 数据库系统的选择原则
(1)数据库系统采用易于集成的,开放的技术。
(2)产品质量优异,可靠性高,适于长期运行,能支持关键应用。
(3)数据安全,保安型高。
(4)能提供分布式数据库功能。
(5)支持多种开发环境,软件开发容易。
(6)扩充性和升级能力强。
2.3 系统开发工具的选择
现在市场上有很多管理系统的开发工具,如:Visual basic、delphi、ASP等等,数据库开发工具又有很多种,如:Access,SQL Sever,Oracle等等。这些都是很出色的管理信息系统及数据库的开发工具。不过Visual foxpro6.0有着以下几项特点:
Visual foxpro是microsoft公司推出的全新的pc平台关系数据库管理系统。它具有强大的性能、无与匹敌的速度、完整而丰富的工具、及其友好的图形用户界面、简单得数据存取方式、良好的兼容性、独一无二的跨平台特性及真正的可编译性,是系统成为目前最快、最完美的数据库系统。不但兼容早期的dbase以及foxbase各种版本,同时还提供了许多基于windows的崭新功能。Visual foxpro作为具有windows95兼容标志的应用软件,具有快速开发应用程序、面向对象和客户机/服务器的强大功能,它是多年来出现在关系数据库方面最重要的产品。
随着桌面操作系统有windows98逐渐向windowsXP升级的发展潮流,visual foxpro必将成为今后数据库产品中的主流。Microsoft visual foxpro是一个32位的数据库开发系统,可运行于window98和windowsxp操作系统。Visual foxpro既具有visual系列的功能强大、直观易用、面向对象等优点,又兼具windows和foxpro的长处。提供了“向导”、“设计器”和“生成器”等工具,使的数据库的管理工作变的容易。Visual foxpro的易用性使初学者和那些想避免涉及foxpro复杂命令的人能很快用它来管理自己的数据库,制作各种报表、标签等;增添的面向对象的编程方式等新特色,使它成为应用程序开发人员强有力工具;其兼容性使原来的广大Xbase用户能迅速转为使用 visual foxpro;visual foxpro还能广泛地与其他许多软件共享和交换数据。正是由于其易用性、先进性和广泛性,使visual foxpro 真正做到了面向各种水平的用户。
3 企业工资管理系统分析
3.1 系统目标
本系统要对企业工资管理的日常的工资发放进行数据输入,并对各项工资条款进行计算。汇总各项数据生成员工个人台帐,打印工资报表。采用用户名,密码安全机制,分用户权限登陆访问,保证系统资源不受人为因素的干扰。
3.2 系统可行性分析研究
可行性研究的目的使用最小的代价在尽可能短的时间里确定问题是否能解决,通过复杂系统的规模与目标,研究与此类似的系统后,我们具体从下面两个方面考虑。
(1)技术上的可行性。
现代计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。由于对企业工资管理系统这一类的企业财务系统进行开发已有一定的时期,有很多成功的实例,技术基础也已经非常雄厚,因而技术上的准备应该不成问题。
(2)经济上的可行性。
主要是对项目的经济效益进行评价,一方面是支出的费用,其中包括设备购置费,软件开发费,管理和维护费,人员工资和培训费等。另一方面是取得的收益中可以用钱来衡量的那部分(收益的另一部分难以用钱来表示)。基于企业的现有计算机及配套设备,建设MIS系统。不但能大大减少重复性的书面报告,降低办公费用,提高办公室效率,而且能提高检测数据效用,为企业提供很方便。由于企业工资管理系统是一个比较小型的系统,所以从人力、物力、财力方面来说都是可行的。
(3)管理上的可行性
主要是管理人员对开发信息系统是否支持,现有管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等,企业工资管理系统比较完善的规章制度和管理方法为系统的建设提供了保障。
(4)社会可行性
社会可行性研究是对系统投入使用后对社会可能带来的影响进行分析,比如是否为人们所接受,是否为社会带来利益。
可行性分析的最后成果是写出可行性分析报告,可行性分析报告包括下列内容:企业工资管理系统的战略目标,新系统的总体目标及主要功能;主要问题和主要信息要求;拟订新系统的方案;从经济,技术,管理,社会等方面论证方案的可行性。
3.3 需求分析
对用户需求的分析应该全面、深入、发展,全面是指考查由MIS管理的信息是否有纰漏,必须保证各静态、动态信息的完全;深入是指对信息的内容、结构、含义、变换、生存周期的分析和认识;发展是指对信息未来发展变化的预测,因为信息在某个系统、机构内的变化往往存在着自身特有的发展规律,需求分析应该预见这种规律,否则就会缩短MIS的使用寿命。为了保证需求分析的完备性,就必须保证需求分析的时间。
1.系统业务流程图
通过对企业原先手工进行员工工资管理业务的情况,可以设计出它的业务流程图,如图3-1所示。
图3-1
2.系统的功能要求。
①整体结构合理,风格一致,模块化结构,界面清晰,接口灵活,操作简便。
②开发方法,文档规范化,便于管理,可扩充。
③完善的数据输入,维护,输出。
④自检性能高,用户误输、错输均有提示。
⑤容错性能高,某个用户的操作错误不会引起整个系统的瘫痪,每一功能的操作都有信息提示以免重复操作,错误操作有警告,以便用户及时改正。
3.4 数据流程图:
1.管理系统的数据流程图符号如图3-2所示
图3-2
2.本系统的数据流程如图3-3所示
图3-3
4 系统总体设计
本部分主要介绍系统要实现的功能,搭好设计的总体框架,使我们对要开发的系统有一个系统、全面、确切的认识。
4.1 系统功能模块图
本系统在设计时采用结构化程序的设计方法,系统的总体结构采用菜单来调用表单,利用表单来对信息进行管理、数据加工、信息查询、系统维护等工作,系统的功能模块本结构图如图4-1所示。
图4-1
4.2 功能的说明
本系统大致分为如下四大功能模块。
1.员工信息
分为员工信息浏览和员工信息查询:
在员工信息浏览子模块中,可以对员工的编号、姓名、性别、岗位、工龄、工资等级等信息进行浏览,并可以对员工信息进行增加记录,修改记录,删除记录等操作;
在员工信息查询模块中,可按员工号或员工姓名进行查询。
2.工资基本设定
包括对基础工资、岗位工资、工龄工资的设定。
基础工资的设定包括工资等级、工资额的设定,可以对工资等级及相应的工资额进行修改、添加、删除。
岗位工资的设定包括岗位名称、岗位工资额的设定,可以对岗位名称及相应的岗位工资额进行修改、添加、删除。
工龄工资的设定包括工龄、工资额的设定,可以对各个工龄段及相应的工龄工资额进行修改、添加、删除。
3.工资汇总
在工资管理中,要分别输入每一个员工的各项工资条款,这样才能运用计算机技术来管理好员工的工资发放情况,其中包括:员工基本情况,员工基本工资情况,员工岗位工资情况,员工工龄工资,工资综合。
4.个人工资查询
此查询分为按职工姓名查询、按职工号查询。
5.退出
此功能块为退出系统。
4.3 系统的运行要求
1.硬件要求
2.软件要求
本部分简明扼要的介绍了各个部分要实现的功能,搭好了设计的总体框架,使我们对要开发的系统能够更加系统的,全面的,确切的认识,下一步就可以进行系统的详细设计与具体功能的实现了。
5 详细设计与实现
本部分说明了系统的整个设计,再以工资数据输入,工资计算以及查询为例详细说明了系统是怎样实现的。
5.1 数据库设计
5.1.1概念设计
概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。
概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的基础。
概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称E-R模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R模型是建立概念性数据模型的有力工具。
通过对企业工资管理内容和过程的分析,本系统应设计的实体和属性如下:
本系统一共用到了3个表。如下:
岗位表(dept.dbf)(包括岗位名称,岗位工资)
工龄表(gongling.dbf)(包括工龄,工龄工资)
工人信息表(personnel.dbf)(包括编号,姓名,性别,工作岗位,工龄,工资等级)。
图5-1为本系统中工人信息的实体集及有关属性的图例:
图5-1
5.1.2实体与实体之间的关系E—R图,如图5-2
图5-2
5.2 系统中有关数据库表结构设计
1.部门表
2.工龄表
3.员工信息表
5.3 系统模块设计举例
下面对本系统的具体的几个模块做详细说明。
1、系统主程序MAIN.PRG
clear screen
clear events
set defa to d:\qygz
open database database\salary
do salary\main.mpr
do form salary\form\ksjm
read events
2、Ksjm.frm
(1)打开表单设计器,设计好表单,并且设置好必要的属性,设计结果见图6-3。
Form1.load事件代码:
public i
i=0
Timer.timer事件代码:
if Thisform.Label1.Left<0-Thisform.Label1.Width
Thisform.Label1.Left=Thisform.Width+3
Endif
Thisform.Label1.Left=Thisform.Label1.Left-10
I=I+10
If I>=255*2-6
I=0
Endif
(2)“员工基本信息“按钮的CLICK事件为:
do form salary\form\personnel
personnel.frm的有关设计见第3目
(3)“工资基本设定“按钮的CLICK事件为:
do form salary\form\dataformat
(4)“工资汇总“按钮的CLICK事件为:
do form salary\form\result
(5)“个人工资查询“按钮的CLICK事件为:
do form salary\form\grcx
(6)“退出“按钮的CLICK事件为:
thisform.release
clear events
3.personnel.frm的有关设计:
(1)打开表单设计器,设计好表单,并且设置好必要的属性,设计结果见图6-4。
Form1.init事件代码:
set multilocks on
cursorsetprop("buffering",3)
(2) thisform.pageframe1.page1.command1.click事件代码:
thisform.pageframe1.page1.fy1.enabled=.F.
thisform.pageframe1.page1.command2.enabled=.F.
thisform.pageframe1.page1.command3.enabled=.F.
thisform.pageframe1.page1.command4.enabled=.T.
if thisform.pageframe1.page1.command1.caption='增加新记录'
thisform.pageframe1.page1.txtpid.enabled=.T.
thisform.pageframe1.page1.txtpname.enabled=.T.
thisform.pageframe1.page1.txtp***.enabled=.T.
thisform.pageframe1.page1.txtpjob.enabled=.T.
thisform.pageframe1.page1.txtpindate.enabled=.T.
thisform.pageframe1.page1.txtprank.enabled=.T.
append blank
thisform.pageframe1.page1.command1.caption='增加确认'
thisform.pageframe1.page1.refresh
thisform.pageframe1.page1.txtpid.setfocus
else
getid=alltrim(thisform.pageframe1.page1.txtpid.value)
getname=alltrim(thisform.pageframe1.page1.txtpname.value)
get***=alltrim(thisform.pageframe1.page1.txtp***.value)
getjob=alltrim(thisform.pageframe1.page1.txtpjob.value)
getindate=alltrim(thisform.pageframe1.page1.txtpindate.value)
getrank=alltrim(thisform.pageframe1.page1.txtprank.value)
if empty(getid) or empty(getname) or empty(get***) or empty(getjob) or empty(getindate) or empty(getrank)
messagebox("资料不足",48,"错误")
else
thisform.pageframe1.page1.command1.caption='增加新记录'
tableupdate(.t.)
thisform.pageframe1.page1.txtpid.enabled=.F.
thisform.pageframe1.page1.txtpname.enabled=.F.
thisform.pageframe1.page1.txtp***.enabled=.F.
thisform.pageframe1.page1.txtpjob.enabled=.F.
thisform.pageframe1.page1.txtpindate.enabled=.F.
thisform.pageframe1.page1.txtprank.enabled=.F.
thisform.pageframe1.page1.fy1.enabled=.T.
thisform.pageframe1.page1.command2.enabled=.T.
thisform.pageframe1.page1.command3.enabled=.T.
thisform.pageframe1.page1.command4.enabled=.F.
4.工龄工资设定窗体代码:
(1)“修改”按钮有关代码:
thisform.grdgongling.column1.text1.enabled=.T.
thisform.grdgongling.column2.text1.enabled=.T.
thisform.grdgongling.column1.text1.setfocus
(2)“修改确认”按钮有关代码:
thisform.grdgongling.column1.text1.enabled=.F.
thisform.grdgongling.column2.text1.enabled=.F.
(3)“添加” 按钮有关代码:
append blank
go bottom
thisform.grdgongling.column1.text1.enabled=.T.
thisform.grdgongling.column2.text1.enabled=.T.
thisform.grdgongling.column1.text1.setfocus
(4)“删除” 按钮有关代码:
thisform.grdgongling.recordsource=''
use gongling exclusive
delete from gongling where gname=getgname
pack
thisform.grdgongling.recordsource='gongling'
thisform.grdgongling.refresh
(5)“退出” 按钮有关代码
thisform.release
do form salary\form\dataformat
5.个人查询窗体有关代码:
(1)“确定”按钮有关代码:
inname=alltrim(thisform.text1.value)
inpswd=alltrim(thisform.text2.value)
set order to tms_user
seek inname
if !found()
cMessageTitle='设备管理系统'
cMessageText='用户名错误,请重新输入'
nDialogType=4+32
nAnswer=messagebox(cMessageText,nDialogType,cMessageTitle)
do case
case nAnswer=6
thisform.text1.value=''
thisform.text1.setfocus
case nAnswer=7
messagebox("请勿偷窥他人资料",48,"警告")
thisform.release
endcase
else
if tms_pswd!=inpswd
cMessageTitle='设备管理系统'
cMessageText='密码错误,请重新输入'
nDialogType=4+32
nanswer=messagebox(cMessageText,nDialogType,cMessageTitle)
do case
case nAnswer=6
if flag<2
thisform.text2.value=''
thisform.text2.setfocus
flag=flag+1
else
messagebox("请勿偷窥他人资料",48,"警告")
thisform.release
endif
case nAnswer=7
messagebox("请勿偷窥他人资料",48,"警告")
thisform.release
endcase
else
thisform.release
par1=inname
do form salary\form\gresult
endif
endif
(2)表单载入事件代码:
public inname
public flag
flag=0
6.岗位工资有关源码:
(1)“修改”按钮有关代码:
thisform.grddept.column1.text1.enabled=.T.
thisform.grddept.column2.text1.enabled=.T.
thisform.grddept.column1.text1.setfocus
(2)“修改确认”按钮有关代码:
thisform.grddept.column1.text1.enabled=.F.
thisform.grddept.column2.text1.enabled=.F.
(3)“添加” 按钮有关代码:
append blank
go bottom
thisform.grddept.column1.text1.enabled=.T.
thisform.grddept.column2.text1.enabled=.T.
thisform.grddept.column1.text1.setfocus
(4)“删除” 按钮有关代码:
thisform.grddept.recordsource=''
use dept exclusive
delete from dept where jobname=getjob
pack
thisform.grddept.recordsource='dept'
thisform.grddept.refresh
(5)“退出” 按钮有关代码
thisform.release
do form salary\form\dataformat
其它模块设计略
6 系统测试
6.1 系统开发环境
系统开发环境包括硬件平台和软件平台两种。
硬件平台是指开发与运行所需要的硬件环境,主要包括计算机机型及硬件配置。由于本系统是一个小型的MIS管理系统,因此对计算机硬件的要求不高,比较经济,只要配备有奔腾四代赛扬处理器2.0GHZ(或以上)、DDR256M内存(或以上)、60G硬盘(或以上)的普通微机即可顺利运行。
软件平台是指系统开发与运行的软件环境。本系统在开发时选用了稳定性较强的Windows XP中文专业版和Visual Basic6.0作为开发语言,同时选用了Access数据库,由于这些软件产品都是Microsoft公司的产品,因此彼此之间的兼容性较好,开发出的应用系统稳定性较高。
Visual Basic 6.0具有可视化的开发环境,可以快速完成系统的开发,内部集成的数据库访问通道,使得可以轻松方便的对数据库管理。
数据库采用MICROSOFT ACCESS,由于我们的系统要求,采用它完全可以适合我们的工作需求,并且它所支持的数据类型十分丰富,维护简便,费用比较低,人员素质要求不是很高,容易升级。
本系统在单机上运行。
6.2 系统测试
在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,示经周密测试的系统投入运行,将会造成难以想像的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS开发总工作量的40%以上。因此,我们必须重视测试工作。
由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。
从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。
(1)单元测试:
单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。
(2)组合测试
组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。
(3)确认测试
确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是对表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。
(4)系统测试
系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统不否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。
(5)用户验收测试
在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。
在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
在开发本系统时,为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采取的方式是:
1、菜单项测试:为了保证每一项下拉菜单能够正确实现系统设计的功能,我把相关的基础数据,基本上全部输入到本系统中,并对每一个菜单项反复进行了增加、删除、修改等操作,从而保证了菜单级功能的正确实现。
2、数据跟踪:完成菜单项测试后,我又对系统内的每一个数据进行了跟踪。例如:在成绩管理模块中,我首先对考试类型进行设定,然后在成绩添加模块中进行数据操作,随时观察这两个模块之间是否有冲突产生,配合得是否正确,再然后在成绩浏览模块中进行验证,说明该功能完全正常,对其它的功能模块也进行了类似的设置。
3、综合测试:在以上测试的基础上对系统功能进行了整体的测试,依次来检验系统功能是否符合系统设计的要求。
6.3 系统运行与维护
系统的运行:
1、初始数据的输入
本系统的输入采用鼠标和键盘相结合的输入方法。
2、怎样使用本系统:
本系统的使用相应简单,基本上只要会使用Windows软件就会使用本系统,在具体的操作时,只需点击鼠标左键即可进行相应功能的选择。
3、系统的维护:
本系统是个较复杂的人-机系统,由于系统外部环境与内部因素的变化,不断影响系统的运行,同时需要系统不断地适应这些变化,不断地完善系统,以提高系统运行的效率与服务水平,这就需要自始至终进行系统的维护工作。
系统的维护主要包括四个方面:
(1)程序的维护:指的是修改部分或全部程序,这种维护往往是在条件发生变化或原系统的效率低的情况下进行的。
(2)数据文件的维护:指的是按照用户的要求对数据文件进行不定期的修改。
(3)代码的维护:随着系统的发展和变化,可能会出现旧代码不能适应新要求的问题,因此,有必要变更代码,予以维护。
(4)硬件的维护:指的是对系统所使用的设备进行维护。
本系统的日常维护由学校的的专人来负责,如果出现一些不能解决的问题,则由开发者来负责。
6.4 系统的转换方案
本次开发的企业工资管理系统采用了并行转换方式,以保证平衡可靠的过度。即一方面使用本系统来进行工作,另一方面又继续沿用老的方式—手工方式,这种状况持续了半个月的时间,在这期间发现了一些程序中存在的漏洞和错误,用户也提出一些修改意见,经过程序的进一步完善后,正式投入了使用,中止了以前老的手工的操作方式。
7 系统评价
系统评价就是客观,公正的从各个方面评价系统的各项功能。本部分将具体从三方面阐述:优点,缺点以及将来可能提出的要求。
7.1 系统的特点
1.流程符合企业内部工资管理的要求。
2.界面友好,输入信息方便(好多信息,系统自动生成)。
3.查询全面,对任何情况或字段都可以查询,从而对管理进行监督。
4.系统扩充容易。由于资料有限,有很多地方还需要更好的完善。
5.即面向开发人员,又面向用户。
7.2 系统的缺点
1.由于时间的原因。输出报表不完善。
2.网络功能欠缺。本系统只能在单片机上运行,不能实现网络连接,资源共享。
3.容错性不高。系统的抗错,容错性不高。这方面有待加强。
4.由于资料有限,有很多地方还设计的不够详细,如考勤制度与工资奖金,福利,公积金,应付合计,扣除合计,应发合计的关系等,还需要更好的完善。
5.没有良好的用户权限和密码限制以防止人为的破坏与盗窃数据资源。
7.3 将来可能提出的要求
1.网络化。
系统能支持网络数据传输,数据共享;数据远程访问能自动采取一定的加锁策略;远程报表处理。
2.多媒体化。
系统能够支持语音输入。
8 总结
通过这次课程设计,使我受到了一次用专业知识、专业技能分析和解决问题的全面系统的锻炼。使我在综合知识的选用方面,在应用软件开发的基本思想、方法方面,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步。为日后成为合格的应用型人才打下良好的基础。这次在指导老师的帮助下,在同学的帮助下,基本上完成了设计任务,在软件的设计方面也有了一定的提高,熟练掌握了VISUAL FOXPRO命令和编程技巧,为今后走上工作岗位打下了专业基础。
在这次的毕业设计中,让我深深地体现到进行软件开发不是一件简单的事情,它需要设计者具有全面的专业知识、缜密的思维、严谨的工作态度以及较高的分析问题、解决问题的能力,而我在很多方面还有欠缺。最后,我要衷心感谢老师在我的设计过程中给予我的极大帮助,使我能够及时、顺利地完成此次的毕业设计。同时,也要感谢我的老师和同学们及实习企业在本系统的设计过程中给予我的支持和帮助。
参考文献
1.王汝涌, 管理信息系统,中国财政经济,2001.7
2.张海藩,软件工程,清华大学出版社,2001.6
3.刘瑞新,VFP程序设计教程,机械工业出版社,2002.3
4.毛一心,VFP6.0应用,人民邮电出版社,2003.3
5、萨师煊、王珊《数据库系统概论(第二版)》高等教育出版社,2001.4
6.王要武,管理系统,电子工业出版社,2003
7.李红等编著,管理信息系统开发与应用,电子工业出版社,2003