Delphi平台

2024-06-13

Delphi平台(精选7篇)

Delphi平台 篇1

宾馆需要经常或周期性地进行统计,工作量大、效率低、统计慢,时间长,查询和统计工作很不方便,为了适应信息化管理的需求,方便管理,易于统计,需要一个高效的管理软件,实现快速开房、查询、结账、统计等功能,来提高宾馆日常管理的效率[1,2]。

1 开发环境

采用Delphi 7.0的集成开发环境,Delphi 7.0是面向对象的程序设计,与以前的编程方法相比具有更好的可复用性、可扩展性和可管理性,能够更好地适应当今软件开发在规模、复杂性、可靠性、质量和效率上的种种需求。Delphi 7.0还提供了大量的可视化组件,可视化编程功能强[3,4]。

Delphi提供了几个数据库工具以辅助数据库应用程序的开发,从而为创建功能强大的应用程序带来极大方便。

2 总体设计

2.1 功能模块

如图1所示。

2.2 功能描述

(1)住宿管理:住宿登记、追加押金、调房登记、退房结账。

(2)客房管理:客房设置、客房查询、房态查看。

(3)查询统计:住宿查询、退房查询、宿费查询。

(4)系统设置:初始化、密码设置、权限设置。

(5)日结设置:客房销售报表、客房销售统计。

(6)挂账管理:客户结帐、挂账查询。

(7)安全管理:数据管理、备份与恢复。

3 设计及部分功能实现

3.1 数据库

该系统采用了SQL Server 2000数据库,数据库名称为zsgl,数据库包含以下几个表:客房基本信息表kf、登记表djb、密码表ma、权限设置表qxsz、退房登记表tfdj、挂账明细表gzmx。

3.2 主程序窗口界面

程序启动后,在系统登录界面验证完操作员及密码后,将进入主程序界面。主程序界面要实现:

(1)选择菜单活工具栏,调用相应程序,进行相应操作。

(2)根据操作员不同,确定操作员相应的权限。

主窗体采用多文档界面(MDI)模式,在主窗体中添加菜单、状态栏、工具栏等组件,设置主窗体界面。

3.3 住宿登记

程序启动后,选择“客人入住”菜单下的“散客入住”和“团客入住”项,将进入住宿登记模块。该模块主要实现如下功能:

(1)自动生成住宿登记凭证号码。

(2)提供空房间供用户选择。

(3)实现客人住宿登记,收取客人预交宿费。

(4)自动计算折前宿费、实际宿费、宿费提醒时间、退宿时间。

住宿登记的部分代码如下:

3.4 退房结账

该模块可以对住宿宾客进行结帐处理,在这其中包括了免费和退单处理。

4 结语

该宾馆住宿管理系统已在Delphi 7.0平台上实现,运行效果良好,可应用于宾馆旅店的日常管理,能明显提高工作效率,实现预期功能。

摘要:使用Delphi 7.0开发平台和SQL Server后台数据库进行系统构建,实现了快速开房、查询、结帐、统计、数据备份等功能。

关键词:宾馆住宿,客房管理,Delphi,SQL Server

参考文献

[1]刘欣.基于B/S结构的宾馆酒店管理系统设计与实现[D].吉林大学,2011,5.

[2]张鹏飞.宾馆管理信息系统的设计与实现[D].同济大学,2006,5.

[3]张春林,马成勇,刘均.Delphi7数据库系统设计与开发[M].北京:清华大学出版社,2003.

[4]张莉,王强.SQL Server数据库原理及应用教程[M].北京:清华大学出版社,2003.

Delphi平台 篇2

Delphi由Borland公司推出的Delphi是全新的可视化编程环境, 是一种方便、快捷的Windows应用程序开发工具。Delphi拥有一个可视化的集成开发环境 (IDE) , 采用面向对象的编程语Object Pascal和基于部件的开发结构框架。Delphi提供了500多个可供使用的构件, 利用这些部件, 我们可以快速地构造出应用系统。为嘛也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。它的数据处理工具BDE是一个标准的中介软件层, 可以用来处理当前流行的数据格式, 如x Base、Paradox等, 也可以通过BDE的SQLLink直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。

