
Delphi程序设计试题及解答卷10 中央电大工学院王欣 一、填空题(20分,每空2分) 1、结构化程序设计要求程序中仅采用 三种控制结构,其中每种结 构只能有一个入口和一个出口。 2、现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有 自己的属性和 3、Delphi应用程序中项目文件的扩展名是 4、在设计阶段,利用Image对象的 属性,可以加载一幅图片。 6、时钟组件(Timer)能有规律的以一定时间间隔触发 事件,并执行该事件过程 中的程序代码。为了使计时器控件Timer1每隔0.5秒就触发一次并执行事件代码,应将 Timer1控件的Interval属性设置为 7、Delphi程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 组件与数据库建立连接,并读取数据库中的数据,而后 又经过 组件将数据送到用户界面组件中显示。 8、与数学表达式 cos(a+b+a对应的bject Paseal表达式是 a2+x 9、利用 对象的LineTo等绘图方法,可以绘制基本图形。 二、单项选择题(30分,每题3分) 1、Delphi程序设计的基本特点是()。 A.可视化程序设计 B.代码程序设计 C.事件驱动编程 D.A和C 2、修改窗体的标题时,应当在属性页中设置的属性是()。 A.Caption B.Name C.Text D.Label 3、“x是小于100的非负数”的0 bject Pascal表达式是()。 A.0≤X<100
Delphi 程序设计试题及解答卷 10 中央电大工学院 王欣 一、填空题(20 分,每空 2 分) 1、结构化程序设计要求程序中仅采用 三种控制结构,其中每种结 构只能有一个入口和一个出口。 2、现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有 自己的属性和 。 3、Delphi 应用程序中项目文件的扩展名是 。 4、在设计阶段,利用 Image 对象的 属性,可以加载一幅图片。 6、时钟组件(Timer)能有规律的以一定时间间隔触发 事件,并执行该事件过程 中的程序代码。为了使计时器控件 Timer1 每隔 0.5 秒就触发一次并执行事件代码,应将 Timer1 控件的 Interval 属性设置为 。 7、Delphi 程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 组件与数据库建立连接,并读取数据库中的数据,而后 又经过 组件将数据送到用户界面组件中显示。 8、与数学表达式 a a x a b + + + 2 2 cos ( ) 对应的 Object Pascal 表达式是 。 9、利用 对象的 LineTo 等绘图方法,可以绘制基本图形。 二、单项选择题(30 分,每题 3 分) 1、Delphi 程序设计的基本特点是( )。 A.可视化程序设计 B.代码程序设计 C.事件驱动编程 D. A 和 C 2、修改窗体的标题时,应当在属性页中设置的属性是( )。 A.Caption B. Name C. Text D. Label 3、“x 是小于 100 的非负数”的 Object Pascal 表达式是( )。 A.0 ≤ x < 100

B.x>=0,x=0)AND(x=0)0R(x<100) 4、利用Image对象的哪个属性设置,可以使加载的图像自动放大或缩小,以适应Image 的显示区域() A.Stretch B.AutoSize C.Align D.Center 5、工具栏上的一个SpeedButton按钮如果要设置为状态按钮,则正确设置的方法是() A.将SpeedButton按钮的GroupIndex属性设置为O,且AllowAllUp属性设置为True。 B.将SpeedButton按钮的GroupIndex属性设置为O,且AllowAllUp属性设置为False。 C.将SpeedButton按钮的GroupIndex属性设置为非O值,且AllowAllUp属性设置为 Trueo D.将SpeedButton按钮的GroupIndex属性设置为非0值,且AllowAllUp属性设置为 Falseo 6、工具栏上的一组按钮如果要构成互斥关系(如“左对齐”、“居中”、“右对齐”),它 们的GroupIndex属性正确的设置是() A.GroupIndex属性值都为0 B.GroupIndex属性值非O,且互不相同 C.GroupIndex属性值非O,且相同D.GroupIndex属性值互不相同 7、下列说法正确的是() A.组件必须是可视的,这样用户才能使用。 B.Delphi中组件就是控件,二者是完全相同的。 C.控件都是可视的。 D.按钮(Button)是组件,而窗体(Form)则不是组件。 8、以下能够触发编辑框(Edit)组件OnChange事件的操作是() A.鼠标单击编辑框 B.鼠标双击编辑框 C.在编辑框中选择文本 D.在编辑框中输入文本 9、以下叙述中错误的是( A.一个项目包含不止一种类型的文件
B. x >= 0, x=0) AND (x = 0 ) OR (x<100) 4、利用 Image 对象的哪个属性设置,可以使加载的图像自动放大或缩小,以适应 Image 的显示区域( ) A.Stretch B.AutoSize C.Align D.Center 5、工具栏上的一个 SpeedButton 按钮如果要设置为状态按钮,则正确设置的方法是( ) A.将 SpeedButton 按钮的 GroupIndex 属性设置为 0,且 AllowAllUp 属性设置为 True。 B.将 SpeedButton 按钮的 GroupIndex 属性设置为 0,且 AllowAllUp 属性设置为 False。 C.将 SpeedButton 按钮的 GroupIndex 属性设置为非 0 值,且 AllowAllUp 属性设置为 True。 D.将 SpeedButton 按钮的 GroupIndex 属性设置为非 0 值,且 AllowAllUp 属性设置为 False。 6、工具栏上的一组按钮如果要构成互斥关系(如“左对齐”、“居中”、“右对齐”),它 们的 GroupIndex 属性正确的设置是( ) A.GroupIndex 属性值都为 0 B.GroupIndex 属性值非 0,且互不相同 C.GroupIndex 属性值非 0,且相同 D.GroupIndex 属性值互不相同 7、下列说法正确的是( ) A.组件必须是可视的,这样用户才能使用。 B.Delphi 中组件就是控件,二者是完全相同的。 C.控件都是可视的。 D.按钮(Button)是组件,而窗体(Form)则不是组件。 8、以下能够触发编辑框(Edit)组件 OnChange 事件的操作是( ) A. 鼠标单击编辑框 B. 鼠标双击编辑框 C. 在编辑框中选择文本 D. 在编辑框中输入文本 9、以下叙述中错误的是( ) A. 一个项目包含不止一种类型的文件

