DELPHI基础教程:Delphi图形图像编程(二)[2]

DELPHI基础教程:Delphi图形图像编程(二)[2],第1张

另外一个问题是 我们希望得到的是鼠标按钮按下和松开这两点所形成的图形 但OnMouseMove却把鼠标轨迹上各点与起始点所形成的所有图形画在屏幕上 这同样是我们不希望看到的 为了解决这些问题 程序定义了鼠标的三个事件

procedure TForm FormMouseDown(Sender: TObjectButton: TMouseButton

Shift: TShiftStateX Y: Integer)

begin

Drawing := True

Image Canvas MoveTo(X Y)

Origin := Point(X Y)

MovePt := Origin

OriginPanel Caption := Format( Origin: (%d %d) [X Y])

end

procedure TForm FormMouseUp(Sender: TObjectButton: TMouseButton

Shift: TShiftStateX Y: Integer)

begin

if Drawing then

DrawShape(Origin Point(X Y) pmCopy)

Drawing := False

end

procedure TForm FormMouseMove(Sender: TObjectShift: TShiftStateX

Y: Integer)

begin

if Drawing then

begin

DrawShape(Origin MovePt pmNotXor)

MovePt := Point(X Y)

DrawShape(Origin MovePt pmNotXor)

end

MovePt用来记录鼠标当前位置 当下次鼠标移动时 就能在上次鼠标绘制的图形上画一个形状 大小一样的图形 并把画笔颜色设置成PmNotXor 使上次绘制的图形颜色变成了屏幕颜色 从而达到 橡皮擦 的效果

将画笔 画刷的Style属性设置成用户希望的值 可实现对画笔和画刷风格的选择

procedure TForm SetBrushStyle(Sender: TObject)

begin

with Image Canvas Brush do

begin

if Sender = SolidBrush then Style := bsSolid

else if Sender = ClearBrush then Style := bsClear

else if Sender = HorizontalBrush then Style := bsHorizontal

else if Sender = VerticalBrush then Style := bsVertical

else if Sender = FDiagonalBrush then Style := bsFDiagonal

else if Sender = BDiagonalBrush then Style := bsBDiagonal

else if Sender = CrossBrush then Style := bsCross

else if Sender = DiagCrossBrush then Style := bsDiagCross

end

procedure TForm SetPenStyle(Sender: TObject)

begin

with Image Canvas Pen do

begin

if Sender = SolidPen then Style := psSolid

else if Sender = DashPen then Style := psDash

else if Sender = DotPen then Style := psDot

else if Sender = DashDotPen then Style := psDashDot

else if Sender = DashDotDotPen then Style := psDashDotDot

else if Sender = ClearPen then Style := psClear

end

end

图像对象概述

TGraphic对象

TGraphic对象是TBitmap TIcon Tmetafile对象的基类 如果知道图像的具体类型( 如位图 图标元文件) 则应将图像贮存在相应类型的对象中( 如TBitmap TIcon Tmetafile) 否则应该使用可贮存任何图像类型的TPicture对象

TPicture对象

TPicture对象可以保存位图 图标或元文件 Graphic属性中包括图像的类型 图像的高度和宽度分别定义在Height Width属性中 调用LoadFromFile方法 可以从文件中装载一幅图像

procedure TForm FormCreate(Sender: TObject)

begin

BitBtn Glyph LoadFromFile( TARTAN BMP )

end

要保存一个位图 则要用SaveToFile方法 要把图像复制到剪切板 可以调用TClipboard对象的Assign方法

TImage部件

TImage部件用以在窗体中显示图像 它的Picture 属性保存着要显示的图像 这是一个TPicture对象 AutoSize Stretch属性是用来调节部件与图像的大小的 当AutoSize 为真值时 TImage部件将根据它所包含的图像的大小来调整自身的大小 当AutoSize为假值时 不论图像有多大 部件将保持设计时的大小 如果部件比图像小 那么只有一部分图像是可见的 当Stretch为真值时 位图像将根据部件的大小调整自身的大小 当部件大小改变时 元文件也做相应变化 Stretch属性对图标没有作用

