
Delphi程序设计试题及解答卷12 中央电大工学院王欣 一、填空题(20分,每空2分) 1、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构 只能有」 个入口和一个出口。 2、对象的三个要素是属性、方法和 3、Delphi应用程序中项目文件的扩展名是 4、在设计阶段,利用Image对象的, 属性,可以加载一幅图片。 5、时钟组件(Timer)能有规律的以一定时间间隔触发 事件,并执行该事件过程 中的程序代码。为了使计时器控件Timr1每隔0.5秒就触发一次并执行事件代码,应将 Timer1控件的Interval属性设置为一。 6、Delphi程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 组件与数据库建立连接,并读取数据库中的数据,而后 又经过 组件将数据送到用户界面组件中显示。 7、与数学表达式sn(a+妙) +a对应的Object Pascal表达式是 ax 8、能够实现格式化输入的编辑框组件是 二、单项选择题(30分,每题3分) 1、Delphi应用程序设计基于()语言。 A)Basic B)C++C)Pascal D)Object Pascal 2、下列表达式中()不是布尔表达式。 A)A=3 B)A div B C)A and B D)A>B 3、“x是小于100的非负数”的0 bject Pascal表达式是()。 A.0≤x=0,x=0)AND(x=0)0R(x<100) 4、利用Image对象的哪个属性设置,可以使加载的图像自动放大或缩小,以适应Image 的显示区域() A.Stretch B.AutoSize
Delphi 程序设计试题及解答卷 12 中央电大工学院 王欣 一、填空题(20 分,每空 2 分) 1、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构 只能有 个入口和一个出口。 2、对象的三个要素是属性、方法和 。 3、Delphi 应用程序中项目文件的扩展名是 。 4、在设计阶段,利用 Image 对象的 属性,可以加载一幅图片。 5、时钟组件(Timer)能有规律的以一定时间间隔触发 事件,并执行该事件过程 中的程序代码。为了使计时器控件 Timer1 每隔 0.5 秒就触发一次并执行事件代码,应将 Timer1 控件的 Interval 属性设置为 。 6、Delphi 程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 组件与数据库建立连接,并读取数据库中的数据,而后 又经过 组件将数据送到用户界面组件中显示。 7、与数学表达式 a a x a by + + 2 2 sin ( ) 对应的 Object Pascal 表达式是 。 8、能够实现格式化输入的编辑框组件是 。 二、单项选择题(30 分,每题 3 分) 1、Delphi 应用程序设计基于( )语言。 A) Basic B) C++ C) Pascal D) Object Pascal 2、下列表达式中( )不是布尔表达式。 A) A=3 B) A div B C) A and B D) A>B 3、“x 是小于 100 的非负数”的 Object Pascal 表达式是( )。 A.0 ≤ 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属性设置为O,且AllowAllUp属性设置为True。 B.将SpeedButton按钮的GroupIndex属性设置为O,且AllowAllUp属性设置为False。 C.将SpeedButton按钮的GroupIndex属性设置为非O值,且AllowAllUp属性设置为 Trueo D.将SpeedButton按钮的GroupIndex属性设置为非0值,且AllowAllUp属性设置为 Falseo 6、下列说明错误的是() A、OpenDialog是打开文件对话框。 B、Edit组件的Clear方法是清除编辑框中的内容 C、CheckBox控件是通过Checked属性确定选择状态 D、按钮组件的属性Name设置为“确定”,则按钮上文本显示为“确定” 7、下列说法正确的是() A.组件必须是可视的,这样用户才能使用。 B.Delphi中组件就是控件,二者是完全相同的。 C.控件都是可视的。 D.按钮(Button)是组件,而窗体(Form)则不是组件。 8、以下能够触发编辑框(Edit)组件OnChange事件的操作是() A.鼠标单击编辑框 B.鼠标双击编辑框 C.在编辑框中选择文本 D.在编辑框中输入文本 9、要改变控件的宽度,应改变控件的()属性。 A、width B、height C、top D、left 10、只能输出、而不能输入的数据感知控件是() A.DBEdit B.DBText C.DBRadioGroup D.DBCheckBox 三、判断题,请给下列论述中正确的打上“√”,错误的打上“×”(10分,每题2分) 1、()结构化程序设计要求采用自顶向下、逐步求精的设计方法和单入口、单出口 的控制结构。 2、()在Delphi环境中,组件页上的组件是“对象”的概念,在窗体上建立的按
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、下列说明错误的是( ) A、 OpenDialog 是打开文件对话框。 B、 Edit 组件的 Clear 方法是清除编辑框中的内容 C、 CheckBox 控件是通过 Checked 属性确定选择状态 D、 按钮组件的属性 Name 设置为“确定”,则按钮上文本显示为“确定” 7、下列说法正确的是( ) A.组件必须是可视的,这样用户才能使用。 B.Delphi 中组件就是控件,二者是完全相同的。 C.控件都是可视的。 D.按钮(Button)是组件,而窗体(Form)则不是组件。 8、以下能够触发编辑框(Edit)组件 OnChange 事件的操作是( ) A. 鼠标单击编辑框 B. 鼠标双击编辑框 C. 在编辑框中选择文本 D. 在编辑框中输入文本 9、要改变控件的宽度,应改变控件的( )属性。 A、width B、height C、top D、left 10、只能输出、而不能输入的数据感知控件是( ) A.DBEdit B.DBText C.DBRadioGroup D.DBCheckBox 三、判断题,请给下列论述中正确的打上“√”,错误的打上“”(10 分,每题 2 分) 1、( ) 结构化程序设计要求采用自顶向下、逐步求精的设计方法和单入口、单出口 的控制结构。 2、( ) 在 Delphi 环境中,组件页上的组件是“对象”的概念,在窗体上建立的按