B.窗体的Show方法的作用是显示该窗体。 C.窗体的Hide方法和Release方法的作用完全相同。 D.若项目文件中有多个窗体,可以根据需要指定一个窗体为主窗体。 10、只能输出、而不能输入的数据感知控件是() A.DBEdit B.DBText C.DBRadioGroup D.DBCheckBox 三、判断题,请给下列论述中正确的打上“√”,错误的打上“×”(10分,每题2分) 1、()时钟Timer组件的时间间隔是由Interval属性控制,例如其值为1000时表 示时间间隔是1秒。 2、()在Delphi环境中,组件页上的组件是“对象”的概念,在窗体上建立的按 钮是“类”的概念。 3、()一个Table对象不能同时指定与之相连的两个关系表。 4、()在Data Controls组件页上,只有DBNavigator组件可以不用指定DataField 属性值。 5、()一个Query对象同一时刻只能存储一条SQL语句。 四、程序填空题(共30分,每题10分) 1、(10分,每空2分) 本程序根据用户选择的运算符对输入的二个操作数进行运算,并显示运算结果。设计界 面和运行界面如图所示。其中,运算符是一个含有4个单选按纽的RadioGroupl对象。 7Form1 7Form1 -回x 选择 操作数1Edit1 请选择 操作数134 c加 操作数2 c加 Edit2 C减 操作数2⑨ C乘 c乘 C除 结果:Edit3 o除 结果3 运算 退出 运算 退出 下面是单击“运算”按钮的事件处理程序,请根据功能要求完成程序填空。 procedure TForml.ButtonlClick(Sender:TObject);// var x1,x2,y Integer;
B. 窗体的 Show 方法的作用是显示该窗体。 C. 窗体的 Hide 方法和 Release 方法的作用完全相同。 D. 若项目文件中有多个窗体,可以根据需要指定一个窗体为主窗体。 10、只能输出、而不能输入的数据感知控件是( ) A.DBEdit B.DBText C.DBRadioGroup D.DBCheckBox 三、判断题,请给下列论述中正确的打上“√”,错误的打上“”(10 分,每题 2 分) 1、( )时钟 Timer 组件的时间间隔是由 Interval 属性控制,例如其值为 1000 时表 示时间间隔是 1 秒。 2、( ) 在 Delphi 环境中,组件页上的组件是“对象”的概念,在窗体上建立的按 钮是“类”的概念。 3、( ) 一个 Table 对象不能同时指定与之相连的两个关系表。 4、( ) 在 Data Controls 组件页上,只有 DBNavigator 组件可以不用指定 DataField 属性值。 5、( ) 一个 Query 对象同一时刻只能存储一条 SQL 语句。 四、程序填空题(共 30 分,每题 10 分) 1、(10 分,每空 2 分) 本程序根据用户选择的运算符对输入的二个操作数进行运算,并显示运算结果。设计界 面和运行界面如图所示。其中,运算符是一个含有 4 个单选按纽的 RadioGroup1 对象。 下面是单击“运算”按钮的事件处理程序,请根据功能要求完成程序填空。 --------------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject);//运算 var x1,x2,y :Integer;

