




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆大学计算机系课程设计报告课程名称:Java程序设计课程代码:题 目:WEB浏览器开发年级/专业/班:计算机01班学生姓名:学 号:指导老师:开题时间:2012年12月15日完成时间:2013年01月03日2012年元12月15日30湖南人文科技学院课程设计课程设计任务书及成绩评定课程名称:Java程序设计完成者:1、设计的目的与要求 本课程设计需要学生运用面向对象编程和网络编程方法等,建立模型,最后设计出一个简单的网页浏览器,使该浏览器具有打开内容简单的网页,以及将网页另存,网页前进和后退,并且能够查看所浏览网页的源代码。目 录摘 要I1 引言12 设计任务与目的13 需求分析14 系统设计24.1 总体设计24.1.1 WebBrowser.java24.1.2 ViewSourceFrame.java24.2 用例图与类图24.2.1 用例图24.2.2 系统类图35 系统实现45.1.主要功能运行效果45.2系统运行和发布66 结束语7参考文献7致谢7附录A:系统源程序7附录B:编码规范26摘 要本设计可以帮助同学掌握和应运所学的面向对象程序设计网页编程内容,培养同学们建立对象模型,处理对象和对象集关系和对网络编程的能力,训练同学为解决实际问题而创建较完整的简单面向对象和网络编程应运程序的独立编程能力.本设计是一个常见的网页浏览器应运程序.系统实现的功能:l 打开url链接相关的网页;将网页另存为到硬盘上;网页前进;网页后退;查看网页源代码.同时此浏览器所占内存空间小,对于硬件的要求低,对于经常上网查资料的用户来说是一个不错的选择。关键词:网页浏览器;网页;javaWEB浏览器开发1 引言本课题的题目是:用简单的java编程编写一个简单的网页浏览器。.这是一个常见的网页浏览器应运程序.有以下学习要点:l 面向对象设计的方法l 网络编程编写的方法l GUI图形界面的设计方法和Swing相关组建的灵活运用l 熟练事件处理机制l 熟悉掌握输入输出流2 设计任务与目的随着科学技术的发展,我们已进入信息化时代,互联网在全球的应用越来越广泛,它已深入到我们学习生活的各个方面。为了适应时代的发展,本次课程设计的主要任务是制作一个网页浏览器并完成一些基本操作。其目的是:(1) 运用已学的java知识编一些简单使用的程序,通过本课程设计使我们加深理解、巩固课堂理论知识和实验知识;(2) 使我们初步具备综合运用所学Java语言基础知识,面向对象程序设计的基本思想、方法与技术,网络通信编程技术和数据库编程技术等开发简单应用系统的基本能力;(3) 使理论和实际相结合,真正做到学以致用,并适应时代发展的潮流。3 需求分析此网页浏览器的主要功能描述:通过在地址栏里面输入URL地址,可以访问相应的网页。除此之外,本案例中的网页浏览器还增添了如下几个功能。1 另存为:可以将正在访问的页面进行保存。2 前进:访问现有页面的上一个页面。3 后退:访问现有页面的下一个页面。4 查看源文件:查看访问页面的HTML源文件,并且提供保存功能。4 系统设计4.1 总体设计网页浏览器的程序由文件WebBrowser.java与ViewSourceFrame.java两个文件组成。4.1.1 WebBrowser.java包含名为WebBrowser的public类,其主要功能为生成网页浏览器的主体框架,实现框架上各个组件的事件侦听。主要包括4个模块:图形用户界面的构建:组件监听接口的实现:文件保存功能的实现:查看源代码框架的生成。4.1.2 ViewSourceFrame.java包含名为ViewSourceFrame的类,其主要功能是实现了源文件查看的主体框架,并实现了源文件的保存功能。主要包括两个模块:图形用户界面的构建:组件监听接口的实现。4.2 用例图与类图4.2.1 用例图4.2.1用例图4.2.2 系统类图4.2.2系统类图5 系统实现5.1 主要功能运行效果1.输入url: 单击转向或回车,进入网页页面;图5.1.12.点击界面的另存为,课将网页存储于计算机上,如图5.1.2图5.1.23.进入网页之后,点击界面的源代码按钮,即可查看该网页的源代码,如图5.1.3;图系统运行和发布要发布这个应用程序,就应该将应用程序打包。使用jar.exe,可以把应用程序中涉及到的类和图片压缩成一个jar文件,这样便可以发布程序。首先编写一个清单文件,名为MANIFEST.MF,其代码如下:Mainfest-version:1.0Created-by:1.5.0_02(Sun Microsystems Inc.)Main-Class:WebBrowser此清单文件保存到C:JavaworkCH04.然后,使用如下命令生成jar文件:Jar cfm WebBrowser.jar MANIFEST.MF * .class其中参数c表示要生成一个新的jar文件:f表示要僧成的jar文件的名字:m表示清单文件的名字如果机器安装过WinRAR解压缩软件,并将jar文件与该解压缩软件做了关联,那么WebBrow.jar文件的类型是WinRAR,使得java程序无法运行。因此,在发布软件时,还应该再写一个有如下内容的bat文件(WebBrowser.bat):Javaw-jar WebBrowser.jar可以通过双击WebBrowser.bat来运行程序。6 结束语 刚听到课程设计时,就有一种畏难心理。我们现在所学的java知识九牛一毛,要编写一个几百甚至上千行的代码似乎不可能。但是当我们上网查找过只是一些资料后,许多题目都是由学生在老师的指导下做出来的,一些还有源代码。世上无难事,只怕有心人。于是我们全组的人开始分工合作,大家先一起搜索一些资料,然后根据各自负责的部分有目的地筛选。虽然我们天天在浏览网页,但是以前从没想过为什么输入一个网址就可以找到所需要的信息。通过此次网页浏览器的设计,使我们对网页有了更深层次的了解。不过也存在一些问题,在实现对网址的保存和当前页面的前进和后退功能后,应该可以新增一些新的功能,例如在当前的页面再次点击进入其他页.、刷新当前页面等等,“书山有路勤为径,学海无涯苦作舟”,我们现今所学的知识还远远不够,在今后的学习过程中我们要进一步学习java的更多的知识,此次课程设计不仅锻炼了我们独立思考和团队合作的能力,而且提高了我们动手的能力。参考文献1 张广彬,孟红蕊,张永宝.Java课程设计案例精编M.北京:清华大学出社,2007,1.2 黄晓东.Java课程设计案例精编M.北京:中国水利水电出版社,2004,5.3 求是科技. Java信息管理系统开发实例导航M.北京:人民邮电出版社,2005,4.4 求是科技.Java数据库系统开发实例导航M.北京:人民邮电出版社,2004,9.5李芝兴.Java程序设计之网络编程M.北京:清华大学出版社,2006,3.6刘艺,吴英.Java程序设计大学教程M.北京:机械工业出版社,2006,2致谢在本次程序设计过程中,*老师给予了我们极大的支持与指导,在此表示感谢!同时也感谢给予我们建议和意见的同学们!源代码:import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transferable;import java.awt.event.MouseListener;import java.awt.*;import javax.swing.*;import javax.swing.text.*;import java.awt.event.*;import javax.swing.event.*;import javax.swing.border.*;import javax.swing.filechooser.FileFilter;import javax.swing.filechooser.FileView;import java.io.*;import .*;import java.util.*;public class WebBrowser extends JFrame implements HyperlinkListener,ActionListener /* * Creates a new instance of WebBrowser. */ /. /. /建立主件 JToolBar bar =new JToolBar();/工具栏 JTextField jurl=new JTextField(60);/地址栏 JEditorPane2 jEditorPane1=new JEditorPane2();/网页框 JScrollPane scrollPane=new JScrollPane(jEditorPane1);/滚动条 JFileChooser chooser=new JFileChooser(); JFileChooser chooser1=new JFileChooser();/选择文件 String htmlSource; JWindow window=new JWindow(WebBrowser.this);/使用指定的所有者框架创建窗口 JButton button2=new JButton(窗口还原); Toolkit toolkit=Toolkit.getDefaultToolkit();/获取默认工具包 JMenuBar jMenuBar1=new JMenuBar();/建立菜单栏 JMenu fileMenu=new JMenu(文件(F);/建立菜单组 JMenuItem saveAsItem=new JMenuItem(另存为(S); JMenuItem exitItem=new JMenuItem(退出(E); JMenu editMenu=new JMenu(编辑(E);/建立菜单组 JMenuItem backItem=new JMenuItem(后退(Z); JMenuItem forwardItem=new JMenuItem(前进(P); JMenu viewMenu=new JMenu(视图(V);/建立菜单组 JMenuItem fullscreenItem=new JMenuItem(全屏(U); JMenuItem sourceItem=new JMenuItem(查看源代码(C); JMenuItem reloadItem=new JMenuItem(刷新(R); JToolBar toolBar=new JToolBar(); JButton picSave=new JButton(另存为); JButton picBack=new JButton(后退); JButton picForward=new JButton(前进); JButton picView=new JButton(查看源代码); JButton picExit=new JButton(退出); /建立工具栏 JLabel label=new JLabel(地址); JButton button=new JButton(转向); Box adress=Box.createHorizontalBox(); /创建一个从左到右显示其组件 Box adressSource=Box.createHorizontalBox(); private ArrayList history=new ArrayList(); private int historyIndex; public WebBrowser() setTitle(网页浏览器); setResizable(false);/设置此 frame 是否可由用户调整大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jEditorPane1.addHyperlinkListener(this);/事件监听 fileMenu.setMnemonic(F); saveAsItem.setMnemonic(S); saveAsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); exitItem.setMnemonic(P); exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK); /设置热键 fileMenu.add(saveAsItem); fileMenu.addSeparator(); fileMenu.add(exitItem); backItem.setMnemonic(B); backItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK); forwardItem.setMnemonic(D); forwardItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK); editMenu.setMnemonic(E); editMenu.add(backItem); editMenu.addSeparator(); editMenu.add(forwardItem); viewMenu.setMnemonic(V); fullscreenItem.setMnemonic(U); fullscreenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK); sourceItem.setMnemonic(C); sourceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK); reloadItem.setMnemonic(R); reloadItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK); Container contentPane=getContentPane(); scrollPane.setPreferredSize(new Dimension(100,500); contentPane.add(scrollPane,BorderLayout.SOUTH); toolBar.add(picSave); toolBar.addSeparator(); toolBar.add(picBack); toolBar.addSeparator(); toolBar.add(picForward); toolBar.addSeparator(); toolBar.add(picView); toolBar.addSeparator(); toolBar.add(picExit); toolBar.addSeparator(); toolBar.add(picExit); toolBar.addSeparator(); toolBar.add(adressSource); contentPane.add(bar,BorderLayout.CENTER); contentPane.add(toolBar,BorderLayout.NORTH); viewMenu.add(fullscreenItem); viewMenu.addSeparator(); viewMenu.add(sourceItem); viewMenu.addSeparator(); viewMenu.add(reloadItem); jMenuBar1.add(fileMenu); jMenuBar1.add(editMenu); jMenuBar1.add(viewMenu); setJMenuBar(jMenuBar1); adress.add(label); adress.add(jurl); adress.add(button); bar.add(adress); saveAsItem.addActionListener(this); picSave.addActionListener(this); exitItem.addActionListener(this); picExit.addActionListener(this); backItem.addActionListener(this); picBack.addActionListener(this); forwardItem.addActionListener(this); picForward.addActionListener(this); fullscreenItem.addActionListener(this); sourceItem.addActionListener(this); picView.addActionListener(this); reloadItem.addActionListener(this); button.addActionListener(this); jurl.addActionListener(this); /. /. public void actionPerformed(ActionEvent e) String url=; if(e.getSource()=button) /按down. url=jurl.getText(); if(url.length()0&url.startsWith(http:/) try jEditorPane1.setPage(url); history.add(url); historyIndex=history.size()-1;/ 返回此列表中的元素数 jEditorPane1.setEditable(false); jEditorPane1.revalidate(); catch(Exception ex) JOptionPane.showMessageDialog(WebBrowser.this,不能打开网页,网页浏览器,JOptionPane.ERROR_MESSAGE); else if(url.length()0&!url.startsWith(http:/) url=http:/+url; try jEditorPane1.setPage(url); history.add(url); historyIndex=history.size()-1;/ 返回此列表中的元素数 jEditorPane1.setEditable(false); jEditorPane1.revalidate(); catch(Exception ex) JOptionPane.showMessageDialog(WebBrowser.this,不能打开网页,网页浏览器,JOptionPane.ERROR_MESSAGE); else if(url.length()=0) JOptionPane.showMessageDialog(WebBrowser.this,不能打开网页,网页浏览器,JOptionPane.ERROR_MESSAGE); /.按回车 else if(e.getSource()=jurl) url=jurl.getText(); if(url.length()0&url.startsWith(http:/) try jEditorPane1.setPage(url); history.add(url); historyIndex=history.size()-1;/ 返回此列表中的元素数 jEditorPane1.setEditable(false); jEditorPane1.revalidate(); jurl.setMaximumSize(jurl.getPreferredSize(); catch(Exception ex) JOptionPane.showMessageDialog(WebBrowser.this,不能打开网页,网页浏览器,JOptionPane.ERROR_MESSAGE); else if(url.length()0&!url.startsWith(http:/) url=http:/+url; try jEditorPane1.setPage(url); history.add(url); historyIndex=history.size()-1;/ 返回此列表中的元素数 jEditorPane1.setEditable(false); jEditorPane1.revalidate(); catch(Exception ex) JOptionPane.showMessageDialog(WebBrowser.this,不能打开网页,网页浏览器,JOptionPane.ERROR_MESSAGE); else if(url.length()=0) JOptionPane.showMessageDialog(WebBrowser.this,不能打开网页,网页浏览器,JOptionPane.ERROR_MESSAGE); /.另存为 else if(e.getSource()=picSave|e.getSource()=saveAsItem) url=jurl.getText().trim();/去掉字符串头和尾的空格 if(url.length()0&!url.startsWith(http:/) url=http:/+url; if(!url.equals() saveFile(url); else JOptionPane.showMessageDialog(WebBrowser.this,请输入链接地址,网页浏览器,JOptionPane.ERROR_MESSAGE); /exit. else if(e.getSource()=exitItem|e.getSource()=picExit) System.exit(0); /back. else if(e.getSource()=backItem|e.getSource()=picBack) historyIndex-; if(historyIndex=history.size() historyIndex=history.size()-1; url=jurl.getText(); try url=(String)history.get(historyIndex); jEditorPane1.setPage(url); jurl.setText(url.toString(); jEditorPane1.setEditable(false); jEditorPane1.revalidate(); catch(Exception ex) /fullscreen else if(e.getSource()=fullscreenItem) boolean add_button2=true; /查看原文件 else if(e.getSource()=sourceItem|e.getSource()=picView) url=jurl.getText().toString().trim(); if(url.length()0&!url.startsWith(http:/) url=http:/+url; if(!url.equals() getHtmlSource(url); ViewSourceFrame vsframe=new ViewSourceFrame(htmlSource); vsframe.setBounds(0,0,800,500); vsframe.setVisible(true); else JOptionPane.showMessageDialog(WebBrowser.this,请输入链接地址,网页浏览器,JOptionPane.ERROR_MESSAGE); /.收藏夹 /. /刷新 else if(e.getSource()=reloadItem) url=jurl.getText(); if(url.length()0&url.startsWith(http:/) try jEditorPane1.setPage(url); jEditorPane1.setEditable(false); jEditorPane1.revalidate(); catch(Exception ex) else if(url.length()0&!url.startsWith(http:/) url=http:/+url; try jEditorPane1.setPage(url); jEditorPane1.setEditable(false); jEditorPane1.revalidate(); catch(Exception ex) /.savefile void saveFile(final String url) final String linesep=System.getProperty(line.separator);/获得指定键指示的系统属性 chooser1.setCurrentDirectory(new File(.);/设置当前目录 chooser1.setDialogType(JFileChooser.SAVE_DIALOG);/设置此对话框的类型,|指示 JFileChooser 支持 Save 文件操作的类型值 chooser1.setDialogTitle(另存为);/设置显示在 JFileChooser 窗口标题栏的字符串 if(chooser1.showSaveDialog(this)!=JFileChooser.APPROVE_OPTION)/ 弹出一个 Save File 文件选择器对话框|选择确认(yes、ok)后返回该值 return; this.repaint(); Thread thread=new Thread() public void run() try .URL source=new URL(url); InputStream in=new BufferedInputStream(source.openStream();/ BufferedReader br=new BufferedReader(new InputStreamReader(in); File fileName=chooser1.getSelectedFile();/返回选中的文件 FileWriter out=new FileWriter(fileName); BufferedWriter bw=new BufferedWriter(out); String line; while(line=br.readLine()!=null) bw.write(line); bw.newLine();/写入一个行分隔符 bw.flush(); bw.close(); out.close(); String dMessage=url+ 已经被保存至+linesep+fileName.getAbsolutePath();/返回抽象路径名的绝对路径名字符串 String dTitle=另存为; int dType=JOptionPane.INFORMATION_MESSAGE; JOptionPane.showMessageDialog(Component)null,dMessage,dTitle,dType); catch(.MalformedURLException muex) JOptionPane.showMessageDialog(Component)null,muex.toString(),网页浏览器,JOptionPane.ERROR_MESSAGE); catch(Exception ex) JOptionPane.showMessageDialog(Component)null,ex.toString(),网页浏览器,JOptionPane.ERROR_MESSAGE); ; thread.start(); /. /getsource void getHtmlSource (String url) String linesep,htmlLine; linesep=System.getProperty(line.separator); htmlSource=; try .URL source =new URL(url); InputStream in=new BufferedInputStream(source.openStream(); BufferedReader br=new BufferedReader(new InputStreamReader(in); while(htmlLine=br.readLine()!=null) htmlSource=htmlSource+htmlLine+linesep; catch(.MalformedURLException mu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业综合种植与技术咨询服务协议
- 医药行业五家公司财务分析报告
- 制造行业绩效考核及表格
- 领导力培训项目总结与展望
- 项目驱动的医疗数据分析团队协作培训
- 顾客行为分析在新零售店面布局中的实践
- 音乐产业中的非物质文化遗产利用研究
- 青年群体与文化节庆活动品牌的互动关系
- 顾客体验升级与品牌传播策略的结合点
- 青少年时间管理能力的培养
- Q∕SY 1770.6-2014 连续管常规修井作业规程 第6部分:速度管柱作业
- 2023年最新的郭德纲单口相声济公传全集
- 国家重点保护野生植物(Ⅱ级)采集申请表
- 煤矿提升运输事故应急救援演练方案
- 畜禽养殖技术培训
- 临床医生做科研(课堂PPT)
- DN小原系列座式点焊机使用说明书_图文
- 广东省森林生态系统分布概况综述
- 高效环保铝溶胶项目可行性研究报告写作范文
- 《医学遗传学》复习思考题
- 【精品】沟渠整治工程施工方案
评论
0/150
提交评论