它的主要优点有:直接编译生成可执行代码, 编译速度快;支持将存取规则分别交给客户机或服务器处理的两种方案, 而且允许开发人员建立一个简单的部件或部件集合, 封装起所有的规则;提供了许多快速方便的开发方法, 使开发人员能用尽可能少的重复性工作完成各种不同的应用;并且具有可重用性和可扩展性和强大的数据存取功能。拥有强大的网络开发能力。

2 Delphi在企业应用信息系统简易开发平台的设计与应用

根据平台实现方案, 系统包括通用组织权限相关模块、模板单元、自定义控件和常用函数库、平台开发指南和编程规范四个部分。通用组织权限相关模块主要包括组织机构维护模块、权限分配和维护模块、功能维护模块、菜单维护模块、登录管理模块和基础信息管理模块;模板单元部分平台使用者可以通过简单的拷贝方式获取整个form窗体的前台界面和后台代码, 并在此基础上进行少量修改得到可以使用的from窗体。自定义控件部分以控件包的形式提供了条件生成器、字段选择器等十几种控件, 而常用函数库以单元的形式直接包含在目标项目工程中, 供平台使用者自由调用;平台开发指南和编程规范的目的是为了保证同一平台开发的程序代码具有一致的架构层次和编程风格。因此本系统专门制定了开发指南和编程规范来指导程序员的开发工作, 同时也可以作为代码走查和同级评审的重要依据。开发指南主要包括下列几个方面:本平台模版、自定义控件、常用函数使用指南、Delphi程序员代码编写标准指南、Delphi数据库开发指南、Delphi组件开发指南、异常处理全局异常处理机制和事务管理指南。

2.1 相关模块、模板单元设计

⑴通用登录模块。系统登录是数据库应用系统的入口, 一般情况下系统默认有一个管理员帐号 (admin) 帐号, 可以操作权限分配模块。用户在输入帐号和密码后, 系统根据操作员表核对帐号和密码是否正确。如果不正确, 则返回界面让操作者重新录入, 若录入三次还是不正确, 系统就自动退出, 以保证系统安全。帐号和密码都正确, 则在用户登录记录表中登记后, 设置一些和用户有关的全局变量, 并创建和打开主窗口。

⑵菜单维护模块。在应用主窗体创建事件中, 首先系统根据功能表自动生成Delphi功能管理组件TAction List的功能列表, 然后依据TAction-List的功能列表和后台数据库功能表自动生成主窗口的TMain-Menu菜单项和Tree View控件子项, 并根据登录帐号在权限登录表的权限确定菜单项是否可以操作, 同时自动生成工具条按钮, 按用户所拥有的权限设置按钮的Enabled属性决定其是否可用。

⑶组织维护模块。提供一个通用的企业组织结构管理模块, 包括企业机构设置、人员管理等。适用于企业的组织机构包含公司、部门、岗位、人员的设置的情况, 当然不必包含上面所有四种类型, 可以只包括岗位、人员设置等。如果机构的设置除了上面四种外, 还有其他设置, 可以适当修改程序就能满足要求。

⑷权限维护模块。为系统提供一个通用的权限管理模块, 控制用户对系统功能和主窗口上的菜单控件、树形控件以及命令按钮等的访问控制。

模板单元, 可以向程序员提供一种代码生成功能, 就是拷贝粘贴的方式, 即把代码模板的代码首先全盘拷贝过来, 然后根据自己的需要对代码进行修改。可以认为模板单元是一个小的功能节点的最标准实现, 完全可以作为其他更复杂功能节点的开发起点。该平台为平台使用者提供十几种模版, 涉及数据库的添加、修改、删除、查询、分类统计以及报表的输出等, 覆盖应用系统的方方面面, 对开发人员特别是资历不深的程序员有较大的参考价值。

2.2 自定义控件和常用函数库

函数库包含在一个名为xths.pas的Delphi单元里, 共有一百多个函数。来源有两条, 一条是作者自己开发的, 另一条是通过网络搜集、甄选消化后加入函数库的, 主要目的是较大幅度的提高编程效率和代码复用率。

在一定程度上, Delphi解决了数据库应用系统开发面临的诸多问题, 大大提高了系统代码的复用程度, 已经成为我们中心小型数据库系统开发的必备工具和技术支撑。