begin x1 :StrToInt(Edit1.1 x2:=StrToInt(Edit2.②): Case③ ItemIndex of 0:y:=x1+x2: 1:y:=x1-x2; 2:y:=x1*x2: 3:y :x1 Div x2; End; Edit3.④ :=IntToStr(⑤); end; 2、(10分,每空2分) 本程序由主窗体forml和子窗体form2组成,设计界面如下图所示: 7Form1 一▣x 回 Panel1 打开文件 播放 暂停 退出 7Form2 -▣× 是否退出: √Yes ⊙No 主窗体Forml上建立的对象有Panell、MediaPlayer1、OpenDialogl、Buttonl(打开 文件)、Button2(播放)、Button3(暂停)、Button4(退出). 子窗体Form2上建立的对象有Labell、BitBtml(Yes)、BitBtm2(No)。 单击“打开文件”按钮,会弹出打开文件对话框。用户指定一个要播放的文件后,单击
begin x1 := StrToInt( Edit1. ① ); x2 := StrToInt( Edit2. ② ); Case ③ .ItemIndex of 0: y := x1 + x2 ; 1: y := x1 - x2; 2: y := x1 * x2; 3: y := x1 Div x2; End; Edit3. ④ := IntToStr( ⑤ ); end; --------------------------------------------------------------------------- 2、(10 分,每空 2 分) 本程序由主窗体 form1 和子窗体 form2 组成,设计界面如下图所示: 主窗体 Form1 上建立的对象有 Panel1、MediaPlayer1、OpenDialog1、Button1(打开 文件)、Button2(播放)、Button3(暂停)、Button4(退出)。 子窗体 Form2 上建立的对象有 Label1、BitBtm1(Yes)、BitBtm2(No)。 单击“打开文件”按钮,会弹出打开文件对话框。用户指定一个要播放的文件后,单击

“播放”按钮可播放多媒体文件,单击“暂停”按钮可暂停播放。 单击“退出”按钮,会弹出确认对话框(Form2)。如果用户按“Yes”键,程序结束: 如果按“No”键,返回主窗体。 下面是Unit1的代码部分,请在下划线处完成程序填空。 implementation {SR *dfm} uses ① procedure TForml.Button1Click(Sender:TObject);/打开文件 begin if② then begin MediaPlayer1.FileName :=3 MediaPlayer1.Open MediaPlayer1..Display:=Panel1;/将Panel1做为播放屏幕 MediaPlayer1.DisplayRect =Rect(0,0,Panel1.Width,Panell.Height); end end; procedure TForml.Button2Click(Sender:TObject);// begin MediaPlayer1. ④ end; procedure TForml.Button3Click(Sender:TObject);// begin MediaPlayer1.Pause end; procedure TForml.Button4Click(Sender:TObject);/ begin if⑤ mrYes then
“播放”按钮可播放多媒体文件,单击“暂停”按钮可暂停播放。 单击“退出”按钮,会弹出确认对话框(Form2)。如果用户按“Yes”键,程序结束; 如果按“No”键,返回主窗体。 下面是 Unit1 的代码部分,请在下划线处完成程序填空。 --------------------------------------------------------------------------- implementation {$R *.dfm} uses ① ; procedure TForm1.Button1Click(Sender: TObject); //打开文件 begin if ② then begin MediaPlayer1.FileName := ③ ; MediaPlayer1.Open ; MediaPlayer1.Display := Panel1; //将 Panel1 做为播放屏幕 MediaPlayer1.DisplayRect :=Rect(0,0,Panel1.Width,Panel1.Height); end ; end; procedure TForm1.Button2Click(Sender: TObject); //播放 begin MediaPlayer1. ④ ; end; procedure TForm1.Button3Click(Sender: TObject); //暂停 begin MediaPlayer1.Pause ; end; procedure TForm1.Button4Click(Sender: TObject); //退出 begin if ⑤ = mrYes then

close end; end. 3、(10分,每空2分) 本程序实现一个简单的选课界面。设计界面和运行界面如下图所示: 7 Form1 回x 7Form1 -回x 课程信息: 国:国 课程信息: 课程号课程名 名额 课程号课程名 名额 c01 物理 200 物理 199 c02 化学 100 c02 化学 99 c03 外语 50 c03 外语 49 c04 力学 149 c04 力学 149 学号: Edit1 选课 鼠国 学号: 040001 选课 该程序涉及到数据库中的两张表:course(课程表)和sc(选课表),表结构如下: sc(sno学号,cno课程号,grade成绩) course(cno课号,cname课名,quota名额) 其中:sno和cno都是字符型。 在用户界面,操作员选中一门书、输入学号后,按“选课”键,完成选课功能,即在 sc表中插入一条选课记录,并将course表中该课程的名额减1。 该界面要实现以下合法性检查: ●当该学生已经选过此课,不能再选。 ·当所选课程名额己为0,不能再选。 在Forml上建立的数据库组件对象及连接关系如下: Databasel-一Tablel(与course表相连)一DataSourcel-DBGrid1(显示课程信息) Databasel一Table22(与sc表相连,用于插入选课记录) Databasel-Queryl 其中为Tablel建立了3个永久字段:Tablelcno(课程号)、Tablelcname(课程名) Tablelquota(名额)。 Query1的SQL语句如下: select cno from sc
close ; end; end. --------------------------------------------------------------------------- 3、(10 分,每空 2 分) 本程序实现一个简单的选课界面。设计界面和运行界面如下图所示: 该程序涉及到数据库中的两张表:course(课程表)和 sc(选课表),表结构如下: sc(sno 学号,cno 课程号,grade 成绩) course(cno 课号,cname 课名,quota 名额) 其中:sno 和 cno 都是字符型。 在用户界面,操作员选中一门书、输入学号后,按“选课”键,完成选课功能,即在 sc 表中插入一条选课记录,并将 course 表中该课程的名额减 1。 该界面要实现以下合法性检查: ⚫ 当该学生已经选过此课,不能再选。 ⚫ 当所选课程名额已为 0,不能再选。 在 Form1 上建立的数据库组件对象及连接关系如下: Database1-Table1(与 course 表相连)-DataSource1-DBGrid1(显示课程信息) Database1-Table2(与 sc 表相连,用于插入选课记录) Database1-Query1 其中为 Table1 建立了 3 个永久字段:Table1cno(课程号)、Table1cname(课程名)、 Table1quota(名额)。 Query1 的 SQL 语句如下: select cno from sc

where sno =sno and cno =cno 下面是Unit1的代码实现部分,请完成程序填空: implementation (SR *dfm) procedure TForml.Button1Click(Sender:TObject);/“选课”键 begin query1.Close query1.ParamByName('sno').Value 1 query1.ParamByName('cno').Value :2 query1.Open if queryl['cno']<null then begin showmessage('已选过此课'): exit; end; if③ then begin showmessage('没有名额'); exit end; table2.④ [editl.Text,tablelcno.Value,null]) tablel.Edit tablelquota.Value:=tablelquota.Value-1;/名额减1 table1.⑤ end; end. 五、编程题(10分) 下图是本程序的设计界面(左)和运行界面(右):
where sno = :sno and cno = :cno 下面是 Unit1 的代码实现部分,请完成程序填空: --------------------------------------------------------------------------- implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //“选课”键 begin query1.Close ; query1.ParamByName('sno').Value := ① ; query1.ParamByName('cno').Value := ② ; query1.Open ; if query1['cno'] <> null then begin showmessage('已选过此课'); exit ; end ; if ③ then begin showmessage('没有名额'); exit ; end; table2. ④ ( [edit1.Text , table1cno.Value , null] ); table1.Edit ; table1quota.Value := table1quota.Value - 1 ; //名额减 1 table1. ⑤ ; end; end. --------------------------------------------------------------------------- 五、编程题(10 分) 下图是本程序的设计界面(左)和运行界面(右):