TBitmap Object(位图对象)

位图对象包含一个位图图像 有HBITMAP HPALETE句柄 可自动管理调色板 位图对象也有画布属性 位图的Palette属性用来控制位图的颜色映射 它包括 种可显示的颜色 如果应用程序用前景色绘制位图 Palette 属性的颜色将被加入Windows系统调色板 其它颜色被映射到系统调色板已存在的颜色 如果应用程序用自己的颜色绘制位图 而其它程序已占有系统调色板 位图的颜色将被映射到系统调色板中

如果Monochrome属性设置成假 位图将显示成彩色 反之显示成黑白色

调用Draw和StretchDraw方法可在画布上绘制位图

图像对象的应用

本章例程中 单击(文件|浏览)菜单项 将d出一个图像浏览窗体 如果用户在窗体中选择文件列表框的图形文件 窗体右上角的图像部件上将出现此文件所代表的图像 若选择 雕刻效果 按钮中检查框 窗体中的加速按钮和位图按钮上将出现位图

以下代码是将图像文件装载至图像部件上

procedure TImageForm FileListBox Click(Sender: TObject)

var

FileExt: string[ ]

begin

FileExt := UpperCase(ExtractFileExt(FileListBox Filename))

if (FileExt = BMP ) or (FileExt = ICO ) or (FileExt = WMF ) then

begin

Image Picture LoadFromFile(FileListBox Filename)

Label Caption := ExtractFilename(FileListBox Filename)

if (FileExt = BMP ) then

begin

Label Caption := Label Caption +

Format( (%d x %d) [Image Picture Height Image Picture Width])

ViewForm Image Picture Bitmap := Image Picture Bitmap

ViewAsGlyph(FileExt)

end

if FileExt = ICO then Icon := Image Picture Icon

if FileExt = WMF then

ViewForm Image Picture Metafile := Image Picture Metafile

end

end

这个过程首先判断文件类型 如果是图像文件 则将图像装载至图像部件上 并在标签上列出文件名称 如果是位图文件 还将显示其大小

lishixinzhi/Article/program/Delphi/201311/25244

关于选课系统的设计 周 虹

摘要:随着课程改革的不断深入,学校规模不断扩大、课程项目不断增多,为了解决学生选课管理上的复杂的人工 *** 作,减轻重复工作,故设计了选课系统。学校规模的扩大使得学校对每年新生入学、毕业生离校及本校各种分流机制造成的学生信息产生变动,如学籍变动、个人信息修改。为了适应课程的改革,学校在每个学期都要开设一定的课程提供给学生,让学生根据自己的情况来选择,根据学生选择结果给出课程表。本校根据教学实际,为了使教师有效地管理学生信息,设计学生信息管理系统,由此形成学生成绩管理系统,本文就此设计思路进行阐述。

关键词:选课系统 学生信息管理系统 数据流图 DFD图 E-R图 SC图 IPO图 Delphi软件

随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工 *** 作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的课程信息管理系统来提高管理工作的效率。基于互联网的学生选课管理系统,在学生选课的规范管理、科学统计和快速查询方面具有较大的实用意义。它提高了信息的开放性,大大地改善了学生、教师对其最新信息查询的准确性。

一、选课系统的任务概述

1. 目标

选课系统开发的目标是实现学生选课信息关系的系统化、规范化和自动化。

2. 系统技术

学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。

3. 基本设计概念和处理流程

采用基于SQL Server的分布式数据库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户。更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的 *** 作而影响到其他的用户,所以可靠性、稳定性和效率都比较好。(其结构如图)

4. 用户的特点

为保证系统安全高效地运行,本系统把用户划分为3类:教务处、教师和学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。

(1)教务处可以完成本系统所有的功能

学生信息管理:除学生基本信息外,还可管理学生所选课程、成绩等。

