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)(cos2xba对应的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.
---------------------------------------------------------------------------------------------------------------------