7Form1 _▣x 操作数1:Edit1 操作数2Edit2 口显示余数 结果Edit3 余数Edit4 除键 7Form1 _▣× 操作数121 操作数213 口显示余数 结果 1 余数8■ 除键 在forml上建立的对象有:Label1 Label5、Edit1Edit4、Buttonl(除键)和CheckBox1 等。 该程序实现除法运算。用户输入两个操作数,按除键后,整除结果显示在结果框中。 输入的操作数必须是1~100之间的整数。如果输入有误,程序要给出错误提示信息。 如果“显示余数”复选框选中,则除法余数显示在余数框中,否则不显示余数。 请编写单击“除键”按钮的事件处理程序。 procedure TForml.ButtonlClick(Sender:TObject); begin end;
在 form1 上建立的对象有:Label1~Label5、Edit1~Edit4、Button1(除键)和 CheckBox1 等。 该程序实现除法运算。用户输入两个操作数,按除键后,整除结果显示在结果框中。 输入的操作数必须是 1~100 之间的整数。如果输入有误,程序要给出错误提示信息。 如果“显示余数”复选框选中,则除法余数显示在余数框中,否则不显示余数。 请编写单击“除键”按钮的事件处理程序。 procedure TForm1.Button1Click(Sender: TObject); begin end;