摘要:中国的企业信息化又具有巨大的市场需求, 企业对管理的信息化要求越来越迫切, 应用管理软件功能也在不断地细分, 必须快速开发大量的中小型企业管理信息系统, 该文主要探讨基于Delphi的企业应用信息系统简易开发平台的设计与实现。

关键词:Delphi,企业应用信息系统,简易开发平台,设计与应用

参考文献

[1]陈省.Delphi深度探索[M].北京:电子工业出版社, 2004.[1]陈省.Delphi深度探索[M].北京:电子工业出版社, 2004.

Delphi简易权限设置方法 篇3

首先建一操作员表“operator”,有四个主要字段名称:“char (10)”、“password:char (10)”、“privilege:integer”和“ismanager:boolean”,分别表示用户姓名、口令、权限和是否为系统管理员。

Delphi中的每个控件都有一个属性tag,该属性的值默认为0,现在将系统中的每个功能项对应的控件(比如菜单项)的tag按以下规律设置:

第一项:1 (二进制00001);第二项:2 (二进制00010);第三项:4 (二进制00100);……;第n项:2n-1(即其二进制的第n位为1)。

operator表中某用户的权限为他能操作的所有菜单项tag值之和。如只能操作第一项,其privilege=1;只能操作二、三项,其Privilege=2+4=6……

利用位“与运算”来决定系统中各菜单项或功能按钮是否有效,即当前登录用户是否有权操作此项功能。结果不为0表示有效,否则无效。

2 授权

当用户登录系统后,取出其privilege值和每一个菜单项的tag进行“与运算”,结果不为0者,即令该菜单项有效,否则令其无效,这样就决定了此用户的操作权限。

授权代码示例如下:

3 权限设置

建一个form放置若干checkbox控件,设置每个checkbox的caption和tag属性与相应菜单项的caption和tag一样,在保存设置时,遍历form上的所有checkbox,将被选中者的tag属性值累加写入operator表的privilege字段,即完成了权限设置。

权限设置代码示例如下:

4结语

本文介绍的方法应用于功能简单,安全性要求不是很高的系统中十分方便。同时还可以将权限数据privilege适当加密以增强安全性。本文示例用的是两级菜单,可以扩展其级数,利用递归遍历进行授权。

参考文献

[1]吕宗智,汪世攀,王晟等.Delphi实用技术精粹[M].北京:人民邮电出版社,2000.

[2]邓毅,李华,李涵等.Delphi4.0入门与提高[M].北京:清华大学出版社,1999.

Delphi自定义控件设计 篇4

关键词:控件,自定义控件,Delphi控件

Delphi语言受众多程序员追捧,主要原因之一就是它有很多第三方的控件可供使用。很多资深的Delphi程序员都把自己积累的函数、过程等设计成控件,以方便使用,提高开发效率。

本文通过一个只允许输入数字、并且可以设置输入值范围和小数点位数的编辑框控件的设计,详细介绍了控件的实现方法。该控件继承自edit控件,控件单元名称为NumEdit,控件类名称为TNumEdit。控件的实现主要分为4个阶段:

(1)建立控件原型。

(2)设计控件功能代码。

(3)设计控件图标。

(4)安装发布控件。

下面对这四个阶段进行详细讲解。

1 建立控件原型

可以通过Delphi向导建立控件原型。通过Delphi菜单“File-New-Other”打开“New Items”对话框,然后在New属性页中选择“Component”,点击“OK”,弹出“New Component”对话框,在该对话框中设置控件的基本信息,如图1。

Ancestor type:选择控件要继承的类,选择“TEdit(StdC-trls)”。

Class Name:要创建的控件的类名称,我们设置为“TNumEdit”。

Palette Page:该自定义控件发布后将要停靠的控件面板。

Unit file name:该控件代码存放路径。

设置好上面信息后,点“OK”按钮,向导自动生成最原始的控件代码,如下:

到目前为止,控件TNumEdit已经具备了Tedit编辑框的所有功能,下面就可以在这个基础上设计需求的功能了。

2 设计控件功能

(1)只允许输入数字。

(2)可以设置输入范围,即可以设置输入数字的最小、最大值。

