《面向对象程序设计》课程设计报告题目:网页浏览器设计院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号:20121183011指导教师:吴奕2014年12月29日至2015年1月9日华中科技大学武昌分校制面向对象程序设计课程设计任务书一、设计(调查报告/论文)题目浏览器设计二、设计(调查报告/论文)主要内容内容:该浏览器要求是一个图形界面操作,设计的功能类似于WINDOWS操作系统中的IE浏览器。系统使用Eclipse与JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括需求与总体设计、详细设计、编码实现、系统测试。在URL地址栏中输入网址,点击转向按钮,该浏览器可以自动转向所指地址页面,显示网页信息,实现浏览器的基本功能,并可实现查看和保存访问页面的HTML源代码。基本功能与要求:以下界面实现部分①实现生成网页浏览器的主体框架②实现框架上各个组件的时间监听③图形界面的设计④组件监听接口的实现以下功能实现部分①实现查看源文件的主体框架。②实现源文件的保存功能,包括另存为即可以将正在访问的网页进行保存。③前进即访问现有页面的上一个页面;后退即访问现有页面的下一个页面。④查看源文件功能即查看访问页面的HTML源文件代码。三、原始资料1.《面向对象程序设计课程设计》指导书2.耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料[1]张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2011.[2]耿祥义.Java课程设计(第二版).北京:清华大学出版社,2008.[3]耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.[4]邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2010.[5]邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.指导教师(签名):20年月日目录1需求与总体设计..........................................................11.1需求分析..............................................................11.2总体设计思路..........................................................11.3功能图与类图..........................................................22详细设计................................................................32.1详细设计思路..........................................................32.2复用组件..............................................................43编码实现................................................................54系统运行与测试.........................................................214.1系统测试情况.........................................................214.2排除错误的处理.......................................................24总结...................................................................251需求与总体设计1.1需求分析此网页浏览器的主要功能描述:通过在地址栏里面输入URL地址,可以访的网页。除此之外,本案例中的网页浏览器还增添了如下几个功能。1.另存为:可以将正在访问的页面进行保存。2.前进:访问现有页面的上一个页面。3.后退:访问现有页面的下一个页面。4.查看源文件:查看访问页面的HTML源文件,并且提供保存功能。1.2总体设计思路网页浏览器的程序由文件WebBrowser.java与ViewSourceFrame.java两个文件组成。1)WebBrowser,java该文件包含名为WebBrowser的public类,其主要功能为生成网页浏览器的主体框架,实现框架上各个组件的事件侦听。主要包括4个模块:图形用户界面的构建:组件监听接口的实现:文件保存功能的实现:查看源代码框架的生成。2)ViewSourceFrame.java该文件包含名为ViewSourceFrame的类,其主要功能是实现了源文件查看的主体框架,并实现了源文件的保存功能。主要包括两个模块:图形用户界面的构建:组件监听接口的实现。1.3功能图与类图网页浏览器查看网页源代码用户输入网址网页另存为网页前进网页后退网页退出2详细设计2.1详细设计思路WebBrowser.java文件是网页浏览器的主类文件,生成了网页浏览器的主体框架,并实现框架上各个组件的事件侦听。PubilicclassWebBrowserextendsJFrameimplementsHyperlinkListener,ActtionListener//建立主件,包括地址栏、界面、地址栏、菜单组、菜单项、工具栏、工具栏中按钮组件、存放历史地址、访问顺序。publicWebBrowser()/*构造函数,图形化用户界面*/publicvoidactionPerformed(ActionEvente)/*实现监听器接口的actionPerformed函数*/voidsaveFile(finalStringurl)//保存文件voidgetHtmlSource(Stringurl)//获得原文件publicvoidhyperlinkUpdate(HyperlinkEvente)//实现监听器接口的hyperlinkUpdate函数publicstaticvoidmain(String[]args)/*生成一个IE对象*/ViewSourceFrame.java文件的作用是实现网页浏览器中源文件浏览的主体框架并提供了源文件的保存功能。classViewSourceFrameextendsJFrameimplementsActionListener//建立主件publicViewSourceFrame(StringhtmlSource)//构造函数,初始化图形用户界面publicvoidactionPerformed(ActionEvente)//实现监听器接口的actionPerformed函数2.2复用组件选择好的容器就是为界面构造一个基本的骨架,然后在其中添加各个组件。组件复用表:功能所复用的组件菜单组复用JMenu组件菜单项复用JMenuItem组件工具栏复用JPanel组件按钮复用JButton组件地址栏复用JLabel组件状态栏复用JPanel组件滚动条复用scrollPane组件菜单栏复用JMenuBar组件组件初始化bar=newJToolBar();//建立工具栏用来显示地址栏jMenuBar1=newJMenuBar();//建立菜单栏fileMenu=newJMenu(文件(F));//建立菜单组对各个菜单项进行初始化saveAsItem=newJMenuItem(另存为(A)...);exitItem=newJMenuItem(退出(I));backItem=newJMenuItem(后退);forwardItem=newJMenuItem(前进);fullscreenItem=newJMenuItem(全屏(U));sourceItem=newJMenuItem(查看源码(C));reloadItem=newJMenuItem(刷新(R));工具栏与菜单栏的初始化过程类似。3编码实现源代码:importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjavax.swing.event.*;importjavax.swing.border.*;importjava.io.*;importjava.net.*;importjava.util.*;publicclassWebBrowserextendsJFrameimplementsHyperlinkListener,ActionListener{//建立工具栏用来显示地址栏JToolBarbar=newJToolBar();//建立网页显示界面JTextFieldjurl=newJTextField(60);JEditorPanejEditorPane1=newJEditorPane();JScrollPanescrollPane=newJScrollPane(jEditorPane1);JFileChooserchooser=newJFileChooser();JFileChooserchooser1=newJFileChooser();StringhtmlSource;JWindowwindow=newJWindow(WebBrowser.this);JButtonbutton2=newJButton(窗口还原);Toolkittoolkit=Toolkit.getDefaultToolkit();//建立菜单栏JMenuBarjMenuBar1=newJMenuBar();//建立菜单组JMenufileMenu=newJMenu(文件(F));//建立菜单项JMenuItemsaveAsItem=newJMenuItem(另存为(A)...);JMenuItemexitItem=newJMenuItem(退出(I));JMenueditMenu=newJMenu(编辑(E));JMenuItembackItem=newJMenuItem(后退);JMenuItemforwardItem=newJMenuItem(前进);JMenuviewMenu=newJMenu(视图(V));JMenuItemfullscreenItem=newJMenuItem(全屏(U));JMenuItemsourceItem=newJMenuItem(查看源码(C));JMenuItemreloadItem=newJMenuItem(刷新(R));//建立工具栏JToolBartoolBar=newJToolBar();//建立工具栏中的按钮组件JButtonpicSave=newJButton(另存为);JButtonpicBack=newJButton(后退);JButtonpicForward=newJButton(前进);JButtonpicView=newJButton(查看源代码);JButtonpicExit=newJButton(退出);JLabellabel=newJLabel(地址);JButtonbutton=newJButton(转向);Boxadress=Box.createHorizontalBox();//ArrayList对象,用来存放历史地址privateArrayListhistory=newArrayList();//整型变量,表示历史地址的访问顺序privateinthistoryIndex;/****构造函数**初始化图形用户界面*/publicWebBrowser(){setTitle(网页浏览器);setR