教师信息管理:包括教师个人的基本情况和任课情况。

项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定。

排课:根据上一步分班情况安排任课教师。

报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。

(2)教师在本系统的功能

查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。

(3)学生在本系统的功能

查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。

二、需求规定

(一)对功能的规定

1. 可实现学生选课注册。

2. 方便实现学生选课信息查询。

3. 可对学生成绩档案进行管理,成绩表单生成简便。

4. 安全有效的用户区分,管理。

5. 档案数据的高安全性,保密性。

6. 有帮助文档

(二)对性能的规定

使用稳定, *** 作性能好, *** 作方法易于掌握,系统的安全性强。

三、设计思想

用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图。

(一)数据库的设计

通过对学生选课管理系统工作内容和相关数据流程分析,根据学生选课管理系统的需要,就可以设计出能满足用户需求的各种实体,以及它们之间的关系,由此得到数据库所支持的数据模型,即数据库的逻辑结构,具体情况如下:

1. 学生信息表

开学时将教务处提供的学生信息库按系统的要求修改库结构并导入Access数据库中,应包括如下信息:姓名、学号、院系、班级、性别、所选课程、任课教师、备注等。

2. 教师信息表

包括教师姓名、教师代码、性别、年龄、职称、主要教授课程、兼任课程等。

3. 课程信息

包括课程目录、课程、课程代码、教学内容、任务与目的、考试方法、要求等。

4. 课程表

包括课程名称、课程编号、任课教师、课程学分、上课时间。

5. 成绩单列表

包括学生姓名、学号、院系、班级、课程、任课教师、成绩。

(二)系统功能特点

1. 内容全面 系统全面覆盖了体育课信息,可为学校、教师和学生提供全面准确的信息。

2. 层次分明 系统采用模块化程序设计结构。各模块之间既相互独立,又具有一定的联系,各模块可独立编制、调试、查错、修改和执行,结构严谨,便于扩展和维护。

四、数据库概念设计

根据以上数据流图导出数据库所需数据项和数据结构。

学生:学号、姓名、性别、生日、所在院系、所在班级。

课程:课程号、课程名、讲师、上课时间、地点、课程简介。

选课结果:记录号、选课学生、所选课程。

学籍变更记录:记录号、变更情况、记录时间、详细描述。

1. 数据库逻辑结构设计

设计五个基本表:学生信息表、课程信息表、选课结果表、奖惩信息表、教师信息表。其中教师信息表是外部表,不列出。由于使用打开系统的不只是教务人员,每个学生都要登录到选课系统进行课程的选择,所以需要对不同的登录人员进行密码的认证和权限的限制,防止越权行为,用户名、密码、权限保存在一个表中。分别设计如下表:(具体内容略)

USER-PASS用户密码信息表

COURSE课程信息表

COURSE-SELECT选课结果表

STUDENT学生个人信息表

奖惩记录信息表

2. 概要设计

4. 选课模块详细设计说明书

功能:接受学生选课信息,刷新学生课程表。

界面:调用添加、删除模块,打印课表模块。

设计感想

通过这次实践,我对Delphi有了全新的认识。Delphi可以让你用最少的程序量来得到最高的开发效率,从而迅速地开发Windows的应用程序。开发者可按照自己的喜好及用户要求,随心所欲地安排窗口的外观。Delphi是以面向对象的方式设计程序代码的,有着面向对象的四大特征:封装性、可维护性、继承性和多态性。

当然,这个系统还有些地方需要修改和完善,我将在以后的时间里逐步学习改进。

参考文献:

〔1〕〔美〕Grady Booch,James Rumbaugh,Ivar Jacobson,UML用户指南.机械工业出版社,2001年8月.

〔2〕Microsoft,MSDN.

〔3〕Microsoft,SQL Server 2000联机手册.

〔4〕Roger S. Pressman.软件工程——实践者的研究方法.机械工业出版社,1997.

〔5〕IPL. Software Testing and Software Development Lifecycles. IPL,1996.

