新手delphi与数据库
一. 选择题1. 用户开发程序时需要经常在窗体和编辑器窗口之间来回切换,可使用快捷键()。
A、 F12和F11
B、 F12和F13
C、 F12和Ctrl+F12
D、 F12和Alt+F12
E、F12和Shift+F12
2. 某函数如下:
Function check(n,k:Integer):Integer;
Var m:Integer;
Begin
Repeat
m:=n mod 10;
n:=n div 10;
K:=k-1
Until k=0;
Check:=m
End;
若调用语句y:=check(3725,3),运行后y值为:()
A、 7
B、 5
C、 2
D、 0
3. 以下那个组件不可以由用户输入编辑文本()
A、 TEdit
B、 TcomboBox
C、 TMaskEdit
D、 Tlabel
E、 TStringGrid
4. 一个对象类可以继承和直接使用它的父类的所有成员,除了:()
A、 public域
B、 private域
C、 protected域和private域
D、 protected域和方法
E、 private域和方法
5. Delph没有用到的文件类型有()。
A、.frm
B、.pas
C、.dfm
D、.dpr
E、.res
6、Delphi程序设计的基本特点是( )。
A. 可视化程序设计 B. 代码程序设计
C. 事件驱动编程 D. A和C
E. A B C
7、进度显示组件ProgressBar的当前进度可以通过( )属性设置。
A. Step B.Scroll
C. Position D.Max
E.MIN
8、在窗体上建立多页面的用户界面,需要首先建立的对象是( )
A. TabControl B.PageControl
C. HeaderControl D.PageScroller
E. PANEL
9、现建立一个简单报表,仅包含数据列标题栏、数据栏和汇总栏,则在Bands属性的子属性中,不需要选择的是( )
A.HasColumnHeader B. Detail
C.Summary D.Title
E. Subdetail
10、下面哪个功能键可以调出Delphi 的联机帮助信息( )
A.F1键 B.F2键
C.F3键 D.F4键
E. F12
11、以下叙述中错误的是( )
A. 一个项目包含不止一种类型的文件。
B. 窗体的Show方法的作用是显示该窗体。
C. 窗体的Hide方法和Release方法的作用完全相同。
D. 若项目文件中有多个窗体,可以根据需要指定一个窗体为主窗体。
E. 只执行本按钮下的代码
12. Query组件没有Table组件那样的( )属性。
A、 DataSource
B、 TableName
C、 Filtered
D、 Database
E、 UpdateObject
13. 下面关于属性的论述正确的是()。
A、 属性能实现write方法
B、 属性能实现read方法
C、 属性可以只读或只写
D、 属性可以公开或非公开
E、属性不能直接存取
14. 调试程序时,需要执行执行点所在的源代码行,并停留在下一个源代码行。可通过()菜单项进行。
A、 Run
B、 Step Over
C、 Trace Into
D、 Trace To Next Source Line
E、Run to Cursor
15. 设a是布尔变量,其它是整型变量,下面正确的赋值语句是( )
A、 x=y div 7
B、 x:=y:=z+1
C、 a:=x=y mod z
D、 x+y:=z
E、x+y=a
16. 表达式round(4.2) mod trunc(2.8)的值是( )
A、 0
B、 1
C、 2
D、 3
E、 4
17. 下列常量定义合法的是( )
A、 CONST width=7;
B、 CONST case='7';
C、 CONST 1A=7.9;
D、 CONST century=year div 100;
E、 CONST 5<>7;
18 以下运算符中运算优先级最高的是( )
A、 +
B、 OR
C、 >=
D、 DIV
E、 -
19. 已知a、b、c、d是同类型的简单变量,而且已有互不相同的值,执行下列语句:
b:=a; a:=c; d:=a; d:=b; 后,其值相等的变量是()
A、 a,c
B、 a,d
C、 c,b
D、 b,a
E、 无法确定
20. 已知有说明Var x:real;下列程序段中的错误为:( )
case x<=2.0 of
0:x:=0;
1:x:=1
End
A、 case表达式中有常数
B、 case常量和case表达式类型不一样
C、 赋值语句两边类型不一致
D、 case表达式为关系表达式
E、 case语法不规范
21. 以下语句的循环执行次数是( )
x:=37; y:=3
while y<=x do y:=y+y
A、 3
B、 4
C、 5
D、 6
E、 0
22. 程序 For I:=1 to 5 do
for j:=2 to I do
writeln('*');
输出的'*'个数为( )
A、 5
B、 10
C、 15
D、 25
E、 30
23. 下列函数头合法的是( )
A、 function total(x:real);
B、 procedure ab(a,b:real):real;
C、 procedure sum;
D、 function f(var f:real):integer;
E、 procedure FontListBoxKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState;);
24. 已知函数如下:
function f(n:integer):integer;
begin
if n=0 then f:=0
else if n>0 then f:=f(n-2)
else f:=f(n+3)
end;
则调用f(5)的值是( )
A、 0
B、 1
C、 -1
D、 -2
E、 2
25. 下列类型中合法的是( )
A、 TYPE a=10..10;
B、 TYPE b=10..5;
C、 TYPE c=0..SQRT(10);
D、 TYPE d=10.0..20.0;
E、 TYPE e=random(9)..1
26. 下列类型的变量中,不能用write语言直接输出的变量是( )
A、 布尔型变量
B、 枚举型变量
C、 整型变量
D、 字符型变量
E、 长整型变量
27. 假定y是集合变量,变量x的类型与y的基类型相同,则下列表达式错误的是( )
A、 [x] in y
B、 y-[x]
C、 [x]+[ ]*y
D、 y<=[x]
E、y mod [x]
28. 一个记录的域标识符不能和下列内容相同的是()
A、 常量的标识符
B、 记录名
C、 类名
D、 同层的域标识符
E、 不同层的域标识符
29. 已知 Var a:array['a'..'e',1..4,boolean] of real;
则数组a中包含的元素的个数为()
A、 5
B、 20
C、 40
D、 11
E、 22
30. 已知 Var a:array[1..10] of integer;
k,I:integer;
程序段:
k:=1;
for I:=1 to 10 do
if a[I]>a[k] then
k:=I;
writeln(a[k]);
执行后输出的是( )
A、 数组中的平均值
B、 数组中的最大值
C、 数组中的最小值
D、 数组中的总和
E、 无法确定
31 已知Var f:file of integer;则f所代表的文件是( )
A、 ASCII码文件
B、 二进制文件
C、 文本文件
D、 存放整数的文本文件
E、 HTML文件
32. 在VCL中( )是TDBListBox的父类
A、 TCustomListBox
B、 TListBox
C、 TDBDataset
D、 TDatabase
E、TDBEdit
33. 为让控件显示弹出式提示框文字,需用到控件的()属性
A、 Handle
B、 Hint
C、 ShowHint
D、 Showing
E、Visible
34. 发生在鼠标左键单击控件时的事件是()
A、 OnMouseDown
B、 OnMouseUp
C、 OnClick
D、 OnDbClick
E、OnEnter
35. 下列值中不是FormStyle属性的可能值的是( )
A、 fsNormal
B、 fsMIDChild
C、 fsMIDForm
D、 fsStayOnTop
E、fsDeskTop
36. ( )是Delphi包含的文件管理子例程
A、 Append和insert
B、 Append和MkDir
C、 FileClose和insert
D、 MkDir和insert
E、GetDir和insert
37 ( )是与DDE有关的组件
A、DdeServerConv/DdeClientConv/DdeServerItem/DdeClientItem
B、DdeServer/DdeClient
C、DdeConv/DdeItem
D、DdeConv/DdeServerItem
E、DdeServer/DdeClient/DdeServerItem/DdeClientItem
38. 使用Delphi多线程的优点是( )
A、程序运行速度加快
B、不需要考虑同步访问共享资源与内存
C、程序编写更简单
D、可以在后台运行线程
E、不会是Windows出错
39. 有多种方法可以在OLE文档接收器中放置对象,但不包括( )
A、使用特定的菜单命令嵌入对象
B、从剪贴板粘贴对象,来建立新嵌入对象
C、从剪贴板粘贴-链接对象,来建立新嵌入对象
D、由服务器生成的文件中建立新对象。
E、通过ODBC接口,传递对象
40. 以下说法不正确的是( )
A、VCL组件是Delphi最有效和最有用的组件
B、COM是OLE和ActiveX的基础
C、COM对象可用于任何Windows编程环境
D、VCL组件是COM对象
E、典型的COM对象包含在扩展名为.DLL或.OCX的文件中
41. TcomboBox组件Style属性缺省值为( )
A、csDropDown
B、csSimple
C、csDropDownList
D、csOwnerDrawVariable
E、csOwnerDrawFixed
42. 对象库“New Item”的“New”标签页能创建的对象有( )
A、Package、DLLs、Component、Web Server Application
B、Package、COM Object、Component、Web Server Application
C、Package、DLLs、Component、About Box
D、Package、DLLs、Component、DB Web Application Wizard
E、Package、DLLs、Component、MID Application
43 以下关于事件的说法不正确的是( )
A、不一定要响应某个组件所定义的所有事件
B、多个组件可以共享同一个事件处理程序
C、根据需要可以响应任何组件的事件
D、单击Object Inspector中的事件处理程序名,Code Editor将自动进入该事件的代码段。
E、事件的Sender参数是用来决定哪个组件产生了此事件
44. Shape组件位于()组件板上。
A、 standard
B、 additional
C、 data controls
D、 system
E、samples
45. p50 14-19
二. 是非题(共20道)
1. 从主菜单上选择Project|Syntax Check菜单选项,Delphi将编译从上次编译后有改动的任何单元,并报出遇到的错误。( )
2. Delphi的VCL对象有些是指针,从堆栈中分配空间,有些则不是。( )
3. 粘贴时,如果作为容器的组件已被选择,剪贴板中的组件会当作容器组件的子组件来粘贴( )
4. 在由Delphi 管理的窗体类声明段中加进任何代码都会引起程序出错。( )
5. Delphi 可以在一个报表中使用一个以上的明细区( )
6. Delphi 可以象其它开发工具一样使用传统的资源,比如菜单可以作为资源加载,以利于实现多国语言环境。( )
7. 创建组件时可以定义属性的缺省值,但字符串属性不能有缺省值。( )
8. 声明一个常量后,在程序中则不可以改变这个常量的值。( )
9. 构造子必须通过类的一个有效实例来激活。( )
10. 在设计阶段Object Inspector显示被选组件的所有属性。( )
11. 在Delphi IDE中,按住Shift键,同时单击Components Palette上的组件图标,可以在窗体内放置多个同类组件。( )
12. 为减少编程中的错误,用户可以使用Delphi提供的系统函数IsValidIdent检验字符串是否合法。( )
13. 用户如果不在一个完整的事件响应过程添加任何代码,当保存或编译该项目时,该过程将被自动清除。()
14. 使用Runtime Packages技术可以将原先独立的可执行文件分解为动态链接库加上小的可执行文件,这样作的好处是所占磁盘空间比一个独立的可执行文件小。( )
15. Delphi和VB一样不能产生真正的可执行代码(本机代码),但是Delphi开发的程序比VB的运行速度快。( )
16. 大多数组件的属性可以在运行时改变,而且,有些只能在运行时刻改变。()
17. 对于用户的Delphi工程中创建的窗体及其组件的属性都保存在一个独立的描述文件,即扩展名为DSK的文件中。( )
18. Search菜单的Find Error命令是用来寻找运行时的错误,而不是寻找编译错误。()
19. Enabled属性不适用于非可视组件。( )
20. Delphi采用基于对象的引用模式,即类的每一个变量不保存对象的值,而保存一个引用或一个指针来说明对象存储的内存位置。( )
三、填空题(20分,每空2分)
1、现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有自己的属性和 。
2、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有 和一个出口。
3、对于下面的条件表达式:
((3 <= x)AND (x < 0)) OR (x in [1..10])
当x = 3 时, 该表达式的值为 。
4、如果想设计DBGrid对象的列标题和对齐方式,可以对DBGrid对象的 属性进行设置。
5、能够实现格式化输入的编辑框组件是
6、利用 对象的LineTo等方法,可以绘制基本图形。
四. 改错题(共4道)
1. 指出下列代码错误并说明原因:
Var
I:Integer;
L:Long;
Begin
L:=32768;
I:=L;
End.
2. 指出下列代码错误并说明原因:
if n>37.5 then
AmountEarned:=(n-37.5)*HourlyRate*1.5+37.5*HourlyRate;
else
AmountEarned:= n*HourlyRate;
3. 指出下列代码错误并说明原因:
while (total<max) and (sum<=max) and (sum<total)
do statement1;
4. 指出下列代码错误并说明原因:
procedure Tform1.TestBtnClick(Sender:Tobject);
var z,y,x:integer;
begin
x:=100;
y:=0;
try
z:=x div y;
except
on EdivByZero
do z:=-1;
MessageDlg('Z'+IntToStr(z),mtInformation,[mbOK],0);
End;
五. 问答题(共3道)
1. 在Delphi中,对话框与子窗口有什么不同?
2. 使用私有域和方法的目的是什么?
3. 让ActiveX在网页上工作时,总是从Inernet Explorer得到一个错误。错误为:“Your current settings prohibit ActiveX controls”。这是什么错误?
4、Ttable与tquery的区别
5、p63 3、6、7、9
6、p19 表2-1
六. 编程题()
1. 计算并输出300至500以内所有素数(即质数)中最大的前10个数之和k与300至500以内所有素数的个数j,并将结果输出到文件mydata.dat中.
2. 在Tform1.FormActive事件中编写代码,要求包括一个循环,在屏幕上随机的位置上用不同的颜色连续画线。
3.p51 20,21,23题
4、本程序设计界面及运行界面如下图所示。
该程序的功能是:用户在界面上的两个编辑框(Edit1、Edit2)内分别输入两个正整数M和N ( M < N),单击“计算”按钮(Button1),程序求出M ~ N 之间所有能被3整除的数,并在Memo 1对象中依次显示。
请编写单击“计算”按钮的事件处理程序。
七. 设计题()
1、设计一个实用的Windows字体选择列表窗口。要求:
1) 用户可以在列表框中(TListBox)选择字体
2) 用户可以在微调框中(TSpinEdit)调整字体大小
3) 字体与大小以所见即所得的方式显示出来
2、p77 1,2,3,4
3、p133 2
4、p284 表14-1
5、p268 例题13-1
6、
数据库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 : ⑤
7、(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
{$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.
[local]1[/local][local]1[/local]