(3)可以设置输入数字的小数点位数。

基于上面需求,控件需要做如下几个方面处理:

(1)继承控件接收的按键事件,如果按的不是数字键直接返回。

(2)增加控件可以接收的最大值Max、最小值属性Min。

(3)增加控件小数点设置的属性dotnum。

(4)响应控件焦点离开消息(cm_exit),在这里处理控件中录入的内容,使其大于Min、小于Max且小数点位数等于dotnum。

下面结合该控件代码,通过代码的注释详细地讲解处理过程。

3 设计控件图标

Delphi控件要使用一个图标显示在Delphi的控件面板上供开发者使用(由上面设计可知,该控件要显示在Delphi控件面板的samples面板上),控件的图标有如下要求(注意图标文件名和图标名称的区别,下面有讲述):

(1)图标文件名称为dcr(后缀名为dcr)格式,该类文件可认为是图标的容器,其中可以包含多个图标。

(2)图标文件名要与控件单元的文件名一致,如该控件的图标文件名应该为NumEdit.dcr。

(3)图标名称要与控件类名称一致。如本控件的图标名称应该为TNumEdit。

(4)图标文件要与控件单元文件位于同一目录下,这样发布控件时候才能关联到一块。

下面通过用Delphi自带的工具image editor设计本控件的图标来介绍控件图标的设计,步骤如下:

(1)通过Delphi的菜单“tools-image editor”打开图标编辑工具。

(2)通过file-new-component resource file(.dcr)建立一个图标文件。把它保存在NumEdit.pas相同目录下,名称为:NumEdit.dcr。此时image-editor如图2所示。

(3)在图2中,鼠标右键点“Contents”,然后在弹出的菜单中选择“new-Bitmap”打开“Bitmap Properties”框,设置属性后点“OK”即可创建一个默认名称为“bitmap1”的位图,把其名称修改为“TNumEdit”,并双击打开,然后通过画笔等工具设计该位图,示意如图3所示。

设计位图根据自己的喜好,这里做简单的设计,设计好后保存即可。至此,该控件对应的图标已经设计好。

4 安装发布控件

目前已经完成了控件的设计,该控件包含两个文件,代码文件NumEdit.pas和图标文件NumEdit.dcr。下面介绍如何把该控件安装到Delphi的控件面板上供开发者使用,步骤如下:

(1)把这两个文件拷贝到指定目录下,对于自定义控件,作为一种好的开发习惯,一般在Delphi安装目录下建立custom目录并把自定义控件拷贝过去。这里也建立customnumedit目录,然后把该控件的文件拷贝到该目录下,如下:

(2)在Delphi库中增加该控件的路径。通过菜单:

“tools-environment-options”打开“environment-options”对话框,选择“library”属性页,然后单击“library path”后的选项按钮打开“Directories”对话框,在该对话框中手工录入或者通过选项按钮把控件路径填写进去,如图4所示。

点击“Add”按钮,点击“OK”,回到“environment-options”对话框,再点击“OK”完成库文件路径添加。

(3)控件安装。通过前两步的处理,就可以安装控件了,通过菜单“Component-Install Component”打开控件安装对话框,点击“into existing package”属性页中的“unit file name”后的“Browse”按钮,选中要安装的控件文件NumEdit.pas,然后点“OK”按钮即可。系统提示是否编译,选择编译后便可以把该控件安装到Delphi的控件面板,如图5所示。

至此已经完成了一个控件从最开始的需求分析到最终发布使用的全部过程。

Delphi程序开发特点分析 篇5

我们经常会问这样的问题:“到底什么使得Delphi如此优秀?”和“为什么和别的编程工具相比,我更愿意选择Delphi?”等等。简而言之就是:高效性。决定一个软件开发工具效率的因素归结为以下五点:(1)可视化开发环境的性能。(2)编译器的速度和已编译代码的效率。(3)编程语言的功能及其复杂性。(4)数据库结构的灵活性和可扩展性。(5)框架对设计和使用模式的扩充。

2. Del phi的特点

2.1 可视化集成开发环境