〔6〕Karl E. Wiegers.软件需求.机械工业出版社,1999.

〔7〕张海藩.软件工程导论.清华大学出版社.

http://www.google.cn/search?q=%E5%AD%A6%E7%94%9F%E9%80%89%E8%AF%BE%E7%A8%8B%E5%BA%8F+delphi%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1&sourceid=navclient-ff&ie=UTF-8&rlz=1B2GGFB_zh-CNCN278CN278

数据库窗体专家和数据库 *** 作台(DBD)

Delphi为用户开发简单的数据库应用程序提供了一个开发工具叫做 数据库窗体专家 (Database Form Expert) 在Delphi系统菜单Tool菜单下可以找到

数据库窗体专家能够自动生成简单的数据库应用程序中所必须完成的许多任务 它还可以生成基于单个数据库表的应用程序窗体或基于主要──明细型多个数据库表的应用程序窗体 数据库窗体专家能够自动完成的任务如下

● 放置数据库部件到窗体中(TDataSource部件)

● 为数据集部件(TTable TQuery)和磁盘上的数据库建立连接

● 建立数据源(TDataSource)与数据控制部件的连接 数据源(TDataSource)与 数据访问部件(TTable TQuery)的连接

● 为TQuery部件编写SQL语句

● 为窗体中的部件定义Tab顺序

数据库 *** 作台(DBD)是数据库维护和数据定义工具 程序设计人员利用它可以查询 连接 建立 重构 索引 修改和拷贝数据库表 包括Pà€aradox和dBASE文件和基于 SQL语言的数据库表 而且在使用DBD *** 作Paradox或dBASE的表时 用户不必拥有 Paradox 或dBASE数据库管理系统 DBD还可以把一种格式的数据和数据字典拷贝成另一种格式 例如 你可以将一个dBASE的表拷贝到远程的SQL服务器上的一个数据库中去 有关DBD详细描述 请参看 数据库 *** 作台(DBD)的使用

Delphi数据库应用程序的开发方法和步骤

概述

用Derphi用开数据库应用程序 虽然与开发其他应用程序有相似之处 但是也有一些重要的区别 我们必须要加以注意

利用Delphi的客户/服务器功能 程序设计者可以在本地数据库上或远程数据库服务器上开发客户/服务器模式的应用程序 Delphi 的一个强有力的功能之一是可以将基于本地桌面数据库系统的应用程序很容易地修改成客户/服务器模式的应用 一个Delphi 数据库应用程序访问的是本地数据库还是远程SQL数据库服务器上的数据库 这对于最终用户是完全透明的 即数据库的物理位置对最终用户是透明的 当数据库的物理位置发生变化时 用户界面不必随之变化

因为数据库应用程序的是依赖于它所访问的数据库的 所以在开发数据库应用程序之前必须要建立一个完善的数据库即数据定义 数据定义应当是开发数据库应用程序的一部分 但它超出了书本的范围 有关数据定义的内容 请参看关系数据库设计方面的资料 在我们用Derphi开发一个数据库应用程序时 可能有下列四种情况

数据库不存在或者必须要重新定义 使用DBD为本地数据库定义Paradox或dBASE 数据库表 使用Delphi提供的服务器开发工具如Windows ISQL或DBD定义本地或远程SQL数据库务器上的数据库

数据库在桌面数据库系统中或局域网上(如Paradox或dBASE) 而且BDE 数据库和应用程序在同一台机器上 这是典型的独立应用

数据库在桌面数据库系统中 但是用户要把它改变到SQL数据库服务器中去 这种情况我们在附录C中详细讨论

数据库在SQL数据库服务器中 而且应用程序将到SQL数据库服务器中去访问数据库 这是一个标准的客户/服务器应用

有关开发客户/服务器应用程序的详细内容 参看 客户/服务器应用 一章

数据库应用程序的开发步骤

