1、毕业设计(论文)DELPHI工资管理论文目录1 前言12 系统概况22.1系统开发背景22.2系统开发目的22.3系统平台选用22.3.1数据库技术的现状与发展22.3.2数据库系统的选择原则32.3.3系统开发工具的选择33 需求分析73.1需求陈述73.2可行性分析73.2.1技术可行性73.2.2时间、设备可行性73.2.3经济可行性84 概要设计94.1系统功能结构设计94.2数据库设计104.2.1数据库逻辑结构104.2.2 数据库E-R图124.2.3 Oracle数据库的使用135 详细设计145.1主界面设计145.2基本信息管理模块155.3工资数据模块245.4当月报表模
2、块355.5历史数据模块375.6系统信息模块416 系统性能测试与分析426.1测试范围与主要内容426.2测试方法426.3测试报告427 结论43参考文献44致谢45word文档 可自由复制编辑1 前言上世纪八、九十年代以来,计算机产业飞速发展,其应用渗透在社会生产的各个领域。计算机在国内的崛起加速了各企事业单位、机关的自动化进程,提高了国民生产的效率,从而为国民经济的飞速发展创造了必要的条件。步入21世纪以来,计算机更是以惊人的普及速度,进入各行各业和大部分家庭。各种应用的需求也不断增加,人们更加追求生活的品质和工作的效率,企业更是视提高生产效率为生存和发展之道,于是通过科技手段提高生
3、产和管理效率自然成为竞争和发展的焦点。这不仅包括如何实现企业生产设备的改进和生产技术的提高还包括如何有效地组织和管理企业各项事务,实现企业的办公自动化。而管理信息系统(Management Information System, MIS)在办公自动化的进程中发挥着重要的作用。市场需求也日益增加。大型企业的分工比较严格、细致,组织较为紧密,对软硬件的要求也就比较高,因此试图以一款软件来解决企业的所有问题显然是不可能的,这就需要我们细化事务,有针对性地开发纵向应用广泛的MIS系统。不仅能够解决大型企业和机构的某方面问题,还应该能为更多的中、小型企业利用,提高他们的工作效率,加速企业的发展,从而促进
4、国民经济的建设。财务是每一个单位都会涉及的问题,管理软件雨后春笋般崛起的今天,企业不仅需要通过软件有效地对其实施管理,还想操作能够尽可能简单,软件易于上手。通过查阅相关资料,对市场需求进行分析,对既成工资管理软件的研究和测试,我们认为本课题是一个适应现今工资管理需求的计算机信息管理系统,具有一定的现实意义和开发使用价值。2 系统概况2.1系统开发背景自20世纪80年代以来,知识经济的兴起和信息技术的日新月异消除了人与人之间知识、信息传递的障碍,也带来了人类经营意识、管理观念的巨大改变。21世纪是一个经济时代,经济竞争说到底是人才的竞争,谁拥有了人才,谁就将最终拥有财富。通过工资人事管理可以获得
5、并维持组织的竞争优势,人作为公司最重要的资产,如何用好人才,为每个人找到合适的岗位去发挥其特长是用人的关键环节。而运用先进科技手段进行有效管理是最好的发展方向。MIS作为提高管理效率和办公自动化进程的重要工具,已深入到国民生产的方方面面。我们更加需要开发适应不同行业不同需求的MIS系统。2.2系统开发目的本系统开发的主要目的就是要使企事业单位工资管理实现计算机管理,使管理员能够有序地管理每一位职工的各项工资条款的发放以及员工个人台帐的生成,使企业运用现代化技术创造更多更高的经济效益。2.3系统平台选用2.3.1数据库技术的现状与发展数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十
6、多年的历史,但在理论和时间上都得到了和很大的发展。现在,数据库是数据处理的主要工具,是管理信息系统(MIS)的核心部分。数据库系统是当今计算机信息系统的核心,是计算机技术和应用发展的关键。传统的数据库系统旨在处理永久、稳定的数据,强调维护数据的完整性、一致性。数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功。计算机世界报社与IBM公司联合举办了21世纪数据库技术发展专家研讨会。IBM DB2的创始人Donald Haderle先生与国内著名数据库专家,就下
7、世纪数据库发展的趋势、数据库领域革命性的突破、IBM DB2的应用、数据仓库的实施、我国数据库技术和应用的现状及趋势、我国数据库用户的需求等问题,进行了广泛而深入的讨论。2.3.2数据库系统的选择原则数据库系统采用易于集成的,开放的技术。产品质量优异,可靠性高,适于长期运行,能支持关键应用。数据安全,保安型高。能提供分布式数据库功能。支持多种开发环境,软件开发容易。扩充性和升级能力强。2.3.3系统开发工具的选择本次工资管理系统选用Delphi与Oracle11g进行开发,现在市场上有很多MIS的开发工具,如:Visual basic、Delphi、ASP等等,数据库开发工具又有很多种,如:A
8、ccess,SQL Sever,Oracle等等。与其他开发工具相比,Delphi与Oracle有着自己的特点与优势。Delphi简介Delphi,是Windows平台下著名的快速应用程序开发工具(Rapid Application Development,简称RAD)。它的前身,即是DOS时代盛行一时的“Borland Turbo Pascal”,最早的版本由美国Borland(宝兰)公司于1995年开发。主创者为Anders Hejlsberg。经过数年的发展,此产品也转移至Embarcadero公司旗下。从产品名称上就可以知道,Turbo Pascal使用的是Pascal语言。从Turb
9、o Pascal 5.5版开始,Borland公司在传统Pascal的基础上加入了面向对象的功能。Delphi是一个集成开发环境(IDE),使用的核心是由传统Pascal语言发展而来的Object Pascal,以图形用户界面(Graphical User Interface,简称GUI)为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。Delphi所编译的可运行档,虽然容量较大,但效能上却比较快。除了使用数据库的程序之外,不需安装即可运行,在使用上相当方便。Delphi在本质上应该归类为软件开发工具,而非程序语言,但由于De
10、lphi几乎是目前市场上唯一使用Pascal,并持续推出新版本的商业产品。因此,有时人们会把Delphi视为Object Pascal的代名词。Borland公司因而把Object Pascal改称为Delphi。2006年,Borland把开发工具产品线独立出来,成立了一家新的公司CodeGear,并把产品线交由此公司负责。原本的Delphi,亦曾一度因此被命名为Turbo Delphi。但是在新的版本中,除了Delphi for Win32(原有的Delphi版本)之外,还有一个新产品“Delphi for PHP”。在CodeGear的发展规划中,或许“Delphi”不再是Object
11、Pascal的专属IDE名称,而是将之提升到通用IDE品牌的层次。2008年5月7日,Embarcadero Technologies(易博龙)公司宣布以2300万美元的价格收购CodeGear公司,从而把Delphi收入囊中。2009年5月6日,Micro Focus宣布以7500万美元收购Borland。Delphi目前的最新版本是2010。Delphi具有如下特点:直接编译生成可执行代码,编译速度快。由于Delphi编译器采用了条件编译和选择链接技术,使用它生成的执行文件更加精炼,运行速度更快。在处理速度和存取服务器方面,Delphi的性能远远高于其他同类产品。 支持将存取规则分别交给客
12、户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。这样,大大减少了对服务器的请求和网络上的数据传输量,提高了应用处理的速度。 提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。利用项目模板和专家生成器可以很快建立项目的构架,然后根据用户的实际需要逐步完善。 具有可重用性和可扩展性。开发人员不必再对诸如标签、按钮及对话框等Windows的常见部件进行编程。Delphi包含许多可以重复使用的部件,允许用户控制Windows的开发效果。 具有强大的数据存取功能。它的数
13、据处理工具BDE(BorlandDatabaseEngine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如xBase、Paradox等,也可以通过BDE的SQLLink直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。 Delphi既可用于开发系统软件,也适合于应用软件的开发。 拥有强大的网络开发能力,能够快速的开发B/S应用,它内置的IntraWeb和ExpressWeb使得对于网络的开发效率超过了其他任何的开发工具。 Delphi使用独特的VCL类库,使得编写出的程序显得条理清晰,VCL是现在最优秀的类库,它使得Delphi在软件开发行业
14、处于一个绝对领先的地位。用户可以按自己的需要,任意的构建、扩充、甚至是删减VCL,以满足不同的需要。 从Delphi8开始Delphi也支持.Net框架下程序开发。 当前DELPHI 已经成为一个品牌,而不仅仅是一个开发平台或开发语言的名称。 当前DELPHI产品已经由CodeGear公司继续发展,该公司是BORLAND公司的全资子公司。当前,CodeGear为广大开发者提供了DELPHI FOR PHP,以高度可视化的方式全面支持面向对象的PHP 网站开发,大大提高了PHP开发网站的代码复用程度,成为WEB应用开发的新利器。Oracle简介Oracle的关系数据库是世界第一个支持SQL语言的
15、数据库。1977年,Lawrence J.Ellison领着一些同事成立了Oracle公司,他们的成功强力反击了那些说关系数据库无法成功商业化的说法。现在,Oracle公司的财产净值已经由当初的2000美元增值到了现在的年收入超过97亿美元。Oracle 11g 扩展了 Oracle 独家具有的提供网格计算优势的功能,可以利用它来提高用户服务水平、减少停机时间以及更加有效地利用 IT资源,同时还可以增强全天候业务应用程序的性能、可伸缩性和安全性。11 g降低了数据库升级以及其他硬件和操作系统更改的成本,显著简化了更改前后的系统测试以便您可以识别和解决问题。例如: 利用 Database Rep
16、lay,可以在数据库级别轻松捕获实际的生产负载并在您的测试系统上重新播放,这样您可以全面测试系统更改(包括关键的并发特性)的影响。 Oracle 数据库 11 g继续致力于(从 Oracle9i数据库开始一直到 Oracle 数据库10 g)显著简化和完全自动化 DBA 任务。 Oracle数据库11 g中的新功能包括: 利用自学功能自动进行 SQL 优化系统全局区(SGA)和程序全局区( PGA)的内存缓存区的自动、统一调整新的 advisor用于分区、数据恢复、流性能和空间管理针对自动数据库诊断监视器 (ADDM)的增强,能够提供 Oracle 真正应用集群 (Oracle RAC)环境中
17、的更好的性能全局视图以及改进的性能比较分析功能。Oracle 数据库 11 g中新增的故障诊断功能使客户在发生错误后捕获 OracleSupport所需的数据变得极为简单。这可以加速问题的解决,减少客户重现问题的需要。Delphi 和 Oracle 数据库的连接方法Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库,是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一,目前被广泛应用于各类型企业的信息化管理中。数据库支持是Delphi7.0开发环境的一个重要特性,很多程序员在数据库应用程序开发中都采用Delphi7.0作为开发工具,来实现对数据库的访问和
18、控制。Delphi数据库应用程序是通过数据库引擎来访问它们引用的数据源的。本文概括性的介绍在Windows XP环境中Delphi7.0连接Oracle数据库的3种方式,它们分别是BDE、ADO、DbExpress。ADO(ActiveX Data Objects)是Microsoft的高级接口,基于Microsoft的数据访问OLEDB技术而实现。本系统采用ADO方式连接Oracle数据库。3 需求分析3.1需求陈述本系统拟在完成工资管理的同时,集成其他必要的功能,以保证系统的完整性和安全性。具体包括,员工基本信息管理、部门管理、当前工资及历史工资管理等。现对有关要求描述如下:整体结构合理,
19、风格一致,模块化结构,界面清晰,接口灵活,操作简便。开发方法,文档规范化,便于管理,可扩充。完善的数据输入,维护,输出。自检性能高,用户误输、错输均有提示。容错性能高,某个用户的操作错误不会引起整个系统的瘫痪,每一功能的操作都有信息提示以免重复操作,错误操作有警告,以便用户及时改正。3.2可行性分析3.2.1技术可行性技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,软硬件配置能否满足开发者需要等,这一特点非常适合计算机的特点,发挥计算机的数据处理速度快,准确率高的优势,现代计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。通过对Delphi和Oracle的系统学习,已经基
20、本掌握了开发本系统所需的技术和查阅文献的能力。对工资管理系统这一类的财务系统开发也有一定的认识,因此具备技术可行性。3.2.2时间、设备可行性12周的时间足够开发一个满足中小型企业简单需求的工资管理系统,现有计算机的软硬件配置能够满足系统开发的要求,具备时间和设备的可行性。3.2.3经济可行性基于企业的现有计算机及配套设备,建设MIS系统。不但能大大减少重复性的书面报告,降低办公费用,提高办公室效率,而且能提高检测数据效用,为企业提供很方便。由于企业工资管理系统是一个比较小型的系统,开发工具也均可免费使用,网络资源丰富,只需较少的花费在技术文献上,开发成本较低,因此,开发本系统具有经济上的可行
21、性。4 概要设计4.1系统功能结构设计工资管理系统数据字典维护工资数据当月报表历史数据系统信息部门信息管理员工信息管理基本数据每月填报每月存档当月报表当月汇总部门月报月汇总表图4.1 功能模块图表4.1功能说明表功能序号功能名称功能说明1部门信息管理包含对部门信息的增加、删除2员工信息管理包含对员工信息的增加、删除3基本工资数据查看和修改基本工资信息4活动工资数据填报每月活动工资数据5每月工资存档每月工资填报完毕后存储数据6当月报表查看当月各部门工资表,打印工资条7当月汇总表查询当月各部门工资汇总信息8历史部门月报查询历史年月的部门工资信息9历史月汇总表查询指定部门制定年月的历史工资汇总信息1
22、0系统信息系统与作者信息等设计角色:财务管理人员4.2数据库设计4.2.1数据库逻辑结构表4.2 部门信息表(bm)字段名称类型宽度约束说明BhVARCHAR23Pk部门编号McVARCHAR210部门名称表4.3 职工工资信息表(ry)字段名称类型宽度约束说明BmVARCHAR210部门BhVARCHAR23编号XmVARCHAR210姓名Z1NUMBER(8,2)岗位资Z2NUMBER(8,2)基本资Z3NUMBER(8,2)效益资J1NUMBER(8,2)加班J2NUMBER(8,2)金额J3NUMBER(8,2)夜班J4NUMBER(8,2)金额Z4NUMBER(8,2)独子Z5NUM
23、BER(8,2)月效资Z6NUMBER(8,2)技师补Z7NUMBER(8,2)医务补Z8NUMBER(8,2)护10%Z9NUMBER(8,2)护龄Z10NUMBER(8,2)女工卫Z11NUMBER(8,2)厂扣Z12NUMBER(8,2)应得资K1NUMBER(8,2)房租金K2NUMBER(8,2)水电暖K3NUMBER(8,2)公积金Z13NUMBER(8,2)保险RqVARCHAR2200日期KbxNUMBER(8,2)实发工资表4.4 历史数据表(sj)字段名称类型宽度约束说明BmVARCHAR210部门BhVARCHAR23编号XmVARCHAR210姓名Z1NUMBER(8,
24、2)岗位资Z2NUMBER(8,2)基本资Z3NUMBER(8,2)效益资J1NUMBER(8,2)加班J2NUMBER(8,2)金额J3NUMBER(8,2)夜班J4NUMBER(8,2)金额Z4NUMBER(8,2)独子Z5NUMBER(8,2)月效资Z6NUMBER(8,2)技师补Z7NUMBER(8,2)医务补Z8NUMBER(8,2)护10%Z9NUMBER(8,2)护龄Z10NUMBER(8,2)女工卫Z11NUMBER(8,2)厂扣Z12NUMBER(8,2)应得资K1NUMBER(8,2)房租金K2NUMBER(8,2)水电暖K3NUMBER(8,2)公积金Z13NUMBER(
25、8,2)保险RqVARCHAR2200日期KbxNUMBER(8,2)实发工资4.2.2 数据库E-R图部门部门名称部门编号员工员工编号员工姓名所在部门工作工资月效资应得资房租金水电暖公积金保险日期实发工资金额夜班独子金额加班效益资基本资岗位资医务补技师补护10%厂扣护龄女工卫领取n11n图4.2 工资管理系统实体关系图4.2.3 Oracle数据库的使用在Oracle中创建用户,如图4.2所示图4.2创建用户在Oracle中建表,如图4.3所示图4.3建表5 详细设计5.1主界面设计由于本系统是针对财务管理人员角色设计开发的,故未进行权限的设定。在主界面显示每个模块的入口,点击即可进入。在状
26、态栏显示系统日期和登录系统时间。系统主界面如图5.1所示:图5.1 系统主界面该模块主要代码:procedure Tgzgl_f.FormCreate(Sender: TObject); /数据库连接处理begingzgl_f.Color:=rgb(180,130,100); try db1.Connected:=true; except showmessage(连接数据库失败 ! ); application.terminate; end;end;procedure Tmainf.FormCreate(Sender: TObject); /状态栏系统日期与时间begin Statusbar1
27、.Panels0.Text:=系统日期:+datetostr(date); Statusbar1.Panels1.Text:=系统时间:+timetostr(time);end;procedure Tmainf.bmiClick(Sender: TObject); /选中菜单显示相应的窗体,此处为部门管理begin If bmi.Checked Then /用If语句做异常处理 bmf.Show ELSE begin Application.CreateForm(Tbmf,bmf); bmf.Show; bmi.Checked:=True; end;end;5.2基本信息管理模块此模块包括部门
28、和员工的基本信息维护,具体功能包括,部门信息的添加和删除,员工信息的添加和删除。输入要添加的数据后,点击“添加”完成数据添加,点击“刷新”按钮显示数据。删除数据时程序将连接后台数据库,判断是否存在该记录的工资信息,若不存在则删除成功,若存在,则删除失败。如图5.2,5.3所示图5.2部门信息维护部门信息维护核心代码:procedure Tbmf.BitBtn1Click(Sender: TObject);begin edit1.Text:=trim(edit1.text); if (length(edit1.Text)=0) or (length(bh.Text)=0) then begin
29、showmessage(编号与单位名称不能为空!); exit; end; with Q1 do begin Close; Sql.Clear; Sql.Add(Insert Into bm (bh,mc); Sql.Add( Values(:y0,:y1) ); Parameters.ParamByName(y0).Value:=bh.Text; Parameters.ParamByName(y1).Value:=edit1.Text; Try ExecSql; except showmessage(服务器连接error,程序退出!); application.Terminate; end;
30、 end;end;procedure Tbmf.BitBtn2Click(Sender: TObject);beginif messagedlg(如果系统中存在本部门数据不能删除,确要删除吗?,mtconfirmation,mbyes,mbno,0) =mrno then exit;q1.Close; q1.Sql.Clear; q1.Sql.Add(delete from bm ); q1.Sql.Add( where (bh like :bh) ); q1.Parameters.ParamByName(bh).Value:=bh.text+%; Try q1.ExecSql; except
31、 showmessage(服务器连接error,程序退出!); application.Terminate; end; q1.Close;end;procedure Tbmf.BitBtn3Click(Sender: TObject); var i:integer;begin Q1.Close; Q1.Sql.Clear; Q1.Sql.Add(Select bh,mc From bm ); Q1.Sql.Add( order by bh); Try Q1.Open; except showmessage(服务器连接error,程序退出!); application.Terminate; En
32、d; sg.RowCount:=Q1.RecordCount+1; sg.ColCount:=2; For I:=0 To sg.RowCount Do sg.RowsI.Clear; sg.Cells0,0:=编号; sg.Cells1,0:=名称; For I:=1 To sg.RowCount Do Begin sg.Cells0,i:=(Q1.FieldByName(bh).AsString); sg.Cells1,i:=(Q1.FieldByName(mc).AsString); Q1.Next; End; Q1.Close;end;procedure Tbmf.FormClose(
33、Sender: TObject; var Action: TCloseAction);beginmainf.bmi.checked:=false;action:=cafree;end;procedure Tbmf.FormCreate(Sender: TObject); var i:integer;beginbmf.Color:=rgb(220,170,140); for i:=1 to 9 do bh.Items.Add(0+inttostr(i); for i:=10 to 50 do bh.Items.Add(inttostr(i); sg.FixedColor:=rgb(180,130
34、,100);end;员工信息维护:图5.3员工信息维护员工信息维护核心代码:procedure Tryf.BitBtn1Click(Sender: TObject);begin edit1.Text:=trim(edit1.text); if (length(edit1.Text)=0) or (length(bh.Text)=0) or (length(bm.Text)=0) then begin showmessage(编号与单位名称不能为空!); exit; end; with Q1 do begin Close; Sql.Clear; Sql.Add(Insert Into ry (b
35、m,bh,xm); Sql.Add( Values(:y0,:y1,:y2) ); Parameters.ParamByName(y0).Value:=bm.Text; Parameters.ParamByName(y1).Value:=bh.Text; Parameters.ParamByName(y2).Value:=edit1.Text; Try ExecSql; except showmessage(服务器连接error,程序退出!); application.Terminate; end; end; end;procedure Tryf.BitBtn2Click(Sender: TO
36、bject);beginif messagedlg(如果系统中存在本人工资数据不能删除,确要删除吗?,mtconfirmation,mbyes,mbno,0) =mrno then exit; bh.text:=trim(bh.text); if (length(bh.text)2) then exit; q1.Close; q1.Sql.Clear; q1.Sql.Add(delete from ry ); q1.Sql.Add( where (bh like :bh) and (bm like :bm); q1.Parameters.ParamByName(bh).Value:=bh.te
37、xt+%; q1.Parameters.ParamByName(bm).Value:=bm.text+%; Try q1.ExecSql; except showmessage(服务器连接error,程序退出!); application.Terminate; end; q1.Close;end;procedure Tryf.BitBtn3Click(Sender: TObject);var i:integer;beginListBox1.Items.Clear; Q1.Close; Q1.Sql.Clear; Q1.Sql.Add(Select bh,xm From ry ); q1.Sql
38、.Add( where (bm like :bm) ); Q1.Sql.Add( order by bh); q1.Parameters.ParamByName(bm).Value:=bm.text+%; Try Q1.Open; except showmessage(服务器连接error,程序退出!); application.Terminate; End; ListBox1.Items.Add( 编号 姓名); For I:=1 To Q1.RecordCount Do Begin ListBox1.Items.Add( +Q1.FieldByName(bh).AsString+ +Q1.
39、FieldByName(xm).AsString); Q1.Next; End; Q1.Close;end;procedure Tryf.bmChange(Sender: TObject); var i:integer; beginListBox1.Items.Clear; Q1.Close; Q1.Sql.Clear; Q1.Sql.Add(Select bh,xm From ry ); q1.Sql.Add( where (bm like :bm) ); Q1.Sql.Add( order by bh); q1.Parameters.ParamByName(bm).Value:=bm.te
40、xt+%; Try Q1.Open; except showmessage(服务器连接error,程序退出!); application.Terminate; End; ListBox1.Items.Add( 编号 姓名); For I:=1 To Q1.RecordCount Do Begin ListBox1.Items.Add(+Q1.FieldByName(bh).AsString+Q1.FieldByName(xm).AsString); Q1.Next; End; Q1.Close; bh.Text:=; edit1.Text:=;end;procedure Tryf.FormCl
41、ose(Sender: TObject; var Action: TCloseAction);beginmainf.ryi.checked:=false;action:=cafree;end;procedure Tryf.FormCreate(Sender: TObject);var i:integer;beginryf.Color:=rgb(220,170,140); Q1.Close; Q1.Sql.Clear; Q1.Sql.Add(Select mc From bm ); Q1.Sql.Add( order by bh); Try Q1.Open; except showmessage(服务器连接error,程序退出!); application.Terminate; End; For I:=1 To Q1.RecordCount Do Begin bm