资源描述
Internet信息检索课程设计
浏览器设计
一、需求分析
伴随互联网急速发展和它在世界范围广泛应用,WWW(World Wide Web,万维网)也日益成为互联网上信息交流不可或缺工具。它是一个以HTTP(HyperText Transfer Protocol,超文本传输协议)为基础,使用HTML(HyperText Markup Language,超文本标识语言)语言编写有若干Web刚页构筑而成世界。
HTTP使用了统一资源定位器URL (Uniform Resource Locator)这一概念。简单地说,URL就是文档在环球信息网上"地址"。URL用于标识Ineternet或和Internet相连主机上任何可用数据对象。URL中U常常被认为表示"统一",实际上在很多关键文档中也是这么引用。在URL概念背后有一个基础思想,那就是:提供一定信息条件下,你应能在Internet上任何一台机器上访问任何可用公共数据。 在Web世界中常有第一步是确定游览日标,这通常就是一个URL地址。
理论上说来,环球信息网包含整个两亿人以上Internet世界,它包含全部Web站点、Gopher <>信息站、FTP <>档案库、Telnet,公共存取帐号、News新闻讨论区和Wais资料库。所以环球信息网能够说是当今全世界最大电子资料世界,已经能够把World Wide Web当成是Internet 同义词了。实际上,通常我们日常所说"上Internet",其实指就是连上World Wide Web 。WWW是World Wide Web (环球信息网)缩写,也能够简称为Web,汉字名字为“万维网”。环球信息网之所以称之为信息网 <>,完全是因为它资源能够相互连接缘故,全世界现在大约有数万个Web站,每个Web 站全部能够透过超链结(Hyper link)和其它Web 站连接,任何人全部能够设计自己Home Page,放上Web 站,然后在你Home Page 上面产生链结,和其它人Home Page 连接,或是连到其它Web 站;她人也一样能够连到你Home Page ,或是你Web 站,整个信息网就这么编织了起来,形成一个巨大环球信息网。
本程序关键是实现浏览网页,当用鼠标点击菜单栏文件时,会弹出一个下拉菜单,其中有导航、前进、后腿、返回主页、停止、刷新、退出,当单击帮助时,会弹出有一个相关版本项目,点击它时会弹出一个相关这个程序版本介绍。在工具栏中,有七个图标,分别为导航、返回主页、后退、前进、停止、刷新、帮助,分别实现不一样功效,,实际上它确实也含有了一个浏览器基础功效,能够很好地完成网上仲浪任务。
二、概要设计
MFC类ChtmlView 派生于文档/视图结构,她提供了实现Web浏览器功效。在这个类中最关键方法是Navigate方法,经过给她指定参数就能够浏览指定Web页。Navigate函数原型以下:
void Navigate
{
LPCTSTR URL;
DWORD deflags=0;
LPCTSTR lpszTargetFrameName=NULL;
LPCTSTR lpszHeaders=NULL;
LPVOID lpvPostData=NULL;
DWORD dwPostDataLen=0;
};
方法Navigate2也能完成网页浏览功效。她扩充了Navigate函数功效,不经能够浏览网页,还能够以相同方法浏览当地计算机资源。其函数原型以下:
void Navigate2
{
LPCTSTR lpszURL;
DWORD deFlags=0;
LPCTSTR lpszTargetFrameName=NULL;
LPCTSTR lpszHeaders=NULL;
LPVOID lpvPostData=NULL;
DWORD dwPostDataLen=0;
};
ChtmlView还提供了多种方法来实现其它功效,假如用GoForward和GoBack方法能够重新回到前面和后面已经浏览过网页中,GoHome方法能够浏览设置好默认主页,Stop方法能够终止目前连接过程等等。
三、具体设计
设置默认主页为,网址栏默认为.com.
1.用MfcAppWizardl(exe)创建一个新工程,将其命名为E06。
2.用MfcAppWizardl(exe)中根据下列步骤设置工程属性。
(1)设置应用程序类型为单个文档模式,选择“文档/查看体系结构支持?”。
(2)不选择数据库支持
(3)不选中“Active控件”复选框。
(4)不选中“隐藏工具栏”和“打印和打印顶览”复选框,选择“Windows Sockets”复选框。
(5)使用默认设置。
(6)设置CE06View基类为ChtmlView,单击“完成”按钮,应用程序E06就创建完成。
图1 程序工程配置
3.打开对话框编辑器编辑对话框备控件属性如
表1所表示。用该资源创建对话框类CaddressDlg。
表1 IDD_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。class CAddressDlg :public Cdialog
{
Public:
CaddressDlg(CWnd*pparent=NULL);
Enum{IDD-IDD_DIALOG_ADDRESS};
Cstring m_address;
Protected:
Virtual void DODataExchange(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类接口。
Class CE06View:public ChtmlView
{
Protected:
C E06View();
DECLARE_DYNCREATE(CE06view)
Public:
CE06Doc*GetDocument();
Public:
Virtual Void 0nDraw(CDC* pDC);
virtual B00L PreC_eateWindow(CREATESTRUCT&cs);
protected:
vi rtual void 0nInitialUpdate();
vi rtual ~CE06View();
virtual void AssertValid() const;
virtual vold Dump(CdumpContext& dc) const;
protected:
//菜单命令响应函数
afx_msg vold OnFlieNavigate();
afx_msg vold OnFlieBack();
afx_msg vold OnFlieForward();
afx_msg vold OnFlieHome();
afx_msg vold OnFlieStop();
afx_msg vold OnFlieRefresh();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
4.CE06View类实现。
(1)设置浏览器开启时开启网页
void CE06View::OnDraw(CDC* pDC)
{
CE06Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CE06View::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
// TODO: This code navigates to a popular spot on the web.
// change the code to go where you'd like.
Navigate2(_T(""),NULL,NULL);
}
(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)设置开启时导航站点
Void CE06View::OnInitalUpdate()
{
ChtmlView:: OnInitalUpdate();
//重新设置导航站点
Navigate2(_T(“Http://.com/visuac/”),NULL,NULL);
}
(5)导航命令响应时间函数
Void CE06View::OnFileNavigate()
{
//TODO:Add your command handler code here CaddressDlg dlg;
If(dlg.DoModle()!=IDOK) reture;
Navigate2(dlg.m_address);
}
(6)后退命令响应函数
void CE06View::OnFlieBack()
{
//TODO:Add your command handler code here
GoBack();
}
(7)前进命令返回函数
void CE06View::OnFlieForward()
{
//TODO:Add your command handler code here
GoForward();
}
(8)返回主页命令响应函数
void CE06View::OnFlieHome()
{
//返回主页
Gohome();
}
(9)终止连接命令响应函数
void CE06View::OnFlieStop()
{
//TODO:Add your command handler code here
Stop();
}
(10)刷新命令响应函数
void CE06View::OnFlieRefresh()
{
//TODO:Add your command handler code here
Refresh();
}
(11)设置浏览器导航栏默认网页
CAddressDlg::CAddressDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAddressDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAddressDlg)
m_address = _T(".com");
//}}AFX_DATA_INIT
}
四、软件测试
对浏览器测试分为多个部分,包含功效实现、和各个按钮功效是否正确。
1.运行“.dsw”文件。得到图画面。
2.运行网站.com
3.然后点击确定,得到图
4.然后再测试各个按钮功效。
5.点击后退按钮,得到贵州大学网址,因以后退按钮功效实现
6.查看浏览器版本,图
7.各个按钮功效全部能实现
经过测试,浏览器各个功效全部能顺利地完成。
五、总结
课程设计是培养学生综合利用所学知识,发觉,提出,分析和处理实际问题,锻炼实践能力关键步骤,是对学生实际工作能力具体训练和考察过程.伴随科学技术发展日新日异,当今计算机应用在生活中能够说得是无处不在。所以作为二十一世纪大学生来说掌握计算机开发技术是十分关键。
经过一个多星期学习,基础了解了VC++编程方法,对VC++编写程序步骤有了一定了解。但对于要编写较为复杂VC++程序还是有很大难度,只有在以后学习中,不停总结,不停探索,努力掌握VC++编程技巧,为以后学习工作打下基础。
这次课程设计关键目标是锻炼我们对VC++编程了解,在对浏览器软件制作过程中,最关键是搜集资料和对浏览器软件需求分析,还有就是对编写软件测试,这需要组员具体分工和协调,才能完成这次课程设计,我只要负责对浏览器课程设计具体设计部分,在综合了杨秀玲浏览器需求分析和陈海红概要分析后,查阅老师给浏览器设计方案,然后加以修改,基础能够完成对程序设计。其中能够对部分相关程序进行修改,比如对浏览器默认网站进行修改,具体修改方案为:
void CE06View::OnDraw(CDC* pDC)
{
CE06Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
}
void CE06View::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
Navigate2(_T(""),NULL,NULL);
}
还能够对浏览器版权、浏览器按钮位置进行调整等修改,达成自己满意效果,顺利完成这次课程设计。
VC++是面向对象程序设计编程方法,她和人思维习惯相吻合,而面向过程程序设计和计算机工作过程是完全吻合。和面向过程编程方法相比,利用VC++编程优点是:
1)数据抽象概念能够在保持外部接口不变情况下改变内部实现,从而降低甚至避免对外界干扰;
2)经过继承大幅降低冗余代码,并能够方便地扩展现有代码,提升编码效率,也减低了犯错概率,降低软件维护难度;
3)结合面向对象分析、面向对象设计,许可将问题域中对象直接映射到程序中,降低软件开发过程中中间步骤转换过程;
4)经过对对象分辨、划分能够将软件系统分割为若干相对为独立部分,在一定程度上更便于控制软件复杂度;
6)以对象为中心设计能够帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而愈加好地实现系统;
7)经过对象聚合、联合能够在确保封装和抽象标准下实现对象在内在结构和外在功效上扩充,从而实现对象由低到高升级。
对于完成这次课程设计,完全需要组员间配合,相互协调,才能完成这次课程设计,回顾起此次课程设计,至今我仍感慨颇多,确实,从选定题目到完成程序编写,从理论到实践,在一个多星期日子里,能够了学到很多很多东西,不仅巩固了以前所学过知识,而且学到了很多在书本上所没有学到过知识。经过这次课程设计使我知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己实际动手能力和独立思索能力。在设计过程中碰到问题,能够说得是困难重重,这毕竟第一次做,难免会碰到过多种多样问题,同时在设计过程中发觉了自己不足之处,对以前所学过知识了解得不够深刻,掌握得不够牢靠,比如说类和对象,经过这次课程设计以后,一定把以前所学过知识重新温故。
善于总结,也是学习能力一个表现,每次完成一个编程任务,完成一段代码,全部应该有目标跟踪该程序应用情况,随时总结,找到自己不足,这么所编写程序才能逐步提升,
生活就是这么,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变话题。经过实际动手做,我们才真正领悟到“艰苦奋斗”这一词真正含义,我们想说,编程确实有些辛劳,但苦中也有乐,在我们这个小组任务中,一起学习编程让我们有说有笑,相互帮助,配合默契。对我们而言,知识上收获关键,精神上丰收是可喜。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我们人生旅途上一个很美好回想。
在这次课程设计中,得到了指导老师曾老师和同学们大力帮助,在这里对给过我们小组帮助全部同学表示忠心感谢。感谢老师耐心指导和帮助。
展开阅读全文