可视化开发环境通常分为三个组成部分:编辑器、调试器和窗体设计器。和大多数现代RAD(快速应用开发)工具一样,这三部分是协同工作的。当你在窗体设计器中工作时,Delphi在后台自动为你正在窗体中操纵的控件生成代码。你还可以自己在编辑器中加入代码来定义应用程序的行为,同时还可以在同一个编辑器中通过设置断点和监控点等来调试程序。

在版本5里,Delphi的调试器具备了许多先进的功能,如远程调试、过程关联、DL断口包调试、自动本地监控以及CPU窗口等。Delphi还支持在调试时随意放置和停靠窗口并把这一状态保存为命令的桌面设置。由此,Delphi的IDE实现了对调试功能的良好支持。对RAD工具(如Delphi、Visual Basic、C++Builder和Power Builder等)来说,窗体设计器是一项独特的功能。一些更为经典的开发环境,如VC++和BC++,都提供了对话编辑器,但却没有将窗体设计器集成到开发流程中,没有窗体设计器将会降低开发工具的整体效率。几年来,Delphi与Visual Basic在完善窗体设计器的功能方面展开了激烈的竞争。Delphi的窗体设计器的与众不同之处在于,Delphi是建立在一个真正面向对象的框架结构基础之上的。这样,你对基类所做的改变都将会传递给所有的派生类。这里涉及的一项关键技术就是VFI(visual form inheritance),即可视化窗体继承。VFI技术使你能够动态地继承当前项目或对象库中的任何其他窗体。一旦基窗体发生改变,派生的窗体会立即予以更新。

2.2 编译器的速度和已编译代码的效率

Pascal编译器最著名的特点就是速度快,而Delphi正是建立在这种编译器的基础之上的。事实上,它可能是针对windows的最快的高级语言本地代码编译器。以往速度很慢的C++编译器在近年来取得了很大的进步,增加了链接和各种缓存策略,尤其是在VISua1C++和C++Builder中。但即便如此,C++的编译器还是比Delphi的慢了几倍。Delphi和C++Builder共享同一种编译器后端,是一个公司的产品,因此生成的代码等效于由一个优秀的C++编译器生成的代码。

2.3 编程语言的功能及其复杂性

C++是非强类型语言,有些错误编译器无法发现。Object Pascal和Java很相似,它们很好地把握住了复杂性和功能性的平衡。它们都采取了这样一种途径,即限制其可用功能以加强开发者的逻辑设计。例如,两者都避免了完全面向对象但却容易被滥用的多重继承的观念,而是实现了一个执行多重接口功能的类。两者都不支持美观却危险的操作符加载。两者都有一些强大的功能,诸如异常处理、运行期类型信息(RTT工)和生存期内存自管理字符串。特别是运行期类型信息(RTTI),对我们设计仿真培训系统中的操作站与现场站很重要,用它我们可根据组态数据库的数据在运行期自动创建组件和自动识别组件而赋给相应的数据。同时,Delphi使用编程语言是Object Pascal,是面对对象、强类型语言。有利编制稳健的应用程序,减少调试、检错时间以提高开发效率;有利描述真实世界的事物和系统,如控制系统、工艺数学模型。

2.4 数据库结构的灵活性和可扩展性

由于Borland缺少一种数据库计划,因此Delphi保留了我们认为是所有工具中最灵活的数据库结构。对大多数基于本地、客户服务器和ODBC数据库平台的应用程序来说,BDE的功能都非常强大。如果你对此不满意,可以避开使用BDE以支持新的本地ADO组件。如果你没有装ADO,可以自己创建数据访问类或者购买第三方数据访问解决方案。此外,MIDAS使对数据源的多层访问更易于实现。而Microsoft的工具(ODBC、OLEDB或者其他)从逻辑上来说趋向于支持Microsoft自己的数据库和数据访问解决方案。

2.5 框架对设计和使用模式的扩充

这是一项经常被其他软件设计工具忽略了的重要功能。VCL是Delphi最重要的组成部分。在设计时操纵组件、创建组件、使用面向对象技术继承其他组件的行为,这些能力都是决定Delphi效率的关键因素。在许多场合,编写VCL组件都采用固定的00设计方法。相比之下,其它基于组件的框架经常过于死板或过于复杂。比如Active X控件具有和VCL控件相同的设计期性能,但却不能被继承以创建一个具有其他不同行为的新类。传统的类框架,如OWL和MFC,需要你有大量的内部结构知识,而且如果没有RAD工具的设计期支持,其功能将会受到抑制。