钮是“类”的概念。 3、()一个Tble对象不能同时指定与之相连的两个关系表。 4、()在Data Controls组件页上,只有DBNavigator组件可以不用指定DataField 属性值。 5、()建立永久字段的好处是:可以在设计阶段对字段对象进行设置,并可以增加 新的字段(计算字段和查找字段)。 四、程序填空题(共30分,每题10分) 1、(10分,每空2分) 数据库mydb中有关系表student,其结构如下: student(sno学号,sname姓名,sex性别,birthday生日) 现编写一个学生信息浏览程序,设计界面和运行界面如下图所示: 7Form1 ✉▣× 7Form1 -▣x 学号DB驱dit1 性别DBEdit3: 学号01000丽 性别男 姓名DBEdit2 生日DBEdit4 姓名赵卫 生日1982-4-25 在下划线处填写相应数据库组件的属性值: Databasel.DatabaseName mydb Tablel.DatabaseName mydb Tablel.TableName student Tablel.Active ① Datasourcel.DataSet :② DBNavigatorl.DataSource 3 DBEdit2.DataSource :④ DBEdit2.DataField :⑤ 2、(10分,每空2分) 本程序由主窗体forml和子窗体form2组成,设计界面如下图所示:
钮是“类”的概念。 3、( ) 一个 Table 对象不能同时指定与之相连的两个关系表。 4、( ) 在Data Controls组件页上,只有DBNavigator组件可以不用指定DataField 属性值。 5、( ) 建立永久字段的好处是:可以在设计阶段对字段对象进行设置,并可以增加 新的字段(计算字段和查找字段)。 四、程序填空题(共 30 分,每题 10 分) 1、(10 分,每空 2 分) 数据库 mydb 中有关系表 student,其结构如下: student(sno 学号,sname 姓名,sex 性别,birthday 生日) 现编写一个学生信息浏览程序,设计界面和运行界面如下图所示: 在下划线处填写相应数据库组件的属性值: Database1. DatabaseName : mydb Table1. DatabaseName : mydb Table1. TableName : student Table1. Active : ① Datasource1.DataSet : ② DBNavigator1. DataSource : ③ DBEdit2. DataSource : ④ DBEdit2. DataField : ⑤ --------------------------------------------------------------------------- 2、(10 分,每空 2 分) 本程序由主窗体 form1 和子窗体 form2 组成,设计界面如下图所示:

