
《Delphi程序设计》试题及解答 中央电大工学院王欣 一、填空题(20分,每空2分) 1、在面向对象的程序设计中,对象的属性用 来表示,对象的方法用代码来实 现。 2、Delphi应用程序中项目文件的扩展名是 3、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构 只能有 和一个出口。 4、在Delphi集成开发环境中,如果想要直接设置或者修改对象的属性,可以通过对象 查看器(Object Inspector)中的 窗口直接进行设置。 5、在设计阶段,利用Image对象的 属性,可以加载一幅图片。 6、时钟组件(Timer)能有规律的以一定时间间隔触发 事件,并执行该事件过程 中的程序代码。为了使计时器控件Timr1每隔0.5秒就触发一次并执行事件代码,应将 Timerl控件的Interval属性设置为_。 7、Delphi程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 组件与数据库建立连接,并读取数据库中的数据,而后 又经过 组件将数据送到用户界面组件中显示。 8、与数学表达式 cos2(a+b) +a对应的Object Pascal表达式是 6x 二、单项选择题(30分,每题3分) 1、Delphi程序设计的基本特点是( A.可视化程序设计 B.代码程序设计 C.事件驱动编程 D.A和C 2、修改窗体的标题时,应当在属性页中设置的属性是( A.Caption B.Name C.Text D.Label 3、下列哪个常量说明语句是正确的()。 A.const x :=(c 16); B.const x 16 C.const x :16; D const x =16
《Delphi 程序设计》试题及解答 中央电大工学院 王欣 一、填空题(20 分,每空 2 分) 1、在面向对象的程序设计中,对象的属性用 来表示,对象的方法用代码来实 现。 2、Delphi 应用程序中项目文件的扩展名是 。 3、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构 只能有 和一个出口。 4、在 Delphi 集成开发环境中,如果想要直接设置或者修改对象的属性,可以通过对象 查看器(Object Inspector)中的 窗口直接进行设置。 5、在设计阶段,利用 Image 对象的 属性,可以加载一幅图片。 6、时钟组件(Timer)能有规律的以一定时间间隔触发 事件,并执行该事件过程 中的程序代码。为了使计时器控件 Timer1 每隔 0.5 秒就触发一次并执行事件代码,应将 Timer1 控件的 Interval 属性设置为 。 7、Delphi 程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 组件与数据库建立连接,并读取数据库中的数据,而后 又经过 组件将数据送到用户界面组件中显示。 8、与数学表达式 a x a b + + 6 cos ( ) 2 对应的 Object Pascal 表达式是 。 二、单项选择题(30 分,每题 3 分) 1、Delphi 程序设计的基本特点是( )。 A.可视化程序设计 B.代码程序设计 C.事件驱动编程 D.A 和 C 2、修改窗体的标题时,应当在属性页中设置的属性是( )。 A.Caption B. Name C. Text D. Label 3、下列哪个常量说明语句是正确的( )。 A. const x := (c < 16); B. const x : 16 ; C. const x := 16 ; D const x = 16 ;

4、“x是小于100的非负数”的0 bject Pascal表达式是()。 A.0≤x=0,x=0)AND(x100) D.(x>=0)0R(x<100) 5、工具栏上的一个SpeedButton按钮如果要设置为状态按钮,则正确设置的方法是() A.将SpeedButton按钮的GroupIndex属性设置为O,且AllowAllUp属性设置为True。 B.将SpeedButton按钮的GroupIndex属性设置为O,且AllowAllUp属性设置为False。 C.将SpeedButton按钮的GroupIndex属性设置为非O值,且AllowAllUp属性设置为 Trueo D.将SpeedButton按钮的GroupIndex属性设置为非0值,且A1 lowAllUp属性设置为 False 6、表达式30+19div2的值是( )。 A.37 B.49 C. 39 D.40 7、下列说法正确的是( ) A.组件必须是可视的,这样用户才能使用。 B.控件都是可视的。 C.一个组件肯定是控件。 D.按钮(Button)是组件,而窗体(Form)则不是组件。 8、以下能够触发编辑框(Edit)组件OnChange事件的操作是() A.鼠标单击编辑框 B.鼠标双击编辑框 C.在编辑框中选择文本 D.在编辑框中输入文本 9、现建立一个简单报表,仅包含报表标题栏、数据栏和汇总栏,则在Bands属性的子 属性中,不需要选择的是() A.Title B.Detail C.HasColumnHeader D.Summary 10、只能输出、而不能输入的数据感知控件是() A.DBEdit B.DBText C.DBRadioGroup D.DBCheckBox 三、判断题,请给下列论述中正确的打上“√”,错误的打上“×”(10分,每题2分) 1、()const c:=80的说明语句是合法的
4、“x 是小于 100 的非负数”的 Object Pascal 表达式是( )。 A.0 ≤ x = 0, x=0) AND (x = 0 ) OR (x<100) 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、表达式 30 + 19 div 2 的值是( )。 A. 37 B. 49 C. 39 D. 40 7、下列说法正确的是( ) A.组件必须是可视的,这样用户才能使用。 B.控件都是可视的。 C.一个组件肯定是控件。 D.按钮(Button)是组件,而窗体(Form)则不是组件。 8、以下能够触发编辑框(Edit)组件 OnChange 事件的操作是( ) A. 鼠标单击编辑框 B. 鼠标双击编辑框 C. 在编辑框中选择文本 D. 在编辑框中输入文本 9、现建立一个简单报表,仅包含报表标题栏、数据栏和汇总栏,则在 Bands 属性的子 属性中,不需要选择的是( ) A.Title B.Detail C.HasColumnHeader D.Summary 10、只能输出、而不能输入的数据感知控件是( ) A.DBEdit B.DBText C.DBRadioGroup D.DBCheckBox 三、判断题,请给下列论述中正确的打上“√”,错误的打上“”(10 分,每题 2 分) 1、( ) const c := 80 的说明语句是合法的