3. Del phi的事件驱动机制

3.1 无约定编程

与传统的Windows消息机制相比,Delphi的事件处理机制的最大优势在于所有的事件都是无约定的。对程序员而言,无约定就是指可以在事件处理程序中什么都不干。而在传统的Windows消息机制中,就不得不调用基类的消息处理程序,还要把信息回传给Windows。当然,Delphi的事件处理机制的无约定的编程方式可能无法对消息进行直接的灵活有效的处理,你要受制于谁引发了这一事件以及应用程序对这一事件要做出什么响应等。例如,可以在On Key Press处理程序中修改和取消击键,但on Resize事件处理程序却只能提供这一事件已发生的通知而无法进一步防止或控制尺寸的改变。

不过,Delphi仍然允许在事件处理程序中直接处理Windows消息。只是这就不像事件处理机制那么简单,因为消息处理需要程序员对要处理的消息有详细了解。可以通过message这个关键字处理所有Windows消息。使用Delphi开发应用程序的好处是,你既可以用高级的、易于理解的方式来编程,也可以在需要时直接访问低层的信息。

3.2 Delphi的VCL消息系统

所有的Delphi类有一个处理消息的内置机理,称之为消息处理方法或者Message handlers。Message handlers的基本思想就是:类获取一些种类的消息,然后再分发(dispatch)它们,由响应的处理函数或者过程进行处理(调用哪一个处理函数或过程取决于所接受的消息)。对于一个特殊的消息,如果没有一个指定的方法存在的话,则由一个缺省的消息处理。

VCL定义了消息分发系统,该系统将所有的windows消息(包括用户定义的消息)传递给相应的对象,由各对象的消息分发系统进行处理。VCL对象用于接收消息的方法叫做Main Wnd Proc()。通过Main Wnd Proc()可以对消息进行任何特殊的处理。不过,一般情况下很少直接调用Main Wnd Proc()来处理消息,除非不想让消息通过VCL的消息系统分发。从Main Wnd Proc()返回后,消息被传递给对象的Wnd Proc()方法,这就是该对象的窗体过程,然后进入VCL的分发机构。分发机构使用Dispatch()方法把消息分发给一个消息句柄。消息到达该消息的处理句柄(Handler)后,经过该句柄的处理,这个消息处理过程就结束了。没有必要改变这个消息分发机理,所要做的只是产生一个消息处理方法或者句柄,即一个消息处理函数。

3.3 加速原型化

当对Delphi使用了一段时间后,即使你只是一个Delphi新手,你也会发现,用Delphi编写第一个项目就能马上获益:开发周期短、应用程序稳健。设计用户界面(UI)是许多windows程序员头疼的问题,而这恰好是Delphi的长处。用户界面的设计和程序的布局被称为原型化。在非可视化的开发环境中,应用程序的原型化经常比真正实现程序的时间还要长。一个简洁直观、令人愉悦的用户界面是应用程序的一大部分。

Delphi能够用它的自定义控件或自己开发的控件来快速建立您需要的用户界面。当你能熟练运用窗口、控件和事件响应方法以后,将发现过去要花很大精力的原型化工作现在大大简化了。同时,用Delphi开发的用户界面丝毫不比用传统的开发工具建立的用户界面逊色。在Delphi中你在设计期看到的往往就是最终的产品。

4. 结束语

综上所述,大家可发现Delphi 5本身就是一个功能十分强大的面向对象开发平台,它的可视组件库VCL(Visual Component Library)是一个易学、易用、高效的可重用的软件对象,还包含有丰富的数据库应用,通讯组件。Delphi自身就是使用VCL编写而成的;不仅界面开发方便迅速,而且对于系统所带组件和自编组件的运用就如同组态一样。只要将组件放置在窗体中,用鼠标移动到你要求的位置,改变某些属性以满足你的要求。

参考文献

[1]黄文兰.Delphi语言开发教务管理系统[J].电脑知识与技术,2006,(20).