7Form1 -ox 回 Panel1 ■ 打开文件 播放 暂停退出 7 Form2 -▣x 是否退出: √Yes ⊙No 主窗体Forml上建立的对象有Panel1l、MediaPlayerl、OpenDialogl、Buttonl(打开 文件)、Button2(播放)、Button3(暂停)、Button4(退出). 子窗体Form2上建立的对象有Labell、BitBtml(Yes)、BitBtm2(No)。 单击“打开文件”按钮,会弹出打开文件对话框。用户指定一个要播放的文件后,单击 “播放”按钮可播放多媒体文件,单击“暂停”按钮可暂停播放。 单击“退出”按钮,会弹出确认对话框(Form2)。如果用户按“Yes”键,程序结束: 如果按“No”键,返回主窗体。 下面是Unit1的代码部分,请在下划线处完成程序填空。 implementation (SR *dfm} uses ① procedure TForml.Button1Click(Sender:TObject);/打开文件 begin if② then begin MediaPlayer1.FileName :=3
主窗体 Form1 上建立的对象有 Panel1、MediaPlayer1、OpenDialog1、Button1(打开 文件)、Button2(播放)、Button3(暂停)、Button4(退出)。 子窗体 Form2 上建立的对象有 Label1、BitBtm1(Yes)、BitBtm2(No)。 单击“打开文件”按钮,会弹出打开文件对话框。用户指定一个要播放的文件后,单击 “播放”按钮可播放多媒体文件,单击“暂停”按钮可暂停播放。 单击“退出”按钮,会弹出确认对话框(Form2)。如果用户按“Yes”键,程序结束; 如果按“No”键,返回主窗体。 下面是 Unit1 的代码部分,请在下划线处完成程序填空。 --------------------------------------------------------------------------- implementation {$R *.dfm} uses ① ; procedure TForm1.Button1Click(Sender: TObject); //打开文件 begin if ② then begin MediaPlayer1.FileName := ③ ;

MediaPlayer1.Open MediaPlayer1..Display:=Panell;/将Panel1做为播放屏幕 MediaPlayer1.DisplayRect =Rect(0,0,Panell.Width,Panell.Height); end; end; procedure TForml.Button2Click(Sender:TObject);// begin MediaPlayerl._④ end; procedure TForml.Button3Click(Sender:TObject);// begin MediaPlayer1.Pause end; procedure TForml.Button4Click(Sender:TObject);/ begin if⑤ mrYes then close end; end. 3、(10分,每空2分) 本程序实现一个简单的选课界面。设计界面和运行界面如下图所示: 7Forml 7Form1 -回x 课程信总: 司 课程信息: 课程号课程名 名额 课程号课程名 名额一 c01 物理 200 c01 物理 199 c02 化学 100 c02 化学 99 c03 外语 50 c03 外语 49 c04 力学 149 c04 力学 149 学号: Edit1 选课 家国 学号: 040001 选课 该程序涉及到数据库中的两张表:course(课程表)和sc(选课表),表结构如下: sc(sno学号,cno课程号,grade成绩)
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 分) 本程序实现一个简单的选课界面。设计界面和运行界面如下图所示: 该程序涉及到数据库中的两张表:course(课程表)和 sc(选课表),表结构如下: sc(sno 学号,cno 课程号,grade 成绩)

