可视化程序设计实验指导书.docx
- 文档编号:8566025
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:50
- 大小:2.08MB
可视化程序设计实验指导书.docx
《可视化程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《可视化程序设计实验指导书.docx(50页珍藏版)》请在冰豆网上搜索。
可视化程序设计实验指导书
可视化程序设计
实习指导书
第一部分C++简介
一、C++语言和面向对象
1、C与C++
C++是更好的C和面向对象的C;
C++的基本单位是类(Class),它关注的是自然界中稳定事物,它有固定的属性(Property)和方法(Method),只要用类把事物描述好存入库中,然后根据需要改变这些事物联系起来的方法,就能达到以不变应万变的目的,这是面向对象程序设计的基本思想;
C的基本单位是函数(Function),它关注的是事物之间的联系,而这种联系是变化的、不稳定的,只要有一点小变化,就会引起整个系统功能的大变化。
2、类(Class)
类的开式类似于C语言中的结构体,只是比结构体多了成员函数(MemberFunction)
typedefstruct_Entity
{
intID;
charCaption[50];
charName[50];
charType[250];
charCreatedTime[20];
charKeyword[200];
}Entity;
//------------------------------------------------------------------------------
classTEntity
{
private:
intID;
charCaption[50];
charName[50];
charType[250];
charCreatedTime[20];
charKeyword[200];
public:
TEntity(intid,char*caption=NULL,char*name=NULL,char*type=NULL,char*createdtime=NULL,char*keyword=NULL);
TEntity(TEntity&entity)
{
ID=entity.ID;
strcpy(Caption,entity.Caption);
strcpy(Name,entity.Name);
strcpy(Type,entity.Type);
strcpy(CreatedTime,entity.CreatedTime);
strcpy(Keyword,entity.Keyword);
}
~TEntity(void);
voidWriteToFile(constchar*FileName);
voidReadFromFile(constchar*FileName);
};
一般说来一个类的会在两个文件中实现:
在头文件(*.h)中对类进行说明,象上一页的代码就应放在头文件中。
在源文件(*.CPP)中完成类成员函数的实现,象上面WriteToFile与ReadFromFile的具体实现的代码就应放在CPP文件中。
3.封装
通过上面的形式,对类中的私有成员进行了封装,而公有成员函数则是该类对外统一的接口,这种封装可以使类之间的减少相互干扰。
这样从外面来看,类就是一个通过接口能完成一定功能的“黑匣子”,而用户根本不需要关心类的内部实现情况。
4.继承
通过继承,可以子类具有父类的的所有特性(成员数据与成员函数)。
(1)继承的方式
继承方式有三种:
public公有方式
private私有方式
protected保护方式
继承方式决定了派生类对继承基类属性的使用权限
继承方式
说明
公有继承public
基类的public和protected成员被派生类继承后,保持原来的特性
私有继承private
基类的public和protected成员被派生类继承后,变成private成员
保护继承protected
基类的public和protected成员被派生类继承后,变成protected成员
无论何种继承,基类的private成员都不能被派生类访问
(2)派生类的构造函数与析构函数
基类的构造函数与析构函数不能被派生类继承。
派生类对象建立时,先执行基类的构造函数,然后执行派生的构造函数。
对于析构函数来说,其顺序刚好相反。
(3)派生类成员函数的重载
当派生类中需要扩展或修改某些成员函数的功能时,则在派生类中要重新声明这些函数,然后在实现部分重新实现被声明的函数。
如果是在原有功能进行扩展,则要在派生类函数中调用基类的函数。
如不需要原有功能,也可以不调用基类的函数。
这就是函数的重载,它可以用同一个函数名实现不同的功能。
5.重载
这是C++不同于C语言的一个重要特征。
它允许几个功能相似的函数共有一个函数名称。
实际上,C++通过一种特殊的命名技术来解决重载的问题,通过参数的个数和参数的类型来确定特定的函数。
但不能通过不同的函数返回值来进行区分。
正确不正确
6.多态
用相同的指令,调用不同的函数。
(1)编译时多态:
如前面的函数重载实现的就是编译时多态。
它可以用相同的函数名,根据函数参数的不同(数量或类型)去实现不同的功能。
但调用什么函数去实现什么功能却是在编译时就已确定,并以后不能更改,是一种静止的多态。
(2)运行时多态:
它是利用虚函数实现的。
用同一条指令,可以根据程序运行时的不同的情况去调用对应的函数去实现不同的功能。
如薪水的计算或几何形状的显示。
CShap*pShape[6];
for(inti=0;i<6;I++)
pShape[I]->display();
二、Windows的运行机制
1、Windows的元素-------窗体
2、Windows的动力-------消息
多任务成为Windows的基本功能,因此引入了事件驱动机制。
它不同于过程驱动,没有固定的流程,而是等待用户或系统发出的指令,再来响应。
第二部分BCB简介
一、BCB的历史与未来
Borland公司是历史上编程工具第一开发商。
Delphi是Borland公司在C++领域惨败后的一个突破点,是RAD(快速应用程序开发)的领导者。
BCB就是DelphiforC++,它与Delphi十分相似:
●程序界面相同;
●使用相同的程序柜架VCL;
●相同的开发过程;
●不同的只是语法。
新的VCL有望用C++重写,使BCB摆脱Delphi的影响。
二、BCB的定位
语言工具应根据自身情况和目标进行选择,没有最好的工具,各种工具都有用。
BCB定位于Windows桌面应用程序开发,有强大的可视化开发能力,界面开发快;
对于桌面数据库开发有一定的优势;
开发系统级程序(驱动程序)非常困难。
三、BCB与其它语言的比较
1、与Delphi的比较
●由于Windows是由C语言写成,较Delphi调用API(应用程序接口)更为方便;
●更适合有C语言基础的程序员;
●但Delphi的资源更丰富;
2、与VC++的比较
●它们使用了不同的程序框架,VC++使用MFC(微软基础类库),BCB使用VCL(可视化组件库)
●从层次上VCL优于MFC,能做到快速开发;
●不过MFC与Windows同出一门,MFC有微软的强力支持;
●VC++跨平台的兼容性更好;
●VC++运行时间长,积累的资源最多;
●C++是一种语言标准,好比图纸,而BCB与VC++则是根据这一图纸生产的不同的产品;
四、重要的不可视组件与BCB类
1、AnsiString
是功能很强的字符串类,利用构造函数可以从其它类型生成AnsiString类型;
可以用+进行连接,还重载了<,>,<=,>=,!
=等运算符,除进行字节比较外,还可以用AnsiCompare方法进行中文比较;
它还有众多强大的方法,见表3.21
2、Tstrings与TStringList
用于访问多行文本,可以看到Lines属性就是Tstrings类对象指针;
Tstrings类的Strings属性就是一个AnsiString类对象的数组;
本质上是一个double类型的浮点数;
0-------1899年12月30日零点计时起点
37750.9240272338----2003年5月9日22点10分35秒
整数部份----------距离计时起点的天数
小数部份-----------当前时间与全天24小时的比值
可以将TDateTime对象用作浮点数,也可以把浮点数转换成TDateTime,实际上可以方便地在时间类型与其它类型间完成转换;
用Now()函数可以取当前时间;
用DayOfWeek可以取出星期
0123456
SundayMondayTuesdayWednesdayThursdayFridaySaturday
五、BCB6的一般编程步骤
ØFile|New开始一个项目
Ø设计界面,设置组件属性
Ø撰写组件事件处理程序
Ø运行程序
Ø对程序中的错误进行调试和修改
Ø在上面的过程中不要忘记随时保存文件
第三部分《可视化程序设计》实验项目
实验一C++Builder初步应用
一、实验目的
通过一个简单的实例,让学生熟悉C++Builder集成开发环境,掌握利用C++Builder进行应用程序开发的步骤,初步能完成简单的程序设计,掌握基本的调试手段和调试方法,熟悉简单控件的使用方法。
二、实验设备
1台PC、CB6开发环境等。
三、程序功能
点击“隐藏”按钮,“HelloWorld”消失,按钮变成“显示”;再点击“显示”按钮,“HelloWorld”又显示出来,同时按钮变成“隐藏”。
四、设计步骤
1、从Standard面板放一个Label控件和一个Button控件,建立如图1-1界面:
2、有关控件属性设置如下表
控件类型
控件名称
属性
值
Button
Button1
Caption
“隐藏”
Label
Label1
Caption
“HelloWorld”
3、在“隐藏”按钮上双击或如图1-2选择对象观察器(ObjectInspector)的事件(Event)页的OnClick项,为Button1按钮添加单击事件响应代码如下
void__fastcallTForm1:
:
Button1Click(TObject*Sender)//此行代码自动生成,不用书写
{
if(Button1->Caption=="隐藏")
{
Button1->Caption="显示";
Label1->Visible=false;//Visible属性为false表示该控件不可见
}
else
{
Button1->Caption="隐藏";
Label1->Visible=true;//Visible属性为true表示该控件可见
}
}//此行代码自动生成,不用书写
4、单击File->SaveProjectAs保存文件,如图1-3。
保存时最好为每一个程序新建一个文件夹来存放文件,如图1-4
5、单击运行按钮,如图1-5,运行程序。
五、C++Builder项目文件介绍
1、
一般情况下在运行该程序以前,C++Builder项目中只有图1-6中前6个文件,就是所谓的源程序。
1)Project1.bpr
C++Builder的项目文件(BorlandProject),它统一管理着所有的源程序,通过打开它可以打开C++Builder项目;
2)Project.cpp
主要包含了WinMain()函数,WinMain()函数的作用相当于TurboC中的Main()函数。
它实际上完成应用程序的初始化、创建如图1这样的窗体。
这里顺便说一句,要深入学习C++Builder编程,除了要对各种控件能熟练使用以外,还要深入了解Windows下程序运行的机制,打开黑匣子。
3)Unit1.h
窗体Form1是用一个类来实现的,Unit1.h是这个类的头文件,在这个头文件中可以看见在界面中所放的每一个控件都对应成这个类的一个成员变量。
添加的每一个事件(消息)响应,如“隐藏”按钮的单击事件响应,都对应成这个类的一成员函数。
当然,这些操作都会自动完成,我们也可以手动进行操作。
了解这些将有助于我们调试程序。
4)Uni1.cpp
它是窗体Form1的实现文件,具体实现程序功能。
上面的代码就添加在这里,它是我们最常用的一个文件,但它不能单独工作。
5)Unit1.dfm
它主要定义窗体的位置信息以及外观信息。
6)Project1.res
它是资源文件,
2、运行程序后,会增加后4个文件。
扩展名为EXE的Project1.exe是经链接后生成的可执行文件,可在Windows中直接运行;
扩展名为Obj的文件,是对源程序编译后生成的目标文件,供链接程序使用以生成可执行文件;
实验二口令字的实现
一、实验目的
通过验证用户输入的密码是否正确,让学生掌握常用标准对话框函数,并建立阅读英文帮助文件的习惯。
二、实验设备
1台PC、CB6开发环境等。
三、程序功能
验证用户输入的密码,如果正确则显示欢迎界面,如果密码错误,则提示用户重新输入,用户最多有三次输入密码的机会。
四、设计步骤
1、从Standard面板放一个Edit控件和一个Button控件,建立如图2-1界面。
2、有关控件属性设置如下表
控件类型
控件名称
属性
值
Button
Button1
Caption
“确定”
Default
true
Edit
Edit1
PassWordChar
*
Text
空值
3、为Button1按钮添加单击事件响应代码如下:
void__fastcallTForm1:
:
Button1Click(TObject*Sender)
{
statici=0;
if(Edit1->Text=="1234")
ShowMessage("欢迎");
else
{
i++;
if(i==3)
{
ShowMessage("退出");
Close();
}
else
{
ShowMessage("口令错误"+AnsiString(i)+"次");
Edit1->SetFocus();//Edit1控件设置焦点
}
}
}
4、运行程序,并思考为什么变量I被定义成静态变量?
5、重新修改程序,让程序增加一些功能。
void__fastcallTForm1:
:
Button1Click(TObject*Sender)
{
statici=0;
if(Edit1->Text=="1234")
ShowMessage("欢迎");
else
{
i++;
if(i==3)
{
//ShowMessage("退出");
Application->MessageBox("退出","错误",MB_OK+MB_ICONWARNING);
Close();
}
else
{
//ShowMessage("口令错误"+AnsiString(i)+"次");
AnsiStringmsg;
intnResult;
msg="口令错误"+AnsiString(i)+"次\n是否重新输入?
";
nResult=Application->MessageBox(msg.c_str(),"提示",MB_YESNO+MB_ICONINFORMATION);
if(nResult==IDYES)//根据用户的输入确定是否继续输入密码
{
Edit1->SetFocus();//Edit1控件设置焦点
Edit1->Clear();
}
else
Close();
}
}
}
6、程序中新增加的功能主要是因为使用了MessageBox函数,下面是它的介绍,摘录自C++Builder的帮助文件,会看帮助是编程者必备的基本功。
int__fastcallMessageBox(constchar*Text,constchar*Caption,intFlags);
Description
UseMessageBoxtodisplayagenericdialogboxamessageandoneormorebuttons.Captionisthecaptionofthedialogboxandisoptional.
MessageBoxisanencapsulationoftheWindowsAPIMessageBoxfunction.TApplicationencapsulationofMessageBoxautomaticallysuppliesthemissingwindowhandleparameterneededfortheWindowsAPIfunction.
ThevalueoftheTextparameteristhemessage,whichcanbelongerthan255charactersifnecessary.Longmessagesareautomaticallywrappedinthemessagebox.ThevalueoftheCaptionpropertyisthecaptionthatappearsinthetitlebarofthedialogbox.Captionscanbelongerthan255characters,butdon'twrap.Alongcaptionresultsinawidemessagebox.
TheFlagsparameterspecifieswhatbuttonsappearonthemessageboxandthebehavior(possiblereturnvalues).Thefollowingtableliststhepossiblevalues.Thesevaluescanbecombinedtoobtainthedesiredeffect.
ValueMeaning
MB_ABORTRETRYIGNOREThemessageboxcontainsthreepushbuttons:
Abort,Retry,andIgnore.
MB_OKThemessageboxcontainsonepushbutton:
OK.Thisisthedefault.
MB_OKCANCELThemessageboxcontainstwopushbuttons:
OKandCancel.
MB_RETRYCANCELThemessageboxcontainstwopushbuttons:
RetryandCancel.
MB_YESNOThemessageboxcontainstwopushbuttons:
YesandNo.
MB_YESNOCANCELThemessageboxcontainsthreepushbuttons:
Yes,No,andCancel.
MessageBoxreturns0ifthereisn’tenoughmemorytocreatethemessagebox.Otherwiseitreturnsoneofthefollowingvalues:
ValueNumericvalueMeaning
IDOK1TheuserchosetheOKbutton.
IDCANCEL2TheuserchosetheCancelbutton.
IDABORT3TheuserchosetheAbortbutton.
IDRETRY4TheuserchosetheRetrybutton.
IDIGNORE5TheuserchosetheIgnorebutton.
IDYES6TheuserchosetheYesbutton.
IDNO7TheuserchosetheNobutton.
实验三简单的文字处理程序
一、实验目的
通过一个简单的文字处理程序,让学生掌握菜单控件、图像列表控件、RichEdit控件及常用对话框控件的使用。
二、实验设备
1台PC、CB6开发环境等。
三、程序功能
本程序可以打开、修改和保存一个文本文件,是一个最简单的文字处理程序。
四、设计步骤
1、
从Standard面板放一个MainMenu控件,从Win32面板放一个ImageList控件和一个RichEdit控件,从Dialogs面板上放一个OpenDialog控件和一个SaveDialog控件,建立如图3-1所示界面。
2、有关控件属性设置如下表
控件类型
控件名称
属性
值
OpenDialog
OpenDialog1
Filter
文本文件|*.txt|所有文件|*.*
SaveDialog
SaveDialog1
Filter
文本文件|*.txt|所有文件|*.*
MainMenu
MainMenu1
ImageList
ImageList1
Form
Form1
MainMenu
MainMenu1
RichEdit
RichEdit1
ImageList
ImageList1
3、双击ImageList1控件,出现如图3-2界面,点击Add…按钮,为它加入适当的图标,最后的结果如图3-2所示。
4、双击MainMenu1控件,出现如图3-3界面,为主菜单加入适当的菜单项,并设置快捷键。
各菜单项的属性设置如下表。
控件类型
控件名称
属性
值
MenuItem
miFile
Caption
文件(&F)
miFileOpen
Caption
打开(&O)
ImageIndex
1
ShortCut
Ctrl+O
miFileSave
Caption
保存(&S)
ImageIndex
2
ShortCut
Ctrl+S
N1
Caption
-
miFileExit
Caption
退出(&X)
ImageIndex
-1
ShortCut
Ctrl+X
5、关闭菜单设计器,回到Form1,打开主菜单如图3-4,依次点击各菜单项,并加入对应响应代码如下:
__fastcallTForm1:
:
TForm1(TCo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可视化 程序设计 实验 指导书