《简单浏览器的设计.doc》由会员分享,可在线阅读,更多相关《简单浏览器的设计.doc(13页珍藏版)》请在三一办公上搜索。
1、简单浏览器的设计一、目的用TC、Visual BASIC、Visual C+、Java 等编程工具和路由器、交换机、主机等网络设备提供的接口,解决网络用户之间的交互式对话问题,或计算通信网络的延迟、信道容量分配,或编码分析、通信协议分析,网络互连互通、网络规划。进一步深入掌握网络设计和通信程序的设计原理。使学生对计算机通信网络的设计实现有较深的了解,培养较高的通信网络设计能力。二、课程的基本要求 了解常用通信网络设备的操作和应用,掌握常用的通信协议的工作原理,能利用TC、Visual BASIC、Visual C+、Java等至少一种开发工具完成相应的通信程序的设计工作;掌握网络拓扑、信道容量
2、对网络延迟等性能的关系,能分析和设计网络的性能。学习简明地介绍自己的设计工作。除N6、N7可以两人一组共同完成意外,其余每人一题,独立完成。 程序设计课题方面,要求:程序操作简单、方便,界面布局合理美观;程序都应在计算机或网络上调试通过,并通过老师检查;未指定编程语言的由学生自定。网络连接课题方面,要求:在设备上能够演示,并通过老师检查。网络规划课题方面(N5),要求:用POWER POINT电子讲稿讲解4分钟,并通过老师检查。课程设计的上机日程安排另行说明。三、课程设计报告 1.设计完成后应交课程设计报告,记叙设计目标、设计原理和方法、设计的功能、硬件结构图(或软件结构图、程序框图)、设备清
3、单(或程序清单)、测试数据及其结果、总结、参考文献等; 2课程设计报告应概念清晰、简明扼要、逻辑性强、图表文字格式规。 3. 课程设计报告用A4纸打印或手写,40行/页,40字/页。不做封面,但必须:每页页眉:通信网络设计课程设计 题号: 设计日期20120903 -20120916第1页第1行,题 目 名 称 第1页第2行,通信09 班、学 号、姓 名;指导老师:1 ,2题目名称的字体为黑体4号字,居中;第2行与正文相同,为5号宋体,居中。4课程设计报告和程序(或POWER POINT电子讲稿)的电子稿在9月16日以前,以班为单位发送到csuwgc126. ,每个人两个文件,文件名1为:班号
4、序号题号课程设计报告,例如“0101W1课程设计报告.doc”,文件2为课程设计报告的源程序的RAR(或ZIP)压缩文件,文件名为班号序号题号题名,若为N5题则文件2为PPT文件。四、课程设计选题 每个人可根据自己的爱好从以下八类40个课题中选择一个课题,也可另选课题,参见“自由选题类”。选定课题后应到指导老师处登记(先到班上登记,登记时只需要在上的名字后第1格填上题号,如W1)。同一个课题只能被同一班的一人选择,登记该课题的该班第二人必须选择其他的题目并重新登记。选题工作应在本课程设计开始的第1周的第1天(2012年9月3日)上午9点整前完成。未登记选题者被认为没有参加本课程设计。本课程设计
5、开始的第1周的第2天(2012年9月4日)中午起不再换题。五、程序设计过程1、题目要求及功能描述I1.简单浏览器的设计环境要求:Windows2000/XP,校园网,程序语言自定功能要求:要编写能浏览网页的程序。功能描述:本程序实现一个简单的浏览器。用户通过在URL输入框中输入要下载的网络页面的网址,并点击浏览器界面上相应的按钮,或直接按回车键,就能完成网络页面下载的功能。同时,它还支持浏览本地HTML文件,用户在输入框中输入文件所在盘符及具体路径,并按回车键,或者点击界面上相应按钮,实现浏览本地文件的功能。它能够实现页面的文本,能够显示网页图片,并能够通过相应按钮的操作返回上一次访问的页面,
6、还可以通过相应按钮返回后退之前访问的页面。该简易浏览器能帮助用户实现基本的网页浏览功能。2 、系统需求分析与设计2.1 系统需求分析2.1.1 功能需求分析简易网络浏览器的主要功能如下:向用户提供浏览网页的基本功能,包括浏览网页上的文字信息、浏览图片,并能实现各种超;简易网络浏览器的软件用例图如图1所示。浏览器用户输入网址下载页面图1 软件用例图2.1.2 其它需求分析(1)性能要求实时性好、可靠性强、不占用系统太多的存和存储空间。(2)设计约束开发工具:J2SDK 1.6.0运行环境:Windows 2000以上能实现用户所定义的各项需求(3)界面要求以Windows窗口形式显示;顶部为标题
7、栏,显示该浏览器的名称;界面上方有一个地址输入栏用于输入某网页的URL地址;界面右上方有一个按钮,用于实现网页的下载功能; 2.2 系统设计2.2.1 总体设计由于我们要将这个网络浏览器写成一个应用程序,所以首先要设计一下浏览器的框架和页面。浏览器的框架采用标准的Windows框架,在上面有标题栏、控制按钮、文本输入栏,以方便用户浏览网页。我们应该先做好这一部分。文本输入栏用于输入用户需要浏览的网页的地址;控制按钮包括下载指定的网页。框架中间嵌入显示网页的区域。这样整个浏览器的界面就出来了。对界面上的控制按钮进行响应,并相应地来操作网页的浏览的过程。这时我们需要添加对菜单和按钮的事件响应方法。
8、在浏览器面板构建好这后,我们便基本能实现网页的浏览。2.2.2 详细设计这个简易网络浏览器主要通过5个类实现以上功能:(1)BrowserTest类,这是这个简易浏览器实现的主类。调用程序入口函数(main函数),并创建了一个Browser的实例,并用网页浏览主类无参初始化。(2)Browser类,该类继承了JFrame类,这是实现这个简易浏览器各功能的最重要的类,是整个窗口的总框架。该类中包含了JTextField、JCheckBox、JButton和JEditorPane生成的对象,enterField、editable、loadbt、backbt、aheadbt和contentsArea
9、;(3)JTextField类,JTextField 是一个轻量级组件,它允许编辑单行文本,这个类实现网址的输入,并且在输完网址后按回车键能思想页面下载功能。该功能的实现主要在于文本框的监视器。ActionListener()(4)JCheckBox类,创建一个没有文本、没有图标并且最初未被选定的复选框,实现编辑的功能。该复选框供用户选择是否让浏览器进入可编辑状态。单击选定复选框,这浏览器进入可编辑状态。(5)Jbutton类,创建一个没有文本、没有图标并且最初未被选定的复选框,在这个浏览器中,需要实现三个按钮,“Load”、 “Back”和”Ahead”,这三个按钮均是该类的实例。(6)JE
10、ditorPane类,创建可编辑区域。JEditorPane继承JTextComponent类,可以使用JTextComponent抽象类里的方法。JEditorPane最主要的功能在于展现不同类型文件合适的容。JEditorPane支持的文件类型有3种:第一种是纯文本型,其表示法为text/plain;第二种为RTF型,其表示法为text/rtf;第三种是HTML类型,也就是本程序中所用到的类型,其表示法为text/html。在本程序中主要运用JEditorPane.setPage( )方法来显示指定页面。用HyperlinkEvent事件,实现从当前也的超级访其他页面。从框架方面来说:该浏
11、览器首先是用了一个从JFrame继承的Browser子类作为浏览器的主窗口。Browser类用BorderLayout布局器来给自己的组件布局。确定了主窗口后,添加了JPanel组件p1以及用于文本编辑区JEditorPane组件contentsArea。为了使文本编辑区在必要时候显示垂直和水平滚动条以实现垂直和水平滚动,引入了JScrollPane类。并通过JScrollPane jsPane=new JScrollPane(contentsArea);构造方法成功为contentsArea添加了滚动条。对于p1,又在该组件上添加了一个标签new Label(“地址”)、文本输入框enter
12、Field;,在p1右上方添加一个按钮。这样整个框架就做好了。下图2为系统类图,表明该网络浏览器各类之间的关系,系统中用到的主要的类如图2所示。contentsAreaJTextFieldJCheckZBoxJEditorPaneJButton图2 系统类图3 、系统测试与使用说明3.1 系统测试运行程序后进入浏览器界面,如图4:图4 浏览器主界面图在URL地址栏中输入网页地址,网址可以是带协议的,也可以是不带协议的。如图5所示:图5 输入网址图按回车健,或者点击按钮,下载改页面到浏览器,同时若输入的为不带协议的网址,系统会自动将输入栏的网址转为带协议的。如图6:图6 浏览百度示例图在百度的搜
13、索输入框中输入要搜索的容,如输入google,如图7:图7 百度搜索示例图 在网址输入栏输入.google.,显示如图8所示图8 浏览谷歌示例图当用户输入的网址不正确时,网页会提示出错信息。例如在输入栏中输入“.baid” 时页面会出现提示错误信息。见图12:图9 页面提示出错信息图在百度页面点击“新闻“,则显示如下图:图10 网页跳转至百度新闻页面3.2 系统使用说明进入网页浏览界面以后,在URL栏输入要浏览的网页的网址,点击“赚到”或者直接按回车键,访问用户想要浏览的页面。在浏览过程中,用户可根据自己的喜好调整窗口的大小,并可以通过点击窗口右上角相应的图标对窗口进行最大化、最小化、还原等操
14、作。用户浏览结束后可以点击右上方的结束按钮,关闭系统。3.3 系统中存在的问题该简易网页浏览器并不理想,与我们现在使用的浏览器相比较,这个浏览器功能单一、外观不够美观,具体问题如下:(1)该浏览器不具备普通浏览器的新建、保存浏览记录、建立收藏夹、屏幕截图等功能。(2)该浏览器不具备页面信息的筛选和排版的功能,有些情况下它会将页面的全部信息包括代码同显示出来。(3)显示出来的网页布局不够完善,影响美观。六、课程设计总结1 、 遇到的问题及解决办法在此次课程设计中,遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,要
15、在短时间用Java语言来开发软件是一个较大的挑战;对于正规开发软件的流程不熟悉,适应起来比较慢,编写需求说明书和设计规格说明书时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,多看些项目的源代码。对于书上以及上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。对于实际动手能力与软件开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。2 、心得体会通过这个学期开设的课程设计培训课以及课程设计全过程,我感到受益良多。(1)有关JAVA大学期间,我们专业没有开设过JAV
16、A课程,所以做课设之前一点JAVA的基础知识都没有。真正开始进行课程设计的时候就发现,对JAVA的类库不熟悉,导致我们难以读懂稍稍复杂一些的JAVA程序,也不知道JAVA到底能实现哪些功能,更不清楚我们预期的程序的某些功能可以将通过哪些类和方法实现。尽管我们可以借助JDK帮助文件和百度搜索,编程的效率很低。虽然如此,经过此次的摸索着编程,实现自己的课课题的过程,我对JAVA类库中的一些类和方法有了深一层的了解,并领略到JAVA语言的功能之强大,魅力之独特。同时也对这门语言有了新的认识,产生了新的兴趣。JAVA是当下十分流行的语言,JAVA语言的出现使得网络中大量难题迎刃而解,同时JAVA语言容
17、十分丰富,想要学好,还要付出很多努力。所以在今后的学习和实践中,我将多阅读优秀的JAVA程序,熟悉优秀的编程风格,学习优秀的代码,熟悉JAVA类库。(2)有关文档的撰写 此次的课程设计,对我们来说撰写文档似乎是一个更大的挑战。撰写文档不仅要求我们要对自己程序非常熟悉:程序的总体框架,有什么功能,如何实现,存在什么问题等,同时还要求我们有清晰的思维和准确的表达能力以及严密的逻辑性。因此,写完这篇文档对于我们自身来说自然是获益匪浅的。 (3)有关课程设计尽管此次课程设计实践不是很长,但是我们却在这次经历中学到了很多。首先,我对JAVA语言有了新的认识,也增加了很多Java方面的知识。其次,我们实践
18、了面向对象的思想,面向对象方法是一种非常实用的软件开发方法,它一客观世界中的对象为中心,其分析和设计思想符合人们的思维方式,分析和设计的结果与客观世界比较接近。我们应该踏实地掌握这种思想。最后,这次的课程设计增强了我的理论知识和动手操作能力,增加了我对学习的兴趣。当自己所写的程序成功运行出来时,当自己的任务圆满完成时,那种满足与成就感是大家只可意会不可言传的。通过这次课程设计,我最深的感受是:学习任何一种编程语言,我们应该多看各种实例,了解一些方法的具体实现。还要多动手编程,将所学运用到实际中来,这样有助于我们更加深刻的理解知识和了解知识的具体运用,更有助于提升学习的趣味性。从更高的层次上来说
19、,学习任何一种知识,只有通过实践才能真正学得好,把知识运用到实际中来不仅是我们学习的最终目的,更是我们学习必不可少的步骤。七、参考文献1 Sharon Zakhour Scott Hommel等著. Java 语言道学.人民邮电, 20082 树林 胡洁萍 编著. Java语言最新实用案例教程. 清华大学, 20063 耿祥义 编著. Java基础教程. 清华大学, 20044 江义华. Java完美经典. 中国铁道, 20045 Joe Wigglesworth Paula Lumby. Java程序设计高级主题. 北京大学, 2004八、附录/*File: Browser.java* Us
20、er: Administrator* Describe: 简易网络浏览器的 Java 实现*/import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.event.*;public class Browser extends JFrame implements ActionListener,HyperlinkListener JPanel p1=new JPanel(new BorderLayout();/实例化面板 JTextField enterFie
21、ld=new JTextField();/实例化文件输入框 BorderLayout borderLayout1=new BorderLayout();/布局管理器为BorderLayout JEditorPane contentsArea=new JEditorPane();/初始化容器 Button b=new Button(转到); public Browser() p1.add(new JLabel(地址:),West);p1.add(enterField,Center);/将标签和地址输入栏按固定位置增加到面板上 p1.add(b,East); contentsArea.setEdi
22、table(false);/contentsArea区域设置为不可编辑 JScrollPane jScrollPanel=new JScrollPane(contentsArea);/实例化滚动窗体 enterField.addActionListener(this);/地址输入框注册监听器 contentsArea.addHyperlinkListener(this);/注册监听器 b.addActionListener(this);/为按钮注册监听器 getContentPane().add(p1,North);/将面板添加到容器中 getContentPane().add(jScroll
23、Panel,Center);/在容器中添加滚动条 setTitle(mybrowser);/设置面板标题 setDefaultCloseOperation(EXIT_ON_CLOSE);/关闭窗口时退出程序 setSize(500,400);/设置窗口尺寸 show(); private void getThePage(String location)/获取网页 setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR); try contentsArea.setPage(location);/设置显示页面 enterField.setTe
24、xt(location);/得到的URL地址 catch(IOException ioe) JOptionPane.showMessageDialog(this,无法访问网页,提示信息,JOptionPane.ERROR_MESSAGE); setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR); /异常捕获处理 public void actionPerformed(ActionEvent e) String url; if(e.getSource()=b)/单击转到按钮获得URL enterField.setText(ente
25、rField.getText(); url=enterField.getText(); else/按ENTER键获得URL url=e.getActionCommand(); if(!url.startsWith(http:/)&!url.startsWith(file:/)/判断URL是否合法 if(url.indexOf(:)=1) url =file:/+url; else url=http:/+url; getThePage(url); public void hyperlinkUpdate(HyperlinkEvent e)/点击,网页跳转 if(e.getEventType()=HyperlinkEvent.EventType.ACTIVATED) getThePage(e.getURL().toString(); public static void main(String args) Browser b=new Browser();