试题参考答案 (一)填空题(10分,每空1分) 1、顺序、分支和循环 2、方法 3、.dpr(或dpr) Picture5、6、0 nTimer5007、数据库连接组件 数据源组件8、sqr(cos(a+b) /(sqr (a)*x)+a cos(a+b)*cos(a+b)/(a*a*x)+a 9.Canvas (二)单项选择题(30分,每题3分) 1、D 2、A 3、C 4、A5、C 6、A 7、C 8、D9、C 10、B (三)判断题,请给正确的打上“√”,错误的打上“×”(10分,每题2分) 1、√ 2、X3、√ 4、X 5、√ (四)程序填空题(共30分,每题10分) 1、(10分,每空2分) ①text ②text ③RadioGroupl ④text ⑤y 2、(10分,每空2分) ①unit2 2 opendialogl.Execute 3 opendialogl.FileName ④Play ⑤form2.ShowModal 3、(10分,每空2分) ①True ②True ③Tablel ④DataSourcel ⑤DataSourcel (五)编程题(10分) procedure TForml.ButtonlClick(Sender:TObject); var x,y,z integer begin x strtoint(editl.Text); y :strtoint(edit2.Text);
试题参考答案 (一)填空题(10 分,每空 1 分) 1、顺序、分支和循环 2、方法 3、.dpr (或 dpr) 4、 Picture 5、 6、OnTimer 500 7、数据库连接组件 数据源组件 8、sqr(cos(a+b)) /(sqr(a)*x)+a 或 cos(a+b) * cos(a+b) /(a*a*x)+a 9、Canvas (二)单项选择题(30 分,每题 3 分) 1、D 2、A 3、C 4、A 5、C 6、A 7、C 8、D 9、C 10、B (三)判断题,请给正确的打上“√”,错误的打上“”(10 分,每题 2 分) 1、√ 2、╳ 3、√ 4、╳ 5、√ (四)程序填空题(共 30 分,每题 10 分) 1、(10 分,每空 2 分) ① text ② text ③ RadioGroup1 ④ text ⑤ y 2、(10 分,每空 2 分) ① unit2 ② opendialog1.Execute ③ opendialog1.FileName ④ Play ⑤ form2.ShowModal 3、(10 分,每空 2 分) ① True ② True ③ Table1 ④ DataSource1 ⑤ DataSource1 (五)编程题(10 分) procedure TForm1.Button1Click(Sender: TObject); var x,y,z : integer ; begin x := strtoint(edit1.Text); y := strtoint(edit2.Text);

if ((x>=1)and (x=1)and (y<=100))then begin z :x div y edit3.Text :inttostr(z); if checkbox1.Checked then edit4.Text :inttostr(x mod y) else edit4.Clear end else begin showmessage('输入有错'); exit; end end;
if ((x>=1) and (x=1) and (y<=100)) then begin z := x div y ; edit3.Text := inttostr(z); if checkbox1.Checked then edit4.Text := inttostr(x mod y) else edit4.Clear ; end else begin showmessage('输入有错'); exit; end ; end;