2、()在Delphi环境中,在窗体上建立的按钮是“类”的概念。 3、()一个Table对象不能同时指定与之相连的两个关系表。 4、()对象的Name属性值可以为空。 5、()一个Query对象同一时刻只能存储一条SQL语句。 四、程序填空题(共30分,每题10分) 1、(10分,每空2分) 本程序根据用户选择的运算符对输入的二个操作数进行运算,并显示运算结果。界面如 图。其中,运算符是一个含有4个单选按纽的RadioGroup组件,名称为RadioGroupl,标 题分别为“+”、“-”、“*”和“/”。程序运行后,在Editl、Edit2中输入两个整数值,选中 一个单选按钮后单击命令按钮,相应的计算结果显示在Eit3,程序运行情况如图所示。 Editl Edit2 Edit3 7 Forml 口回☒ 操作数1 操作数2 运算结果 49 7 运算符 C- CX 。/ 计算 RadioGroupl Buttonl 请填入适当的内容,将程序补充完整。 procedure TForml.ButtonlClick(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:
2、( ) 在 Delphi 环境中,在窗体上建立的按钮是“类”的概念。 3、( ) 一个 Table 对象不能同时指定与之相连的两个关系表。 4、( ) 对象的 Name 属性值可以为空。 5、( ) 一个 Query 对象同一时刻只能存储一条 SQL 语句。 四、程序填空题(共 30 分,每题 10 分) 1、(10 分,每空 2 分) 本程序根据用户选择的运算符对输入的二个操作数进行运算,并显示运算结果。界面如 图。其中,运算符是一个含有 4 个单选按纽的 RadioGroup 组件,名称为 RadioGroup1,标 题分别为“+”、“-”、“*”和“/”。程序运行后,在 Edit1、Edit2 中输入两个整数值,选中 一个单选按钮后单击命令按钮,相应的计算结果显示在 Edit3,程序运行情况如图所示。 请填入适当的内容,将程序补充完整。 procedure TForm1.Button1Click(Sender: TObject); var x1,x2,y :Integer; begin x1 := StrToInt( Edit1. ① ); x2 := StrToInt( Edit2. ② ); Case ③ .ItemIndex of 0: y := x1 + x2 ; 1: y := x1 - x2; 2: y := x1 * x2; Edit1 Edit2 Edit3 RadioGroup1 Button1

3:y :xl Div x2; End; Edit3.④ :=IntToStr(⑤ end; 2、(10分,每空2分) 数据库mydb中有关系表student,其结构如下: student(sno学号,sname姓名,sex性别,birthday生日) 现编写一个学生信息浏览程序,设计界面和运行界面如下图所示: 7Forml -▣x刻 Formi 回x 学号DBEdit1:性别:DBEdit3 国 学号 010001 性别男 姓名 DBEdit2 生日:DBEdit4 姓名 赵卫 生日 1982-4-25 +-☑c 在下划线处填写相应数据库组件的属性值: Databasel.DatabaseName mydb Tablel.DatabaseName mydb Tablel.TableName student Tablel.Active ① Datasourcel.DataSet :② DBNavigatorl.DataSource ③ DBEdit2.DataSource :④ DBEdit2.DataField :⑤ 3、(10分,每空2分) 本程序实现一个简单的选课界面。设计界面和运行界面如下图所示: 7Forml Form1 ▣x 课程信总: 国:国 课程信息: 课程号课程名 名额 课程号课程名 名额二 c01 物理 200 c01 物理 199 c02 化学 100 c02 化学 99 c03 外语 50 c03 外语 49 c04 力学 149 c04 力学 149 学号: Bdit1 选课 国 学号: 040001 选课 该程序涉及到数据库中的两张表:course(课程表)和sc(选课表),表结构如下:
3: y := x1 Div x2; End; Edit3. ④ := IntToStr( ⑤ ); end; 2、(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 : ⑤ 3、(10 分,每空 2 分) 本程序实现一个简单的选课界面。设计界面和运行界面如下图所示: 该程序涉及到数据库中的两张表:course(课程表)和 sc(选课表),表结构如下:

sc(sno学号,cno课程号,grade成绩) course(cno课号,cname课名,quota名额) 其中:sno和cno都是字符型。 在用户界面,操作员选中一门书、输入学号后,按“选课”键,完成选课功能,即在 sc表中插入一条选课记录,并将course表中该课程的名额减1。 该界面要实现以下合法性检查: ●当该学生己经选过此课,不能再选。 ·当所选课程名额己为0,不能再选。 在Forml上建立的数据库组件对象及连接关系如下: Databasel-Tablel(与course表相连)一DataSourcel一DBGrid1(显示课程信息) 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
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 {$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.④ [editl.Text,tablelcno.Value,null]) tablel.Edit tablelquota.Value:=tablelquota.Value-1:/名额减1 tablel.⑤ end; end. 五、编程题(10分) 一个计算圆周长和面积的程序,设计界面及运行后界面如下图所示。在“半径”框中输 入圆的半径,单击“计算”按钮,在“周长”、“面积”框中显示圆的周长和面积。根据题意, 请编写单击“计算”按钮(Buttonl)的事件处理程序代码(π可直接使用系统定义常量PI)。 (提示:设圆的半径为r,则圆的周长=2πr,面积=亚) 7计算囚丹长和面积 口▣☒ 半径: Edit1 Button1 周长: Edit2 Button2 面积: Edit3
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 分) 一个计算圆周长和面积的程序,设计界面及运行后界面如下图所示。在“半径”框中输 入圆的半径,单击“计算”按钮,在“周长”、“面积”框中显示圆的周长和面积。根据题意, 请编写单击“计算”按钮(Button1)的事件处理程序代码(π可直接使用系统定义常量 PI)。 (提示:设圆的半径为 r,则 圆的周长 = 2πr ,面积 = πr 2 )

计算国月长和面积 日回☒ 半径:6 计算 周长:37.68 退出 面积: 113.04 procedure TForml.ButtonlClick(Sender:TObject); begin end; procedure TForml.Button2Click(Sender:TObject); begin Close; end;
procedure TForm1.Button1Click(Sender: TObject); begin end; procedure TForm1.Button2Click(Sender: TObject); begin Close; end;

试题参考答案 (一)填空题(10分,每空1分) 1、变量2、.dpr(或dpr)3、一个入口 4、属性5、Picture 6、0 nTimer5007、数据库连接组件数据源组件 8.sqr(cos(a+b))/(6*x)+a cos(a+b)*cos(a+b)/(6*x)+a (二)单项选择题(30分,每题3分) 1、D 2、A 3、D 4、C5、C 6、C7、B 8、D 9、C 10、B (三)判断题,请给正确的打上“√”,错误的打上“×”(10分,每题2分) 1、X 2、X3、√ 4、X 5、√ (四)程序填空题(共30分,每题10分) 1、(10分,每空2分) ①text ②text ③RadioGroupl ④text ⑤y 2、(10分,每空2分) ①True ②Tablel ③DataSourcel ④DataSourcel ⑤sname 3、(10分,每空2分) ①True ②True ③Tablel ④DataSourcel ⑤DataSourcel (五)编程题(10分) procedure TForml.ButtonlClick(Sender:TObject); Var r,C,S real; begin r :StrToFloat (edit1.Text); C :=2却I*r: S:=PIrr;/或者为PI*sqr(r)
试题参考答案 (一)填空题(10 分,每空 1 分) 1、变量 2、 .dpr (或 dpr) 3、一个入口 4、 属性 5、 Picture 6、OnTimer 500 7、数据库连接组件 数据源组件 8、sqr(cos(a+b)) /(6*x)+a 或 cos(a+b) * cos(a+b) /(6*x)+a (二)单项选择题(30 分,每题 3 分) 1、D 2、A 3、D 4、C 5、C 6、C 7、B 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 分) ① True ② Table1 ③ DataSource1 ④ DataSource1 ⑤ sname 3、(10 分,每空 2 分) ① True ② True ③ Table1 ④ DataSource1 ⑤ DataSource1 (五)编程题(10 分) procedure TForm1.Button1Click(Sender: TObject); Var r,C,S : real; begin r := StrToFloat(edit1.Text); C := 2*PI*r; S := PI*r*r; //或者为 PI*sqr(r)

edit2.Text :FloatToStr(C); edit3.Text :FloatToStr(S); end;
edit2.Text := FloatToStr(C); edit3.Text := FloatToStr(S); end;