《Delphi 程序设计》试卷.pdf
DelphiDelphi 程序设计试卷程序设计试卷学号:姓名:专业:班级:题号题分得分得分评卷人一、一、单项选择题单项选择题(每小题 1 分,共 30 分)一3030二1010三1010四3030五2020总分100100登分人1.一个 Delphi 应用程序必有一个文件和至少一个单元文件。A.程序B.工程C.数据D.图形2.在窗体中完成多个控件整齐排列,应使用何种操作?A.AlignB.Bring to frontC.ScaleD.Send to back3.form(窗体)的 OnCreate 事件在何时触发?.A.窗体关闭B.窗体建立C.窗体隐藏D.窗体活动4.下列哪种属性可以设置窗体无最大化、最小化和关闭图标?A.bordericonsB.formstyleC.visibleD.enabled5.下列哪个属性决定控件的可见和不可见?A.ColorB.FormstyleC.VisibleD.Enabled6.所有可视化的 VCL 控件都是从哪一个基类派生而来的?A.TcontrolB.TwidgetControlC.TwinControlD.TwindowControl7.Delphi 中,是特殊的单元文件,可理解为主单元文件,或者说主程序,而其它的单元文件可以看作是被其所调用的子程序。A.窗体文件B.项目文件C.资源文件D.配置文件8.下列哪个属性是控制窗体标题的属性?A.FormstyleB.CaptionC.FontD.Enabled9.下列哪种类型的常量不能用来定义子界类型?A实型数据(Real)B用户定义的任何顺序类型C字符型(Char)D整型(Integer)10.下列变量命名正确的是。A.7ABCB.Program7C.page21D.program11.如果要检查 edit 编辑框中输入的字符,可以在哪个事件处理程序中编写代码检查。AOnClickBOnEnterCOnMouseUpDOnKeyPress12.以下哪个函数是输入对话框函数?。A.inputboxB.messageboxC.messagedlgD.showmessage13.下列对象不能响应 Click 事件的是。A列表框B图片框C窗体D计时器14.已知对话框函数 MessageDlgPos(ConstMsg:String;DlgType:TmsgDlgType;Buttons:TmsgDlgButtons;HelpCtx:longint;X,Y:Integer):Word.问:1DlgType取何值时,会出现感叹号?。A.mtwarningB.mtconfirmationC.mtInformationD.mtCustom15.关于变量,下列说法错误的是:。A.全局变量与局部变量名相同时,在过程之外是全局变量作用B.全局变量与局部变量名相同时,内部是局部变量作用C.全局变量与局部变量名相同时,在过程之外全局变量无作用D.全局变量与局部变量名相同时,在过程之外是全局变量作用而在内部是局部变量作用16.Delphi 的单元(Unit)包含 Interface 和 Implementation 两部分,所有函数和过程的实现代码都放在Implementation部分。放在Interface部分。A.如果函数或过程需要被别的单元调用,其声明必须B.函数和过程的声明可以放在任何部分,但类型、常量和变量的定义必须C.所有类型、常量和变量的定义及函数和过程的声明都要D.除了单元内部调用的常量和变量之外,其余定义和声明都17.procedure 和 function 的结构和功能相似,。A.前者可以取代后者B.后者可以取代前者C.但前者有返回值,后者没有D.二者都可以返回一个值18.函数的参数在声明时如果带 var 前缀,。A.调用时必须在相应位置放个地址指针B.调用时必须在相应位置放一个整数C.可以在函数中改变参数的值,并回传给调用方D.函数中只能访问其地址指针,得不到参数值19.下列说法正确的是:。A.函数只能出现在表达式中B.函数不能出现在表达式中C.函数不仅可以出现在表达式中,也可以以其他方式出现D.函数在同一表达式中不能出现多次20.下列过程首部定义正确的是:。A.procedure fun1(k,s:real;n:integer);B.procedure fun1(k:real,s:real,n:integer);C.procedure fun1(k;s:real,n:integer);D.procedure fun1(real:k;s,integer:n);21.已知 Var a:arraya.e,1.8 of real;则数组 a 中包含的元素的个数为。A.5B.20C.40D.1122.动态数组与静态数组的区别是。A.是否是一维数组B.元素类型是否是整型C.定义时是否明确了数组元素的个数D.元素类型是否一致23.用于建立菜单项的下划线快捷方式的字符是:。A.B.#C.&D.24.组合框 ComboBox 中的数据在哪个属性中添加?。ATextBItemsCDragDownCountDSorted25.利用 Image 对象的属性设置,可以改变Image 的大小,以适应加载的图像大小。2A.StretchB.AutoSizeC.AlignD.Center26.在绘制封闭图形时,要想使它的填充色为某一指定颜色,应设置 Tcanvas对象的属性A.pen.colorB.brush.colorC.pen.styleD.bursh.style27.BDE 的中文含义是,它是数据库应用中的一种连接方法。A.数据库连接B.数据库引擎C.开放式数据库D.数据库文件28.Eof 表明当前记录指针所处的位置是:。A.数据集的最后一个记录B.数据集的第一个记录C.数据集的中间记录D.不确定29.要使 Tquery 组件的 SQL 语句执行后返回结果集,应调用 Tquery 组件的方法。A.addB.openC.execsqlD.open 和 execsql30.找出下列异常处理中错误的说法?。A.在 tryexcept end 语句中,正常情况下 except 后面的语句会被执行B.在 tryexcept end 语句中,异常情况下 except 后面的语句会被执行C.在 tryfinallyend 语句中,正常情况下 finally 后面的语句会被执行D.在 tryfinallyend 语句中,异常情况下 finally 后面的语句会被执行得分评卷人二、填空题(每空 0.5 分,共 10 分)1.Delphi 的复合语句是由和之间的多个语句组成的。2.程序运行时,要求窗体的某个按钮不再响应鼠标单击操作,可将其属3.性设置为即可。组件分为和两大类,其中在程序设计是以方式出现在窗口中,运行时被隐蔽地嵌入到窗口中,与摆放位置无关。当程序运行时,要求窗体中的文本框初始状态呈现空白,可在设计阶段时,将此文本框的属性设置成。Delphi 提供了打开文件对话框组件,用来显示一个“打开”对话框,在程序中使用方法来激活。TForm 的和两种方法均触发 OnShow 事件。RadioGroup 对象的单选按钮个数及名称是通过属性来进行设置的。4.5.6.7.8.调用 Table组件的方法或方法可使数据表进入插入模式。9.TQuery 对象存储一条 Update 语句,执行时要调用 Query 的方法。10.对象是类的,它与类之间是一种变量和变量类型的关系。11.TDatasource 组件是通过属性与 TTable组件建立联系的。12.TADOConnection 组件的属性决定当连接一个数据库时是否出现一个登录对话框。3得分评卷人三、多项选择题(从备选答案中选出全部正确答案,将其题号填入括号内,每小题 1 分,共 10 分)1.Delphi 支持的 3 种注释方法是:。A.B.(*)C./D.2.下列实数中合法的是。A.0.25E+02 B.25+2 C.25E+2 D.34.53.以下不可以由用户输入编辑文本组件。ATEdit B.TMemo C.Tlistbox D.Tlabel4.下列子界类型定义合法的是。A.TYPE a=10.10;B.TYPE b=10.5;C.TYPE c=0.SQRT(10);D.TYPE d=10.20;5.以下关于事件的说法正确的是。A.不一定要响应某个组件所定义的所有事件B.多个组件可以共享同一个事件处理程序C.根据需要可以响应任何组件的事件D.事件的 Sender 参数是用来决定哪个组件产生了此事件6.代码动态帮助提供了哪些功能?。A对象信息提示功能 B参数提示功能C语法模板提示功能 D表达或求值提示7.请选出下列组件中,属于非可视的组件有。A按钮 Tbutton B标签 TlableC计时器 TTimer D数据源 TDataSource8.在 Delphi 中,为了连接数据库到用户的界面,必需的组件有。ATDatabase 组件 B数据集组件CTDataSource 组件 D数据感知组件9.下列说法不正确的是:。A可以直接调用函数取代非 var 形参,将函数的值传给子程序B可以指定表达式取代非 var 形参,表达式的类型要与相应形参类型一致C可以将数值、函数、常量传递给 var 形参D如果指定变量为实参,变量的值将传递给子程序10.Delphi 中的时间类型,以下描述正确的是:。ADelphi 中使用 Double 类型作为时间类型,而非 IntegerB假如 TDatetime 类型的变量为 0,那么其含义表示公元元年C其正值表示公元后,其负值表示公元前D可以利用函数 DateToStr 函数把 TDatetime 类型转变为字符串类型4得分程序填空(每空 1.5 分,共 30 分)评卷人四、1.下图是本程序的设计界面(左)和运行界面(右):form1 上建立的对象有:Label1Label5、Edit1Edit4、Button1(除键)和CheckBox1。该程序实现除法运算。用户输入两个操作数,按除键后,整除结果显示在结果编辑框中。输入的操作数必须是 1100 之间的整数。如果输入有误,程序要给出错误提示信息。如果“显示余数”复选框选中,则除法余数显示在余数框中,否则不显示余数。请完成单击“除键”按钮的事件处理程序。procedure TForm1.Button1Click(Sender:TObject);varx,y:integer;beginx:=strtoint(edit1.Text);y:=strtoint(edit2.Text);ifthen/如果输入的值在1-100之间beginedit3.Text:=;ifthenedit4.Text:=elseedit4.Text:=endelsebeginshowmessage(请输入 1100 之间的整数);exit;end;end;2.本程序由主窗体 form1 和子窗体 form2 组成,设计界面如下图所示:5主窗体 form1 上建立的对象有 Panel1、Animate1、Button1(加载 AVI文件)、Button2(退出)、Button3(播放)、Button4(停止)和 OpenDialog1。对应的单元文件 unit1。子窗体 form2 上建立的对象有 Label1、BitBtm1(Yes)、BitBtm2(No)。对应的单元文件 unit2。单击“加载 AVI文件”按钮,会弹出打开文件对话框。用户指定一个.avi 的文件后,动画文件加载到 Animate1 显示区中。单击“播放”按钮可播放动画,单击“停止”按钮可停止播放。单击“退出”按钮,会弹出确认对话框(Form2)。如果用户按“Yes”键,程序结束;如果按“No”键,返回主窗体。下面是 Unit1 的代码部分,请在下划线处完成程序填空。implementation$R*.dfmuses;procedure TForm1.Button1Click(Sender:TObject);/加载 AVI文件beginifthenanimate1.FileName:=;end;procedure TForm1.Button2Click(Sender:TObject);/退出beginif=mrYesthenclose;end;procedure TForm1.Button3Click(Sender:TObject);/播放beginanimate1.Play(1,animate1.FrameCount,0);end;procedure TForm1.Button4Click(Sender:TObject);/停止beginanimate1.;end;end.3.本程序的功能是实现对 dep 表(系)student 表(学生)的主从查询。用户可以依次查询系的记录,也可以通过指定系号,查找并定位到指定的记录。每当显示一个系的记录后,系统自动显示该系的学生记录。设计界面和运行界面如下图,在 Form1 上建立的主要对象及连接如下:Database1Table1(与 dep 表相连)DataSource1DBEdit1DBEdit3Database1Query1DataSource2DBGrid1(显示学生信息)Edit1、Button1(查找)、Button2(下一记录)、Button3(上一记录)等。Query1 的 SQL 语句是:select*from studentwhere dno=:dno6下面是 Unit1 单元的代码实现部分,请完成程序填空。implementation$R*.dfmprocedure TForm1.Button2Click(Sender:TObject);/下一记录begintable1.;end;procedure TForm1.Button3Click(Sender:TObject);/上一记录begintable1.;end;procedure TForm1.Button1Click(Sender:TObject);/查找begintable1.(dno,edit1.Text,);end;procedure TForm1.Table1AfterScroll(DataSet:TDataSet);beginquery1.Close;query1.ParamByName(dno).Value:=;query1.;end;end.4.本程序实现一个简单的选课界面。设计界面和运行界面如下图所示:该程序涉及到数据库中的两张表:course 表(课程信息)和sc 表(选课记录)。表结构如下:course(cno 课号,cname 课名,credit 学分,ctime 时间,quota 名额)7sc(sno 学号,cno 课号,grade 成绩)在用户界面,操作员选中一门课、输入学号后,按“选课”键完成选课功能,即在 sc 表中插入一条选课记录,并将 course 表中该课程名额减 1。该界面要实现以下合法性检查:当该学生已经选过此课,不能再选。当课程名额为 0,不能再选。在 Form1 上建立的数据库组件对象及连接关系如下:Database1Table1(与 course 表相连)DataSource1DBGrid1(显示课程信息)Database1Query1、Query2其中为 Table1 建立了永久字段:Table1cno(课号)、Table1cname(课程名)、Table1quota(名额)等。Query1 的 SQL 语句如下:selectcnofrom scwhere sno=:sno and cno=:cnoQuery2 的 SQL 语句如下:Insertintoscvalues(:sno,:cno,null)下面是 Unit1 的代码实现部分,请完成程序填空:implementation$R*.dfmprocedure TForm1.Button1Click(Sender:TObject);/选课beginquery1.Close;query1.ParamByName(sno).Value:=edit1.text;query1.ParamByName(cno).Value:=table1cno.Value;query1.;if nullthenbeginshowmessage(已选过该课程);exit;end;if=0 thenbeginshowmessage(没有名额);exit;end;query2.Close;query2.ParamByName(sno).Value:=edit1.Text;query2.ParamByName(cno).Value:=table1cno.Value;query2.;table1.;table1quota.Value:=table1quota.Value-1;/课程名额减 1table1.Post;end;end.8得分阅读程序,完成下列各题(共 20 分)评卷人五、本程序是小学生做加减法的算术练习程序。计算机连续随机给出两位数的加减法算术题,要求小学生回答,答对打“”,答错打“”,做过的题目放入列表框中备查,并随时给出答题的总数和正确率。设计界面与运行界面如图。程序代码如下:procedure TForm1.Button1Click(Sender:TObject);beginform1.Tag:=0;listbox1.Tag:=0;listbox1.Clear;label1.Caption:=format(#13+重新开始!+#13+#13+#13+正确率为:+#13+#13+%f%,0.00);edit2.SetFocus;end;procedure TForm1.FormActivate(Sender:TObject);vara,b,p,t:integer;beginRandomize;a:=Trunc(10+Random(90);b:=Trunc(10+Random(90);p:=Trunc(Random(2);if p=0thenbegin Edit1.text:=format(%3d+%3d=,a,b);edit1.Tag:=a+b;endelsebeginIf a b Then begin t:=a;a:=b;b:=t;end;Edit1.text:=format(%3d-%3d=,a,b);edit1.Tag:=a-b;end;edit2.SetFocus;end;procedure TForm1.Edit2KeyPress(Sender:TObject;var Key:Char);varx:single;s:string;beginif key=#13 thenbeginForm1.Tag:=Form1.Tag+1;if strtoint(edit2.Text)=edit1.Tag then beginlistbox1.Items.Insert(0,format(edit1.text+%3s,edit2.text);listbox1.Tag:=listbox1.Tag+1;end9elselistbox1.Items.Insert(0,format(edit1.text+%3s,edit2.text);listbox1.ItemIndex:=0;Form1.FormActivate(sender);x:=listbox1.Tag*100/(form1.Tag);s:=#13+共做%d 题+#13+#13+#13+正确率为:+#13+#13+%f%;label1.Caption:=format(s,form1.tag,x)end;end;procedure TForm1.Button2Click(Sender:TObject);beginclose;end;1.说明各组件在程序中的作用(每空1分,共6分)控件作用Edit1Edit2Listbox1Button1Button2Label12.说明下列变量和控件属性的作用(每空1分,共6分)名称作用form1.Taglistbox1.Tagedit1.TagABP3.简要说明以上四段程序的处理流程。(共 8分)名称处理流程Button1Click(1 分)Edit2KeyPress(3分)FormActivate(3 分)Button2Click(1 分)10