试卷代号:2235 座位号☐ 中央广播电视大学2011一2012学年度第一学期“开放专科”期末考试 Delphi程序设计 试题 2012年1月 题号 二 三 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(30分,每题3分)】 l.Delphi程序设计的基本特点是()。 A.可视化程序设计 B.代码程序设计 C.事件驱动编程 D.A和C 2.窗体与数据模块的扩展名是( A..dcu B..dfm C..pas D..dpr 3.下列哪个常量说明语句是正确的?( ) A.const x :=(c=0,x=0)AND(x=0)OR(x<100) 5.Delphi支持3种类型的代码注释,以下哪种类型注释是错误的?() A.(}注释 B.(**)注释 C.//注释 D.++十注释 1447
试卷代号 2 2 3 座位号仁口 中央广播电视大学 0 11 2 0 2学年度第一学期"开放专科"期末考试 Delphi 程序 设 2012 年1 |题号 - |分数 I I I I I I 得分|评卷人 一、单项选择题 0分,每题 3分) 1. Delphi 设计 基本 )。 A. 视化 C. 件驱 2. 数据模 扩展 )。 B.代码程序设计 D. 和C A. . dCll B. . dfm C. .pas D. .dpr 3. ( ) A. canst x : = (c = O. x=0) AND (x = 0 ) OR (x<lOO) 5. Delphi 持3 种类 代码注释 哪种 型注 ( ) A.{}注释 (铸祷)注释 C. II 注释 十 + 1447
6.表达式30+19div2的值是()。 A.37 B.49 C.39 D.40 7.在RadioGroup组件中有4个单选框,当选中第2个单选框时,RadioGroup组件中的 ItemIndex属性值应为()。 A.0 B.1 C.2 D.3 &.以下能够触发编辑框(Edit)组件OnChange事件的操作是()。 A.鼠标单击编辑框 B.鼠标双击编辑框 C.在编辑框中选择文本 D.在编辑框中输人文本 9.现建立一个简单报表,仅包含报表标题栏、数据栏和汇总栏,则在Bads属性的子属性 中,不需要选择的是()。 A.Title B.Detail C.HasColumnHeader D.Summary 10.只能输出、而不能输人的数据感知控件是()。 A.DBEdit B.DBText C.DBRadioGroup D.DBCheckBox 得分 评卷人 二、判断题,请给下列论述中正确的打上“√”,错误的打上“X”(10 分,每题2分】 ( )11.const c:=80的说明语句是合法的。 ( )12.Memol.Lines..delete(1);是用来别除Memo组件的第1行。 ()l3.Tobject是delphi的基类,系统中的每一个类都是Tobject的子类。 ()14.对象的Name属性值可以为空。 ()15.一个Query对象同一时刻只能存储一条SQL语句。 1448
6. 式30 十19 div 值是 A. 37 C. 39 B. 49 D. 40 7. 在RadioGroup 组件 有4 第2 选框 RadioGroup It 值应 A. O C. 2 B. 1 D. 3 8. 能够 框(Edit) 件OnChange 作是 )。 A. 标单 辑框 B. 标双击 C. 辑框 选择 D. 人文本 9. 立一 报表标 在Bands 中,不需要选择的是( )。 A. Title C. HasColumnHeader B. Detail D. Summary 10. 而不 数据感 控件是 )。 A. DBEdit C. DBRadioGroup B. DBText D. DBCheckBox |得分|评卷人| I I I 二、判断题,请给下列论述中正确的打上"~",错误的打上 (10 分,每题 2分} ( )11. canst c : = 80 是合法 ( )12. Memol. Lines. delete( 1 );是用来删除 o组件的第 1行。 ( ) 13. Tobject 是delphi 一个类 是Tobject 子类 ( )14. 的Name ( )1 e r 对象 存储 1448
得分 评卷人 三、填空题(20分,每空2分) 16.在面向对象的程序设计中,对象的属性用变量来表示,对象的 用代码来实现。 17.结构化程序设计要求程序中仅采用 、分支和循环三种控制结构。Delphi有 三种控制循环的语句:repeat语句,while语句, 语句。 18.调用主窗体的 方法,可以结束程序。 19.利用 对象的LineTo等绘图方法,可以绘制基本图形。 20.在设计阶段,利用Image对象的 属性,可以加载一幅图片。 2l,时钟组件(Timer)常称为“定时器”,它每隔固定的时间间隔可以触发一个 事件。 22.Delphi程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 组件与数据库建立连接,并读取数据库中的 数据,而后又经过 组件将数据送到用户界面组件中显示。 23.与数学表达式ina+b)+a对应的Ob6 ecPascal表达式是 9-x 1449
|得分|评卷人| I I I 三、填空题 0分,每空 2分} 16. 在面 对象 设计 对象 变量来表示 用代码来实现。 17. 构化程序设计 仅采 三种控制循环的语句: repeat while 、分支和循环三种控制结构。 ph 语句。 18. 用 主窗 19. 利用 方法,可以结束程序。 对象的 o等绘图方法,可以绘制基本图形。 20. 属性,可以加载一幅图片。 1. 时 钟 组 Timer) 每 隔 间 间 隔 可 发 一 事件。 22. Delphi 序与 据库 进行 交换 数据库组 协作完 如果 户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组 件。数据集组件利用 数据,而后又经过 组件与数据库建立连接,并读取数据库中的 组件将数据送到用户界面组件中显示。 sin2(a 23. 学表 对应的Object Pascal 式是 1449
得分 评卷人 四、程序填空题(共30分,每题10分) 24.(10分,每空2分) 本程序根据用户选择的运算符对输入的二个操作数进行运算,并显示运算结果。界面如 图。其中,运算符是一个含有4个单选按纽的RadioGroup组件,名称为RadioGroupl,标题分 别为“+”、“-”、“*”和“/”。程序运行后,在Editl.Edit2中输人两个整数值,选中一个单选 按钮后单击命令按钮,相应的计算结果显示在Edt3,程序运行情况如图所示。 Edit】 Edit2 Edit3 Fot】 @石区 操作数1 操作数2 运算结果 雨 一运算符 + 一 CX 计算 RadioGroupl But tonl 请填入适当的内容,将程序补充完整。 procedure TForm1.ButtonlClick(Sender:TObject); var x1,x2,y Integer; begin x1 :StrTolnt(Edit1.1 x2 :StrTolnt(Edit2.2 Case③ ItemIndex of 0:y:=x1+x2; 1:y:=x1-x2; 2:y:=x1*x2; 3:y :x1 Div x2; End; Edit3.④ :=IntToStr(⑤ end; 1450
四、程序填空题{共 0分,每题 0分) |得分|评卷人| I I I 24. (1 本程序根据用户选择的运算符对输入的二个操作数进行运算,并显示运算结果。界面如 图。其中,运算符是一个含有 4个单选按纽的 p组件,名称为 ro l,标题分 别为"+"、"一"、"祷"和"/"。程序运行后,在 tl. Edit2 输入两 个单 按钮后单击命令按钮,相应的计算结果显示在 3,程序运行情况如图所示。 Edit] Edit2 Edit3 … s … … V A • … r … Button1 请填入适当的内容,将程序补充完整。 procedure TForml. ButtonlClickCSender: TObject); Radi oGr OLlp1 var xl , x2 , y : Integer; xl : = StrTolnt( Edit l. x2 : = StrTolnt( Edit2. Case begin •Item lndex of 0: y : = xl 十x2 ; I: y : = xl - x2; x2; 3: y : = xl Div x2; End; Edit3. ( : = IntToStrC 2: y : = xl end; 1450
25.(10分,每空2分) 数据库mydb中有关系表student,其结构如下: student(sno学号,sname姓名,sex性别,birthday生日) 现编写一个学生信息浏览程序,设计界面和运行界面如下图所示: Formi 学号 DBEdit1 性别 DBEdit3 1001 性别男 姓名 DBEdit2 生日.DBEdit4 姓名 赵卫 生日1982-4-25 在下划线处填写相应数据库组件的属性值: Databasel.DatabaseName mydb Tablel.DatabaseName mydb Tablel.TableName student Tablel.Active ① Datasourcel.DataSet ② DBNavigator1.DataSource ③ DBEdit2.DataSource ④ DBEdit2.DataField ⑤ 26.(10分,每空2分) 本程序实现-一个简单的选课界面。设计界面和运行界面如下图所示: Forml 回× 7Forml 课程信总:国国 课程信急: 课程号课程名 名额 课程号课程名 名额· c01 物理 200 Hco1 物理 199 c02 化学 100 c02 化学 9 c03 外语 50 c03 外语 49 c04 力学 149 c04 力学 149- 学号: Editl 选课 國国 学号: 040001 选课 该程序涉及到数据库中的两张表:course(课程表)和sc(选课表),表结构如下: sc(sno学号,cno课程号,grade成绩) course(cno课号,cname课名,quota名额) 其中:sno和cno都是字符型。 在用户界面,操作员选中一门书、输入学号后,按“选课”键,完成选课功能,即在s℃表中插 入一条选课记录,并将course表中该课程的名额减1。 该界面要实现以下合法性检查: 1451
25. (10 空2 数据库 ydb中有关系表 t,其结构如下: student (S110 性别 birthday 现编写一个学生信息浏览程序,设计界面和运行界面如下图所示: -酣睡酣嚼露 学号障国 姓名 蘸恶意同二届;主 :二字号:阿问:陈括费 ;如萨市旦陆牛二露: 注中兰卡?!宝宝: ,.四丽…回国国酣替罪 在下划线处填写相应数据库组件的属性值 Database1. DatabaseName : 'mydb Table1. DatabaseName : mydb Table1. TableName : student Table1. Active Datasource1. DataSet DBNavigator1. DataSource DBEdit2. DataSource DBEdit2. DataField 26. (10 每空 本程序实现一个简单的选课界面。设计界面和运行界面如下图所示: 险町百..醋蜡罐翻 该程序涉及到数据库中的两张表:course( 程表 和sc( ,表结构如下: sc(sno ,cno ,grade course(cno ,cname ,quota 其中 o都是字符型。 在用户界面,操作员选中一门书、输入学号后,按"选课"键,完成选课功能,即在c表中插 入一条选课记录,并将 r s e表中该课程的名额减1。 该界面要实现以下合法性检查: 1451
●当该学生已经选过此课,不能再选 ●当所选课程名额已为0,不能再选。 在Forml上建立的数据库组件对象及连接关系如下: Databasel-一Tablel(与course表相连)一DataSourcel-一DBGrid1(显示课程信息) Databasel-一Table2(与sc表相连,用于插人选课记录) Databasel-Queryl 其中为Tablel建立了3个永久字段:Tablelcno(课程号)、Tablelcname(课程名)、Ta- blelquota(名额)。 Queryl的SQL语句如下: select cno from sc where sno =sno and cno =cno 下面是Unit1的代码实现部分,请完成程序填空: implementation ($R *dfm) procedure TForml..Button1Click(Sender:TObject),/“选课”键 begin queryl.Close query1.ParamByName(‘sno').Value:=① queryl.ParamByName(‘cno').Value:=② query1.Open if queryl['cno']<>null then begin showmessage(‘已选过此课'); exit end; if③ then begin showmessage(‘没有名额'); exit; end; tablea2.④ [edit1.Text,tablelcno.Value null]) tablel.Edit tablelquota.Value:=tablelquota.Value-l;/名额减l tablel.⑤ end; end. 1452
then ·当该学生已经选过此课,不能再选。 ·当所选课程名额已为0,不能再选。 数据库组件对象及 Databasel-Table1 (与 o ur s e表相连 (显示课程信息〉 Database1一Table2(与se 表相 用于插入选课记 Database1-Query1 其中为 1建立了 3个永久字段: Table1eno (课程号〉、 (课程名)、 ble1quota( Query1 的SQL 句如 select eno from se where sno = :sno and eno = : eno 下面是 tl implementation {$R dfm} procedure TForm1. Button1Cliek(Sender: TObjeet); /1"选课"键 begin query1. Close ; query1. ParamByName( ‘sno'). Value: =① queryl. ParamByName( ‘eno'). Value: =② queryl. Open; if query1[‘eno'] <> null then begin showmessage( 过此 ; eXIt end; if begin showmessage( 没有 ) ; eXit; end; table2. ( ( [edit1. Text , tableleno. Value , null] ); table1. Edit table1quota. Value : = table1quota. Value-1 ; / /名额减 table 1. end; end. 1452
得分 评卷人 五、编程题(10分) 27.下图是本程序的设计界面(左)和运行界面(右): Formtl 孩脑问x 请选择 领作数1dit1 请选择 操作数134 加 操作数2 加 把dit2 城作数2 c乘 r除 结果 Edit3 结果 3 运算 退出 运 退出 在forml上建立的对象有:Editl~Edit3、Button1(运算)、Button2(退出)、RadioGroupl 和Labell~Label4等。 该程序实现正整数四则运算,除法为整除。用户输入两个操作数,按运算键,结果显示在 结果框中。 输人的操作数必须是1~100之间的整数。如果输入有误,程序要给出错误提示信息。 请编写单击“运算”按钮的事件处理程序。 procedure TForm1.ButtonlClick(Sender:TObject); begin end; 1453
|得分|评卷人| I I I 五、编程题(1 27. 程序 设计界面 : 1上建立的对象有: Edit1- Edit3 、Button1 (运算)、 tt (退出)、 u p l1 Label4 该程序实现正整数四则运算,除法为整除。用户输人两个操作数,按运算键,结果显示在 结果框中。 输入的操作数必须是 0之间的整数。如果输入有误,程序要给出错误提示信息。 请编写单击"运算"按钮的事件处理程序。 procedure TForml. Button1Click(Sender: TObject); begin end; 1453
试卷代号:2235 中央广播电视大学2011一2012学年度第一学期“开放专科”期末考试 Delphi程序设计试题答案及评分标准 (供参考) 2012年1月 一、单项选择题(30分,每题3分) 1.D 2.B 3.D 4.C 5.D 6.C 7.B 8.D 9.C 10.B 二、判断题,请给正确的打上“√”,错误的打上“X”(10分,每题2分】 11.× 12.X 13./ 14.X 15./ 三、填空题(20分,每空2分)】 16.方法 17.顺序 for 18.Close 19.Canvas 20.Picture 21.OnTimer 22.数据库连接 数据源 23.sqr(sin(a十b)/(9-x)+a或sin(a+b)¥sin(a+b)/(9-x)十a 四、程序填空题(共30分,每题10分)】 24.(10分,每空2分) ①text ②text ③RadioGroupl ④text ⑤y 25.(10分,每空2分) ①True ②Tablel ③DataSourcel 1454
试卷代号 3 5 中央广播电视大学 11 2学年度第-学期"开放专科"期末考试 Delphi 程序 计 试题 评分标 (供参考) 2012 年1 一、单项选择题 0分,每题 3分} 1. D 2. B 6. C 7. B 3. D 8. D 4. C 9. C 5. D 10. B 二、判断题,请给正确的打上 (l O 11. X 12. X 13. .J 14. X 15. .J 三、填空题 0分,每空 2分) 16. 方法 17. 序for 18. Close 19. Canvas 20. Picture 21. OnTimer 22. 数据库连 23.sqr(sin(a+b)) I(g-x) 1(9-x) 四、程序填空题(共 0分,每题 0分} 24. (1 ( text ( text ( RadioGroupl ( text ( y 25. (10 空2 ( T ru e ( T ablel ( DataSourcel 1454
④DataSourcel ⑤sname 26.(10分,每空2分) ①editl.text ②tablelcno.value Tablelquota.value=0 ④InsertRecord ⑤Post 五、编程题(10分) 27.procedure TForml.ButtonlClick(Sender:TObject); var x,y,z Integer begin x :strtoint(edit1.Text); y :=strtoint(edit2.Text); if ((x=1)and (x>=1)and (y<=100))then begin case radiogroupl.ItemIndex of 0:z:=x十y; 1:z:=x-y; 2:z:=X*y; 3:Z :x div y; end end else begin showmessage(‘输入有错); exit; end; edit3.Text :inttostr(z); end; 1455
( DataSourcel ( sname 26. (1 0 ( edit1. text ( tablel cno. value ( T ablel quota. value= 0 ( InsertR ecord ( Post 五、编程题(1 27. procedure TForm1.ButtonlClick(Sender: TObject); var x ,y ,z : Integer; begin x : = strtoint(editl. Text); y : = strtoint(edit2. Text) ; if CCx>= 1) and (x=1) and (y<=lOO» then begin case radiogroupl. Itemlndex of 0: z := ; l:z:=x-y; 2: z := 诀 y ; 3: z : = X div y ; end; end else begin showmessage( 入有 ; eXIt; end; edit3. Text: = inttostr(z) ; end; 1455