course(cno课号,cname课名,quota名额) 其中:sno和cno都是字符型。 在用户界面,操作员选中一门书、输入学号后,按“选课”键,完成选课功能,即在 sc表中插入一条选课记录,并将course表中该课程的名额减1。 该界面要实现以下合法性检查: ●当该学生己经选过此课,不能再选。 ●当所选课程名额已为0,不能再选。 在Forml上建立的数据库组件对象及连接关系如下: Databasel-Tablel(与course表相连)一DataSourcel一DBGridl(显示课程信息) Databasel一Table2(与sc表相连,用于插入选课记录) Databasel-Queryl 其中为Tablel建立了3个永久字段:Tablelcno(课程号)、Tablelcname(课程名)、 Tablelquota(名额)。 Query1的SQL语句如下: select cno from sc where sno sno and cno =cno 下面是Unit1的代码实现部分,请完成程序填空: implementation {$R米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('己选过此课'):
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 {$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(没有名a额); exit end; table2.④ [edit1.Text,tablelcno.Value,null]) tablel.Edit tablelquota.Value:=tablelquota.Value-1;/名额减1 tablel. ⑤ end; end. 五、编程题(10分) 某厂对使用的原材料钢筋进行用前检测。要求输入钢筋的直径进行检查。标准品为10.0 毫米直径。实际产品的直径与标准品之间的误差为士0.5毫米以下(含0.5毫米)的都认为 是合格的,提示“检测为合格品”。否则提示“检测为废品”。 本程序设计界面及运行界面如下: 7钢筋测程序 日回☒ 请输入钢筋直径(单位: 毫米) Edit1 Button1 检测结果: 4 Edit2
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 分) 某厂对使用的原材料钢筋进行用前检测。要求输入钢筋的直径进行检查。标准品为 10.0 毫米直径。实际产品的直径与标准品之间的误差为±0.5 毫米以下(含 0.5 毫米)的都认为 是合格的,提示“检测为合格品”。否则提示“检测为废品”。 本程序设计界面及运行界面如下:

钢商检测程序 日▣☒ 钢筋检测程序 日▣☒ 请输入钢筋直径(单位:毫米) 请输入钢筋直径(单位:毫米): 10.39 格测口 5.98 检测结果: 检测结果: 检测为合格品 检测为废品 请编写单击“检测”(Button1)按钮的事件处理程序。 procedure TForml.ButtonlClick(Sender:TObject); begin end; procedure TForml.Button2Click(Sender:TObject); begin Close; end;
请编写单击“检测”(Button1)按钮的事件处理程序。 procedure TForm1.Button1Click(Sender: TObject); begin end; procedure TForm1.Button2Click(Sender: TObject); begin Close; end;

试题参考答案 (一)填空题(10分,每空1分) 1、一 2、事件 3、.dpr(或dpr) 4、Picture5、 0 nTimer,5006、数据库连接组件数据源组件7、sqr(sin(a+b*y)/(sqr(a)*x)+a sin(a+b*y)*sin(a+b*y)/(a*a*x)+a 8,MaksEdit (二)单项选择题(30分,每题3分) 1、D 2、B 3、C 4、A5、C 6、D 7、C 8、D 9、A 10、B (三)判断题,请给正确的打上“√”,错误的打上“×”(10分,每题2分) 1、√ 2、X3、√ 4、X 5、√ (四)程序填空题(共30分,每题10分) 1、(10分,每空2分) ①True ②Tablel ③DataSourcel ④DataSourcel ⑤sname 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 R:Real; begin R StrToFloat(edit1.Text); IF abs(R-10.0)<=0.5 Then Edit2.Text:=’检测为合格品
试题参考答案 (一)填空题(10 分,每空 1 分) 1、 一 2、事件 3、.dpr (或 dpr) 4、 Picture 5、 OnTimer ,500 6、数据库连接组件 数据源组件 7、sqr(sin(a+b*y)) /(sqr(a)*x)+a 或 sin(a+b*y) * sin(a+b*y) /(a*a*x)+a 8、MaksEdit (二)单项选择题(30 分,每题 3 分) 1、D 2、B 3、C 4、A 5、C 6、D 7、C 8、D 9、A 10、B (三)判断题,请给正确的打上“√”,错误的打上“”(10 分,每题 2 分) 1、√ 2、╳ 3、√ 4、╳ 5、√ (四)程序填空题(共 30 分,每题 10 分) 1、(10 分,每空 2 分) ① True ② Table1 ③ DataSource1 ④ DataSource1 ⑤ sname 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 R: Real; begin R := StrToFloat(edit1.Text); IF abs(R - 10.0) <= 0.5 Then Edit2.Text := '检测为合格品

Else Edit2.Text:='检测为废品’; end;
Else Edit2.Text := '检测为废品' ; end;