为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

VCD租赁管理系统—免费计算机毕业设计论文

2017-10-16 50页 doc 347KB 17阅读

用户头像

is_153723

暂无简介

举报
VCD租赁管理系统—免费计算机毕业设计论文VCD租赁管理系统—免费计算机毕业设计论文 毕业设计 VCD租赁管理系统 院系______ 专业______ 班级______ 姓名______ 日期 年 月 日 中文摘要 VCD租赁管理系统为光盘管理者提供充足的信息和快捷的查询手段,其开发内容主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。利用DELPHI 6.0软件及其提供的各种面向对象的开发工具,建立完整性强、安全性好的数据库,开发出功能完备,易使用的应用程序。经过调试、编译与实现,该程序界面友好、程序设计风格朴素,使用起来美观大方、方便...
VCD租赁管理系统—免费计算机毕业设计论文
VCD租赁管理系统—免费计算机毕业论文 毕业设计 VCD租赁管理系统 院系______ 专业______ 班级______ 姓名______ 日期 年 月 日 中文摘要 VCD租赁管理系统为光盘管理者提供充足的信息和快捷的查询手段,其开发内容主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。利用DELPHI 6.0软件及其提供的各种面向对象的开发工具,建立完整性强、安全性好的数据库,开发出功能完备,易使用的应用程序。经过调试、编译与实现,该程序界面友好、程序设计风格朴素,使用起来美观大方、方便易用。尤其是系统的“查询模块”的功能极大的减轻工作人员的工作量,并以快速、准确等优点取代人工操作,提高了光盘管理工作效率。 关键词 : DELPHI 6.0 信息管理系统 数据库 模块 VCD租赁信息 VCD discs manager for the lease management system to provide adequate information and efficient means enquiries, the development mainly to the establishment and maintenance of databases including background applications and front-end development of the two. Delphi 6.0 and the use of object-oriented software development tools, the establishment of strong integrity, good safety database developed functions, easy to use applications. After debugging, Translation and the realization that the process friendly interface, simple programming style, using up aesthetic generous, convenient user-friendly. In particular system "enquiries module" function greatly reduce the workload of staff, and to the rapid, accurate, and other advantages replace manually operated, and enhanced CDs management efficiency. Keyword : Delphi 6.0 Information Management System database module VCD rental information 引 言 1 1 Delphi语言概述 2 1.1 Delphi简介 2 1.2 数据库系统简介 2 1.3 本应用软件的基本介绍 3 2 本应用程序的构成和开发步骤 4 2.1 可行性研究 9 2.1.1 经济可行性 14 2.1.2 时间可行性 15 2.1.3 技术可行性 16 2.1.4 社会可行性 18 2.2 数据库的建立和连接 20 2.3 系统的总体设计 23 2.4 系统的详细设计 25 3 本程序的技术实现及具体功能 27 3.1 登录的界面与程序设计实现 28 3.2 会员管理界面与代码设计实现及功能 34 3.3 影碟图书界面与代码设计实现43 3.4 还租结算界面与代码设计53 3.5 现金报界面设计与代码设计 65 3.6 会员密码管理界面与代码设计 72 结 论 82 致 谢 83 参 考 文 献 84 引 言 随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活中不可缺少的辅助工具。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特 殊需求的软件。以前开发Windows应用软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在不同了,即使你没有接受过严格的程序设计训练,使用Delphi编程语言也一样能够开发出功能强大、适合自己特殊需求的应用程序了。Delphi编程语言继承了其他语言易学易用的特点,特别适合于初学者学习Windows系统编程。 VCD租赁管理系统用计算机管理VCD租赁的一种计算机应用技术的创新,在计算机还未普及之前VCD租赁管理都是由工作人员人工书写,调阅的方式来操作的.现在一般的光盘租赁管理都采用计算机智能化管理,采用计算机作为工具的实用的计算机订单管理程序来帮助前台管理员进行更有效的光盘出借管理工作。VCD租赁管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过,我们使用 Delphi编程语言开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。 因为本人能力有限,加上时间紧迫,所以设计出来的本系统可能功能比较简单,另外本系统是单机版,不能实现网络互联操作,这些 都有待于我在以后的工作学习中进一步改进。 1 Delphi语言概述 1.1 Delphi简介 Delphi是Inprise公司出品的一个优秀的可视化程序开发工具软件,它短小精悍,但功能却可以与庞大的visual c++ 媲美。它易学易用,如同VB,因而被称为“第四代编程语言”。 从1995年推出Delphi1.0至今已经经历了7个版本,Delphi7.0运行在win9x或winme,win2000,winxp,windowsNT等操作系统下,是一个32位的应用程序开发工具。这里把“VB”比作是傻瓜相机,Delphi是带有自动功能的专业相机。前些年,软件界流行一句话叫“真正的程序员用VC,聪明的程序员用Delphi”。也有的把Delphi称作VB杀手。 1.2 数据库系统简介 数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言,实用程序以及数据库管 理系统。数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这些数据为多个应用服务,独立于具体的应用程序。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据库管理系统是一种系统软件,它的主要功能是维护数据库并有效地访问数据库中任意部分数据。对数据库的维护包括保持数据的完整性、一致性和安全性。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。数据库管理员一般是由业务水平较高、资历较深的人员担任。 数据库系统的个体含义是指一个具体的数据库管理系统软件和用它建立起来的数据库;它的学科含义是指研究、开发、建立、维护和应用数据库系统所涉及的理论、方法、技术所构成的学科。在这一含义下,数据库系统是软件研究领域的一个重要分支,常称为数据库领域。 数据库研究跨越于计算机应用、系统软件和理论三个领域,其中应用促进新系统的研制开发,新系统带来新的理论研究,而理论研究又对前两个领域起着指导作用。数据库系统的出现是计算机应用的一个里程碑,它使得计算机应用从以科学计算为主转向以数据处理为主,并从而使计算机得以在各行各业乃至家庭普遍使用。在它之前的文件系统虽然也能处理持久数据,但是文件系统不提供对任意部分数据的快 速访问,而这对数据量不断增大的应用来说是至关重要的。为了实现对任意部分数据的快速访问,就要研究许多优化技术。这些优化技术往往很复杂,是普通用户难以实现的,所以就由系统软件(数据库管理系统)来完成,而提供给用户的是简单易用的数据库语言。由于对数据库的操作都由数据库管理系统完成,所以数据库就可以独立于具体的应用程序而存在,从而数据库又可以为多个用户所共享。因此,数据的独立性和共享性是数据库系统的重要特征。数据共享节省了大量人力物力,为数据库系统的广泛应用奠定了基础。数据库系统的出现使得普通用户能够方便地将日常数据存入计算机并在需要的时候快速访问它们,从而使的计算机走出科研机构进入各行各业、进入家庭。 1.3 本应用软件的基本介绍 本应用软件先是打开一个启动窗口,就可以进入应用程序的主窗口了。主界面是一个图型界面窗口,整个平台显示采用图标方式,可以非常方便的管理会员、图书影碟、租金结算、影碟查询等基本信息,管理日常经营的基本情况,通过各种条件查询出影碟出借的基本信息,以及打印出查询出的基本信息,总之一切影碟出借基本信息都会显示在系统平台上。另外在屏幕左侧有快捷铵钮,弹出式菜单和主窗口菜单相同,可方便选择,大大提高了管理人员的工作效率。 2 本应用程序的构成和开发步骤 下面从软件的角度介绍本程序的基本开发步骤。Delphi 应用程序一般包含以下三个基本部分: 应用程序运行的接口:负责系统整体环境的设置,运行状态的监视,应用程序的启动等。 应用程序的主体:主要完成用户的业务逻辑功能,如VCD光盘信息,主演,导演信息的录入,用户管理,出借天数等信息. 应用程序的辅助部分:协助程序主体完成的一些工作。 下面从软件工程的角度描述本程序的开发生命周期,开发 过程和组织过程。 2.1 可行性研究 任何一个系统或一项工程,在建立之前,必须首选进行可行性分析,可行性分析包括两层含义,一是可能性,二是必要性。可能性指开发信息系统的条件是否具备,必要性是指客观上是否真正需要,通过可行性研究,可避免盲目投资,减少政治性要的损失。下面从四方面来讨论: 2.1.1 经济可行性 主要是只指算一个新的系统开发所需要的投资费用和运算费用,并与估计的新系统收益进行比较,看是否有利。本系统所需的软硬件成本比较低,投资小,具有一定的通过 性,因此 ,在经济上是可行的。 2.1.2 时间可行性 主要包括系统在目前环境下能否正常运行,运行后所引起的各方面,以及这些变化对社会或人的因素所产生的影响。本系统对人事的管理比较全面,可长期使用。 2.1.3 技术可行性 利用现有的设备,软件及技术人员,新系统的目标能否达到,这也是可行性研究中需要考虑的一个问题。关系型数据库的高速发展使管理信息系统具备了良好的开发环境。本系统使用的Delphi 普及性好,操作简单,用户可以很快掌握使用方法,因此,在技术上是完全可行的。 2.1.4 社会可行性 人类社会文明的发展已进入信息化的高速发展时期,传统的手工方式支持下的管理模式,已经不能满足各方面的需要。开发本系统的目标不仅是提高工作效率,减轻劳动强度,而且减少出错率,具有很好的社会意义。 2.2 数据库的建立和连接 这个程序采用的数据库是Microsoft Access2000,Delphi作为数据库的前台开发工具,必须与后台数据库进行连接,这样才能控制和进行操作数据库,数据库的连接方式有两种,ODBC和ADO。 ODBC是数据库的通用接口,其缺点是效率低;专用接口调用直接速度快,但是通用性差,如果用ODBC连接数据 库一般要两个步骤:1.要创建数据源;2.创建描述文件。数据库的建立则时在access2000中建立的,在这里你可以设置数据库的密码,对数据库进行保护。在创建数据源时可以通过BDE administrator进行创建,也可以通过系统控制面板中的ODBC数据源进行建立。而描述文件则可以在Delphi的主程序中用Database Profile中进行建立,之后进行数据库的连接。接下来的工作是建表。同样建表的过程也不是唯一的,但是最终实现的结果是唯一的。你可以通过Access进行建表,也可以通过在 DELPHI6.0 主程序中建表,也可以通过powerdesigner进行可视化的建立,不过用这种方法,在导入的时候要把数据库要先断开,否则数据库的数据容易丢失。建表的过程注意规范化命名规则,如表的字段名等等。同时也要注意表的字段长度和可否为空。因为以后要设计到主键,外键的问题。如果字段名不同,同一字段长度不同则主键和外键将会连接不上。可见建表时应做好全局的打算。我在程序开发的初期,同样犯了这个错误,导致数据库出错,有时还要向表中新加入字段。导致数据窗口不好用的连锁反映。 2.3 系统的总体设计 这个管理系统从4月1日开始着手设计开发,经过一段时间的分析,并根据对影音店光盘管理的具体要求及需要本软件实现的功能,将本软件分为5个大的模块,分别是:第一部分:系统管理;第二部分:日常统计;第三部分:查询统计模块; 第四部分:帮助其他。 程序流程图如下: 程序登陆 主界面 系 日 查 帮助 统 常 询 管 操 统 计 理 作 2.4 系统的详细设计 进入Access后要做的第一件事就是建立一个数据库。Access提供了6种用构造数据库系统的对象,根据本课题的需要,在这里选择一个空的数据库,命名建立了一个数据库名称为“bysj”,学生档案管理系统。并在此数据库下创建了六个表,用于存放原始数据。它只是存放数据,对其中数据的修改要通过对应的窗体来完成。创建各表的具体结构如下: 1:cashbook表 2:czb表 3czdt表: 4.dw表 5.user表 3 本程序的技术实现及具体功能 3.1 登录的界面与程序设计实现 代码设计: unit long; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ComCtrls, ToolWin, Buttons, StdCtrls, AppEvnts, LabelButton, TradeImage, MaskImageButton, MoveImageButton, TrayBarIcon; type Tfrm_long = class(TForm) palUp: TPanel; palLeftUp: TPanel; imgLeftUp: TImage; palRightUp: TPanel; imgRightUp: TImage; palUpMid: TPanel; imgCaption: TImage; palDown: TPanel; imgLeftDown: TImage; imgRightDown: TImage; imgDownMin: TImage; palLeft: TPanel; palRight: TPanel; imgRight: TImage; imgCloseButton: TImage; imgMinButton: TImage; imgSizeButton: TImage; imgMaxButton: TImage; imgRestoreButton: TImage; imgSysIcon: TImage; popSystemMenu: TPopupMenu; N_Restore: TMenuItem; N_Max: TMenuItem; N_Min: TMenuItem; N_Move: TMenuItem; N_Size: TMenuItem; N_Speater: TMenuItem; N_Close: TMenuItem; palClient: TPanel; lbCaption: TLabel; CoolBarMenu: TCoolBar; ToolBarMenu: TToolBar; imgLeft: TImage; imgColorLeftUp: TImage; imgGrayCaption: TImage; imgGrayMenuBar: TImage; imgGrayRightUp: TImage; imgColorCaption: TImage; imgGrayLeftUp: TImage; imgColorRightUp: TImage; imgRightUp1: TImage; imgLeftUp1: TImage; imgColorMenubar: TImage; Label1: TLabel; Label2: TLabel; e_pass: TEdit; e_zzy: TComboBox; b_ok: TMoveImgBtn; blabel_ok: TLabelBtn; blabel_exit: TLabelBtn; b_exit: TMoveImgBtn; b_edit: TMoveImgBtn; LabelBtn1: TLabelBtn; procedure imgMinButtonClick(Sender: TObject); procedure imgSizeButtonClick(Sender: TObject); procedure imgCloseButtonClick(Sender: TObject); procedure imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure popSystemMenuPopup(Sender: TObject); procedure N_SizeClick(Sender: TObject); procedure N_MoveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure e_zzyChange(Sender: TObject); procedure b_okClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure b_exitClick(Sender: TObject); procedure b_editClick(Sender: TObject); procedure e_passKeyPress(Sender: TObject; var Key: Char); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } canmove:boolean; curPoint:TPoint; oldPoint:TPoint; Canvas:TCanvas; i:integer;//密码循环三次 protected procedure CreateParams(var Params:TCreateParams);override; procedure WMActivate(var Msg:TWMACTIVATE); message WM_ACTIVATE; public { Public declarations } end; var frm_long: Tfrm_long; implementation uses publicvar, passedit, datam, main; {$R *.dfm} procedure Tfrm_long.CreateParams(var Params:TCreateParams); begin inherited CreateParams(Params); if BorderStyle<>bsNone then Params.Style :=WS_THICKFRAME or WS_POPUP or WS_BORDER; end; procedure Tfrm_long.imgMinButtonClick(Sender: TObject); begin if Application.MainForm =self then Application.Minimize else DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); end; procedure Tfrm_long.imgSizeButtonClick(Sender: TObject); begin if self.WindowState = wsNormal then begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); imgSizeButton.Picture :=imgRestoreButton.Picture; end else begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_RESTORE, 0); imgSizeButton.Picture :=imgMaxButton.Picture; end; end; procedure Tfrm_long.imgCloseButtonClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); end; procedure Tfrm_long.imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button=mbLeft)and(ssLeft in Shift)then begin canmove:=true; Canvas:=TCanvas.Create; with Canvas do begin pen.Style :=psdot; brush.Style :=bsClear; pen.Width :=2; Pen.Mode :=pmNotXor; Handle :=GetDC(0); Rectangle(left,top,Left+width,top+height); curPoint.X :=X; curPoint.Y :=Y; oldPoint.X :=Left; oldPoint.Y :=Top; end; //end with end; //end if end; procedure Tfrm_long.imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); oldPoint.x :=Left +X-curPoint.x; oldPoint.y :=Top +Y-curPoint.y; Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); end; end; procedure Tfrm_long.imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); Left :=oldPoint.x; Top :=oldPoint.y; Free; end; canmove:=not canmove; end; procedure Tfrm_long.FormCreate(Sender: TObject); begin lbCaption.Caption :=Caption; dm.ado_user.open; dm.ADO_user.Sort:='编号'; while not dm.ado_user.Eof do begin e_zzy.items.add(dm.ADO_user.fieldbyname('操作员').AsString); dm.ADO_user.Next; end; e_zzy.ItemIndex:=0 end; procedure Tfrm_long.imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PopSystemMenu.Popup(Left+ImgSysIcon.Left,Top+ImgSysIcon.Top+ImgSysIcon.Height); end; procedure Tfrm_long.popSystemMenuPopup(Sender: TObject); begin N_Restore.Enabled :=imgSizeButton.Visible and (WindowState =wsMaximized); N_Max.Enabled :=imgSizeButton.Visible and (WindowState =wsNormal); n_min.Enabled:=imgMinButton.Visible; N_Size.Enabled :=imgSizeButton.Visible ; end; procedure Tfrm_long.N_SizeClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_SIZE, 0); end; procedure Tfrm_long.N_MoveClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MOVE, 0); end; procedure Tfrm_long.FormShow(Sender: TObject); begin if WindowState=wsNormal then imgSizeButton.Picture.Bitmap :=imgMaxButton.Picture.Bitmap else if WindowState=wsMaximized then imgSizeButton.Picture.Bitmap :=imgRestoreButton.Picture.Bitmap end; procedure Tfrm_long.WMActivate(var Msg: TWMACTIVATE); begin if (Msg.Active =WA_ACTIVE) or (Msg.Active =WA_CLICKACTIVE) then begin imgCaption.Picture.Bitmap :=imgColorCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgColorLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgColorRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgColorMenubar.Picture.Bitmap; end else begin imgCaption.Picture.Bitmap :=imgGrayCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgGrayLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgGrayRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgGrayMenubar.Picture.Bitmap; end; end; procedure Tfrm_long.e_zzyChange(Sender: TObject); begin e_pass.Text:=''; e_pass.SetFocus; end; procedure Tfrm_long.b_okClick(Sender: TObject); var kl:variant; pass:string; begin zzyname:=e_zzy.text; kl:=dm.ado_user.lookup('操作员',zzyname,'口令'); if varisnull(kl) then pass:='' else pass:=kl; if e_pass.text=pass then begin i:=i+1; if i>=3 then begin Application.MessageBox(PChar('密码验证错误,拒绝访问~'), PChar(''), MB_ICONEXCLAMATION); Application.Terminate; close; end; application.messagebox(pchar('密码验证错误,重新录入~'),pchar('提示'), MB_ICONQUESTION); e_pass.text:=''; e_pass.SetFocus(); exit; end; dm.ADO_user.Close; frm_long.hide; frm_main:=tfrm_main.create(application); frm_main.showmodal; end; procedure Tfrm_long.FormActivate(Sender: TObject); begin e_pass.SetFocus; end; procedure Tfrm_long.b_exitClick(Sender: TObject); begin close; end; procedure Tfrm_long.b_editClick(Sender: TObject); begin zzyname:=e_zzy.text; frm_passedit:=tfrm_passedit.create(application); frm_passedit.showmodal; end; procedure Tfrm_long.e_passKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin b_ok.OnClick(b_ok); end; end; procedure Tfrm_long.FormClose(Sender: TObject; var Action: TCloseAction); begin dm.ado_user.Close; Application.Terminate; end; end. 3.2 会员管理界面与代码设计实现及功能 代码设计: unit hygl; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, TEMPLETFORM, Grids, DBGrids, LabelButton, TradeImage, ComCtrls, Menus, ToolWin, StdCtrls, ExtCtrls, DBActns, DB, ActnList; type Tfrm_hygl = class(TMyForm) ztl: TStatusBar; DBGrid: TDBGrid; BActionList1: TActionList; DataSetFirst1: TDataSetFirst; DataSetPrior1: TDataSetPrior; DataSetNext1: TDataSetNext; DataSetLast1: TDataSetLast; DataSetDelete1: TDataSetDelete; DataSetInsert1: TDataSetInsert; DataSetEdit1: TDataSetEdit; Action_Help: TAction; palToolbar: TPanel; tiHelp: TTradeImg; tiPrint: TTradeImg; tiLocate: TTradeImg; tiLast: TTradeImg; tiNext: TTradeImg; tiPrior: TTradeImg; tiFirst: TTradeImg; b_tz: TTradeImg; tiDelete: TTradeImg; tiEdit: TTradeImg; tiNew: TTradeImg; LabelBtn1: TLabelBtn; LabelBtn2: TLabelBtn; LabelBtn3: TLabelBtn; blabel_tz: TLabelBtn; LabelBtn4: TLabelBtn; LabelBtn5: TLabelBtn; LabelBtn6: TLabelBtn; LabelBtn7: TLabelBtn; LabelBtn8: TLabelBtn; LabelBtn9: TLabelBtn; LabelBtn10: TLabelBtn; DataSource1: TDataSource; group: TRadioGroup; procedure DataSetInsert1Execute(Sender: TObject); procedure DataSetEdit1Execute(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DataSetDelete1Execute(Sender: TObject); procedure FormShow(Sender: TObject); procedure groupClick(Sender: TObject); procedure tiLocateClick(Sender: TObject); procedure b_tzClick(Sender: TObject); private { Private declarations } public { Public declarations } procedure ztljs; end; var frm_hygl: Tfrm_hygl; zrs,nzs,yzs:integer;//总办证数,年证数,月证数 implementation uses datam, vipedit, vipcx, viptz; {$R *.dfm} procedure tfrm_hygl.ztljs; begin zrs:=dm.ADO_vip.RecordCount; frm_hygl.ztl.panels[1].text:=inttostr(zrs); dm.ADOQuery.Close; dm.ADOQuery.SQL.Clear; dm.ADOQuery.SQL.Add('select count(*) from vip where 证类型="年证"'); dm.ADOQuery.Open; frm_hygl.ztl.panels[3].text:=dm.ADOQuery.Fields[0].AsString; //月证数量 dm.ADOQuery.Close; dm.ADOQuery.SQL.Clear; dm.ADOQuery.SQL.Add('select count(*) from vip where 证类型="月证"'); dm.ADOQuery.Open; frm_hygl.ztl.panels[5].text:=dm.ADOQuery.Fields[0].AsString; //押金合计 dm.ADOQuery.Close; dm.ADOQuery.SQL.Clear; dm.ADOQuery.SQL.Add('select sum(押金) from vip'); dm.ADOQuery.Open; frm_hygl.ztl.panels[7].text:=dm.ADOQuery.Fields[0].AsString+'元'; end; procedure Tfrm_hygl.DataSetInsert1Execute(Sender: TObject); begin inherited; dm.ADO_vip.Append; dm.ADO_vip.FieldByName('性别').AsString:='男'; dm.ADO_vip.FieldByName('证类型').AsString:='年证'; dm.ADO_vip.FieldByName('押金').AsString:='0.00'; frm_vipedit:=tfrm_vipedit.create(application); frm_vipedit.b_ok.tag:=0; frm_vipedit.showmodal; end; procedure Tfrm_hygl.DataSetEdit1Execute(Sender: TObject); begin inherited; frm_vipedit:=tfrm_vipedit.create(application); frm_vipedit.b_ok.tag:=1; //检测会员有无借书 dm.ADO_czdt.Open; dm.ADO_czdt.First; if dm.ADO_czdt.Locate('证号',dm.ADO_vip.fieldbyname('证号').AsString,[]) then begin frm_vipedit.e_id.Enabled:=false; dm.ADO_czdt.Close; end; dm.ADO_czdt.Close; // frm_vipedit.showmodal; end; procedure Tfrm_hygl.FormCreate(Sender: TObject); begin inherited; dm.ADO_vip.Open; dm.ADO_vip.Sort:='证号'; dm.ADO_vip.First; end; procedure Tfrm_hygl.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; dm.ADO_vip.close; dm.ADOQuery.Close; dm.ADOQuery.SQL.Clear; release; end; procedure Tfrm_hygl.DataSetDelete1Execute(Sender: TObject); var mes:string; begin inherited; dm.ADO_czdt.Open; dm.ADO_czdt.First; if dm.ADO_czdt.Locate('证号',dm.ADO_vip.fieldbyname('证号').AsString,[]) then begin mes:='办证会员 <'+dm.ADO_vip.fieldbyname('姓名').AsString +'> 还有租借的图书或影碟未还,不能删除~'; application.MessageBox(pchar(mes),pchar('提示') ,+MB_ICONQUESTION); dm.ADO_czdt.Close; exit; end; dm.ADO_czdt.Close; mes:='是否要删除办证会员< '+dm.ADO_vip.fieldbyname('证号').AsString+' ' +dm.ADO_vip.fieldbyname('姓名').AsString +'>'; if application.MessageBox(pchar(mes),pchar('等待确认') ,+MB_ICONQUESTION+mb_okcancel+MB_DEFBUTTON2)=idok then begin dm.ADO_vip.Delete;//删除会员记录 dm.ADOQ_cx.Close; dm.ADOQ_cx.SQL.Clear; dm.ADOQ_cx.SQL.add('delete from cashbook where 证号='+'"'+dm.ADO_vip.fieldbyname('证号').AsString+'"'); dm.ADOQ_cx.ExecSQL;//删除现金收支记录 dm.ADOQ_cx.Close; dm.ADOQ_cx.SQL.Clear; dm.ADOQ_cx.SQL.add('delete from qk where 证号='+'"'+dm.ADO_vip.fieldbyname('证号').AsString+'"'); dm.ADOQ_cx.ExecSQL;//删除欠款记录 dm.ADOQ_cx.Close; dm.ADO_vip.Delete;//删除会员记录 ztljs; end; end; procedure Tfrm_hygl.FormShow(Sender: TObject); begin inherited; ztljs; dbgrid.SetFocus(); end; procedure Tfrm_hygl.groupClick(Sender: TObject); begin inherited; case group.ItemIndex of 0:dm.ADO_vip.Sort:='证号'; 1:dm.ADO_vip.Sort:='姓名'; 2:dm.ADO_vip.Sort:='办证日期'; end; end; procedure Tfrm_hygl.tiLocateClick(Sender: TObject); begin inherited; frm_vipcx:=tfrm_vipcx.create(application); frm_vipcx.showmodal; end; procedure Tfrm_hygl.b_tzClick(Sender: TObject); begin inherited; frm_viptz:=tfrm_viptz.create(application); frm_viptz.showmodal; end; end. 3.3 影碟图书界面与代码设计实现 代码设计: unit lb; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ComCtrls, ToolWin, Buttons, StdCtrls, AppEvnts, LabelButton, TradeImage, MaskImageButton, MoveImageButton, Grids, DBGrids, DB, Mask; type Tfrm_lb = class(TForm) palUp: TPanel; palLeftUp: TPanel; imgLeftUp: TImage; palRightUp: TPanel; imgRightUp: TImage; palUpMid: TPanel; imgCaption: TImage; palDown: TPanel; imgLeftDown: TImage; imgRightDown: TImage; imgDownMin: TImage; palLeft: TPanel; palRight: TPanel; imgRight: TImage; imgCloseButton: TImage; imgMinButton: TImage; imgSizeButton: TImage; imgMaxButton: TImage; imgRestoreButton: TImage; imgSysIcon: TImage; popSystemMenu: TPopupMenu; N_Restore: TMenuItem; N_Max: TMenuItem; N_Min: TMenuItem; N_Move: TMenuItem; N_Size: TMenuItem; N_Speater: TMenuItem; N_Close: TMenuItem; palClient: TPanel; lbCaption: TLabel; CoolBarMenu: TCoolBar; ToolBarMenu: TToolBar; imgLeft: TImage; imgColorLeftUp: TImage; imgGrayCaption: TImage; imgGrayMenuBar: TImage; imgGrayRightUp: TImage; imgColorCaption: TImage; imgGrayLeftUp: TImage; imgColorRightUp: TImage; imgRightUp1: TImage; imgLeftUp1: TImage; imgColorMenubar: TImage; DataSource1: TDataSource; b_new: TMoveImgBtn; blabel_new: TLabelBtn; b_edit: TMoveImgBtn; blabel_edit: TLabelBtn; b_save: TMoveImgBtn; blabel_save: TLabelBtn; b_del: TMoveImgBtn; bLabel_del: TLabelBtn; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; e_id: TEdit; e_name: TEdit; DBGrid1: TDBGrid; procedure imgMinButtonClick(Sender: TObject); procedure imgSizeButtonClick(Sender: TObject); procedure imgCloseButtonClick(Sender: TObject); procedure imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure popSystemMenuPopup(Sender: TObject); procedure N_SizeClick(Sender: TObject); procedure N_MoveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure e_idKeyPress(Sender: TObject; var Key: Char); procedure b_newClick(Sender: TObject); procedure b_editClick(Sender: TObject); procedure DataSource1DataChange(Sender: TObject; Field: TField); procedure DBGrid1Enter(Sender: TObject); procedure e_nameKeyPress(Sender: TObject; var Key: Char); procedure b_saveClick(Sender: TObject); procedure b_delClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } canmove:boolean; curPoint:TPoint; oldPoint:TPoint; Canvas:TCanvas; protected procedure CreateParams(var Params:TCreateParams);override; procedure WMActivate(var Msg:TWMACTIVATE); message WM_ACTIVATE; public { Public declarations } end; var frm_lb: Tfrm_lb; mes:string; implementation uses datam; {$R *.dfm} procedure Tfrm_lb.CreateParams(var Params:TCreateParams); begin inherited CreateParams(Params); if BorderStyle<>bsNone then Params.Style :=WS_THICKFRAME or WS_POPUP or WS_BORDER; end; procedure Tfrm_lb.imgMinButtonClick(Sender: TObject); begin if Application.MainForm =self then Application.Minimize else DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); end; procedure Tfrm_lb.imgSizeButtonClick(Sender: TObject); begin if self.WindowState = wsNormal then begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); imgSizeButton.Picture :=imgRestoreButton.Picture; end else begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_RESTORE, 0); imgSizeButton.Picture :=imgMaxButton.Picture; end; end; procedure Tfrm_lb.imgCloseButtonClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); end; procedure Tfrm_lb.imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button=mbLeft)and(ssLeft in Shift)then begin canmove:=true; Canvas:=TCanvas.Create; with Canvas do begin pen.Style :=psdot; brush.Style :=bsClear; pen.Width :=2; Pen.Mode :=pmNotXor; Handle :=GetDC(0); Rectangle(left,top,Left+width,top+height); curPoint.X :=X; curPoint.Y :=Y; oldPoint.X :=Left; oldPoint.Y :=Top; end; //end with end; //end if end; procedure Tfrm_lb.imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); oldPoint.x :=Left +X-curPoint.x; oldPoint.y :=Top +Y-curPoint.y; Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); end; end; procedure Tfrm_lb.imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); Left :=oldPoint.x; Top :=oldPoint.y; Free; end; canmove:=not canmove; end; procedure Tfrm_lb.FormCreate(Sender: TObject); begin lbCaption.Caption :=Caption; dm.ADO_lb.Open; dm.ADO_lb.Sort:='编号'; end; procedure Tfrm_lb.imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PopSystemMenu.Popup(Left+ImgSysIcon.Left,Top+ImgSysIcon.Top+ImgSysI con.Height); end; procedure Tfrm_lb.popSystemMenuPopup(Sender: TObject); begin N_Restore.Enabled :=imgSizeButton.Visible and (WindowState =wsMaximized); N_Max.Enabled :=imgSizeButton.Visible and (WindowState =wsNormal); N_Size.Enabled :=imgSizeButton.Visible ; n_min.Enabled:=imgMinButton.Visible; end; procedure Tfrm_lb.N_SizeClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_SIZE, 0); end; procedure Tfrm_lb.N_MoveClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MOVE, 0); end; procedure Tfrm_lb.FormShow(Sender: TObject); begin if WindowState=wsNormal then imgSizeButton.Picture.Bitmap :=imgMaxButton.Picture.Bitmap else if WindowState=wsMaximized then imgSizeButton.Picture.Bitmap :=imgRestoreButton.Picture.Bitmap end; procedure Tfrm_lb.WMActivate(var Msg: TWMACTIVATE); begin if (Msg.Active =WA_ACTIVE) or (Msg.Active =WA_CLICKACTIVE) then begin imgCaption.Picture.Bitmap :=imgColorCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgColorLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgColorRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgColorMenubar.Picture.Bitmap; end else begin imgCaption.Picture.Bitmap :=imgGrayCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgGrayLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgGrayRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgGrayMenubar.Picture.Bitmap; end; end; procedure Tfrm_lb.e_idKeyPress(Sender: TObject; var Key: Char); begin if not ( Key in ['0'..'9',#13,#8]) then Key := #0; if key=#13 then begin e_name.SetFocus(); end; end; procedure Tfrm_lb.b_newClick(Sender: TObject); begin b_save.Tag:=1; e_id.Enabled:=true; e_name.Enabled:=true; e_id.Text:=''; e_name.text:=''; b_new.enabled:=false; blabel_new.Enabled:=false; b_edit.Enabled:=false; blabel_edit.Enabled:=false; b_save.Enabled:=true; blabel_save.Enabled:=true; b_del.Enabled:=false; blabel_del.Enabled:=false; e_id.SetFocus(); end; procedure Tfrm_lb.b_editClick(Sender: TObject); begin dm.ADO_vcd.Open; if dm.ADO_vcd.Locate('小类',e_name.Text,[])=true then begin application.messagebox(pchar('此类别已经使用,不可修改其内容~') ,pchar('提示'),MB_ICONEXCLAMATION); exit; end; dm.ADO_vcd.Close; b_save.Tag:=2; b_save.Enabled:=true; blabel_save.Enabled:=true; e_id.Enabled:=true; e_name.Enabled:=true; b_edit.Enabled:=false; blabel_edit.Enabled:=false; b_new.Enabled:=false; blabel_new.Enabled:=false; end; procedure Tfrm_lb.DataSource1DataChange(Sender: TObject; Field: TField); begin e_id.Text:=dm.ADO_lb.fieldbyname('编号').asstring; e_name.text:=dm.ADO_lb.fieldbyname('类别').asstring; end; procedure Tfrm_lb.DBGrid1Enter(Sender: TObject); begin b_new.Enabled:=true; blabel_new.Enabled:=true; b_edit.Enabled:=true; blabel_edit.Enabled:=true; b_del.Enabled:=true; blabel_del.Enabled:=true; b_save.Enabled:=false; blabel_save.Enabled:=false; e_id.Enabled:=false; e_name.enabled:=false; // e_id.Text:=dm.ADO_lb.fieldbyname('编号').asstring; e_name.text:=dm.ADO_lb.fieldbyname('类别').asstring; end; procedure Tfrm_lb.e_nameKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin b_save.OnClick(b_save); end; end; procedure Tfrm_lb.b_saveClick(Sender: TObject); var bh,lbname:string; begin bh:=e_id.Text; lbname:=e_name.text; if Length(e_id.Text)<2 then begin Application.MessageBox(PChar('编号不能为空或小于2位,请重新录入~') , PChar('提示'),MB_ICONEXCLAMATION); e_id.SetFocus(); exit; end; if b_save.Tag=1 then begin try dm.ADO_lb.AppendRecord([bh,lbname]); except e_id.SetFocus; e_id.text:=''; e_name.Text:=''; mes:='录入错误~'+#13+#13+'注意:<编号>、<类别名>均不能为空' +#13+' 且不可重复,请重新录入~'; application.messagebox(pchar(mes),pchar('提示'),MB_ICONEXCLAMATION); exit; end; dm.ADO_lb.Sort:='编号'; e_id.text:=''; e_name.Text:=''; e_id.SetFocus(); end else begin dm.ADO_lb.Edit; dm.ADO_lb.fieldbyname('编号').AsString:=bh; dm.ADO_lb.fieldbyname('类别').AsString:=lbname; try dm.ADO_lb.Post; except mes:='录入错误~'+#13+#13+'注意:<编号>、<类别名>均不能为空' +#13+' 且不可重复,请重新录入~'; application.messagebox(pchar(mes),pchar('提示'),MB_ICONEXCLAMATION); dm.ADO_lb.Cancel; exit; end; dm.ADO_lb.Sort:='编号'; end; end; procedure Tfrm_lb.b_delClick(Sender: TObject); begin dm.ADO_vcd.Open; if dm.ADO_vcd.Locate('小类',e_name.Text,[])=true then begin application.messagebox(pchar('此类别已经使用,不可删除~') ,pchar('提示'),MB_ICONEXCLAMATION); exit; end; dm.ADO_vcd.Close; mes:='是否要删除类别<'+dm.ADO_lb.fieldbyname('类别').AsString +'>'; if application.MessageBox(pchar(mes),pchar('等待确认') ,+MB_ICONQUESTION+mb_okcancel)=idok then dm.ADO_lb.Delete; end; procedure Tfrm_lb.FormClose(Sender: TObject; var Action: TCloseAction); begin dm.ADO_lb.Close; release; end; end. 3.4 还租结算界面与代码设计 代码设计: unit vcdhz; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ComCtrls, ToolWin, Buttons, StdCtrls, AppEvnts, LabelButton, TradeImage, MaskImageButton, MoveImageButton, Grids, DBGrids, DB; type Tfrm_vcdhz = class(TForm) palUp: TPanel; palLeftUp: TPanel; imgLeftUp: TImage; palRightUp: TPanel; imgRightUp: TImage; palUpMid: TPanel; imgCaption: TImage; palDown: TPanel; imgLeftDown: TImage; imgRightDown: TImage; imgDownMin: TImage; palLeft: TPanel; palRight: TPanel; imgRight: TImage; imgCloseButton: TImage; imgMinButton: TImage; imgSizeButton: TImage; imgMaxButton: TImage; imgRestoreButton: TImage; imgSysIcon: TImage; popSystemMenu: TPopupMenu; N_Restore: TMenuItem; N_Max: TMenuItem; N_Min: TMenuItem; N_Move: TMenuItem; N_Size: TMenuItem; N_Speater: TMenuItem; N_Close: TMenuItem; palClient: TPanel; lbCaption: TLabel; CoolBarMenu: TCoolBar; ToolBarMenu: TToolBar; imgLeft: TImage; imgColorLeftUp: TImage; imgGrayCaption: TImage; imgGrayMenuBar: TImage; imgGrayRightUp: TImage; imgColorCaption: TImage; imgGrayLeftUp: TImage; imgColorRightUp: TImage; imgRightUp1: TImage; imgLeftUp1: TImage; imgColorMenubar: TImage; group_hy: TGroupBox; Group_hz: TGroupBox; Group_zl: TGroupBox; Group_js: TGroupBox; DBGrid1: TDBGrid; group_zlr: TRadioGroup; Label1: TLabel; e_hyid: TEdit; Label2: TLabel; e_zlname: TEdit; Label3: TLabel; e_zlsex: TEdit; Label4: TLabel; e_zlzlx: TEdit; Label5: TLabel; e_zlyj: TEdit; Label6: TLabel; e_zltel: TEdit; Label7: TLabel; e_vcdid: TEdit; Group_lz: TGroupBox; Label8: TLabel; e_yjid: TEdit; Label9: TLabel; e_yj: TEdit; Label10: TLabel; e_qk: TEdit; e_ys: TEdit; Label11: TLabel; Label12: TLabel; e_ss: TEdit; Label13: TLabel; e_thyj: TEdit; b_ok: TMoveImgBtn; blabel_ok: TLabelBtn; ZTL: TStatusBar; Group_qp: TGroupBox; Label14: TLabel; DataSource1: TDataSource; procedure imgMinButtonClick(Sender: TObject); procedure imgSizeButtonClick(Sender: TObject); procedure imgCloseButtonClick(Sender: TObject); procedure imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure popSystemMenuPopup(Sender: TObject); procedure N_SizeClick(Sender: TObject); procedure N_MoveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormActivate(Sender: TObject); procedure group_zlrClick(Sender: TObject); procedure e_hyidChange(Sender: TObject); procedure e_ssKeyPress(Sender: TObject; var Key: Char); procedure e_thyjKeyPress(Sender: TObject; var Key: Char); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure e_hyidExit(Sender: TObject); procedure e_yjidExit(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure e_vcdidExit(Sender: TObject); procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure e_yjidChange(Sender: TObject); procedure b_okClick(Sender: TObject); procedure e_thyjExit(Sender: TObject); procedure e_ssExit(Sender: TObject); private { Private declarations } canmove:boolean; curPoint:TPoint; oldPoint:TPoint; Canvas:TCanvas; protected procedure CreateParams(var Params:TCreateParams);override; procedure WMActivate(var Msg:TWMACTIVATE); message WM_ACTIVATE; public { Public declarations } procedure ysje;//应收金额计算 procedure hylzcx;//vcdid反查会员零租 end; var frm_vcdhz: Tfrm_vcdhz; sqlz:string; hylzbh:string;//会员或零租证号 implementation uses datam; {$R *.dfm} procedure tfrm_vcdhz.ysje; var ysje,czts:real;//应收金额,出租天数 begin czts:=trunc(Date)-trunc(dm.ADO_czbtmp.FieldByName('出租日期').asdatetime); if czts=0 then czts:=1; ysje:=strtofloat(e_ys.text)+czts*dm.ADO_czbtmp.fieldbyname('出租单价').asfloat; e_ys.Text:=formatfloat('0.00',ysje); end; procedure tfrm_vcdhz.hylzcx;//vcdid反查会员零租 begin dm.ADO_czb.open; dm.ADO_czb.first; if not dm.ado_czb.locate('编号',e_vcdid.Text,[]) then begin application.MessageBox(pchar('无此图书、影碟的出租记录,请检查~') ,pchar('提示'),MB_ICONEXCLAMATION); e_vcdid.text:=''; e_vcdid.setfocus(); exit; end; hylzbh:=dm.ADO_czb.fieldbyname('证号').asstring; if Length(hylzbh)=5 then begin group_zlr.itemindex:=0; group_zlr.onclick(group_zlr); e_hyid.text:=hylzbh; e_hyid.onexit(e_hyid); e_hyid.enabled:=false; e_hyid.color:=cl3dlight; end; if length(hylzbh)=6 then begin group_zlr.itemindex:=1; group_zlr.onclick(group_zlr); e_yjid.text:=hylzbh; e_yjid.onexit(e_yjid); e_yjid.enabled:=false; e_yjid.color:=cl3dlight; end; end; procedure Tfrm_vcdhz.CreateParams(var Params:TCreateParams); begin inherited CreateParams(Params); if BorderStyle<>bsNone then Params.Style :=WS_THICKFRAME or WS_POPUP or WS_BORDER; end; procedure Tfrm_vcdhz.imgMinButtonClick(Sender: TObject); begin if Application.MainForm =self then Application.Minimize else DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); end; procedure Tfrm_vcdhz.imgSizeButtonClick(Sender: TObject); begin if self.WindowState = wsNormal then begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); imgSizeButton.Picture :=imgRestoreButton.Picture; end else begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_RESTORE, 0); imgSizeButton.Picture :=imgMaxButton.Picture; end; end; procedure Tfrm_vcdhz.imgCloseButtonClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); end; procedure Tfrm_vcdhz.imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button=mbLeft)and(ssLeft in Shift)then begin canmove:=true; Canvas:=TCanvas.Create; with Canvas do begin pen.Style :=psdot; brush.Style :=bsClear; pen.Width :=2; Pen.Mode :=pmNotXor; Handle :=GetDC(0); Rectangle(left,top,Left+width,top+height); curPoint.X :=X; curPoint.Y :=Y; oldPoint.X :=Left; oldPoint.Y :=Top; end; //end with end; //end if end; procedure Tfrm_vcdhz.imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); oldPoint.x :=Left +X-curPoint.x; oldPoint.y :=Top +Y-curPoint.y; Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); end; end; procedure Tfrm_vcdhz.imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); Left :=oldPoint.x; Top :=oldPoint.y; Free; end; canmove:=not canmove; end; procedure Tfrm_vcdhz.FormCreate(Sender: TObject); begin lbCaption.Caption :=Caption; dm.adoq_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); dm.ADOQ_czbtmp.ExecSQL; dm.adoq_czbtmp.Close; dm.ADO_czbtmp.Close; end; procedure Tfrm_vcdhz.imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PopSystemMenu.Popup(Left+ImgSysIcon.Left,Top+ImgSysIcon.Top+ImgSysIcon.Height); end; procedure Tfrm_vcdhz.popSystemMenuPopup(Sender: TObject); begin N_Restore.Enabled :=imgSizeButton.Visible and (WindowState =wsMaximized); N_Max.Enabled :=imgSizeButton.Visible and (WindowState =wsNormal); N_Size.Enabled :=imgSizeButton.Visible ; n_min.Enabled:=imgMinButton.Visible; end; procedure Tfrm_vcdhz.N_SizeClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_SIZE, 0); end; procedure Tfrm_vcdhz.N_MoveClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MOVE, 0); end; procedure Tfrm_vcdhz.FormShow(Sender: TObject); begin if WindowState=wsNormal then imgSizeButton.Picture.Bitmap :=imgMaxButton.Picture.Bitmap else if WindowState=wsMaximized then imgSizeButton.Picture.Bitmap :=imgRestoreButton.Picture.Bitmap; e_hyid.SetFocus(); e_ys.Text:='0.00'; e_ss.Text:='0.00'; e_thyj.Enabled:=false; e_thyj.Color:=cl3dlight; e_thyj.Text:='0.00'; end; procedure Tfrm_vcdhz.WMActivate(var Msg: TWMACTIVATE); begin if (Msg.Active =WA_ACTIVE) or (Msg.Active =WA_CLICKACTIVE) then begin imgCaption.Picture.Bitmap :=imgColorCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgColorLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgColorRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgColorMenubar.Picture.Bitmap; end else begin imgCaption.Picture.Bitmap :=imgGrayCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgGrayLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgGrayRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgGrayMenubar.Picture.Bitmap; end; end; procedure Tfrm_vcdhz.FormActivate(Sender: TObject); begin ztl.Panels[1].Text:=' 当前日期:'+datetostr(date()); end; procedure Tfrm_vcdhz.group_zlrClick(Sender: TObject); begin dm.adoq_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); dm.ADOQ_czbtmp.ExecSQL; dm.adoq_czbtmp.Close; dm.ADO_czbtmp.Close; dm.ADO_czbtmp.Open; e_qk.Text:='0.00'; e_ys.Text:='0.00'; e_ss.Text:='0.00'; e_thyj.Text:='0.00'; //删除czbtmp CASE GROUP_ZLR.ItemIndex OF 0:BEGIN GROUP_HY.Visible:=true; e_hyid.Enabled:=true; e_hyid.SetFocus(); group_lz.Visible:=false; group_qp.Visible:=false; e_yjid.Text:=''; e_yj.Text:='0.00'; e_ss.Enabled:=true; e_ss.Color:=clwindow; e_thyj.Enabled:=false; e_thyj.Color:=cl3dlight; end; 1:begin GROUP_HY.Visible:=false; group_qp.Visible:=false; group_lz.Visible:=true; e_zlname.Text:=''; e_zlsex.Text:=''; e_zlzlx.Text:=''; e_zlyj.Text:=''; e_zltel.Text:=''; e_ss.Enabled:=true; e_ss.Color:=clwindow; e_thyj.Enabled:=true; e_thyj.Color:=clwindow; e_hyid.Text:=''; e_yjid.Enabled:=true; e_yjid.SetFocus(); end; 2:begin GROUP_HY.Visible:=false; group_lz.Visible:=false; group_qp.Visible:=true; e_zlname.Text:=''; e_zlsex.Text:=''; e_zlzlx.Text:=''; e_zlyj.Text:=''; e_zltel.Text:=''; e_hyid.Text:=''; e_yjid.Text:=''; e_yj.Text:='0.00'; e_ss.Enabled:=false; e_ss.Color:=cl3dlight; e_thyj.Enabled:=false; e_thyj.Color:=cl3dlight; e_vcdid.SetFocus(); //生成租借临时库 dm.adoq_czbtmp.Close; dm.adoq_czbtmp.SQL.Clear; sqlz:='insert into czbtmp select * from czb where 证号='+'"'+'亲朋'+'"'; dm.adoq_czbtmp.SQL.Add(sqlz); dm.adoq_czbtmp.ExecSQL; dm.ADO_czbtmp.close; dm.ADO_czbtmp.Open; end; end; end; procedure Tfrm_vcdhz.e_hyidChange(Sender: TObject); begin e_zlname.Text:=''; e_zlsex.Text:=''; e_zlzlx.Text:=''; e_zlyj.Text:=''; e_zltel.Text:=''; e_qk.Text:='0.00'; e_ys.Text:='0.00'; e_ss.Text:='0.00'; e_thyj.Text:='0.00'; dm.adoq_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); dm.ADOQ_czbtmp.ExecSQL; dm.adoq_czbtmp.Close; dm.ADO_czbtmp.Close; end; procedure Tfrm_vcdhz.e_ssKeyPress(Sender: TObject; var Key: Char); begin if not ( Key in ['0'..'9',#13,#8,'.']) then Key := #0; end; procedure Tfrm_vcdhz.e_thyjKeyPress(Sender: TObject; var Key: Char); begin if not ( Key in ['0'..'9',#13,#8,'.']) then Key := #0; end; procedure Tfrm_vcdhz.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin key:=#0; perform(wm_nextdlgctl,0,0); end; end; procedure Tfrm_vcdhz.e_hyidExit(Sender: TObject); begin if e_hyid.text='' then exit; if Length(e_hyid.Text)<5 then case Length(e_hyid.Text) of 1: e_hyid.text:='0000'+e_hyid.text; 2: e_hyid.text:='000'+e_hyid.text; 3: e_hyid.text:='00'+e_hyid.text; 4: e_hyid.text:='0'+e_hyid.text; end; if dm.ADO_czbtmp.IsEmpty=false then exit; dm.ADO_czdt.Open; dm.ADO_czdt.First; dm.ADO_czdt.Sort:='证号'; if not dm.ADO_czdt.Locate('证号',e_hyid.Text,[]) then begin Application.MessageBox(PChar('证号错误或无此用户租借记录,请重新录入~') , PChar('提示'),MB_ICONEXCLAMATION); e_hyid.Text:=''; e_hyid.SetFocus(); end else begin dm.ADO_vip.Open; dm.ADO_vip.First; dm.ADO_vip.Locate('证号',e_hyid.Text,[]); e_zlname.Text:=dm.ADO_vip.fieldbyname('姓名').asstring; e_zlsex.Text:=dm.ADO_vip.fieldbyname('性别').asstring; e_zlzlx.Text:=dm.ADO_vip.fieldbyname('证类型').asstring; e_zlyj.Text:=formatfloat('0.00',dm.ADO_vip.fieldbyname('押金').asfloat); e_zltel.Text:=dm.ADO_vip.fieldbyname('电话').asstring; dm.ADO_vip.Close; //生成租借临时库 dm.adoq_czbtmp.Close; dm.adoq_czbtmp.SQL.Clear; sqlz:='insert into czbtmp select * from czb where 证号='+'"'+e_hyid.text+'"'; dm.adoq_czbtmp.SQL.Add(sqlz); dm.adoq_czbtmp.ExecSQL; dm.ADO_czbtmp.close; dm.ADO_czbtmp.Open; //查询有无欠款 dm.ado_qk.open; dm.ado_qk.first; if dm.ado_qk.locate('证号',e_hyid.Text,[]) then e_qk.Text:=formatfloat('0.00',dm.ado_qk.fieldbyname('金额').asfloat); dm.ado_qk.Close; e_vcdid.SetFocus(); end; end; procedure Tfrm_vcdhz.e_yjidExit(Sender: TObject); begin if e_yjid.Text='' then exit; if dm.ADO_czbtmp.IsEmpty=false then exit; dm.ADO_czdt.Open; dm.ADO_czdt.First; dm.ADO_czdt.Sort:='证号'; if not dm.ADO_czdt.Locate('证号',e_yjid.Text,[]) then begin Application.MessageBox(PChar('无此零租用户租借记录,请重新录入~') , PChar('提示'),MB_ICONEXCLAMATION); e_yjid.Text:=''; e_yjid.SetFocus(); end else begin e_yj.Text:=formatfloat('0.00',dm.ADO_czdt.fieldbyname('押金').Asfloat); dm.adoq_czbtmp.Close; dm.adoq_czbtmp.SQL.Clear; sqlz:='insert into czbtmp select * from czb where 证号='+'"'+e_yjid.text+'"'; dm.adoq_czbtmp.SQL.Add(sqlz); dm.adoq_czbtmp.ExecSQL; dm.ADO_czbtmp.close; dm.ADO_czbtmp.Open; dm.ado_qk.open; dm.ado_qk.first; if dm.ado_qk.locate('证号',e_yjid.Text,[]) then e_qk.Text:=formatfloat('0.00',dm.ado_qk.fieldbyname('金额').asfloat); dm.ado_qk.Close; e_vcdid.SetFocus(); end; end; procedure Tfrm_vcdhz.FormClose(Sender: TObject; var Action: TCloseAction); begin dm.adoq_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); dm.ADOQ_czbtmp.ExecSQL; dm.adoq_czbtmp.Close; dm.ADO_czbtmp.Close; dm.ADO_czb.Close; dm.ADO_czdt.Close; dm.ADO_qk.Close; dm.ADO_cash.Close; dm.ADO_vip.Close; dm.ADO_vcd.Close; release; end; procedure Tfrm_vcdhz.e_vcdidExit(Sender: TObject); begin if e_vcdid.Text='' then exit; case group_zlr.ItemIndex of 0:if e_hyid.Text='' then hylzcx; 1:if e_yjid.Text='' then hylzcx; end; if not dm.ADO_czbtmp.Locate('编号',e_vcdid.Text,[]) then begin Application.MessageBox(PChar('用户未租借此图书(影碟),请检查~') , PChar('提示'),MB_ICONEXCLAMATION); e_vcdid.Text:=''; e_vcdid.SetFocus(); exit; end else begin dm.ADO_czbtmp.Edit; dm.ADO_czbtmp.FieldByName('状态').AsString:='已还'; dm.ADO_czbtmp.Post; end; ysje; e_vcdid.Text:=''; e_vcdid.SetFocus(); end; procedure Tfrm_vcdhz.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if dm.ADO_czbtmp.FieldByName('状态').AsString='已还' then DBGrid1.Canvas.Font.Color := clred; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; procedure Tfrm_vcdhz.e_yjidChange(Sender: TObject); begin e_zlname.Text:=''; e_zlsex.Text:=''; e_zlzlx.Text:=''; e_zlyj.Text:=''; e_zltel.Text:=''; e_yj.Text:='0.00'; e_qk.Text:='0.00'; e_ys.Text:='0.00'; e_ss.Text:='0.00'; e_thyj.Text:='0.00'; dm.adoq_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); dm.ADOQ_czbtmp.ExecSQL; dm.adoq_czbtmp.Close; dm.ADO_czbtmp.Close; end; procedure Tfrm_vcdhz.b_okClick(Sender: TObject); begin if (dm.ADO_czbtmp.IsEmpty) or not dm.ADO_czbtmp.Locate('状态','已还',[]) then begin application.MessageBox(pchar('无图书、影碟的还租资料,不能结算~') ,pchar('提示'),MB_ICONEXCLAMATION); exit; end; if group_zlr.ItemIndex=1 then begin if strtofloat(e_thyj.text)>strtofloat(e_yj.Text) then begin application.MessageBox(pchar('退还押金大于原预收押金,请检查~') ,pchar('提示'),MB_ICONEXCLAMATION); exit; end; end; //恢复tsvcd库中已租记录 dm.ADO_czbtmp.First; while not dm.ADO_czbtmp.eof do begin if dm.ADO_czbtmp.FieldByName('状态').AsString='已还' then begin dm.ADO_vcd.Open; dm.ADO_vcd.Locate('编号',dm.ADO_czbtmp.fieldbyname('编号').AsString,[]); dm.ADO_vcd.Edit; dm.ado_vcd.FieldByName('状态').AsString:='未租'; dm.ADO_vcd.Post; dm.ADO_vcd.Close; end; dm.ADO_czbtmp.Next; end; //删除czb中多余记录 case group_zlr.ItemIndex of 0: begin dm.ADOQ_czbtmp.Close; dm.ADOQ_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czb where 证号='+'"'+e_hyid.Text+'"'); dm.adoq_czbtmp.ExecSQL; dm.ADOQ_czbtmp.Close; end; 1:begin dm.ADOQ_czbtmp.Close; dm.ADOQ_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czb where 证号='+'"'+e_yjid.Text+'"'); dm.adoq_czbtmp.ExecSQL; dm.ADOQ_czbtmp.Close; end; end; //添加记录 dm.ADOQ_czbtmp.Close; dm.ADOQ_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('insert into czb select * from czbtmp where 状态='+'"'+'未还'+'"'); dm.adoq_czbtmp.ExecSQL; dm.ADOQ_czbtmp.Close; //判断能否删除czdt记录 dm.ADO_czbtmp.First; if dm.ADO_czbtmp.Locate('状态','未还',[]) then else begin case group_zlr.ItemIndex of 0:begin dm.ADOQ_czbtmp.Close; dm.ADOQ_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czdt where 证号='+'"'+e_hyid.Text+'"'); dm.adoq_czbtmp.ExecSQL; dm.ADOQ_czbtmp.Close; end; 1:begin if strtofloat(e_thyj.Text)=strtofloat(e_yj.Text) then begin dm.ADOQ_czbtmp.Close; dm.ADOQ_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czdt where 证号='+'"'+e_yjid.Text+'"'); dm.adoq_czbtmp.ExecSQL; dm.ADOQ_czbtmp.Close; end; end; end; end; //欠款及现金库写入 case group_zlr.ItemIndex of 0:hylzbh:=e_hyid.Text; 1:hylzbh:=e_yjid.Text; 2:exit; end; dm.ADO_qk.Open; if (strtofloat(e_ys.Text)+ strtofloat(e_qk.Text)-strtofloat(e_ss.Text)>0) or (strtofloat(e_ys.Text)+ strtofloat(e_qk.Text)-strtofloat(e_ss.Text)<0) then begin if not dm.ADO_qk.Locate('证号',hylzbh,[]) then dm.ADO_qk.AppendRecord([hylzbh,(strtofloat(e_ys.Text)+ strtofloat(e_qk.Text)-strtofloat(e_ss.Text))]) else begin dm.ADO_qk.Edit; dm.ADO_qk.FieldByName('金额').AsFloat:=strtofloat(e_ys.Text)+ strtofloat(e_qk.Text)-strtofloat(e_ss.Text); dm.ADO_qk.Post; end; end else begin if dm.ADO_qk.Locate('证号',hylzbh,[]) then begin //dm.ADO_qk.Edit; dm.ADO_qk.Delete; //dm.ADO_qk.Post; end; end; dm.ADO_qk.Close; if e_ss.text<>'0.00' then begin dm.ADO_cash.Open; dm.ADO_cash.AppendRecord([hylzbh,date(),'收租金',e_ss.text]); dm.ADO_cash.Close; end; //退押金 if group_zlr.ItemIndex=1 then begin if strtofloat(e_thyj.text)'0.00' then begin dm.ADO_cash.Open; dm.ADO_cash.AppendRecord([hylzbh,date(),'退零租押金','0.00',e_thyj.text]); dm.ADO_cash.Close; end; end; e_hyid.Text:=''; e_yjid.Text:=''; e_yj.Text:='0.00'; e_zlname.Text:=''; e_zlsex.Text:=''; e_zlzlx.Text:=''; e_zlyj.Text:=''; e_zltel.Text:=''; e_qk.Text:='0.00'; e_ys.Text:='0.00'; e_ss.Text:='0.00'; e_thyj.Text:='0.00'; //删除临时记录 dm.ADOQ_czbtmp.SQL.Clear; dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); dm.adoq_czbtmp.ExecSQL; dm.ADO_czbtmp.Close; e_vcdid.SetFocus(); end; procedure Tfrm_vcdhz.e_thyjExit(Sender: TObject); begin if e_thyj.text='' then e_thyj.Text:='0.00'; e_thyj.Text:=formatfloat('0.00',strtofloat(e_thyj.text)); end; procedure Tfrm_vcdhz.e_ssExit(Sender: TObject); begin if e_ss.text='' then e_ss.Text:='0.00'; e_ss.Text:=formatfloat('0.00',strtofloat(e_ss.text)); end; end. 3.5 现金报表界面设计与代码设计 代码设计: unit cash; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ComCtrls, ToolWin, Buttons, StdCtrls, AppEvnts, LabelButton, TradeImage, MaskImageButton, MoveImageButton, DB, Grids, DBGrids, DBTables; type Tfrm_cash = class(TForm) palUp: TPanel; palLeftUp: TPanel; imgLeftUp: TImage; palRightUp: TPanel; imgRightUp: TImage; palUpMid: TPanel; imgCaption: TImage; palDown: TPanel; imgLeftDown: TImage; imgRightDown: TImage; imgDownMin: TImage; palLeft: TPanel; palRight: TPanel; imgRight: TImage; imgCloseButton: TImage; imgMinButton: TImage; imgSizeButton: TImage; imgMaxButton: TImage; imgRestoreButton: TImage; imgSysIcon: TImage; popSystemMenu: TPopupMenu; N_Restore: TMenuItem; N_Max: TMenuItem; N_Min: TMenuItem; N_Move: TMenuItem; N_Size: TMenuItem; N_Speater: TMenuItem; N_Close: TMenuItem; palClient: TPanel; lbCaption: TLabel; CoolBarMenu: TCoolBar; ToolBarMenu: TToolBar; imgLeft: TImage; imgColorLeftUp: TImage; imgGrayCaption: TImage; imgGrayMenuBar: TImage; imgGrayRightUp: TImage; imgColorCaption: TImage; imgGrayLeftUp: TImage; imgColorRightUp: TImage; imgRightUp1: TImage; imgLeftUp1: TImage; imgColorMenubar: TImage; Panel1: TPanel; DBGrid1: TDBGrid; DataSource1: TDataSource; GroupBox1: TGroupBox; date1: TDateTimePicker; date2: TDateTimePicker; e_hzmx: TComboBox; Label1: TLabel; Label2: TLabel; b_cx: TMoveImgBtn; b_prn: TMoveImgBtn; bLabel_cx: TLabelBtn; bLabel_prn: TLabelBtn; Bevel1: TBevel; e_hjsr: TEdit; Label3: TLabel; Label4: TLabel; e_hjzc: TEdit; Label5: TLabel; e_hjye: TEdit; procedure imgMinButtonClick(Sender: TObject); procedure imgSizeButtonClick(Sender: TObject); procedure imgCloseButtonClick(Sender: TObject); procedure imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure popSystemMenuPopup(Sender: TObject); procedure N_SizeClick(Sender: TObject); procedure N_MoveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure b_cxClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure b_prnClick(Sender: TObject); private { Private declarations } canmove:boolean; curPoint:TPoint; oldPoint:TPoint; Canvas:TCanvas; protected procedure CreateParams(var Params:TCreateParams);override; procedure WMActivate(var Msg:TWMACTIVATE); message WM_ACTIVATE; public { Public declarations } end; var frm_cash: Tfrm_cash; sr,zc,ye: Variant; implementation uses datam, qrcash; {$R *.dfm} procedure Tfrm_cash.CreateParams(var Params:TCreateParams); begin inherited CreateParams(Params); if BorderStyle<>bsNone then Params.Style :=WS_THICKFRAME or WS_POPUP or WS_BORDER; end; procedure Tfrm_cash.imgMinButtonClick(Sender: TObject); begin if Application.MainForm =self then Application.Minimize else DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); end; procedure Tfrm_cash.imgSizeButtonClick(Sender: TObject); begin if self.WindowState = wsNormal then begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); imgSizeButton.Picture :=imgRestoreButton.Picture; end else begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_RESTORE, 0); imgSizeButton.Picture :=imgMaxButton.Picture; end; end; procedure Tfrm_cash.imgCloseButtonClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); end; procedure Tfrm_cash.imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button=mbLeft)and(ssLeft in Shift)then begin canmove:=true; Canvas:=TCanvas.Create; with Canvas do begin pen.Style :=psdot; brush.Style :=bsClear; pen.Width :=2; Pen.Mode :=pmNotXor; Handle :=GetDC(0); Rectangle(left,top,Left+width,top+height); curPoint.X :=X; curPoint.Y :=Y; oldPoint.X :=Left; oldPoint.Y :=Top; end; //end with end; //end if end; procedure Tfrm_cash.imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); oldPoint.x :=Left +X-curPoint.x; oldPoint.y :=Top +Y-curPoint.y; Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); end; end; procedure Tfrm_cash.imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); Left :=oldPoint.x; Top :=oldPoint.y; Free; end; canmove:=not canmove; end; procedure Tfrm_cash.FormCreate(Sender: TObject); begin lbCaption.Caption :=Caption; end; procedure Tfrm_cash.imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PopSystemMenu.Popup(Left+ImgSysIcon.Left,Top+ImgSysIcon.Top+ImgSysIcon.Height); end; procedure Tfrm_cash.popSystemMenuPopup(Sender: TObject); begin N_Restore.Enabled :=imgSizeButton.Visible and (WindowState =wsMaximized); N_Max.Enabled :=imgSizeButton.Visible and (WindowState =wsNormal); N_Size.Enabled :=imgSizeButton.Visible ; n_min.Enabled:=imgMinButton.Visible; end; procedure Tfrm_cash.N_SizeClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_SIZE, 0); end; procedure Tfrm_cash.N_MoveClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MOVE, 0); end; procedure Tfrm_cash.FormShow(Sender: TObject); begin if WindowState=wsNormal then imgSizeButton.Picture.Bitmap :=imgMaxButton.Picture.Bitmap else if WindowState=wsMaximized then imgSizeButton.Picture.Bitmap :=imgRestoreButton.Picture.Bitmap; dm.ADOQ_cx.Close; dm.adoq_cx.SQL.Clear; dm.ADOQ_cx.SQL.Add('select 日期,sum(收入) as 收入,sum(支出) as 支 出,sum(收入)-sum(支出) as 余额 from cashbook where 日期>=:rq1 and 日 期<=:rq2 group by 日期'); dm.ADOQ_cx.Parameters[0].value:=datetostr(date()); dm.ADOQ_cx.Parameters[1].Value:=datetostr(date()); dm.ADOQ_cx.Open; date1.Date:=date(); date2.Date:=date(); sr:=0; zc:=0; ye:=0; dm.ADOQ_cx.First; while not dm.ADOQ_cx.Eof do begin sr:=sr+dm.adoq_cx.fieldbyname('收入').asvariant; zc:=zc+dm.adoq_cx.fieldbyname('支出').asvariant; dm.ADOQ_cx.next; end; e_hjsr.Text:=formatfloat('0.00',sr); e_hjzc.Text:=formatfloat('0.00',zc); e_hjye.Text:=formatfloat('0.00',sr-zc); end; procedure Tfrm_cash.WMActivate(var Msg: TWMACTIVATE); begin if (Msg.Active =WA_ACTIVE) or (Msg.Active =WA_CLICKACTIVE) then begin imgCaption.Picture.Bitmap :=imgColorCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgColorLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgColorRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgColorMenubar.Picture.Bitmap; end else begin imgCaption.Picture.Bitmap :=imgGrayCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgGrayLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgGrayRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgGrayMenubar.Picture.Bitmap; end; end; procedure Tfrm_cash.b_cxClick(Sender: TObject); begin if date1.Date>date2.Date then begin application.MessageBox(pchar('起始日期不能大于终止日期!') ,pchar('提示'),48); date1.SetFocus(); exit; end; if e_hzmx.Text='汇总' then begin dm.ADOQ_cx.Close; dm.adoq_cx.SQL.Clear; dm.ADOQ_cx.SQL.Add('select 日期,sum(收入) as 收入,sum(支出) as 支出,sum(收入)-sum(支出) as 余额 from cashbook where 日期>=:rq1 and 日期<=:rq2 group by 日期'); dm.ADOQ_cx.Parameters[0].value:=datetostr(date1.DATE); dm.ADOQ_cx.Parameters[1].Value:=datetostr(date2.DATE); dm.ADOQ_cx.Open; end else begin dm.ADOQ_cx.Close; dm.adoq_cx.SQL.Clear; dm.ADOQ_cx.SQL.Add('select 日期,摘要,sum(收入) as 收入,sum(支出) as 支出,sum(收入)-sum(支出) as 余额 from cashbook where 日期>=:rq1 and 日期<=:rq2 group by 日期,摘要'); dm.ADOQ_cx.Parameters[0].value:=datetostr(date1.DATE); dm.ADOQ_cx.Parameters[1].Value:=datetostr(date2.DATE); dm.ADOQ_cx.Open; end; sr:=0; zc:=0; ye:=0; dm.ADOQ_cx.First; while not dm.ADOQ_cx.Eof do begin sr:=sr+dm.adoq_cx.fieldbyname('收入').asvariant; zc:=zc+dm.adoq_cx.fieldbyname('支出').asvariant; dm.ADOQ_cx.next; end; e_hjsr.Text:=formatfloat('0.00',sr); e_hjzc.Text:=formatfloat('0.00',zc); e_hjye.Text:=formatfloat('0.00',sr-zc); end; procedure Tfrm_cash.FormClose(Sender: TObject; var Action: TCloseAction); begin dm.ADOQ_cx.Close; dm.adoq_cx.SQL.Clear; release; end; procedure Tfrm_cash.b_prnClick(Sender: TObject); begin if qr_cash=nil then qr_cash:=Tqr_cash.Create(Application); with qr_cash do begin qr_cash.QRLabelrq.Caption:='日期:'+datetostr(date1.date)+' ---- '+datetostr(date2.date); qr_cash.Preview; end; end; end. 3.6 会员密码管理界面与代码设计 unit passedit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ComCtrls, ToolWin, Buttons, StdCtrls, AppEvnts, LabelButton, TradeImage, MaskImageButton, MoveImageButton; type Tfrm_passedit = class(TForm) palUp: TPanel; palLeftUp: TPanel; imgLeftUp: TImage; palRightUp: TPanel; imgRightUp: TImage; palUpMid: TPanel; imgCaption: TImage; palDown: TPanel; imgLeftDown: TImage; imgRightDown: TImage; imgDownMin: TImage; palLeft: TPanel; palRight: TPanel; imgRight: TImage; imgCloseButton: TImage; imgMinButton: TImage; imgSizeButton: TImage; imgMaxButton: TImage; imgRestoreButton: TImage; imgSysIcon: TImage; popSystemMenu: TPopupMenu; N_Restore: TMenuItem; N_Max: TMenuItem; N_Min: TMenuItem; N_Move: TMenuItem; N_Size: TMenuItem; N_Speater: TMenuItem; N_Close: TMenuItem; palClient: TPanel; lbCaption: TLabel; CoolBarMenu: TCoolBar; ToolBarMenu: TToolBar; imgLeft: TImage; imgColorLeftUp: TImage; imgGrayCaption: TImage; imgGrayMenuBar: TImage; imgGrayRightUp: TImage; imgColorCaption: TImage; imgGrayLeftUp: TImage; imgColorRightUp: TImage; imgRightUp1: TImage; imgLeftUp1: TImage; imgColorMenubar: TImage; GroupBox1: TGroupBox; Label2: TLabel; Label1: TLabel; Label3: TLabel; e_oldpass: TEdit; e_newpass: TEdit; e_passok: TEdit; b_ok: TMoveImgBtn; blabel_ok: TLabelBtn; b_exit: TMoveImgBtn; blabel_exit: TLabelBtn; procedure imgMinButtonClick(Sender: TObject); procedure imgSizeButtonClick(Sender: TObject); procedure imgCloseButtonClick(Sender: TObject); procedure imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure popSystemMenuPopup(Sender: TObject); procedure N_SizeClick(Sender: TObject); procedure N_MoveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormActivate(Sender: TObject); procedure b_okClick(Sender: TObject); procedure b_exitClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } canmove:boolean; curPoint:TPoint; oldPoint:TPoint; Canvas:TCanvas; protected procedure CreateParams(var Params:TCreateParams);override; procedure WMActivate(var Msg:TWMACTIVATE); message WM_ACTIVATE; public { Public declarations } end; var frm_passedit: Tfrm_passedit; implementation uses publicvar, long, datam; {$R *.dfm} procedure Tfrm_passedit.CreateParams(var Params:TCreateParams); begin inherited CreateParams(Params); if BorderStyle<>bsNone then Params.Style :=WS_THICKFRAME or WS_POPUP or WS_BORDER; end; procedure Tfrm_passedit.imgMinButtonClick(Sender: TObject); begin if Application.MainForm =self then Application.Minimize else DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); end; procedure Tfrm_passedit.imgSizeButtonClick(Sender: TObject); begin if self.WindowState = wsNormal then begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); imgSizeButton.Picture :=imgRestoreButton.Picture; end else begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_RESTORE, 0); imgSizeButton.Picture :=imgMaxButton.Picture; end; end; procedure Tfrm_passedit.imgCloseButtonClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); end; procedure Tfrm_passedit.imgCaptionMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button=mbLeft)and(ssLeft in Shift)then begin canmove:=true; Canvas:=TCanvas.Create; with Canvas do begin pen.Style :=psdot; brush.Style :=bsClear; pen.Width :=2; Pen.Mode :=pmNotXor; Handle :=GetDC(0); Rectangle(left,top,Left+width,top+height); curPoint.X :=X; curPoint.Y :=Y; oldPoint.X :=Left; oldPoint.Y :=Top; end; //end with end; //end if end; procedure Tfrm_passedit.imgCaptionMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); oldPoint.x :=Left +X-curPoint.x; oldPoint.y :=Top +Y-curPoint.y; Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); end; end; procedure Tfrm_passedit.imgCaptionMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if not canmove then exit; with Canvas do begin Rectangle(oldPoint.x,oldPoint.y,oldPoint.x+Width,oldPoint.y+Height); Left :=oldPoint.x; Top :=oldPoint.y; Free; end; canmove:=not canmove; end; procedure Tfrm_passedit.FormCreate(Sender: TObject); begin lbCaption.Caption :=Caption; end; procedure Tfrm_passedit.imgSysIconMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PopSystemMenu.Popup(Left+ImgSysIcon.Left,Top+ImgSysIcon.Top+ImgSysIcon.Height); end; procedure Tfrm_passedit.popSystemMenuPopup(Sender: TObject); begin N_Restore.Enabled :=imgSizeButton.Visible and (WindowState =wsMaximized); N_Max.Enabled :=imgSizeButton.Visible and (WindowState =wsNormal); N_Size.Enabled :=imgSizeButton.Visible ; n_min.Enabled:=imgMinButton.Visible; end; procedure Tfrm_passedit.N_SizeClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_SIZE, 0); end; procedure Tfrm_passedit.N_MoveClick(Sender: TObject); begin DefWindowProc(Handle, WM_SYSCOMMAND, SC_MOVE, 0); end; procedure Tfrm_passedit.FormShow(Sender: TObject); begin if WindowState=wsNormal then imgSizeButton.Picture.Bitmap :=imgMaxButton.Picture.Bitmap else if WindowState=wsMaximized then imgSizeButton.Picture.Bitmap :=imgRestoreButton.Picture.Bitmap end; procedure Tfrm_passedit.WMActivate(var Msg: TWMACTIVATE); begin if (Msg.Active =WA_ACTIVE) or (Msg.Active =WA_CLICKACTIVE) then begin imgCaption.Picture.Bitmap :=imgColorCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgColorLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgColorRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgColorMenubar.Picture.Bitmap; end else begin imgCaption.Picture.Bitmap :=imgGrayCaption.Picture.Bitmap; imgLeftUp1.Picture.Bitmap :=imgGrayLeftUp.Picture.Bitmap; imgRightUp1.Picture.Bitmap :=imgGrayRightUp.Picture.Bitmap; coolBarMenu.Bitmap :=imgGrayMenubar.Picture.Bitmap; end; end; procedure Tfrm_passedit.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin key:=#0; perform(wm_nextdlgctl,0,0); end; end; procedure Tfrm_passedit.FormActivate(Sender: TObject); begin e_oldpass.SetFocus(); end; procedure Tfrm_passedit.b_okClick(Sender: TObject); var kl:variant; pass:string; begin kl:=dm.ado_user.lookup('操作员',zzyname,'口令'); if varisnull(kl) then pass:='' else pass:=kl; if e_oldpass.text<>pass then begin application.messagebox(pchar('原密码录入错,请重新录入~'),pchar('提示') ,MB_ICONEXCLAMATION); e_oldpass.text:=''; e_oldpass.SetFocus(); exit; end; if e_newpass.text<>e_passok.Text then begin application.messagebox(pchar('新密码与确认密码不一致,请重新录入~') ,pchar('提示'),0+MB_ICONEXCLAMATION); e_newpass.text:=''; e_passok.text:=''; e_newpass.SetFocus(); exit; end; dm.ado_user.Locate('操作员',zzyname,[]); dm.ado_user.Edit; dm.ado_user.FieldByName('口令').asstring:=e_newpass.text; dm.ado_user.post; application.messagebox(pchar('密码修改成功~'),pchar('提示') ,MB_ICONINFORMATION); close; end; procedure Tfrm_passedit.b_exitClick(Sender: TObject); begin close; end; procedure Tfrm_passedit.FormClose(Sender: TObject; var Action: TCloseAction);begin release; end; end. 总 结 VCD租赁管理系统是一个典型的信息管理系统~其主要通过软件工程方面的选择课题、需求分析、总体设计、选用工具、程序模块、系统测试等几个步骤来实现。开发本系统的过程中~首先要对光盘管理进行系统调研~熟悉其中的新光盘登记、光盘出借的流程、步骤,其次在系统需求分析过程中~要透过现象看本质~敏锐观察到光盘管理中存在的各种问题~并在总体设计把握好对问题的分析、理解~进而解决问题,选用开发工具要选用自己最熟悉、应用较多的开发工具~本系统开发选用DELPHI 6.0~其具有语言简单、功能强大、组件众多的优点。程序模块的编制中~重点把握系统内部完整性、功能性、实用性、便捷性~使其能够协调统一、运行无误。 致 谢 我首先感谢我的指导老师吕老师,在他严格的要求下我懂得了开发软件要有一种极其认真负责的态度。无论做什么事都要大胆的去想去做,这样会有好的创意,才能更有作为。 在这里我还要感谢我们宿舍的其它5个同学。他们和我共同生活了四年,在生活和学习上给了我很大的帮助。 参 考 文 献 1 张春林.Delphi 6程序设计导学.北京:清华大学出版社,2002.5 2 飞思科技. Delphi6开发者手册. 北京:电子工业出版社,2002.3 3 飞思科技. Delphi6数据库开发. 北京:电子工业出版社, 2002.1 4 丁宝康.数据库原理. 北京:经济科学出版社,2004.1 5 何旭洪.Delphi 6.0数据库系统开发实例导航.北京:人民邮电出版社, 2002.4 6周璋鹏. 基于B/S结构的学生信息管理系统垢研究与开发.西北电力技术.2003,31(4):15~17,26 7 李全彬, 顾明亮. 基于ASP技术的学生信息管理系统的研究与开发. 徐州师范大学学报(自然科学版).2001,19(2):25~28 8 谷军.用Authorware开发学生信息管理系统.计算机与与现代化.2003(7):40~41,44 9李丹荣,杜维.基于Delphi6(0的实时数据采集与分析系统 机电工程.2003,20(5): 64~67
/
本文档为【VCD租赁管理系统—免费计算机毕业设计论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索