database实验指导书(给学生).doc
数据库应用技术实验指导书实验一 过程、函数和类的应用 一、实验目的1 对delphi的集成开发环境有初步的认识,了解Delphi7编程风格;2 掌握Object Pascal的语句;3 在掌握过程和函数应用的基础上,通过实践,掌握过程、函数的应用;4 通过自定义类的实验,掌握Delphi类的应用。二、实验环境1 硬件:微机2 软件:DELPHI 7.0 专业版三、相关知识1 过程和函数在程序设计中,某些特定功能的代码段会反复在程序中出现,为了提高程序的代码效率,也为了使程序的整体结构更加清晰,我们可以使用一些可以完成特定功能,且由标识符标识的程序段,这些程序段被称为子程序或函数。 Delphi提供了两种机制用于设计子程序,它们分别是过程(procedure)和函数(function)。 Delphi的过程分为标准过程与自定义过程两种。标准过程是指系统内部为完成某种系统功能而定义的过程,无须编写代码,即可直接使用。用户自定义过程则由用户自行编写代码以完成指定的操作。2 类和对象的定义在客观世界中,每一个事物都可以看作是一个对象(Object),这些对象有自己的属性。对对象进行抽象,提取出对象通用的属性就形成了类。“类”是对某一具有共同特征的实体的描述。从这个角度上看,“类”和数据类型是一样的。但是类所不同的是类不但对实体的属性进行了描述,而且还对实体所具有的动作(方法)特征进行了定义,从而使得类可以完全描述出一个现实的实体。“对象”对象是类的实例化。是类的具体体现。本质上也是一种数据结构。类和对象的关系与数据类型和变量的关系是一致的。在 Delphi 编程中对象可以被理解为可视化控件如按钮、标签等。3 对象的特性对象最突出的特征有三个:封装性,继承性,多态性。1) 对象的封装性对象的封装特性是把数据和操作数据的动作都组合在一个结构中,并根据需要通过不同的保留字段来设置这些数据和动作(方法)的可见性。这样作的目的是就可以隐藏类内部的复杂性,这对于对象的共享是非常有利的。2) 对象的继承性对象的继承性也是对象的很重要的特征。继承性是指对象拥有祖先对象所共有的特征,同时又具有自己的特征。3) 多态性多态性是指对象可以接收多个不同类型的参数,然后自动的根据类型进行处理。电视也一样,电视可以接收无线信号,有线信号,VCD,DVD信号。电视会根据不同的信号模式自动选择处理方式。这个特征也是非常有用的。四、实验内容1 熟悉Delphi集成开发环境中的各个组成部分,包括主窗口、代码编辑器、窗体设计器、对象观察器(Object Inspector)和工程管理器(Project Manager),特别是主窗口的菜单栏和快捷工具栏。熟悉单元文件(*.pas)的结构,包括unit语句、interface部分、implementation部分、uses子句。2在一个窗口中包含3个按钮,当用户单击其中一个时,要求其它个别按钮不能使用,如下图:单击Button1单击Button2单击Button3设计步骤如下:(1) 应用程序用户界面的建立与对象属性参见上图,注意三个按钮Button1,Button2,Button3的Tag属性分别为:0,1,2。(2) 双击按钮Button1,系统自动声明默认的事件过程:Button1Click, 并同时打开代码编辑窗口。(3) 编写Button1的OnClick事件过程代码:注:sender:可以让多个组件共享一个事件区 as运算符:用来作类的转换,它会将左方操作数的这个变量所属的类,转为右方操作数那种类。(4) 在对象观察器中依次选择Button2和Button3,并在事件选项卡中选择事件OnClick,从事件名称右边的下拉列表中选择已建立的事件过程名Button1Click。(5) 单击标准工具栏中的“Run”按钮或按<F9>键,运行工程。3 计算阶乘5!、7!、15!,以及阶乘的和5!+7!+15!。 分析:可以用过程Factorial来计算任意阶乘n!,每次调用过程前给nValue一个值,在过程Factorial中将所求结果放入到Total变量中,返回主程序后Fact变量接受Total的值 设计步骤如下:应用程序用户界面的建立与对象属性达到设置参见上图,下面给出通用过程以及事件过程代码:说明:通用过程的代码部分必须位于4个按钮的事件代码之前才能被调用。五、练习题和思考题1验证book2p70这个工程,并把其中的if的多分支语句改为case语句。2自定义一个类,定义类的数据成员和方法程序,并编写代码实现类的实例化,编写代码实现类的封装、继承。六、预习要求1、熟悉和掌握实验目的。2、复习相关知识 七、实验报告要求(1)要求写出程序的核心代码。(2)调试程序并进行分析 实验二 常用组件的使用 一、实验目的通过实验,掌握Delphi中几个常用组件的应用。二、实验环境1 硬件:微机2 软件:DELPHI 7.0 专业版三、相关知识Delphi 编程,窗体是组件的容器,窗体上的各个组件的设置是编程的主要工作。这次试验主要练习如何创建菜单栏,工具栏和状态栏,以及TLabel, TEdit, TMemo, TListbox, TOpenDialog,TSaveDialog等几个组件的应用。TLabel 我们称它为标签组件,它的主要功能是文字标注和说明作用。TLabel组件不能输入焦点。它主要属性是Caption,我们可以直接给Caption赋值。TEdit组件主要用于实时显示用户输入的文本。当用户在其中输入字符时,将触发OnChange事件,表示编辑框当中的内容正在发生变化。它的Text属性, 键盘输入的内容就输入到这个属性中。这是个TString类型的属性。我们通过读写TEdit.text中的内容来完成我们的任务。如果要建立一个能够显示和编辑多行文本的文本编辑器,就要用到TMemo(多行文本编辑器)了。TMemo与TEdit的不同之处主要体现在Lines属性上,它也是Tstrings类型。TStrings是一个抽象类,它并没有真正实现操纵字符串的代码,它只是定义了一系列的方法。TStrings的派生组件实现了实际上的字符串操纵方法,使用户可以操纵属于组件的字符串列表。这个类型中定义了Add,Delete,Insert等方法,可以完成加入,删除,插入某一行数据的操作。此外还可以通过 loadfromfile(),SaveToFile() 实现从文本文件中读入数据,和保存数据的功能。TListBox 我们称它为列表框组件。它可以显示一个项目列表,并且用户可以从列表中选择一个或者多个项目。列表框的主要属性是Items,它也是Tstring类型,所以和TMemo的操作一样。四、实验内容1建立一个列表框之间项目移动的工程,要求界面如下图所示, 2设计一个综合运用菜单的例子,并建立一个文本文件测试是否能实现应具有的功能。设计步骤如下:(1) 向窗体中添加一个Memo组件,设置Memo的Align属性为alClient,充满整个窗体;(2) 向工程中添加一个MainMenu组件,在菜单设计器中设置菜单项,设计后如图所示: (3) 向工程中添加OpenDialog组件和SaveDialog组件,设置过滤条件如图所示:(4) 为菜单项设计的代码如下:五、练习题和思考题1编写代码实现TLabel和TEdit组件的综合应用2完善实验内容2的设计菜单的例子,在这个例子的基础上,创建一个工具栏,要求在工具栏上有实现Copy和Paste功能的快捷按钮,按钮上还要有图像(通过TImageList组件实现)。六、预习要求1、熟悉和掌握实验目的。2、复习相关知识 七、实验报告要求(1)要求写出程序的核心代码。(2)调试程序并进行分析 实验三 数据库应用程序的开发一、实验目的1 熟悉数据库设计方法和数据库开发常用的组件;2 掌握建立数据库应用程序的基本操作,掌握用SQL语言对数据库中的数据进行操作;3 掌握开发小型数据库应用系统的步骤,综合所学知识。二、实验环境1 硬件:微机2 软件:DELPHI 7.0 专业版三、相关知识1 数据库分类数据库根据结构可以分为文件型数据库和C/S型数据库。文件型数据库的特点是数据库由单个或者多个文件组成,没有附加的管理程序。比较著名的文件型数据库由Access、DBF、Paradox等。Access是一个数据库管理系统,是Office办公软件中一个极为重要的组成部分。微软之所以把它集成到Office中而不是Visual Studio中,是因为它与其他的数据库管理系统相比更加简单易学,而且Access的功能也足够强大,足以应付一般的数据管理及处理需要。本课程主要以Access数据库为主。C/S(Client/Server,客户/服务器)型数据库是当前数据库应用的主流。与文件型数据库不同的是,C/S型数据库应用程序有两个部分组成:服务器和客户机。服务器指数据库管理系统(DBMS),用于描述、管理和维护数据库的程序系统。客户机则将用户的需求送交到服务器,再把数据从服务器返回给用户。C/S型数据库非常适合于网络应用,可同时被多个用户所访问,并赋予不同的用户不同的安全权限。C/S型数据库支持的数据量一般比文件型数据库大得多,同时,C/S型数据库一般都能完善地支持SQL语言。这些特性决定了C/S型数据适合于高端应用。比较著名的C/S型数据库有SQL Server,Oracle以及Delphi自带的InterBase等。2 Delphi访问数据库的机制ADO (ActiveX Data Objects)是Microsoft公司提供的数据访问技术,Delphi提供了对ADO技术的完善支持。通过提供的对ADO常用对象的封装,用户能够迅速实现数据库应用程序的开发而不需要使用BDE。与BDE相比,ADO是一种通用的数据库访问技术,得到了广泛的支持,其特点是适用范围广泛、易于升级和维护。通过连接的数据库应用程序在分发时一般不需要像BDE一样,需要在每个客户机上安装BDE驱动程序,因为系统中一般都支持ADO连接。4 数据库组件Delphi的数据库组件主要有数据控制(感知)组件、数据访问组件和数据连接接收组件。ADO组件和BDE组件就是数据连接接收组件。它们和数据库的关系可以用下面的示意图来表示:用户数据控制组件数据访问组件ADO组件数据库ADO组件位于组件栏的ADO选项卡中,一共有7个组件。ADO组件分为三组,一类是数据连接组件,比如TADOConnection,它用于和数据库建立连接,获取数据库层面的一些信息,并向别的组件提供数据库连接;另外一种是数据集组件,比如TADOTable,TADOQuery组件,它们都有一个共同的基类(TADODataset)。数据集可以理解成是数据库中一张或多张数据表,只不过这种表由ADO封装过以便于程序操作。我们对数据库的操作其实是通过数据集为中介来进行的。数据访问组件位于组件栏的Data Access选项卡中,它用来把非可视化的数据集控件与可视的数据控制组件连接在了一起,这样数据集中的数据就可以在数据控制组件中显示出来,并且通过数据控制组件可以编辑、删除、增加数据集中的数据。数据控制组件也可称为数据感知组件或数据显示组件。它们的主要功能是和数据访问组件配合供用户对数据进行浏览、编辑等操作。也就是说应用程序可以通过这些组件浏览数据集中的数据信息,还可以编辑修改数据信息并将它们提交给数据库。数据控制组件位于Data Controls选项卡上。4 最重要的SQL语句 SELECTSELECT语句用于从一个表或多个表中根据条件检索列和行。 INSERTINSERT语句用于向一个表中增加行。 UPDATEUPDATE语句用于更新表中已经存在的行的一个或者多个字段值。 DELETEDELETE语句用于从一个表中删除行。四、实验内容1 数据库的建立我们以Access 为例建立一个学生基本情况库。1) 启动Access 出现数据库建立向导,如图 选择空的数据库,然后为数据库命名为学生资料。这时一个空的数据库便建立起来。2) 规划系统中表结构和关系。建立表。Access有几种方式来进行表的建立。我们以使用设计器的方式来建立表。我们要建立一个学生基本信息的库,所以首先要建立一个学生表。一个学生的基本信息设置如下: 3) 击学生表,在表中填入记录如下,这样就完成了一个简单的数据库的建立。2编写一个数据库应用程序,除了能够完成正常的排序功能之外,还要求单击某列标题时,按照升序方式排序,再次单击时,按照相反的方式排序。设计步骤如下:(1) 设计应用程序界面如下:(2) 设置ADOConnection1, ADOQuery1, DataSource1, DBGrid1的数据库连接为office中自带的contact.mdb, 一般保存在c:program filesMicrosoft officeofficesamples目录下。(3) 程序完整代码如下:(4) 运行之后,选择排序字段,选择排序方式,单击按钮,看运行结果(5) 两次单击某列标题,看运行结果。3看一个TDBText和TDBEdit组件的应用实例,这个例子可以通过TDBNavigator组件控制数据集的记录指针,并通过TDBText组件和TDBEdit组件显示数据集的数据,用户还可以通过TDBEdit组件修改数据集中某些字段的值,然后提交更改。我们还可以通过DBImage1组件的快捷菜单来添加照片或删除照片,照片这里为bmp文件格式。设计步骤如下:(1) 设计应用程序界面如下:(2) 设置组件的属性:ADOConnection1连接到数据库试验1刚刚建立的数据库“学生资料.mdb”上;ADOQuery1的属性:Connection: ADOConnection1SQL:select * from 学生Active: TrueDBNavigator1的属性:DataSource:DataSource1DBText1的属性:DataSource:DataSource1DataField:NameDBEdit1的属性设置与DBText1类似,OpenDialog1和SaveDialog1的Filter属性:Filter Name为BMP图片,Filter为*.bmpPopupMenu设置为如图所示:至于其他的一些属性设置这里就不赘述了。(3) 整个程序的代码如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, Mask, DBCtrls, ExtCtrls, Menus;type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; DBText1: TDBText; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DataSource1: TDataSource; DBNavigator1: TDBNavigator; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; PopupMenu1: TPopupMenu; MenuLoad: TMenuItem; MenuDelete: TMenuItem; MenuSeperator: TMenuItem; MenuCopy: TMenuItem; MenuPaste: TMenuItem; MenuCut: TMenuItem; MenuSaveAs: TMenuItem; DBImage1: TDBImage; procedure MenuLoadClick(Sender: TObject); procedure MenuDeleteClick(Sender: TObject); procedure MenuCopyClick(Sender: TObject); procedure MenuPasteClick(Sender: TObject); procedure MenuCutClick(Sender: TObject); procedure MenuSaveAsClick(Sender: TObject); private Private declarations public Public declarations end;var Form1: TForm1;implementation$R *.dfm(4) 运行程序,验证是否能实现应有的功能。4使用动态SQL语句来完成查询比如我们需要通过“姓名”字段查询“学生”数据表中的数据。和往常一样新建一个应用程序,添加一些ADO组件以及一个TDBGrid组件、一个TButton组件和一个TEdit组件。TEdit组件用于输入条件值。在TADOQuery组件的SQL属性中填入“Select * from 学生 WHERE 姓名=:姓名”。程序界面设计如下:添加Button1Click的事件代码如下:5综合设计综合运用知识完成一个功能完整的小型数据库应用系统,要求完成数据的增加、删除、修改等功能外,还需要:灵活而强大的数据查询功能;对图像数据的支持;五、预习要求1、熟悉和掌握实验目的。2、复习相关知识 六、实验报告要求(1)要求写出程序的核心代码。(2)调试程序并进行分析