delphi数据库编程

  • 格式:doc
  • 大小:102.00 KB
  • 文档页数:6

《Delphi程序设计》试题及解答

一、填空题(20分,每空2分)

1、现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有自己的属性和 方法 。

2、Delphi应用程序中项目文件的扩展名是 .dpr 。

3、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有 一个入口 和一个出口。

4、在Delphi集成开发环境中,如果想要直接设置或者修改对象的属性,可以通过对象查看器(Object Inspector)中的 properties/属性 窗口直接进行设置。

5、ListBox对象列表框中的内容是通过 Items 属性来进行设置的。

6、时钟组件(Timer)能有规律的以一定时间间隔触发 Ontimer 事件。

7、如果让界面上的一个按钮变为不可用,需要将它的 Enabled 属性设为False。

8、Image组件可通过设置其 Autosize 属性为True使Image组件根据图像的大小自动调整显示窗口大小。

9、Delphi的一个项目由若干文件组成,其中文件名后缀含有“~”的文件为 备份文件

10、与数学表达式 53)(cos2xba对应的Object Pascal表达式是

Sqr(cos(a+b))/(3*x)+5

二、单项选择题(30分,每题3分)

1、Delphi程序设计的基本特点是( D )

A. 可视化程序设计 B. 代码程序设计

C. 事件驱动编程 D. A和C

2、修改窗体的标题时,应当设置form的属性是( A )

A.Caption B. Name C. Text D. Label

3、下列哪个常量说明语句是正确的( D )

A. const x := (c < 16); B. const x : 16 ;

C. const x := 16 ; D const x = 16 ;

4、“x 是小于100的非负数”的Object Pascal表达式是( C )

A.0 ≤ x < 100 B. x >= 0, x<100

C.(x >=0) AND (x < 100) D. (x >= 0 ) OR (x<100)

5、编辑框(Edit)中的文本发生改变时引发的事件是( B )

A.AutoSize B.OnChange

C.SetFocus D.SetText

6、表达式 30 + 19 div 2 的值是( C )

A. 37 B. 49

C. 39 D. 40

7、现建立一个简单报表,仅包含报表标题栏、数据栏和汇总栏,则在Bands属性的子属性中,不需要选择的是( C )

A.HasColumnHeader B.Detail

C.Title D.Summary

8、下面哪个功能键可以调出Delphi 的联机帮助信息( A )

A.F1键 B.F2键

C.F3键 D.F4键

9、数据库组件中,提供了对数据库读写操作功能的核心组件是( C )

A.数据源组件 B.用户界面组件

C.数据集组件 D.数据感知控件

10、以下控件中没有Items属性的是( D )

A.ComboBox B. ListBox C.RadioGroup D.Memo

三、判断题(10分,每题2分)

请给下列论述中正确的打上“√”,错误的打上“”(10分,每题1分)

1、( ) 一个数组中的各元素的数据类型必须相同。

2、( )在一个项目中,可以根据需要将任何一个窗体定义为主窗体。

3、( ) 每个数据感知控件都必须指定DataSource和DataField两个属性值。

4、( ) label 和 Edit 组件都可以用于用户输入数据。

5、( ) 按钮组件和编辑框组件能够响应的事件有些是相同的。

四、程序填空题(30分,每题10分)

1、(10分,每空2分)

本程序根据用户选择的运算符对输入的二个操作数进行运算,并显示运算结果。设计界面和运行界面如图所示。其中,运算符是一个含有4个单选按纽的RadioGroup1对象。

下面是单击“运算”按钮的事件处理程序,请根据功能要求完成程序填空。

---------------------------------------------------------------------------------------------------------------------

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;

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分)

本程序实现一个简单的借书界面。程序的设计界面和运行界面如下图所示:

该程序涉及到数据库中的两张表:books(图书信息)和borrow(借书记录)。表的结构为:

books(bno,书号,bname书名,num现有册数)

borrow(rno 读者号,bno书号,rdate还书日期) 其中,rno和bno都是字符型(3位)。

在用户界面,操作员选中一本书、输入借书证号后,按“借书”键完成借书功能,即在borrow表中插入一条借书记录,并将books表中该书现有册数减1。

该界面要实现以下合法性检查:

 当该读者已经借了此书,不能再借。

 当所借的书现有册数为0,不能再借。

在Form1上建立的数据库组件对象及连接关系如下:

Database1-Table1(与books表相连)-DataSource1-DBGrid1(显示图书信息)

Database1-Table2(与borrow表相连,用于插入借书记录)

Database1-Query1

其中为Table1建立了3个永久字段:Table1bno(书号)、Table1bname(书名)、Table1num(现有册数)。

Query1的SQL语句如下:

select bno

from borrow

where rno = :rno and bno = :bno

下面是Unit1的代码实现部分,请完成程序填空:

---------------------------------------------------------------------------------------------------------------------

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); //“借书”键

begin

query1.Close ;

query1.ParamByName('rno').Value := ① ;

query1.ParamByName('bno').Value := ② ;

query1.Open ;

if query1['bno'] <> null then

begin

showmessage('该读者正在借阅此书');

exit ;

end ;

if ③ then

begin

showmessage('该书已全部借出');

exit ;

end;

table2. ④ ( [edit1.Text , table1bno.Value , date+15] ); //插入借书记录

table1. ⑤ ;

table1num.Value := table1num.Value - 1 ; // 现有册数减1

table1.Post ;

end;

end.

---------------------------------------------------------------------------------------------------------------------