浏览器课程设计_20091602310025_袁倩_Intternet信息检索课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Internet信息检索》
课程设计
题目名称浏览器设计与实现
学号20091602310025
姓名袁倩
班级计算机科学与技术(1)班
课程学期2011-2012学年(第一学期)
任课教师周辉 (信息学院) 2011年12 月 04日
目录
一、需求分析 (2)
二、个人设计部分 (3)
三、详细设计——设计主要步骤及程源代码 (5)
四、运行结果 (11)
五、课程设计总结 (12)
六、参考文献 (14)
正文:
一、需求分析
随着互联网的急速发展和它在世界范围的广泛应用,WWW(World Wide Web,万维网)也日益成为互联网上信息交流不可或缺的工具。
它是一种以
HTTP(HyperText Transfer Protocol,超文本传输协议)为基础,使用
HTML(HyperText Markup Language,超文本标记语言)语言编写的有若干Web刚页构筑而成的世界。
HTTP使用了统一资源定位器URL /view/1496.htm (Uniform Resource Locator)这一概念。
简单地说,URL就是文档在环球信息网上的"地址"。
URL用于标识Ineternet或者与Internet相连的主机上的任何可用的数据对象。
URL中的U常常被认为表示"统一",实际上在许多重要文档中也是这样引用的。
在URL概念背后有一个基本思想,那就是:提供一定信息条件下,你应能在Internet上的任何一台机器上访问任何可用的公共数据。
在Web世界
中常有的第一步是确定游览的日标,这通常就是一个URL地址。
理论上说来,环球信息网包括整个两亿人以上的Internet世界,它包含所有的Web站点、Gopher </view/32795.htm>信息站、FTP </view/369.htm>档案库、Telnet,公共存取帐号、News 新闻讨论区以及Wais资料库。
所以环球信息网可以说是当今全世界最大的电子资料世界,已经可以把World Wide Web当成是Internet 的同义词了。
事实上,一般我们日常所说的"上Internet",其实指的就是连上World Wide Web 。
WWW 是World Wide Web (环球信息网)的缩写,也可以简称为Web,中文名字为“万维网”。
环球信息网之所以称之为信息网
</view/528577.htm>,完全是因为它的资源可以互相连接的缘故,全世界目前大概有数万个Web站,每个Web 站都可以透过超链结(Hyper link)与其它Web 站连接,任何人都可以设计自己的Home Page,放上Web 站,然后在你的Home Page 上面产生链结,与其他人的Home Page 连接,或是连到其他的Web 站;别人也一样可以连到你的Home Page ,或是你的Web 站,整个信息网就这样编织了起来,形成一个巨大的环球信息网。
本程序主要是实现实现对自己的浏览历史创建密码,以防止别人访问自己的历史记录。
当我们访问页面时,我们可以将自己的历史记录进行加密,并且保存在一个自己默认的文件夹里,所以当别人使用自己的浏览器,如果不输入密码,将无法访问到自己的历史记录。
二、个人设计部分:
在此次课程设计中,我主要负责浏览器的界面设计和简单的功能实现部分的内容,通过建立一个名为HtmlView的工程,以致生成的工程框架包含四个类:应用程序类,CHtmlViewApp,对应HtmlView.h和HtmlView.cpp文件;
框架类,CMainFrame,对应MainFrm.h和MainFrm.cpp文件;文档类,CH tmlViewDoc,对应HtmlViewDoc.h和HtmlViewDoc.cpp文件;HtmlView类,CHtmlViewView,对应HtmlViewView.h和HtmlViewView.cpp文件,最终编译运行,程序已经具有了基本的Web浏览功能,能自动连到微软的网站。
以下为本次设计的详细内容。
三、概要设计
CHtmlView类的主要功能是访问Web网站和HTML文档。
这是由于CHtml View类在MFC的文档/视图结构(MFC's document/view architecture)环境中,进一步提供了WebBrowser控件的功能,可以说CHtmlView类是对WebBrowser控件的封装。
WebBrowser控件支持通过超链接和统一资源定位器URL导航的Web浏览。
使得应用程序成了一个Web浏览器(web browser)。
要创建一个Web浏览器型的应用程序,可以使用CHtmlView类。
通过MF C应用程序向导实现。
CHtmlView 类的成员函数
获取和设置属性(Attributes)的成员函数
(1)CString GetType( ) const;
(2)long GetLeft( ) const;
void SetLeft( long nNewValue );
(3)long GetTop( ) const;
void SetTop( long nNewValue );
(4)long GetHeight( ) const;
void SetHeight( long nNewValue );
(5)BOOL GetVisible( ) const;
void SetVisible( BOOL bNewValue );
其它的函数就不一一列举了。
主要的操作(Operations)成员函数
这些成员函数非常有用,常常用在应用程序中。
void GoBack( ); 导航到历史列表的前一个条目(previous item)。
void GoForward( ); 导航到历史列表的下一个条目。
void GoHome( ); 导航到主页,该主页在IE的属性中设置。
void GoSearch( ); 导航到当前搜索页。
该页在IE的属性中设置。
void Refresh( ); 重新装入浏览器当前正在显示的URL或者文件,即刷新。
void Stop( ); 撤销任何未完成的导航或下载,并且停止任何动态的页面元素,例如背景音乐和动画。
Navigate 导航到由URL指定的资源。
Navigate2 导航到由URL指定的资源或者由全路径指定的文件。
PutProperty 设置与所给定的对象相关的属性的当前值。
GetProperty 返回与所给定的对象相关的属性的当前值。
ExecWB 执行一个命令。
LoadFromResource 在WebBrowser控件中装入一个资源。
四、详细设计——设计主要步骤及程序源代码
1.利用MFC AppWizard生成应用程序框架
工程名为HtmlView,
第一步,工程类型为单文档(Single document),中文语言支持。
第二步和第三步使用默认值,不需要数据库,也不提供对于复合对象的支持。
第四步选择Internet Explorer ReBars工具栏的风格,这样就有了用来输入网址的文本框。
第五步不作任何修改,
第六步应选择CHtmlView类作为视图类的基类。
生成的工程框架包含四个类:
应用程序类,CHtmlViewApp,对应HtmlView.h和HtmlView.cpp文件。
框架类,CMainFrame,对应MainFrm.h和MainFrm.cpp文件。
文档类,CHtmlViewDoc,对应HtmlViewDoc.h和HtmlViewDoc.cpp文件。
HtmlView类,CHtmlViewView,对应HtmlViewView.h和HtmlViewView.cp p文件。
此时编译运行,程序已经具有了基本的Web浏览功能,能自动连到微软的网站。
2.修改工具栏
在工具栏上增加新的按钮,以便快速执行所需的功能。
在工作区中选择ResourceView卡,选择ToolBar,双击工具条控件的名字(IDR_MAINFRAME),右边出现程序的工具条。
双击其中的按钮,可以看到它们的属性。
其中有一个空
的按钮,双击它可以添加新的按钮的属性。
添加六个按钮,它们的ID 号与相应的菜单条目相同。
拖动按钮,可以改变按钮之间的相对位置。
(如图1-2)
表1
—2
图1-2
3.为控件添加事件处理函数
当用户点击菜单条目,或者点击相应的快捷按钮时,应能引起程序的反映,这就需要给这些控件添加事件处理函数。
进入类向导,选择“Message Maps ”卡。
在“Class Name ”下拉框中选择CHtmlViewView 类,为前述的六个控件添加事件处理函数。
(如图1-3,表1-3)
菜单条目名称(Caption ) ID 号 前进 ID_FOWARD 后退 ID_BACK 停止 ID_STOP 刷新 ID_UPDA TE 主页 ID_HOMEPAGE 搜索 ID_SEARCH
表
1-3
图1-3
4.添加事件处理函数的代码
在HtmlViewView.cpp 实现文件中,添加上述六个事件处理函数的代码。
//前进到下一个网页
void CHtmlViewView::OnFoward() { GoForward(); }
//退到前一个网页
void CHtmlViewView::OnBack() { GoBack(); }
//停止网页的下载
void CHtmlViewView::OnStop() { Stop(); } 对象ID Messages Member Function ID_FOWARD COMMAND OnFoward() ID_BACK COMMAND OnBack() ID_STOP COMMAND OnStop() ID_UPDATE COMMAND OnUpdate() ID_HOMEPAGE COMMAND OnHomepage() ID_SEARCH COMMAND OnSearch()
//刷新当前的网页
void CHtmlViewView::OnUpdate() { Refresh(); }
//回到主页
void CHtmlViewView::OnHomepage() { GoHome(); }
/
5.为应用程序添加URL定位功能
至此,应用程序还无法浏览用户想要的网页,还没有URL定位功能。
通过以下步骤来添加这个功能。
(1)添加网址输入栏控件
在建立应用程序框架时,曾选择了Internet Explorer ReBars的工具条风格,这就自动在程序的资源中添加了一个对话框条,可以将它变为一个网址的输入栏。
在工作区中选择ResourceView卡,选择Dialog,双击对话框控件的名字
(IDR_MAINFRAME),右边出现这个对话框条。
在上面添加一个“地址:”的静态文本,再添加一个文本编辑框控件,ID号是IDC_ADDR,作为地址栏,提供给用户输入要浏览的网站地址。
(如图1-4)
图1-4
(2)添加控制代码
设想当用户在地址栏中输入网址后,打回车键时,浏览器应用程序就下载并显示指定的新网页,为了实现这个功能,考虑到用户在文本编辑框中按下回车键后,会有一个IDOK的消息发送到主框架类,可以添加处理这个消息的控制函数,在该函数中,用指定的网址调用Navigate()或者Navigate2()函数,就可以实现对该网页的浏览。
①在MainFrm.h文件中,添加消息处理函数的声明:
public:
void OnNew();
②在MainFrm.cpp文件中,添加该函数的实现代吗:
void CMainFrame::OnNew()
{
CString pp;
//获得用户在地址栏中输入的URL
m_wndDlgBar.GetDlgItem(IDC_ADDR)->GetWindowText(pp);
//浏览指定的网页
((CMyWebView*)GetActiveView())->Navigate(pp);
}
③建立事件处理函数与消息的映射
在MainFrm.cpp文件中,再消息映射(MESSAGE_MAP)段中添加自己的消息映射的宏。
用ON_COMMAND命令建立IDOK消息和处理函数OnNew的映射关系。
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_COMMAND(IDOK, OnNew) //自己的消息映射宏
END_MESSAGE_MAP()
④在myWebView.h文件的类定义前面添加包含语句
#include "myWebDoc.h"
6.解决点击超链接时地址栏的同步问题
当用户点击网页中的超链接来浏览其他网页时,地址栏中应显示该链接的网址,以便用户能了解自己所在的位置,解决这个问题可以利用CHtmlView类的事件处理函数。
当网页下载完成后,会触发OnDocumentComplete()函数,该函数的参数就是所下载网页的URL,可以利用此函数对地址栏进行设置。
添加以下代
码:
①在MainFrm.h文件中,添加处理函数的声明:
public:
void SetPage(LPCTSTR lpszURL);
②在MainFrm.cpp文件中,添加该函数的实现代吗:
void CMainFrame::SetPage(LPCTSTR lpszURL)
{
m_wndDlgBar.GetDlgItem(IDC_ADDR)->SetWindowText(lpszURL);
}
该函数页使用了地址栏所在的对话框条控件对应的成员变量,将指定的URL显示在地址栏中。
③使用类向导添加事件处理函数
用类向导为应用程序的CMyWebView类添加OnDocumentComplete()事件处理函数。
并在HtmlViewView.cpp文件中添加它的实现代码
void CHtmlViewView::OnDocumentComplete(LPCTSTR lpszURL)
{
// TODO: Add your specialized code here and/or call the base class ((CMainFrame*)GetParentFrame())->SetPage(lpszURL);
//CHtmlView::OnDocumentComplete(lpszURL);
} (如图1-5)
图1-5
④添加包含语句
在MainFrm.cpp文件前面添加包含语句
#include "HtmlViewView.h"
在HtmlViewView.cpp文件前面添加包含语句。
#include "MainFrm.h"
四、运行结果
对浏览器的测试分为几个部分,包括功能的实现、和各个按钮的功能是否正确。
1.运行“.dsw”文件。
得到如图的画面。
2.运行网站
3.然后点击确定,得到如图
4.然后再测试各个按钮的功能。
5.各个按钮的功能都能实现
经过测试,浏览器的各个功能都能顺利地完成。
五、课程设计总结
此次课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.经过几个星期的学习,并结合VC++的编程方法。
这次的课程设计的重要目的是让我们通过对VC++编程的理解进而进行实际的程序开发。
在对浏览器软件制作的过程中,我们进行了大量的前期工作,包括
收集资料、对浏览器软件的需求分析,还有就是对编写的软件的测试,这需要我
们小组成员的详细分工和协调,才能顺利完成这次课程设计,其中我主要负责对浏览器课程设计的界面设计和简单的功能实现部分,在综合了程海燕的创意部分,查阅一些浏览器的设计方案的资料,然后加以修改,基本可以完成对程序的设计。
其中可以对一些相关的程序进行修改,比如对浏览器的默认的网站进行修改,具体的修改方案为:
void CE06View::OnDraw(CDC* pDC)
{
CE06Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
}
void CE06View::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
Navigate2(_T("/"),NULL,NULL);
}
还可以对浏览器的版权、浏览器按钮的位置进行调整等修改,达到自己满意的效果,顺利完成这次课程设计。
对于能顺利完成这次课程设计,完全需要组员间的配合,完成这次课程设,至今我仍感慨良多。
从选定题目,结合自己的创新,到完成程序的编写和实现,从理论到实践,在这几个星期的日子里,我学到了很多东西,不仅巩固了以前所学过的知识,而且将书本上的知识运用在其中,不再是泛泛的知识了。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,但是在同学们的帮助和大量资料的提示下,我们得以一一解决。
同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说类与对象,通过这次课程设计之后,一定把以前所学过的知识重新温故。
此次设计也有一些不足,但是我相信在今后的不断学习中,我们将不断改进的,争取使之完善。
在这次课程设计中,得到了指导同学们的大力帮助,在这里对给过我们小组帮助的所有同学表示忠心的感谢。
六、参考文献
1 谭浩强,C程序设计,清华大学出版社
2 胡海生,Visual C++ 6.0 编程,清华大学出版社
3 郑阿奇,Visual C++ 实用教程,电子工业出版社
4 孙鑫,VC++深入详解, 电子工业出版社
5 陈天华,面向对象程序设计与Visual C++ 6.0教程,北京高等教育。