《数据库技术 B 》实验指导书
实验一:
实验题目:Delphi IDE环境面向对象编程基础
实验目的:熟悉Delphi的IDE环境,掌握基本操作方法,理解面向对象编程的概念。
实验类型:验证性
实验内容:DELPHI的窗口介绍、工具栏的使用。程序结构,单元文件的结构,对象命名,属性设置方法,事件编写方法
功能:实现简单的数学运算
1.设计界面。
所需组件:Standard面板的6个edit组件,4个label组件,3个button组件。
System面板的OLE,Media player。
分别设置6个edit的text属性为空。label1的caption属性设置为’ + ’; label2的caption属性设置为’* ’;label3, label4的caption属性设置为’= ’; button1,button2,button3分别设置他们的caption属性为“计算”,“计算”和“关闭”。各个组件的大小可以通过鼠标拖动进行大小变化,也可以设置它们的width, height属性进行调整。字体的大小调整通过对象观察器中的font属性的对话框灵活改变。
设置Media player1的AutoOpe n属性为TRUE, display属性为OleContainer1,Filename属性为多媒体文件存放的位置。
设计出的界面如图所示;
2. 编写组件button1,button2,button3的事件代码
第一个计算按钮实现求和功能:
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=inttostr(strtoint(edit1.Text)+strtoint(edit2.Text));
end;
其中,inttostr是把字符转换为整数的函数,strtoint是把整数转换为字符的函数。第二个计算按钮实现乘法计算的功能:
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit6.Text:=inttostr(strtoint(edit4.Text)*strtoint(edit5.Text));
end;
关闭按钮:运行程序结束,界面关闭。
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
运行效果:在文本框中输入数字,点击计算按钮,效果如图:
点击Media player 的开始按钮,视频开始播放:还可以点击其他的相关操作按钮。
实验二
实验题目:数据表格建立,SQL程序设计
实验目的:使用表设计器建立表格,学习索引建立方法,学习简单SQL查询程序设计
实验类型:验证性
实验内容:熟悉DATABASE DESKTOP 建立表格,SQL查询命令的使用。
表5-1
2. 以上题创建的book.db数据表设置bookno为主键,并分别为bookname和auther 设置第二索引。student.db数据表设置studentno为主键。brecord.db数据表设置recordno为主键,并分别为bookno和studentno设置第二索引。
3. 设置题1中3个数据表的数据库别名为Book.
4.使用books数据库查询“所有逾期图书的学生信息”,“学生编号为03005的图书借阅情况”,试写出SQL查询语句。
解答:“所有逾期图书的学生信息”的查询语句为:
SELECT a.*
FROM Student.db AS a,bRecord.db AS b
WHERE a.StudentNo=b.StudentNo AND b.Delayed=True
“学生编号为03005的图书借阅情况”的查询语句为:
SELECT a.StudentName, c.BookName, b.BorrowTime, b.ReturnTime, b.Delayed
FROM Student.db AS a,bRecord.db AS b, Book.db AS c
WHERE b.StudentNo=’03005’AND a.StudentNo=b.StudentNo AND
c.BookNo=b.BookNo
实验三
实验题目:常用界面组件程序设计
实验目的:熟悉LABLE组件、EDIT组件、COMBOBOX组件、LISTBOX组件、RIDIOGROUP
组件等属性设置方法,功能设计,编程设计。
实验类型:验证性
实验内容:
(一)实现一个教师简历的信息输入。一个教师的属性有姓名,学历性别等,还有一些备注。当上述这些属性有改动后,“刷新简历(R)”按钮就被激活,按下后,就在简历一项中生成该教师的一个大致简历。按下“关闭”按钮后,如果教师属性有改动但简历没有刷新,则提示是否刷新,根据回答作出相应后推出程序。
主要说明了一下内容:
1在窗体中使用组件。
2统一窗体风格。
3一些常用组件,如Label,Edit,Combox,Broupbox,Radiobutten等的用法。
4如何退出应用程序。
5消息对话框的使用
若姓名发生改变,简历需要重新刷新,刷新简历按钮就恢复显示。可以点击
刷新按钮,简历内容将发生改变。刷新按扭又灰显。
问是否刷新简历。
之关闭。点击“NO”,弹出信息框“你选择的不是刷新”,程序关闭。
(二)设计如下图所示窗体:标签LABLE1//复选框CHECKBOX1—3,选项按钮组RadioGroup1
主要代码:
粗体、斜体、下划线
粗体复选框(checkbox1)的CLICK事件代码:
If checkbox1.checked then
Label1.Font.Style := Label1.Font.Style +[fsBold]
Else
Label1.Font.Style := Label1.Font.Style-+[fsBold]
?fsBold
?fsItalic
?fsUnderline
注意:集合运算:并运算+ 差运算-
选项按钮组的鼠标单击事件:
case RadioGroup1.ItemIndex of
0: https://www.doczj.com/doc/4a8034588.html,:='宋体';
1: https://www.doczj.com/doc/4a8034588.html,:='黑体';
2: https://www.doczj.com/doc/4a8034588.html,:='楷体_GB2312';
end;
实验四
实验题目:菜单组件程序设计
实验目的:熟悉菜单项定义,快捷键的设置,窗体显示方式设置等。
实验类型:验证性
实验内容:菜单项定义,快捷键的设置,窗体显示方式设置,引用窗体,多窗体程序设计。
制作一个点菜的菜单:如图所示,通过主菜单或者工具栏可以实现点菜的功能。并将点的菜名列在窗体右边的Memo组件中。在窗体中单击鼠标右键,将出现一个弹出式的菜单,可以点当天的优惠菜。在窗体下方的状态栏,显示出对应菜名的说明及当前点过菜打印输出:通过“重新点菜”按钮,可以将Memo 组件中的内容清空,同时将状态栏中的总价格清为零。
鼠标放在上方的BUTTON上,状态栏的左边将显示相应的菜名和菜价信息,点击BUTTON弹出对话框。
确定后相应的菜名就出现在MEMO中,且状态栏的右方显示了所消费的价格。
实验五
实验题目:使用Ttable组件进行简单程序设计
实验目的:Ttable组件的属性设计;数据库连接设置;数据控制方法,数据定位功能设计,编程设计。
实验类型:验证性
实验内容:
编写使用BDE的一个应用程序实现表中纪录的插入、编辑、更新以及记录指针,如下图所示:
点击浏览数据,界面如图所示:
实验步骤简介:
1.建立表格books,字段有bookno, bookname, author, publishment, buytimeyear, byetimemonth, buytimedate, buytime, ordered, borrowed。并在BDE Administration中建立数据库别名books。
2.使用page control控件,右键单击弹出快捷键,使用new page方法产生浏览记录和浏览数据的两个页面。修改两个tab sheet的caption属性,命名为浏览记录和浏览数据。
3.在tabsheet1页面下,放置table1,datasource1和DBNavigator1控件,并设置属性。设置table的databasename和tablename属性。Datasource1只需设置dataset属性。DBNavigator1设置datasource属性。
4.在tabsheet1页面下,放置相关控件,如,dbedit, dbcombobox, dbradiogroup.
分别设置它们的datasource和datafield属性。
5.Form1中添加close按钮,在tabsheet1中添加两个按钮。
6.在button下编程,实现程序功能。
procedure TForm1.FormCreate(Sender: TObject);
begin
with DBRadioGroup1 do
begin
Items.Add('Yes');
Items.Add('No');
Items.Add('Maybe');
Values.Add('Y');
Values.Add('N');
Values.Add('M');
end;
end;
7.在tabsheet2页面下,放置DBGrid1和DBNavigator2控件。并按照上面第三步的方式设置属性。
8.在DBGrid1中实现当具体点击某一行的数据时,页面切换到tabsheet2界面下。
在DBGrid1的事件中oncellclick中编程。
实验六
实验题目:使用Ttable组件和数据控制组件进行程序设计。
实验目的:掌握Ttable组件查询功能实现方法;查询条件设计;查询结果显示。实验类型:验证性
实验内容:
一.程序总体功能介绍:
用户选择数据库名后,在该数据库名下的所有表格就显示在其下方的Listbox中,点击表格名称,表格对应的字段名就显示在右方的Listbox中。同时,用户可以根据该表格的第一个字段进行查询具体的记录。在edit框中输入查询信息,点击“查询”按钮,若查找到相关记录,dbgrid自动会把指针指向那条记录并显示“查询成功”。否则显示“查询失败”。
按钮上一条记录,下一条记录用来实现数据指针的移动。
二.步骤简介:
1.建立新的应用程序项目。
2.设计窗体。Label1,label2,label3分别显示“请选择数据库名”,“请选择表格”
已经“显示字段名”。Label4和label5分别用来显示“请输入要查询的【】字段值”其中。【】的内容是随着所选择表格的第一个字段名而确定的,是随着表格的名称而发生改变的。Label5的内容是来显示查询的结果的。若存在则显示查询成功,否则查询失败。它也是改变的。
所以先设置其一些属性,具体如下:
a.定义两个全局变量,str1和str2, 字符串类型。
b.选择数据库名。当程序一启动就会自动在显示数据库名的combobox中把当
前的数据库别名显示出来。因此需要在Form的oncreate事件中编写程序代码,代码如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
with ComboBox1 do
begin
items.Clear;
session.GetAliasNames(items);
text:=items[0];
end;
end;
c. 选择的数据库名后,数据库中所包含的所有表格就显示在Listbox中,程序实
现如下:
procedure https://www.doczj.com/doc/4a8034588.html,boBox1Click(Sender: TObject);
begin
str1:=ComboBox1.Items.Strings[ComboBox1.Itemindex];
with listbox1 do
begin
items.clear;
session.GetTableNames(str1,'',true,true,listbox1.Items);
end;
end;
d.单击listbox中的表格后,它所有的字段就会在右边的listbox中显示:procedure TForm1.ListBox1Click(Sender: TObject);
begin
with table1 do
begin
close;
databasename:=str1;
tablename:=listbox1.Items.Strings[listbox1.itemindex];
open;
end;
with listbox2 do
begin
items.Clear;
items:=table1.FieldList;
str2:=items.Strings[0];
label4.Caption:='请输入要查询的'+str2+'字段值:';
end;
end;
e.在EDIT中查询,显示查询结果。
procedure TForm1.Button1Click(Sender: TObject);
begin
with table1 do
begin
close;
indexfieldnames:=str2;
open;
if findkey([edit1.Text]) then
begin
label5.Caption:='查询成功!';
end
else
begin
label5.Caption:='查找失败!';
end;
end;
end;