[2]向继文.Delphi与汇编语言的混合编程[J].吉林大学学报(自然科学版),2006,(3).

[3]林瑜华.如何在DELPHI中使用SQL语言[J].福建电脑,2005,(10).

用Delphi开发奖金发放系统 篇6

随着计算机及其网络技术的飞速发展和社会信息化水平的不断提高,利用计算机技术逐步取代传统的手工操作方式,信息技术已成为衡量一个国家、企事业单位发展水平的重要标准。我校实际情况是各个部门、各位教师都配备了微型计算机,在一定程度上提高了办公效率,但有限的技术能力使我们的硬件资源利用率较低。例如:我校的奖金统计工作一直采用传统手工作业方式,操作人员的工作量大,为了保证数据的准确性,通常要进行多次计算,从而导致工作效率低下。

2 需求分析

奖金发放系统是对学校所有教职员工工作量的统计,并计算奖金金额。根据我校实际情况,奖金发放系统应有以下要求:1.数据的保密;2.系统运行稳定;3.具有多种统计查询功能;4.具有报表打印功能。此外还应具有操作简单、界面简洁、符合使用者的习惯等特点。

3 开发工具及数据库

本系统是属于单机版的数据库软件。采用Delphi7.0开发工具,它是一种可视化、面向对象和采用时间驱动程序方式的结构化高级程序设计语言,它是目前开发数据库应用程序的一种强有力的工具。数据库应用程序首先是利用数据库部件与BDE建立联系,然后再通过BDE与数据库联系。数据库系统选择使用SQL Server 2000,主要是因为:首先,SQL Server具有很好的安全性,能够排除所有未经授权的非法用户的访问,确保了SQL Server服务器的安全性;第二,容量庞大,数据表中的记录行数只受服务器硬盘空间的限制。

4 系统设计

4.1 总体框架

根据学校要求和实际情况,设计系统总体框架见图1,系统功能主要体现在各模块上。

4.2 数据库表结构

在数据库的设计中,应用软件工程的思想和方法按照规范设计法进行设计。一般来说,基本表设计应尽量满足规范性的要求,以满足数据的一致性。由于数据的冗余度与数据的一致性成反比,只有冗余最小,一致性才最大,因此基本表的设计的规范性有助于降低数据冗余度,但中间表与临时表以及统计分析表的设计就不用严格遵守3NF范式,因为它们不代表实体,只是用来存储经过处理的统计数据,供分析、查询和报表打印之用。该系统共使用了12个表,由于篇幅有限仅列出以下2个表。

5 奖金发放系统

下面对一些关键性的问题作出具体说明和解决方案。注:以下图片中敏感数据均做了模糊处理。

5.1 系统登录

启动系统的时候,系统会要求用户输入用户名、密码、权限级别。连续3次输入错误,则自动关闭登录对话框。输入正确时,系统根据权限级别给出相应的权限,完全控制、查询、报表输出和仅查询3种不同权限。

5.2 基础数据录入

在使用系统之前需要操作员输入所有课时部门信息、职工信息。由于部门编号、职工编号等信息在数据库中具有唯一性,因此该系统采用了自动编号功能以保证数据的唯一性。

5.3 系统设置

本系统的大部分数据实现自动输入和自动统计的功能,因此在正式使用前要设置以下系统参数。使用过程中,用户要及时地备份数据,以便在恢复数据的时候使用。

5.4 奖金录入

奖金录入分为历月录入和年终录入,用户操作简单,以图2为例选择科室部门和职工姓名,右侧7个文本框,最多需要输入学时数,其他数据均能自动输入,如果输入行政、后勤人员的奖金,不需输入任何数据,直接单击“添加”按钮即可。实现该功能的部分关键代码如下:

5.5 数据查询

该系统具有灵活的查询系统,1)查询各科室的奖金发放和课时数据。2)按姓名或拼音代码查询每次奖金数据。3)查询全校奖金发放数据(仅具有最高权限用户可用)。

5.6 报表输出

该模块是奖金系统最重要的一部分,分为四部分1)历月分组明细,统计每月每科室奖金发放明细。2)历月汇总报表,统计每月各科室奖金总计,全校奖金总计。3)年终个人明细,统计个人一年内所有工作量及各种奖金补贴明细。4)年终汇总数据,统计学校全年发放奖金金额。

