《电子系统程序设计》实验指导书New.docx
《《电子系统程序设计》实验指导书New.docx》由会员分享,可在线阅读,更多相关《《电子系统程序设计》实验指导书New.docx(14页珍藏版)》请在冰豆网上搜索。
![《电子系统程序设计》实验指导书New.docx](https://file1.bdocx.com/fileroot1/2023-1/10/b4de3d51-d2f5-4e55-afc3-48ffe72f6d11/b4de3d51-d2f5-4e55-afc3-48ffe72f6d111.gif)
《电子系统程序设计》实验指导书New
电子系统程序设计实验指导书
淮海工学院
电子工程学院实验中心
2011年9月10日
实验一Delphi集成开发环境操作
一、实验目的
熟悉Delphi集成开发环境,掌握编辑、编译、运行程序的操作。
二、实验内容
读入一个整数n,读出所有0~n之间的偶数。
三、实验要求
创建应用程序,输入程序源程序,编译、运行程序、发现并改正错误。
四、实验学时:
2学时
五、实验步骤
1.进入Delphi开发环境
展开windows的“开始”菜单,选择“程序”—>“BorlandDelphi7”,进入Delphi开发环境。
2.创建项目
缺省时Delphi创建了一个项目和一个窗体单元文件,我们这里直接在项目文件中编写代码,所以不需要窗体单元文件,在代码编辑器窗口中右击Unit1标签。
3.编写代码
在工具栏中选择“ViewUnit”按钮,在打开的对话框中选择“Project1”,在代码编辑器中打开“Project1”,编写相应的代码。
4.保存程序
单击“File”菜单中的“SaveAll”选项,在保存对话框中选择文件夹并输入文件名,单击“保存”按钮,保存程序。
5.编译程序
单击“project”菜单选择“compile”命令项,进行编译,如果程序有语法错误,系统会将光标停在错误处。
修改后,重新运行,知道编译通过。
6.运行程序
通过“Run”菜单的“Run”命令,运行程序。
实验二Delphi编程语言练习
一、实验目的
ObjectPascal语言程序设计基础训练。
理解对象Pascal程序格式,掌握基本数据类型,熟练运用分支、循环等控制流程,掌握过程及函数的编写和调用,并进一步熟悉Delphi集成开发环境。
二、实验内容
1.求一元二次方程
的根。
2、实现加、减、乘、除四则运算(如图2-1所示),其中功能要求如下:
用户可以通过单选按钮选择运算类型(加减乘除),然后在两个输入框中输入操作数和被操作数,按“运算”键,答案显示在输出框。
图2-1四则运算
三、实验要求
编写应用程序,实现指定功能。
四、实验课时:
2课时
五、实验步骤:
1.进入Delphi开发环境
展开windows的“开始”菜单,选择“程序”—>“BorlandDelphi7”,进入Delphi开发环境。
2.创建项目
缺省时Delphi创建了一个项目和一个窗体单元文件,我们这里直接在项目文件中编写代码,所以不需要窗体单元文件,在代码编辑器窗口中右击Unit1标签。
3.编写代码
在工具栏中选择“ViewUnit”按钮,在打开的对话框中选择“Project1”,在代码编辑器中打开“Project1”,编写程序代码。
4.保存程序
单击“File”菜单中的“SaveAll”选项,在保存对话框中选择文件夹并输入文件名,单击“保存”按钮,保存程序。
5.编译程序
单击“project”菜单选择“compile”命令项,进行编译,如果程序有语法错误,系统会将光标停在错误处,一一修改后,重新运行,知道编译通过。
6.运行程序
通过“Run”菜单的“Run”命令,运行程序。
实验三Delphi窗体、对话框设计
3、1Delphi窗体设计
一、实验目的
熟练掌握常用的窗体属性,能设计美观实用的窗体,较熟练的在窗体中添加组件,设置组件属性,对齐组件,以及动态创建组件和设置属性;
二、实验内容
设计教师基本信息输入程序(如图3-1所示);
开发用户界面如下图所示的应用程序:
图3-1
功能说明:
该界面是一个教师信息录入界面。
用户在编辑框(Edit1)中输入姓名,利用单选按钮(RadioGroup1)指定性别,利用组合框(ComboBox1)选择或直接输入所在系,利用列表框(ListBox1)指定职称。
当输入完上述信息后,单击“确定”按钮,教师信息将显示在右边的Memo1编辑窗口中。
提示:
在组合框和列表框中可以预置少量测试数据。
三、实验要求
设计窗体程序,实现窗体指定的功能;
四、实验课时:
2课时
五、实验步骤:
1.进入Delphi开发环境
展开windows的“开始”菜单,选择“程序”—>“BorlandDelphi7”,进入Delphi开发环境。
2.创建项目
缺省时Delphi创建了一个项目和一个窗体单元文件,我们直接对窗体设置大小和字体等属性,开始进行主菜单设计。
3.界面设计
实验四数据库编程
一、实验目的
掌握数据表结构设计方法,了解不同数据库管理系统的设计技术。
掌握数据表维护窗体的设计,了解不同数据库格式的数据库应用程序的设计技术,灵活应用数据库控制组件。
二、实验要求
给出一数据表,根据该数据表,用ADO组件设计该数据表维护窗体。
三、实验内容
使用Table组件实现查询、插入、删除、更新的功能。
四实验学时:
4学时
五、实验原理
1、Delphi中数据库引擎BDE介绍
Delphi对数据库的支持十分丰富,Delphi的数据库接口是数据库引擎BDE(BorlandDatabaseEngineer),它是应用程序存取数据的中介层(MiddlewareLayer)。
在Delphi下开发的所有数据库应用程序,都是通过Delphi的数据库引擎BDE来对数据进行操作的。
BDE中包含了内建的驱动程序来处理Paradox及dBase的表格与文本文件。
也可以通过外部的驱动程序(add-ondriver)来处理Oracle、SyBase、IntrBase、Informix、MSSQL格式的数据。
BDE也包含了允许应用程序使用ODBC驱动程序来存取数据的ODBCsocket。
BDE具有以下突出的优点:
(1)不同的BDE间的数据可以共享而不必担心有任何的冲突发生,因为所有的数据存取都由数据库引擎来处理。
(2)使用者可以通过BDE对数据库的记录进行双向的查询而不必考虑服务器是否具有这样的功能。
(3)允许使用者在不同的平台上对不同数据库的数据做联集(join)。
(4)增加了数据在不同平台上的可移植性。
数据库引擎BDE的设置是通过对数据库配置文件IDAPI.CFG来完成的,在Delphi安装完成以后,可以通过其主菜单下的DataBase选项的Explore子选项完成。
BDE配置的基本项目是如下几项:
Drivers:
主要设定一些有关数据库驱动程序相关信息的内容,包含ODBC驱动程序、MSSQL驱动程序、ORACLE驱动程序、SYSBASE驱动程序等数据库驱动程序。
Aliases:
这是IDAPI.CFG中最重要的设置内容,它负责记录数据库文件别名的关系,如此做法可以保证数据库系统相关文件改变时,可以不去变动程序代码,只需要更改Aliases的设定;使得程序更具有可移植性和扩充性,数据的独立性也由此得到保证。
System:
显示BDE系统的版本数据;局部的文件共享信息;最大、最小缓冲区;语言驱动程序;系统标志,最低内存使用限制,ODBC的Alias;处理SQL的查询等一系列设定。
Date:
日期的相关信息,如日期的格式、与字符的转换等。
Time:
系统时间的格式、与字符串的转换关系。
Number:
负责数字和字符串的转换。
ALIASES是Delphi中应用程序与数据库接口的连接点。
在设置数据库别名时,还有许多选项的设置,因不同的数据库驱动文件而有不同的设置内容。
当数据库采用标准的数据库驱动程序(即数据库文件是XBASE格式,*.DBF)时,只需要指定文件存放的路径。
而为其他的数据库驱动程序时,要根据不同的驱动来设置用户名、服务器名、日期格式等内容。
2、Delphi中数据库控制组件
数据库控制组件是数据库程序的核心。
共有两类:
数据库存取控制组件、数据库显示控制组件。
在Delphi中,引入了一个“数据来源”的概念。
其作用是在数据库的具体数据与程序中显示的数据之间做中介,即在数据库存取控制组件和数据库显示控制组件间做媒介。
借助数据来源可以在应用程序执行时将数据存取组件与数据显示组件独立分开,动态操作、切换这两种组件。
下面以实例分别对这两种组件中的常用组件进行介绍。
(1)数据库存取控制组件:
负责连接数据库本身,不包含数据的显示与输入。
TDatabase组件:
Database1.AliasName:
='MYDATABASE';
{指定数据库Database1的别名是MYDATABASE}
Database1.DatabaseName:
=my_database;
{在程序中数据库Database1的名称是my_database}
Database1.connected:
=True;
{Database1连接别名是MYDATABASE的数据库,并在程序中区名是my_database}
TTable组件:
Table1.DatabaseName:
='my_database';
{Table1表所在的数据库是my_database,即对应别名是MYDATABASE的数据库}
Table1.TableName:
='my_table.dbf';
{Table1表对应数据库my_database中的表my_table.dbf}
Table1.Active:
=True;
{激活Table1}
TQuery组件:
Query1.DatabaseName:
='my_database';
{查询Querye1所在的数据库是my_database,即对应别名是MYDATABASE的数据库}
Query1.SQL.Add('select*frommy_table');
{查询对应的SQL语句是select*frommy_table}
Query1.Active:
=True;
{激活查询Query1}
TBatchMove组件:
BatchMove1.Mode:
=batAppend;
{批量记录移动的方式是追加记录}
BatchMove1.RecordCount:
=0
{移动符合条件的所有记录,如果为不等于0的数值,则移动的记录数量为指定的数值}
BatchMove1.Source:
=Query1;
{指定移动数据来源是Query1}
BatchMove1.Destination:
=Table1;
{指定目标数据的位置是表Table1}
BatchMove1.Execute;
{执行批量记录移动}
TStoredProc组件:
StoredProc1.DatabaseName:
='my_database';
{存储过程StoredProc1所在的数据库是my_database}
StoredProc1.StoredProcName:
='my_proc';
{数据库my_database中存储过程的名称是my_proc}
StoredProc1.Params.Clear;
{清除原有存储过程的参数}
StoredProc1.Params.CreateParam(ftInteger,'no',ptInput);
{增加存储过程参数no}
StoredProc1.Prepare;
{绑定存储过程的参数}
StoredProc1.ExecProc;
{执行数据库my_database中的存储过程my_proc}
(2)数据库显示控制组件:
提供建立用户界面的基本窗口类型控制组件,让使用者可以输入编辑、显示数据。
TDataSource组件:
DataSource1.DataSet:
=Query1;
{数据来源DataSource1对应查询Query1的结果}
TDBGrid组件:
DBGrid1.DataSource:
=DataSource1;
{数据库内容显示构件DBGrid1的数据来源是DataSource1}
TDBText组件:
DBText1.DataSource:
=DataSource1;
{数据库内存字段显示构件DBText1的数据来源是DataSource1}
DBText1.DataField:
='main_key';
{数据库内存字段显示构件DBText1对应的表的字段名称是main_key}
3、在Delphi中动态地使用SQL查询语句
在一般的数据库管理系统中,通常都需要应用SQL查询语句来提高程序的动态特性。
下面介绍如何在Delphi中实现这种功能。
在Delphi中,使用SQL查询语句的途径是:
在窗体中置入TQuery构件,设置其SQL属性的内容值,此内容为一个字符串数组,数组的每个值对应一行SQL查询语句。
可以在程序设计过程中事先指定,也可以在程序运行中重新赋值,即可以实现动态地改变程序中的查询语句。
假定程序的窗体中有一个名为Query1的TQuery构件,在程序运行过程中需要改变它的SQL查询语句内容,则可以引用以下程序行。
Query1.close;{先关闭以前查询的连接}
Query1.SQL.Clear;{清除以前的查询语句}
Query1.SQL.Add('select*frommytable');
{增加新的查询语句内容为select*frommytable}
Query1.Prepare;{发送查询到BorlandDatabaseEngine(BDE)}
Query1.open;{建立新的查询语句的数据库连接}
在Delphi中,要灵活地使用SQL查询语句,还需要使用TQuery构件的Params特性,即在查询语句中使用参数。
Delphi中的SQL语句如需参数,则在参数名称前使用一个冒号':
'来作为标识。
例如:
'select*frommytablewhereid_no=:
p'一句,其中p为参数,可以在程序运行过程进行在赋值。
在程序运行期动态地创建带参数的SQL查询语句较为复杂,其过程如下:
Query1.close;{先关闭以前查询的连接}
Query1.SQL.Clear;{清除以前的查询语句}
Query1.Params.Clear;{清除以前查询语句的参数}
Query1.Params.CreateParam(ftString,'p',ptInput);
{创建新的查询语句的参数p}
Query1.SQL.Add('select*fromtitle1whereNO_GLOBE=:
p');
{增加新的查询语句内容为select*fromtitle1whereNO_GLOBE=:
p}
{其中p为新建的参数}
Query1.ParamByName('p').asstring:
='1';
{给新的参数赋值为'1'}
Query1.Prepare;
{发送查询到BorlandDatabaseEngine(BDE)}
Query1.open;
{建立新的查询语句的数据库连接}
以上两个示例中,SQL查询语句都是SELECT语句,而当SQL语句是UPDATE或INSERT、DELETE时,其中的Query1.Open需要改为Query1.ExecSQL。
4、动态SQL应用实例介绍
下面给出一个完成动态SQL查询、批记录移动的数据库程序。
程序从数据库my_database的表TITLE_L.DBF中选取符合要求日期的记录,并批量移动到同一个数据库的表my_table.dbf中。
{指定所要连接的数据库别名}
Database1.AliasName:
='MYDATABASE';
Database1.DatabaseName:
=my_database;
Database1.connected:
=True;
{指定目标表是Table1}
Table1.DatabaseName:
='my_database';
Table1.TableName:
='my_table.dbf';
Table1.Active:
=True;
{指定源数据的内容对应查询Query1}
Query1.DatabaseName:
='my_database';
Query1.close;
{程序运行时动态添加SQL查询语句}
Query1.SQL.Clear;
Query1.Params.Clear;
Query1.Params.CreateParam(ftInteger,'update',ptInput);
Query1.Params.CreateParam(ftInteger,'dndate',ptInput);
Query1.SQL.Add('SELECT*FROMTITLE_L');
Query1.SQL.Add('whereLET_DATE<=:
update');
Query1.SQL.Add('ANDLET_DATE>:
dndate');
Query1.SQL.Add('ORDERBYNO_LOCAL');
Query1.Prepare;
Query1.Params[0].asInteger:
=Up_Date;
Query1.Params[1].asInteger:
=Down_Date;
Query1.open;
Query1.Active:
=True;
{用DBGrid1来显示将要移动的记录}
DataSource1.DataSet:
=Query1;
DBGrid1.DataSource:
=DataSource1;
{进行批量记录移动}
BatchMove1.Mode:
=batAppend;
BatchMove1.RecordCount:
=0
BatchMove1.Source:
=Query1;
BatchMove1.Destination:
=Table1;
BatchMove1.Execute;
六、实验步骤
(1)进入Delphi开发环境
展开windows的“开始”菜单,选择“程序”—>“BorlandDelphi7”,进入Delphi开发环境。
(2)创建项目
缺省时Delphi创建了一个项目和一个窗体单元文件,我们直接对窗体设置大小和字体等属性,开始进行主菜单设计。
(3)设计数据表
该实验设计到两个数据表:
Department表和Employees表。
两个表的表结构如下所示:
表8.1Employees表结构
字段名
数据类型
长度
职工号
A
6
姓名
A
8
性别
A
2
出生日期
D
8
婚否
L
1
职称
A
10
职务
A
10
基本工资
$
6
部门号
A
3
简历
M
100
表8.2Department表中的记录信息
部门号
部门名称
负责人
电话号码
001
技术处
丁一
56221356
002
生产处
杨帆
45225542
(4)代码编写
●查询代码编写
单击设计界面中的“查询”按钮,查询employees.db数据库表中的记录。
Delphi提供了多种实现查询功能的方法:
①调用Locate方法
在“查询”按钮的Onclick事件的处理程序中加入如下代码:
procedureTForm1.Button1Click(Sender:
TObject);
begin
Table1.Locate('姓名','丁一',[]);//查询姓名为“丁一”的记录
end;
②调用GotoKey方法
在查询之前,要确保查询的字段是关键字段或辅助索引字段,如果要查询的字段不是关键字段或辅助索引字段,则查询过程失败,系统会报错。
例如,在“查询”按钮的Onclick事件的处理程序中加入如下代码:
ProcedureTForm1.Button1Click(Sender:
TObject);
begin
Table1.IndexFieldNames:
='职工号';//指定查询字段
Table1.SetKey;//将Table1置为查询状态
Table1.Fields[0].AsString:
='111001';//指定查询字段值
Table1.GotoKey;//进行查询end;
●插入功能实现
①用Insert方法实现插入功能
在“插入”按钮的Onclick事件的处理程序中加入如下代码:
procedureTForm1.Button2Click(Sender:
TObject);
begin
Table1.Insert;//设置为插入状态
Table1.Fields[0].AsString:
='111002';//设置要插入的值
Table1.Post;//将插入的记录写回数据库
End;
②用Append方法实现插入功能
在“插入”按钮的Onclick事件的处理程序中加入如下代码:
(*实现在尾部插入一条职工号为“111003”的记录*)
procedureTForm1.Button2Click(Sender:
TObject);
begin
Table1.Append;//设置为插入状态
Table1.Fields[0].AsString:
='111003';//设置要插入的值
Table1.Post;//将插入的记录写回数据库
End;
●删除功能实现
在“删除”按钮的Onclick事件的处理程序中加入如下代码:
procedureTForm1.Button3Click(Sender:
TObject);
begin
Table1.Delete;//删除记录指针指向的记录
End;
●更新功能实现
在“更新”按钮的Onclick事件处理程序中加入如下代码:
procedureTForm1.Button3Click(Sender:
TObject);
begin
Table1.Edit;//将Table控件置成编辑状态
Table1.Fields[0].AsString:
='王芳'
Table1.Post;//将修改后的记录写回数据库
End;
(5)运行程序。
(6)保存文件。
选择File→Save,以“project8.dpr”为名保存在“实验四”文件夹中。
附录一:
实验要求及实验报告要求
实验要求:
1.实验报告的内容包括:
实验目的、实验内容、实验步骤、学习体会等(必须写姓名、班级、学号,实验题目)等。
要按照淮海工学院实验要求完成实验报告。
下次到实验室做实验时要上交上次实验的实验报告,缺少即取消本次实验资格。
2.爱护仪器设备,做完实验要整理好仪器设备,损坏仪器要按规定赔偿;保持实验室的整洁卫生,请勿乱丢纸屑杂物,随地吐痰。
教师:
康家银
附:
实验课评分办法:
1、平时成绩的评分:
每个实验按满分100分记,其中预习情况占20分,实验纪律占5分,仪器维护占5分,实验操作占30分,实验报告占40分(实验原理10分、操作步骤10分、数据记录与处理10分、回答问题5分,整洁情况5分)。
2、实验考试评分:
参照上述评分方法,将预习情况的20分归入实验报告中(前四项每项各增加5分)。
3、期终总评成绩:
(1)实验考勤占30%
(2)实验态度与结果30%(3)实验报告40%