数据库应用程序的最终目标就是为用户提供一个满足其长期需要的软件产品 因此 成功地开发一个数据库应用程序的关键之一是要详细地定义用户的需求 然后再围绕用户的需求进行开发 数据库应用程序的一般开发的三个基本步骤如下

● 系统设计

● 系统实现

● 系统运行和维护

在这个三个基本步骤中 都包含着数据库的开发和应用程序界面的开发两大类任务 对于一个客户/服务器模式的应用 数据库和应用界面的区别就更明显一些 因为它们运行在不同的平台之上 而且使用的 *** 作系统都常常不一样 如(一个Unix环境的服务器和Windows环境的客户机)

系统设计

系统设计阶段应当根据用户的需求 明确地描述数据库(数据库服务器端)和应用界面(客户机端)实现的功能 即决定哪些功能由服务器端实现 哪些功能由客户机端实现 对于客户/服务器应用程序 许多功能既可以在服务器端实现又可以在客户端实现的 例如一个复杂的数学变换功能既可以由客户端的应用程序实现 也可以由服务器端的存贮过程实现 服务器和客户端应用程序功能的划分往往取决于应用程序运行的硬件环境 例如 如果客户端是低档的PC机 服务器端是高档的工作站 那么大量的计算由服务器完成是比较理想的

系统实现

系统实现阶段的主要任务是使用Delphi提供的工具和部件以及Pascal语言实现系统设计阶段的设想 并进行调试

在系统实现阶段 最好使用数据库的一个备份数据库 这个备份的数据库与原数据库具有相同的结构 但其中的数据库只是原数据库中的一部分 至所以不在原数据库上开发应用程序 是因为考虑到没有调试好的应用程序可能会破坏数据库中的数据或者妨碍数据库的正常 *** 作

如果应用程序是基于远程SQL数据库服务器的 在系统实现阶段可以采用两种方法

● 在本地InterBase服务器上 使用数据库的备份数据库进行开发和调试

● 在远程服务器上 使用数据库的备份数据库进行开发和调试

第一种方法优越性在于 它是独立于服务器的 而不至于影响服务器的其它的 *** 作 而且不消耗服务器的资源不增加网络的负担 它的不利的方面是开发出来的应用程序只能在标准的SQL服务器上使用和调试 第二种方法能够使程序设计人员直接感受到服务器的特性 但它在调试阶段要消耗网络和服务器的资源 这种方法具有一定的危险性 程序中的错误可能会导致服务器的瘫痪

系统运行和维护

一个应用系统性能的优劣 效率的高低始终应当由用户来做出判决 应用程序在运行过程中 用户会提出一些新的需求和建议 根据用户需求的变化 应当对应用程序做一定的修改 使其进一步地得到完善和提高

交付数据库应用程序

交付数据库应用程序意味着将它交付给最终用户 并且提供应用程序运行所需的软件 非数据库应用程序往往只需要一个EXE文件 而数据库应用程序要包括下列几类文件

● 数据库应用程序生成的EXE文件和DLL文件(如果有的话)

● 必要的辅助文件(如Readme文件或HLP联机帮助文件)

● 支持访问数据库的BDE 有时也称为IDAPI

● 用于打印输出报表的ReportSmith报表工具

● 如果应用中使用了VBX控件 还要包括VBX和BIVBXII DLL

安装BDE

在交付数据库应用程序时 必须同时在运行应用程序的机器上安装BDE Delphi 本身包含可再安装的BDE 在准备数据库应用程序安装盘时 同时从Delphi中复制一份BDE 到最终用户的机器中 BDE中包含访问多种数据库系统的驱动程序 为了节省磁盘空间 在安装BDE时 可以只安装应用程序必须的驱动程序 例如 如果我们的应用程序只需要访问dBASE数据库文件 那么在安装BDE时 只需安装dBASE的驱动程序就行了 要访问Paradox数据库 BDE至少需要 KB的磁盘空间 BDE主要包括下列文件 请参看DEPLOY TXT文件

lishixinzhi/Article/program/Delphi/201311/25177


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11134758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存