6 结语

本系统现已在莱阳卫校投入使用2年多的时间,从使用情况来看,系统运行正常,未发生奖金统计错误,极大提高工作效率,减轻了工作人员的工作负担,并且大大节省了经费的开支。任何一个软件系统,总有一个逐步完善的过程,该系统也是如此,目前还存在着一些问题,如:系统还不能实现局域网内部查询,该系统还需进一步完善和升级,以实现更强大的功能。

参考文献

[1]吕静骅,史进.SQL Server2000基础教程.北京:清华大学出版社,2001.

[2]周兴华,李增民,臧洪光.Delphi7数据库项目案例导航.北京:清华大学出版社,2005.

Delphi操作符重载详解 篇7

操作符无非是一种特殊的函数,其调用方法和普通函数有点区别而已。操作符重载则和普通函数重载的作用类似。但是,由于使用操作符能带来程序的异乎寻常的简单和易懂,而显得不是那么多余了,看看C++的流库中的<<、>>操作符的简明扼要的程序语义就知道了。在编程的世界中,对操作符重载支持最全面的当属C++。

一直以来Delphi社区对Delphi支持操作符重载的呼声很高,在已经发布的Delphi8.net中,实际上已经开始支持操作符重载,由于Delphi9首次同时支持.NET和Win32程序设计,其操作符重载变得更加有普遍性。

Delphi的操作符重载实际上是函数重载的变形,和C++/C#的操作符重载不同,Delphi不支持符号形式的函数名。所以,要声明操作符重载,需要知道操作符的声明形式,当然在使用时,是采用符号形式的。

表1是所有Delphi支持的能重载的操作符的类型、声明形式和对应的语言中的使用的符号形式。特别引起注意的是,赋值操作符没有在这里列出。

2 重载的实现语法

以加法为例看一下程序中怎么应用操作符重载

3 重载的操作符使用方法

下面是重载操作符的使用,和普通的操作符是没有区别的:

4 注意事项

首先,重载的操作符函数属于类函数,即不属于任何一个实例,所以前面加class后跟关键字Operator,然后是对应的操作符声明形式,函数的参数个数要严格按照表上的来定义,类型任意,至于返回类型,除了比较运算符之外,只要符合程序逻辑,可以是任何支持的类型。不过,当作者试图重新定义integer的+时(两个参数,一个返回值都是integer),发现不但返回结果是0,连两个输入参数都变成了0。为了能正确应用操作符重载,应该至少有一个(包括参数和返回类型)的类型是定义这个操作符的类。

一般情况下,对于操作数是不同类型的情况要分别重载不同的函数。系统不能自动进行隐式类型转换,即使定义了隐式类型转换。

至于隐式类型转换,也属于操作符重载的例子,这里就不解释如何使用了。后面的完整测试代码包含了所有类型的操作符重载,没有实现的操作符则请读者补齐。

最后,来看看Delphi操作符重载和C++/C#的区别:

(1)Delphi操作符重载定义要使用规定的函数名字,而不能用符号,C++/C#则直接使用操作符符号作函数名,但是应用的时候则都直接用操作符符号。

(2)Delphi和C#一样,操作符重载都只能定义全局的类函数,C++则可以定义属于类实例的私有操作符重载函数。

(3)C#可以用显式类型转换来支持操作符运算中的其他类参数,而不需要重载对应的操作符函数,Delphi/C++则不行,需要一个个自己定义。

(4)C++几乎可以重载任何操作符,C#则比较少(某些可以转换为其他操作符运算的操作符不再允许重新定义),而且有的要成对定义,Delphi允许重载的更少(Delphi本身的操作符就少),没有成对定义的操作符。

5 完整的测试程序

参考文献

[1]Marco Cantu'.Mastering Borland Delphi 2005.Sybex Press,2005.

[2]杨盛泉,刘白林.Delphi2007程序设计教程.清华大学出版社,2010.

[3]Lippman,Stanley B./Lajoie,Josee/Moo,Barbara E.C++Primer.addison-wesley,2005.

上一篇:五大控制下一篇:锁定加压型钢板系统