C语言程序浏览器课程设计.docx
《C语言程序浏览器课程设计.docx》由会员分享,可在线阅读,更多相关《C语言程序浏览器课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
C语言程序浏览器课程设计
C语言程序浏览器课程设计
或是连到其他的Web站;别人也一样可以连到你的HomePage,或是你的Web站,整个信息网就这样编织了起来,形成一个巨大的环球信息网。
本程序主要是实现浏览网页,当用鼠标点击菜单栏的文件时,会弹出一个下拉菜单,其中有导航、前进、后腿、返回主页、停止、刷新、退出,当单击帮助时,会弹出有一个关于版本的项目,点击它时会弹出一个关于这个程序的版本介绍。
在工具栏中,有七个图标,分别为导航、返回主页、后退、前进、停止、刷新、帮助,分别实现不同的功能,,事实上它确实也具备了一个浏览器的基本功能,能够很好地完成网上仲浪的任务。
二、概要设计
MFC类ChtmlView派生于文档/视图结构,他提供了实现Web浏览器的功能。
在这个类中最重要的方法是Navigate方法,通过给他指定参数就可以浏览指定的Web页。
Navigate函数原型如下:
voidNavigate
{
LPCTSTRURL;
DWORDdeflags=0;
LPCTSTRlpszTargetFrameName=NULL;
LPCTSTRlpszHeaders=NULL;
LPVOIDlpvPostData=NULL;
DWORDdwPostDataLen=0;
};
方法Navigate2也能完成网页浏览功能。
他扩充了Navigate函数的功能,不经能够浏览网页,还能够以相同的方式浏览本地计算机资源。
其函数原型如下:
voidNavigate2
{
LPCTSTRlpszURL;
DWORDdeFlags=0;
LPCTSTRlpszTargetFrameName=NULL;
LPCTSTRlpszHeaders=NULL;
LPVOIDlpvPostData=NULL;
DWORDdwPostDataLen=0;
};
ChtmlView还提供了各种方法来实现其他的功能,如果用GoForward和GoBack方法可以重新回到前面和后面已经浏览过的网页中,GoHome方法可以浏览设置好的默认主页,Stop方法可以终止当前的连接过程等等。
三、详细设计
设置默认主页为
1.用MfcAppWizardl(exe)创建一个新工程,将其命名为E06。
2.用MfcAppWizardl(exe)中按照下列步骤设置工程的属性。
(1)设置应用程序类型为单个文档模式,选择“文档/查看体系结构支持?
”。
(2)不选择数据库支持
(3)不选中“Active控件”复选框。
(4)不选中“隐藏工具栏”和“打印和打印顶览”复选框,选择“WindowsSockets”复选框。
(5)使用默认设置。
(6)设置CE06View的基类为ChtmlView,单击“完成”按钮,应用程序E06就创建完成。
图1程序的工程配置
3.打开对话框编辑器编辑对话框备控件的属性如
表1所示。
用该资源创建对话框类CaddressDlg。
表1IDD_DIALOG_ADDRESS的设置
配置如图2所示。
4.打开菜单,编辑菜单IDD_MAINFRAME,设置备菜单命令如表2所示菜单IDD_MAINFRAME
表2设置
配置如图2所示。
图2菜单IDD_MAINFRAME的设置
5.重新设置工具栏资源IDD_MAINFRAME,使得工具栏上的国标上的图标显得更加直观,并且他们的标识设置为相应的菜单命令标识,以共享相同的命令处理函数。
图3工具栏图标
6.4程序代码分析
1.头文件AddressDlg.h,定义由基类Cdialog派生类AddressDlg。
classCAddressDlg:
publicCdialog
{
Public:
CaddressDlg(CWnd*pparent=NULL);
Enum{IDD-IDD_DIALOG_ADDRESS};
Cstringm_address;
Protected:
VirtualvoidDODataExchange(CdataExchange*PDX);
Protected:
DECLARE_MESSAGE_MAP()
};
2.源文件AddressDlg.Cpp。
实现的功能,定义Caddress构造函数。
CaddressDlg:
:
CaddressDlg(CWnd*pParent/*=NULL*/);
Cdialog(CaddressDlg:
:
IDD,pParent)
{
M_adress=_T(“”);
}
3.CE06View类的定义。
在头文件E06View.h中定义由基类ChtmlView派生的CE06View类的接口。
ClassCE06View:
publicChtmlView
{
Protected:
CE06View();
DECLARE_DYNCREATE(CE06view)
Public:
CE06Doc*GetDocument();
Public:
VirtualVoid0nDraw(CDC*pDC);
virtualB00LPreC_eateWindow(CREATESTRUCT&cs);
protected:
virtualvoid0nInitialUpdate();
virtual~CE06View();
virtualvoidAssertValid()const;
virtualvoldDump(CdumpContext&dc)const;
protected:
//菜单命令响应函数
afx_msgvoldOnFlieNavigate();
afx_msgvoldOnFlieBack();
afx_msgvoldOnFlieForward();
afx_msgvoldOnFlieHome();
afx_msgvoldOnFlieStop();
afx_msgvoldOnFlieRefresh();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
4.CE06View类的实现。
(1)设置浏览器启动时启动的网页
voidCE06View:
:
OnDraw(CDC*pDC)
{
CE06Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
}
voidCE06View:
:
OnInitialUpdate()
{
CHtmlView:
:
OnInitialUpdate();
//TODO:
Thiscodenavigatestoapopularspotontheweb.
//changethecodetogowhereyou'dlike.
Navigate2(_T("
}
(2)消息映射
BEGIN_MESSAGE_MAP(CE06View,ChtmlView)
//{{AFX_MSG_MAP(CE06View)
ON_COMMAND(ID_FILE_NAVIGATE,OnFileNavigate)
ON_COMMAND(ID_FILE_BACK,OnFileBack)
ON_COMMAND(ID_FILE_FOREARD,OnFlieForward)
ON_COMMAND(ID_FILE_HOME,OnFlieHome)
ON_COMMAND(ID_FILE_STOP,OnFileStop)
ON_COMMAND(ID_FILE_REFRESH,OnFileResh)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
(3)CE06View构造函数和析构函数
CE06View:
:
CE06View()
{
}
CE06View:
:
~CE06View()
{
}
(4)设置启动时的导航站点
VoidCE06View:
:
OnInitalUpdate()
{
ChtmlView:
:
OnInitalUpdate();
//重新设置导航站点
Navigate2(_T(“Http:
//
}
(5)导航命令响应时间函数
VoidCE06View:
:
OnFileNavigate()
{
//TODO:
AddyourcommandhandlercodehereCaddressDlgdlg;
If(dlg.DoModle()!
=IDOK)reture;
Navigate2(dlg.m_address);
}
(6)后退命令响应函数
voidCE06View:
:
OnFlieBack()
{
//TODO:
Addyourcommandhandlercodehere
GoBack();
}
(7)前进命令返回函数
voidCE06View:
:
OnFlieForward()
{
//TODO:
Addyourcommandhandlercodehere
GoForward();
}
(8)返回主页命令响应函数
voidCE06View:
:
OnFlieHome()
{
//返回主页
Gohome();
}
(9)终止连接命令响应函数
voidCE06View:
:
OnFlieStop()
{
//TODO:
Addyourcommandhandlercodehere
Stop();
}
(10)刷新命令响应函数
voidCE06View:
:
OnFlieRefresh()
{
//TODO:
Addyourcommandhandlercodehere
Refresh();
}
(11)设置浏览器导航栏默认网页
CAddressDlg:
:
CAddressDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CAddressDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CAddressDlg)
m_address=_T("");
//}}AFX_DATA_INIT
}
四、软件测试
对浏览器的测试分为几个部分,包括功能的实现、和各个按钮的功能是否正确。
1.运行“.dsw”文件。
得到如图的画面。
2.运行网站
3.然后点击确定,得到如图
4.然后再测试各个按钮的功能。
5.点击后退按钮,得到贵州大学网址,因此后退按钮功能实现
6.查看浏览器的版本,如图
7.各个按钮的功能都能实现
经过测试,浏览器的各个功能都能顺利地完成。
五、总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。
经过一个多星期的学习,基本了解了VC++的编程方法,对VC++的编写程序的步骤有了一定的了解。
但对于要编写较为复杂的VC++程序还是有很大的难度,只有在今后的学习中,不断总结,不断摸索,努力的掌握VC++的编程技巧,为以后的学习工作打下基础。
这次的课程设计的重要目的是锻炼我们对VC++编程的理解,在对浏览器软件制作的过程中,最重要的是收集资料和对浏览器软件的需求分析,还有就是对编写的软件的测试,这需要组员的详细分工和协调,才能完成这次课程设计,我只要负责对浏览器课程设计的详细设计部分,在综合了杨秀玲的浏览器需求分析和陈海红的概要分析后,查阅老师给的浏览器的设计方案,然后加以修改,基本可以完成对程序的设计。
其中可以对一些相关的程序进行修改,比如对浏览器的默认的网站进行修改,具体的修改方案为:
voidCE06View:
:
OnDraw(CDC*pDC)
{
CE06Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
}
voidCE06View:
:
OnInitialUpdate()
{
CHtmlView:
:
OnInitialUpdate();
Navigate2(_T("
}
还可以对浏览器的版权、浏览器按钮的位置进行调整等修改,达到自己满意的效果,顺利完成这次课程设计。
VC++是面向对象的程序设计的编程方法,他与人的思维习惯相吻合,而面向过程的程序设计和计算机的工作过程是完全吻合的。
和面向过程的编程方法相比,利用VC++编程的优点是:
1)数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;
2)通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;
3)结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;
4)通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度;
6)以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统;
7)通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。
对于完成这次课程设计,完全需要组员间的配合,相互协调,才能完成这次课程设计,回顾起此次课程设计,至今我仍感慨颇多,的确,从选定题目到完成程序的编写,从理论到实践,在一个多星期的日子里,可以了学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说类与对象,通过这次课程设计之后,一定把以前所学过的知识重新温故。
善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,
生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过实际动手做,我们才真正领悟到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在我们这个小组的任务中,一起学习编程让我们有说有笑,相互帮助,配合默契。
对我们而言,知识上的收获重要,精神上的丰收是可喜的。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我们人生旅途上一个非常美好的回忆。
在这次课程设计中,得到了指导老师曾老师和同学们的大力帮助,在这里对给过我们小组帮助的所有同学表示忠心的感谢。
感谢老师的耐心指导和帮助。