毕业 设计 ASP PHP 工作 案例 java cad WEB 管理系统 vb 毕业设计 flash Word plc delphi vc++ 源代码 pb SQL HTML 系统 access frontpage 问题 vc 模具 CSS 通信 课程设计 mis VFP 方案 systems mold vba labview 3DMAX 调查报告 photo 计算机 SOA Oracle数据库 powerbuilder 论文 j2me CPA asp设计 GPR service 管理学 网学 室内设计 患者

当前位置:首页 >> 课程专业 >> Delphi程序设计-作业1

详细内容

Delphi程序设计-作业1
  一、问答题
  1、结构化程序设计的基本原则是什么?
  结构化程序设计的基本原则是:取消goto语句,程序中只允许顺序、分支和循环三种控制结构,其中每一种结构只能有一个入口和一个出口。任何算法都必须(也可以)由这三种基本结构及三种结构的嵌套所构成。
  结构化程序设计要求采用自顶向下、逐步求精的设计方法和单入口、单出口的控制结构。
  2、简述面向对象技术中"类"与"对象"的概念。结合Delphi中使用的组件,举例说明什么是类、什么是对象。
  类是对象的抽象及描述,它是具有统一属性和方法的一类对象的统一描述体,是用来定义某类对象共有属性和方法的模板。而对象是类的实例。
  在Delphi环境中,组件板上的组件就是类的概念,例如按钮组件就是按钮类。而用户在窗体上创建的一个按钮就是对象的概念(按钮对象)。用户可以在窗体上用按钮类创建若干个按钮对象,它们都是按钮类的实例。
  3、在Delphi中,什么是对象的属性、方法和事件?
  一个对象是由属性、方法和事件所组成。属性表示对象中的数据,方法是对象能够执行的动作,事件是能够引起对象反应的条件。
  4、简述利用Delphi开发一个项目的基本步骤。
   建立一个新的项目
   建立窗体
   在窗体上加入对象
   检查和设定对象属性
   编写对象的事件处理程序
   编译、试运行,并进行代码调试
   保存项目文件,退出Delphi 环境
  5、下列哪些条目可作为Delphi的变量名,哪些不行,并说明原因。
  abc    123   abc123   123abc   file    a!
  合法的变量名是:abc   abc123
  不合法的变量名是:
  123  123abc(不能是数字或数字开头)
  file(变量名不能采用语言中的保留字)
  a!(变量名中不能包含某些特殊符号,如"!")
  6、写出下列函数或表达式的值。
  ① int(2.718) = 2.0
  ② round(2.718)  =  3
  ③ odd(3) = true
  ④ chr(65) = ‘A‘
  ⑤ StrToInt(‘2005‘) = 2005
  ⑥ IntToStr(121) = ‘121‘
  ⑦ (23 mod 5) + (23 div 5) =  7
  ⑧ ( (x>=5) OR (x<=-5) ) AND ( x in [1..9] )  当x=10时,表达式的值为假(或false)
  7、将下列数学式子写成Delphi程序中的表达式
  ①            答案:sqr(sin(x+y)) / sin(sqr(x) + sqr(y))
  ②        答案  Sqrt(p*(p-a)*(p-b))
  8、要想在程序中定义一个常量p,代表圆周率3.14,请写出该常量的定义语句。
  const   p = 3.14  ;
  9、在Delphi程序代码中,打开一个老文件、以及创建并打开一个新文件所使用的过程各是什么?
  打开一个老文件:reset(文件变量名)
  创建并打开一个新文件:rewrite(文件变量名)
  或简答 reset 和rewrite
  10、在一个单元中,全局变量和局部变量的含义是什么?说明在单元文件中如何定义这两种变量(可举例说明)。
  局部变量只能在定义它的程序块中使用,且其生命周期也只存在于从程序块开始执行到程序块执行结束。在一个事件处理程序中的变量说明部分,能够定义一个局部变量,供该事件处理程序内部使用。
  而全局变量可以在单元中的各程序块中使用(共享),且生命周期存在于整个单元代码的活动期中。
  在Implementation保留字后(但不要在程序块里)定义的变量就是全局变量。
  11、如果想查看showmessage过程的帮助信息,请你说出两种获取帮助信息的方式。
  ① 通过主菜单Help的Delphi Help命令调出帮助主页面,在"索引"页输入框中输入要查找的showmessage单词,即可找出相关的帮助信息。
  ② 在代码中如果调用了showmessage过程,可将光标置于该单词中,然后按F1键,即可找出该过程的帮助信息。
  12、一个项目由一组文件组成。其中一些主要文件的后缀有:
  .dpr      .pas   .dfm    .dcu   .~dpr  .~pas  .~dfm 等
  请说出这些文件的中文名称及用途。
  答:.dpr 项目文件,存放项目的主程序
  .pas 单元文件,存放源代码,如事件处理程序等。
  .dfm 窗体文件,数据文件,记录窗体上的数据信息(如组件位置等)
  .dcu 目标文件,保存.pas编译后得到的结果。
  .~dpr  .~pas  .~dfm 是备份文件,便于用户恢复到较早的一个项目版本。
  13、用于摆放其他组件的组件可以称之为"容器组件"。除窗体组件外,请你再说出一个容器组件的名字。
  答:Panel 或 GroupBox
  14、简述Edit组件下面几个属性的用途:
  Font   Hint    Name   ReadOnly   Text
  答:
  Font :设置编辑框内的字体属性
  Hint  :设置提示信息(当光标指向编辑框时弹出的提示信息)
  Name :对象标识名
  ReadOnly:设置只读属性。如为True ,则用户界面上编辑框只能显示信息,不能写(不能输入)。
  Text : 该属性的值就是编辑框中的内容
  15、简述Edit组件下面几个方法的功能:
  Clear   SetFocus  SelectAll
  答:Clear是清除编辑框中的内容;SetFocus是使编辑框获得焦点(光标进入编辑框中,编辑框变得可操作) ;SelectAll是选中编辑框中的全部文本。
  16、简述Edit组件下面几个事件的引发条件:
  OnChange    OnClick    OnEnter   OnExit   OnKeyPress
  答:
  OnChange 当编辑框中内容改变时引发该事件
  OnClick :当鼠标单击编辑框时引发该事件
  OnEnter :当光标进入编辑框时引发该事件
  OnExit :当光标离开编辑框时引发该事件
  OnKeyPress :当在编辑框中输入文本时,每次按键都会引发该事件
  17、ListBox、ComboBox和RadioGroup 三个组件都有一个Items属性,请说出该属性对三个组件的用途各是什么?
  答:对ListBox:该属性的值(多行)为列表框中的内容。
  对ComboBox:该属性的值(多行)为下拉选单中的内容。
  对RadioGroup:该属性决定了一组单选按钮的个数和每个按钮的名称。
  18:RadioGroup和CheckBox对象都是通过用户鼠标点击来确定输入。请你说出代码中如何获取用户在这两个对象上的选择。
  答:
  对RadioGroup对象,是通过对ItemIndex属性确定用户在一组单选按钮中的选择:该属性为0表示选择了第1个按钮,为1表示选择了第2个按钮,依此类推。
  对CheckBox对象,是通过Checked属性确定选择状态。该属性为True表示选中状态,为False表示未选中状态。
  19、你如何理解OpenDialog(打开文件对话框)和SaveDialog(保存文件对话框)这两个组件的基本功能?它们负责文件的打开和保存吗?
  答:
  两个组件对象只是提供了一个Windows的标准对话框。用户在对话框中可以指定要打开或要保存的文件的名字,并将用户在对话框中选择的文件名存入Filename属性中。
  这两个组件对象并不执行打开或保存文件的操作。
  20、简要回答"什么是Delphi?"
  答:Delphi是面向对象的、可视化的集成开发环境。它使用对象Pascal作为基本的编程语言,它可用来开发各种图形用户界面的程序,特别是数据库的应用程序。
  二、编程题
  1、开发用户界面如下图所示的应用程序:
  功能说明如下:
  用户可以通过单选按钮选择运算类型(加减乘除),然后在两个输入框中输入操作数和被操作数,按"运算"键,答案显示在输出框。
  在界面上,两个复选框的功能要求是:
  当"预清"复选框被选中时,每当用户将焦点置入一个输入框,该输入框自动清空,否则输入框不清。
  当"显示余数"复选框被选中后,在进行除法运算时,结果将显示商和余数(见图例),否则只显示整除的结果。
  系统还有以下要求:
   当输入框没有输入时就按运算键,系统要给出提示信息。
   输入框只能接受数字字符,不能输入非数字字符。
   输入的两个操作数都只能在1~100之间。
  答案:
  procedure TForm1.Button1Click(Sender: TObject);   //运算按钮
  var
  x,y,z :integer;
  begin
  x:= strtoint(edit1.Text);
  y:= strtoint(edit2.Text);
  case radiogroup1.itemindex of
  0:    z:= x+y ;
  1:    z:= x-y ;
  2:    z:= x*y ;
  3:    z:= x div y;
  end;
  edit3.text:=inttostr(z);
  if checkbox2.checked and (radiogroup1.itemindex=3) then
  if (x mod y<>0)then
  edit3.text:=Edit3.text+‘ 余 ‘+ inttostr(x mod y) ;
  end;
  procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
  begin               //输入字母检查,必需是0~9
  if key in [‘0‘..‘9‘]  then
  exit
  else
  key:=chr(0);
  end;
  procedure TForm1.Edit1Enter(Sender: TObject);  //预清
  begin
  if checkbox1.checked then
  edit1.Clear ;
  end ;
  procedure TForm1.Edit2Enter(Sender: TObject);    //预清
  begin
  if checkbox1.checked then
  edit2.Clear ;
  end;
  procedure TForm1.Edit1Exit(Sender: TObject);   //检查edit1输入(空或越界)
  var
  x : integer ;
  begin
  if (edit1.Text=‘‘) then
  begin
  showmessage(‘缺第1操作数‘) ;
  edit1.SetFocus ;
  exit ;
  end ;
  x:= strtoint(edit1.Text);
  if (x<1)or(x>100) then
  begin
  showmessage(‘第1操作数越界‘);
  edit1.SetFocus ;
  end ;
  end;
  procedure TForm1.Edit2Exit(Sender: TObject);  //检查edit2输入(空或越界)
  var
  x : integer ;
  begin
  if (edit2.Text=‘‘) then
  begin
  showmessage(‘缺第2操作数‘) ;
  edit2.SetFocus ;
  exit ;
  end ;
  x:= strtoint(edit2.Text);
  if (x<1)or(x>100) then
  begin
  showmessage(‘第2操作数越限‘);
  edit2.SetFocus ;
  end ;
  end;
  procedure TForm1.Button2Click(Sender: TObject); //退出按钮
  begin
  form1.close;
  end;
  -------------------------------------------------------------------------------------------------
  2、开发用户界面如下图所示的应用程序:
  功能说明:
  该界面是一个教师信息录入界面。
  用户在编辑框(Edit1)中输入姓名,利用单选按钮(RadioGroup1)指定性别,利用组合框(ComboBox1)选择或直接输入所在系,利用列表框(ListBox1)指定职称。当输入完上述信息后,单击"确定"按钮,教师信息将显示在右边的Memo1编辑窗口中。
  提示:在组合框和列表框中可以预置少量测试数据。
  答案:
  通过RadioGroup1的Items属性设置两个单选按钮("男"和"女"),并将属性Column设置为2(按钮摆两列)。
  通过ComboBox1的Items属性设置下拉选单中的系名。
  通过ListBox1的Items属性设置列表框中的职称列表。
  "确定"按钮的单击事件处理程序如下:
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  memo1.Lines.Add(edit1.Text);
  if radiogroup1.ItemIndex = 0 then
  memo1.Lines.Add(‘男‘)
  else
  memo1.Lines.Add(‘女‘) ;
  memo1.Lines.Add(combobox1.Text);
  memo1.Lines.Add( listbox1.Items[listbox1.itemindex] );
  end;
  3、开发用户界面如下图(左)所示的应用程序,右图是设计界面。
  功能说明:
  单击开始按钮,时钟启动,每秒钟改变一次;单击停止按钮,时钟停止。
  提示:该界面要建立一个Timer对象。还要用到Time和TimeToStr两个函数。
  答案:
  建立Timer1对象,并将Interval属性设置为1000(间隔1秒),将Enabled属性的初始值设置为False。
  建立一个Panel1对象作为显示时间的面板。
  代码如下:
  procedure TForm1.Timer1Timer(Sender: TObject);
  begin
  panel1.Caption := Timetostr(time);
  end;
  procedure TForm1.Button1Click(Sender: TObject); //开始按钮
  begin
  timer1.Enabled := true ;
  end;
  procedure TForm1.Button2Click(Sender: TObject); //停止按钮
  begin
  timer1.Enabled := false ;
  end;
  4、开发一个简单的编辑器,设计界面如下图所示:
  该编辑器功能要求如下:
   编辑窗口使用Memo组件实现,并为其设置垂直滚动条。
   单击"打开文件"按钮,弹出打开文件对话框,用户指定要打开的文件后(限于纯本文件),文件内容加载到编辑窗口中。
   单击"保存文件"按钮,弹出保存文件对话框,用户指定要保存的文件名后,编辑区的内容保存到指定文件中,然后清空编辑区。
   单击"复制"按钮,编辑区中被选择的内容拷贝到剪贴板。
   单击"剪切"按钮,编辑区中被选择的内容剪切到剪贴板。
   单击"粘贴"按钮,剪贴板中的内容拷贝到编辑区当前光标处。
  答案:
  建立的组件有:memo1、opendialog1、savedialog1、button1~5
  编码如下:
  procedure TForm1.Button1Click(Sender: TObject);  //打开文件
  begin
  if opendialog1.Execute then
  memo1.Lines.LoadFromFile(opendialog1.FileName) ;
  end;
  procedure TForm1.Button2Click(Sender: TObject); //保存文件
  begin
  if savedialog1.Execute then
  begin
  memo1.Lines.SaveToFile(savedialog1.FileName) ;
  memo1.Clear ;
  end ;
  end;
  procedure TForm1.Button3Click(Sender: TObject); //复制
  begin
  memo1.CopyToClipboard ;
  end;
  procedure TForm1.Button4Click(Sender: TObject); //剪切
  begin
  memo1.CutToClipboard ;
  end;
  procedure TForm1.Button5Click(Sender: TObject); //粘贴
  begin
  memo1.PasteFromClipboard ;
  end;
  Delphi程序设计-作业2
  班级                姓名                分数
  一、问答题
  1、在一个项目中,什么是主窗体?如何指定一个主窗体?
  答:主窗体是项目的主界面。当一个Delphi应用程序启动后,首先建立并出现在屏幕上的就是主窗体,而其他窗体则要根据用户的操作要求而出现。
  默认情况下,项目中第一个建立的窗体就是主窗体。但在设计界面可以通过菜单项Project/Options进入窗体设置界面,指定项目中的某个窗体作为项目的主窗体。
  2、通过窗体的BorderStyle属性可以将窗体设置为对话框样式。简述对话框式窗体的主要特征是什么?
  答:当窗体设置为对话框时,窗体的标题栏上可以有关闭按钮,但没有最大、最小按钮,而且窗体大小在运行时不能改变(鼠标拖动窗体边框不起作用)。
  3、如果在主窗体上有一个按钮,其功能是打开一个子窗体,请你简述在设计该项功能时需要做哪些编码工作(可举例说明)。
  答:
  ① 在主窗体的单元代码中,要在uses子句中指定子窗体单元的名字。
  例如主窗体Form1,对应的单元名为Unit1;子窗体Form2,对应的单元名是Unit2。
  那么在Unit1的uses子句中要包含单元名Unit2。
  ② 在按钮的单击事件处理程序中,调用子窗体的Form2.Show或Form2.ShowModal方法打开Form2子窗体。
  4、简述如何关闭模式子窗体并返回到调用它的主窗体中(要至少给出两种方法)。
  答:
  ① 在代码中将子窗体的ModalResult属性设置为一非零值。
  ② 设置一个关闭子窗体的按钮,将按钮的ModalResult属性设置为一非零值。
  5、建立一个MainMenu对象的作用是什么?它是否出现在运行界面上?PopupMenu对象与MainMenu对象有什么不同?
  答:
  MainMenu对象的作用是用于主菜单设计。双击该对象可以打开菜单设计窗口。
  MainMenu对象本身并不出现在运行界面上。
  PopupMenu对象是用于设计快捷菜单。
  6、简述在一个窗体上设计多页面的操作步骤。
  答:
  首先建立一个PageControl对象,并排放好位置,它是设计页面的母板。然后单击PageControl对象,在弹出的快捷菜单中执行命令"New Page",即可建立一个页面。
  7、菜单项有几种类型?简述复选框型菜单项的设计方法(包括必要的代码)。
  答:
  菜单项有3种类型:普通按钮型、复选框型和单选按钮型。
  复选框型菜单项的设计方法如下:
  假定菜单项的名字为N1,在菜单项单击事件处理程序中编写如下代码:
  procedure TForm1.N1Click(Sender: TObject);
  begin
  N1.Checked := not N1.Checked ;
  if  N1.checked  then
  //执行菜单项选中时需要执行的动作
  else
  //执行菜单项未选中时需要执行的动作
  end ;
  8、工具栏上的按钮有几种类型?简述单选按钮型按钮的设计方法(包括必要的代码)。
  答:
  工具栏上的按钮有3种类型:普通按钮型、复选框型和单选按钮型。单选按钮型工具栏按钮的设计方法如下:
  建立工具条对象ToolBar1
  在工具条上建立若干SpeedButton按钮。
  将需要实现互斥功能的一组按钮的GroupIndex属性设定为非零的同一个值(同组)。
  为每个按钮编写单击事件处理程序。例如为SpeedButton1编写代码如下:
  procedure TForm1. SpeedButton1 Click(Sender: TObject);
  begin           // 对齐
  选中SpeedButton1时所要执行的动作
  end;
  9、如何从一个项目中删除一个窗体及相应的单元文件?
  答:利用菜单命令:Project / Remove From Project…
  10、设置窗体的Font(字体)属性有什么作用?
  答:可以为摆放在窗体上的对象(如标签、编辑框等)提供默认的字体设置。
  二、编程题
  1、设计一个屏幕编辑程序,如下图所示。其中前三个图分别给出3个主菜单的内容,最后一个图给出运行界面示例。
  功能要求如下:
  主菜单结构如上图所示。其中3个颜色菜单项为单选按钮型(确定编辑框背景颜色),2个字体菜单项为复选框型(确定编辑框中的字体)。
  工具栏按钮有3个:左对齐、居中和右对齐(决定编辑框中文本对齐方式)。
  请写出该项目中采用了哪些组件对象,关键属性如何设置,并列出编写的代码(适当给以注释)。
  答:
  组件有memo1(编辑框)、opendialog1和savedialog1(对话框)MainMenu1(主菜单)、toolbar1(工具条)、speedbutton1~3(工具栏上的按钮)等。
  有关颜色的3个菜单项的RadioItem属性设置为True,GroupIndex属性设置为同一非零值。
  3个快捷按钮(对齐)的GroupIndex属性设置为同一非零值。
  有关代码如下:
  procedure TForm1.N2Click(Sender: TObject);  //"打开"菜单命令
  begin
  if opendialog1.Execute  then
  memo1.Lines.LoadFromFile(opendialog1.FileName);
  end;
  procedure TForm1.N3Click(Sender: TObject);  //"保存"菜单命令
  begin
  if savedialog1.Execute then
  memo1.Lines.SaveToFile(savedialog1.FileName);
  end;
  procedure TForm1.N5Click(Sender: TObject);  //"退出"菜单命令
  begin
  close ;
  end;
  procedure TForm1.N7Click(Sender: TObject);  //"剪切"菜单命令
  begin
  memo1.CutToClipboard ;
  end;
  procedure TForm1.N8Click(Sender: TObject);  //"复制"菜单命令
  begin
  memo1.CopyToClipboard ;
  end;
  procedure TForm1.N9Click(Sender: TObject);  //"粘贴"菜单命令
  begin
  memo1.PasteFromClipboard ;
  end;
  procedure TForm1.N13Click(Sender: TObject);  //"无色"选项
  begin
  N13.Checked := true ;
  memo1.Color := clWindow ;
  end;
  procedure TForm1.N11Click(Sender: TObject); // "黄色"选项
  begin
  N11.Checked := true ;
  memo1.Color := clyellow ;
  end;
  procedure TForm1.N12Click(Sender: TObject);  //"绿色"选项
  begin
  N12.checked := true ;
  memo1.Color := clLime ;
  end;
  procedure TForm1.N15Click(Sender: TObject); //粗体
  begin
  N15.Checked :=not N15.Checked ;  //翻转
  if  N15.checked   then
  memo1.Font.Style:= memo1.Font.Style + [fsBold]
  else
  memo1.Font.Style:= memo1.Font.Style - [fsBold];
  end;
  procedure TForm1.N16Click(Sender: TObject); //斜体
  begin
  N16.Checked :=not N16.Checked ;  //翻转
  if  N16.checked   then
  memo1.Font.Style:= memo1.Font.Style + [fsItalic]
  else
  memo1.Font.Style:= memo1.Font.Style - [fsItalic];
  end;
  procedure TForm1.SpeedButton1Click(Sender: TObject);  //工具栏-左对齐
  begin
  memo1.Alignment :=  taLeftJustify   ;
  end;
  procedure TForm1.SpeedButton2Click(Sender: TObject);  //工具栏-居中对齐
  begin
  memo1.Alignment := taCenter ;
  end;
  procedure TForm1.SpeedButton3Click(Sender: TObject);  //工具栏-右对齐
  begin
  memo1.Alignment :=  taRightJustify   ;
  end;
  2、编写一个多页面程序,要求用户在第1页输入姓名、年龄,第2页输入住址、邮编及电话,在第3页中,单击"综合"按钮,在Memo组件中显示汇总信息。
  运行界面示例如下:
  要求:写出项目中建立的主要组件对象,并给出"综合"按钮的单击事件处理程序代码。
  答:
  建立的组件对象有PageControl1、memo1、button1及若干label和edit对象等。
  procedure TForm1.Button1Click(Sender: TObject); //"综合"按钮
  begin
  Memo1.Clear;
  Memo1.Lines.Add(‘姓名:‘+ Edit1.Text);
  Memo1.Lines.Add(‘年龄:‘+ Edit2.Text);
  Memo1.Lines.Add(‘住址:‘+ Edit3.Text);
  Memo1.Lines.Add(‘邮编:‘+ Edit4.Text);
  Memo1.Lines.Add(‘电话:‘+ Edit5.Text);
  end;
  3、在第2题的基础上增加询问功能,即当用户单击"综合"按钮后,弹出一个询问框,询问用户是否还显示时间信息,如果用户回答"否",则只显示综合信息,如果用户回答"是",则在综合信息后再追加时间信息。下图是询问框及显示时间信息时的界面示例:
  要求:询问框由项目的第2个窗体(form2)实现,要求设计成对话框样式。
  请给出设计询问对话框的主要过程,并给出实现询问功能的"综合"按钮的代码。
  答:
  建立Form2,将其Caption属性设置为"询问对话框"。将其BorderStyle属性设置为bsDialog 。
  在Form2上建立一个Label对象和2个Button对象。将两个Button对象的Caption属性分别设置为"是"和"否",将它们的ModalResult属性分别设置为mrYes和mrNo。(也可以使用BitBtm按钮)
  "综合"按钮的单击事件处理程序如下:
  implementation
  {$R *.dfm}
  uses
  unit2 ;
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  Memo1.Clear;
  Memo1.Lines.Add(‘姓名:‘+ Edit1.Text);
  Memo1.Lines.Add(‘年龄:‘+ Edit2.Text);
  Memo1.Lines.Add(‘住址:‘+ Edit3.Text);
  Memo1.Lines.Add(‘邮编:‘+ Edit4.Text);
  Memo1.Lines.Add(‘电话:‘+ Edit5.Text);
  if form2.ShowModal = mryes then
  Memo1.Lines.Add(‘日期:‘+ datetimetostr(date));
  end;
  end.
  Delphi程序设计-作业3
  班级                姓名                分数
  一、问答题
  1、假定建好的一个paradox数据库位于D盘根目录下的mydb子目录里(该数据库就称之为mydb)。如果在窗体上建立了一个Database1对象,请你说出该对象如何与数据库相连(描述主要设置过程)。
  答:
  双击Database1,在打开的属性设置对话框中,先指定Driver name为STANDARD(即Paradox数据库),然后设置path=D:\mydb。
  2、如果在界面上用二维表的格式显示mydb数据库中student表的内容,请你说出需要建立哪些数据库对象?它们的主要属性如何设置?
  答:
  依次建立Database1、Table1、DataSource1、DBGrid1对象。
  Database1与mydb数据库相连;Connected属性置为true。
  Table1的DatabaseName属性指定Database1中定义的数据库名字;TableName属性指定student.DB;Active属性置为True。
  DataSource1的DataSet属性指定为Table1。
  DBGrid1的DataSource属性指定为DataSource1。
  3、对于DBGrid对象,如何通过它的属性设置使各列标题为中文显示?
  答:
  打开Columns属性对话框,加入数据集的所有字段(Add All Fields),然后对每一字段对象的Title属性进行设置,在Caption子属性中置入中文标题。
  4、DBText、DBEdit、DBGrid都能显示来自数据库中的数据,请你说出它们的不同之处。
  答:
  DBText和DBEdit都能显示数据库当前记录某字段的值,但DBText是只读的,而DBEdit可读可写。
  DBGrid可以显示数据集中多行多列数据。
  5、在常用的数据控件中,只需指定DataSource而不需指定DataField的控件有哪些?
  答:
  DBGrid、DBNavigator
  6、简述如何利用Table组件和Query组件实现对数据库的修改。
  答:
  对Table组件。通过其方法(如InsertRecord、Delete、Edit…Post等)实现对数据库的修改。
  对Query组件,通过其SQL属性中的SQL语句(如delete、update、insert)实现对数据库的修改
  7、Query组件的Open方法和ExecSQL方法的功能是什么?它们有什么不同?
  答:
  都是执行Query中的SQL语句。Open方法是执行查询语句,而ExecSQL方法是执行非查询语句。
  8、当Query中的SQL语句带有参数时,在设计阶段如何为它们赋值,在运行时又如何为它们赋值?
  答:
  在设计阶段,在Query对象的Params属性中可以设置初始值。
  在执行阶段,利用Query的ParamByName方法为参数赋值。
  9、如何为数据集组件建立永久字段?建立永久字段的好处是什么?
  答:
  双击数据集组件对象,在打开的窗口中加入的字段就成为永久字段。
  建立永久字段的好处是:可以在设计阶段对字段对象进行设置,并可以增加新的字段(计算字段和查找字段)。
  10、什么是计算字段?在什么事件中计算该字段的值?
  答:
  计算字段要人工建立,其值不是来自数据库、而是在显示时通过计算获得。
  在OnCalcFields事件中计算出计算字段的值。
  二、上机题
  1、熟悉delphi的数据库环境,并利用建表界面依次建立以下几张表:
  系表:dep(dno,dname,tel)
  学生表:student(sno,sname,sex,birthday,dno)
  课程表:course(cno,cname,credit,ctime,quota)
  选课表sc(sno,cno,grade)
  注意:
   定义各表的主码。
   在student表的dno列上定义引用完整性约束(外来码)。
   在上述表中插入一些测试数据。
  2、编写一个如下图所示的查询语句练习界面。
  用户在输入框输入一条查询语句,然后按"执行"按钮,查询结果显示在下面的表格里。
  提示:将memo1对象中的查询语句存入Query对象的代码是:
  query1.SQL := memo1.Lines ;
  答案:
  procedure TForm1.Button1Click(Sender: TObject); //执行按钮
  begin
  query1.Close;
  query1.SQL := memo1.Lines ;
  query1.Open ;
  end;
  3、编写界面如下图所示的"系-学生 主从查询"应用程序。两个按钮可以控制系记录的浏览,而学生信息总是显示当前系的学生记录。
  提示:系学生数要动态计算。
  答案:
  procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
  begin
  query1.Close ;                                //根据当前系计算学生数
  query1.ParamByName(‘dno‘).Value :=table1[‘dno‘] ;
  query1.Open ;
  query2.Close ;                               //根据当前系显示学生记录
  query2.ParamByName(‘dno‘).Value :=table1[‘dno‘] ;
  query2.Open ;
  end;
  procedure TForm1.Button1Click(Sender: TObject); //上一记录
  begin
  table1.Prior ;
  end;
  procedure TForm1.Button2Click(Sender: TObject); //下一记录
  begin
  table1.Next ;
  end;
  4、编写界面如下图所示的学生选课界面。
  该界面的功能要求如下:
   用户输入学号,然后按"确定" 键,程序检查是否有该学号:如果没有则给出提示信息;如果有则在表格里显示该学生可选的课程(即该学生没有选过的课程)。
   用户在表格里选中一门课程,然后按"选课"键,完成一次选课操作(即在sc表中插入一条选课记录)。
   用户输入课程号,然后按"查找"键,可以快速定位要找的课程(使该课程在表格里成为当前课程)。
  答案:
  procedure TForm1.Button3Click(Sender: TObject); //"确定"按钮
  begin
  query1.Close ;                     //判断学号是否存在
  query1.ParamByName(‘sno‘).Value := edit1.Text;
  query1.Open ;
  if query1[‘sno‘]= null then
  begin
  showmessage(‘无此学生‘);
  exit;
  end;
  query2.Close ;                    //显示学生可选课程
  query2.ParamByName(‘sno‘).Value :=edit1.Text ;
  query2.Open ;
  end;
  procedure TForm1.Button1Click(Sender: TObject);"查找"按钮
  begin
  query2.Locate(‘cno‘,edit2.Text,[]);
  end;
  procedure TForm1.Button2Click(Sender: TObject); "选课"按钮
  begin
  query3.Close ;
  query3.ParamByName(‘sno‘).Value := edit1.Text ;
  query3.ParamByName(‘cno‘).Value := query2[‘cno‘];
  query3.ExecSQL ;
  end;
  5.编写界面如下图所示的系信息查询程序:
  提示:"系学生数"列通过计算字段实现。
  procedure TForm1.Table1CalcFields(DataSet: TDataSet); // 计算查找字段
  begin
  query1.Close ;
  query1.ParamByName(‘dno‘).Value :=table1dno.Value ;
  query1.Open ;
  table1stu_num.Value  := query1[‘num‘];
  end;
  Delphi程序设计-作业4
  班级                姓名                分数
  一、问答题
  1、Image对象在设计阶段如何加载一幅图片,在运行时又如何加载一幅图片。
  答:
  在设计阶段,利用Image对象的Picture属性省略号按钮,在弹出的对话框中选择并加载一幅图片。
  在运行阶段,利用Image对象的Picture属性的LodeFromFile方法,加载一幅图片。
  2、如何让加载的图片充满Image对象的区域。
  答:
  将Image对象的Stretch属性设为True。
  3、在设计阶段,对Animate对象而言,如何设置播放通用Window AVI动画(如文件拷贝、查找文件等),如何设置播放指定的动画文件。
  答:
  在Animate对象的CommonAVI属性中选择要播放的通用的Windows动画。
  在Animate对象的FileName属性中指定要播放的动画文件名。
  4、举出MediaPlayer组件能够播放的媒体文件的后缀(不少于3种)。
  答:
  .mpg    .avi     .asf
  5、在窗体上建立的MediaPlayer对象是一组播放按钮,而要在窗体上建立一个播放屏幕,如何实现?
  答:
  建立一个Panel对象作为屏幕,并调整好大小。
  在代码中,编写如下语句:
  MediaPlayer1.Display := Panel1;
  MediaPlayer1.DisplayRect :=Rect(0,0,Panel1.Width,Panel1.Height);
  6、在Image区域中,如果要在给定的两点之间画出直线,如何实现?
  答:
  首先利用Image的Canvas属性的MoveTo方法将画笔移到起始点,然后利用Canvas属性的LineTo方法从起始点画线到终点。
  7、一个简单报表可以包含6个栏目,请说出它们的中文名字。
  答:
  报表页眉、报表页脚、报表标题、数据栏、数据列标题、汇总栏。
  8、报表组件QuickRep的作用是什么,如何设定报表上打印哪些栏目?
  答:
  QuickRep的作用是提供设计报表的母板,通过QuickRep的Bands属性可以设定出现在报表上的栏目。
  二、上机题
  1、实现如下图所示的应用程序。当按"加载图片"按钮后,程序弹出文件对话框,要求用户指定加载的图像文件名。"退出"按钮的功能是退出该程序。
  2、实现如下图所示的应用程序。当按"打开文件"按钮后,程序弹出文件对话框,要求用户指定播放的多媒体文件的名字。
  打开文件对话框要给出常见的媒体文件的后缀。