西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)

上传人:第*** 文档编号:61386125 上传时间:2018-11-30 格式:DOCX 页数:58 大小:2.67MB
返回 下载 相关 举报
西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)_第1页
第1页 / 共58页
西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)_第2页
第2页 / 共58页
西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)_第3页
第3页 / 共58页
西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)_第4页
第4页 / 共58页
西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)》由会员分享,可在线阅读,更多相关《西南交通大学java课程设计(网络爬虫设计、java简单画图程序设计、图书销售管理系统设计)(58页珍藏版)》请在金锄头文库上搜索。

1、信息科学与技术学院20142015 第二学期Java面向对象程序设计课程设计报告 课程设计题目: 1、网络爬虫设计 2、java简单画图程序设计 3、基于 SQL server 2008 图书销售管理系统设计 学 号:20122617 姓 名:徐玉松 专 业:软件工程 教 师: 陈 帆 2015-06目录网络爬虫设计5第1部分 设计的内容要求51.1设计内容51.2设计要求5第2部分 设计思想52.1使用经典MVC模式62.2使用多线程技术62.3java接口灵活使用62.4自定义JPanel7第3部分 详细设计93.1爬取正确链接并获取网页源代码或错误链接91、主要算法92、对应流程图123

2、.2解析地址类型131、算法设计132、流程图143.3GUI表格数据跟新151、算法设计152、流程图15第4部分 运行效果图164.1界面截图16正确链接:16错误链接:16邮件地址:17未能识别18已完成:18日志:19解析后网页源代码:194.2运行环境20第5部分 心得与体会20第6部分 附录20Window类20java简单画图程序设计28第1部分 设计的内容要求281.1设计要求28第2部分 设计思想282.1自定义形状类282.2形状存储29第3部分 详细设计293.1画图形291、算法设计292、流程图313.2撤销与清除321、算法322、流程图333.3改变颜色331、算

3、法332、流程图34第4部分 运行效果图354.1画图354.2改变颜色354.3撤销364.4清除364.5运行环境36第5部分 心得与体会37第6部分 附录37图书销售管理系统40第1部分 设计的内容要求401.1设计要求40第2部分 设计思想402.1使用经典MVC模式402.2灵活的使用java接口机制402.3自定义JPanel41第3部分 详细设计413.1图书、订单、厂商插入411、算法412、流程图433.2图书、订单、厂商删除441、算法442、流程图453.3图书、订单、厂商查询451、算法452、流程图493.4图书、订单、厂商插入501、算法502、流程图50第4部分

4、运行效果图514.1初始界面514.2查询524.3删除524.4插入534.5修改54第5部分 心得与体会55第6部分 附录55网络爬虫设计第1部分 设计的内容要求1.1 设计内容设计一款基于互联网的网络爬虫,要求使用java语言,并且使用其中的awt或者是swing包设计一款具有可视化的爬虫软件,其界面要十分友好,能满足一般爬虫的要求,要实现基本的爬取互联网上的资源的能力,能根据用户的自己需求爬取不同的网站,并能将网站对应源代码提取出来。1.2 设计要求爬虫需要实现的功能有:1、 能对用户手动输入的链接执行爬取功能,并能对用户非法输入进行检测。2、 能实现开始、暂停、结束功能3、 能对正在

5、爬取,爬取完成、正确链接、错误链接、邮件地址、未能识别的链接以及日志进行提取并时刻更新GUI让爬取的进度能实时的显示出来。4、 能对正确链接实现网页源代码的提取,并将其保存。5、 有非常友好的界面设计,有良好的用户体验。第2部分 设计思想2.1 使用经典MVC模式使用经典MVC模式设计,实现数据访问和对界面更新的分离,我使用底层spider类从网络抓取对应的数据,控制层将对应的数据进行处理,使用实体类进行对应的数据共享传输,并在显示层使用容器机制对底层传来的对象进行绑定,实现了GUI的实时更新。2.2 使用多线程技术由于涉及对多个GUI界面进行跟新,而且数据实时在底层网上传输,怎样才能使GUI

6、得更新不会阻塞UI主线程呢,根据对java多线程的了解后,我使用了多线程技术将数据更新放在了线程中,这样实现数据对象更新后才将其发送给UI主线程对界面进行更新。2.3 java接口灵活使用在底层的数据要怎样才能准确的返回给UI应用层呢,如果这两个层次分别由不同的人进行开发那么我们应该怎么样进行合理的数据交互呢?为此我定义了接口使底层数据的返回格式完全实现规范化,这样在设计UI 和底层代码之间只需要都遵守这个数据交换的接口,无需知道各个层次里面的具体实现是什么样,这对大型项目的开发也是十分重要的,降低了各个模块之间的耦合度。我具体接口的设计如下:/* * * author 徐玉松 * */pub

7、lic interface ISpiderReportable /* * 用于报告发现的链接 * param base 跟链接 * param url 当前链接 * return 是否发现 */ public boolean spiderFoundURL(URL base,URL url); /* * 用于报告错误链接 * param url 错误链接 */ public void spiderURLError(URL url); /* *用于报告错误邮件地址 * param email 邮件地址对象 */ public void spiderFoundEMail(EmailURL email

8、); /* * 用于报告爬取完成的链接 * param comleteURL 爬取完成对象 */ public void spiderComlereURL(ComleteURL comleteURL); /* * 用于报告好的爬取地址 * param goodLINK 好的爬取地址对象 */ public void spiderGoodURL(GoodLINK goodLINK); /* * 用于报告坏的爬取地址 * param errorURL 坏的爬取地址对象 */ public void spiderErrorURL(ErrorURL errorURL); /* * 用于报告爬取到未知的

9、链接地址 * param unknowURL 未知链接地址对象 */ public void spiderUnknowURL(UnknowURL unknowURL);2.4 自定义JPanel由于java swing自带的jpanel十分简单而且满足不了相应数据绑定的需求,我自主学习了java swing里面的自定义组件,将jpanel里面放了一个jtable并在其中添加了数据源。如下便是我其中一个自定义控件设计。public class GoodLinkPane extends JPanel private GoodLinkContainer goodLinkContainer;priva

10、te int index;private List list;private JScrollPane playerScrollPane;public GoodLinkPane() / init(columnNames,comleteURL);this.setLayout(new BorderLayout();goodLinkContainer = new GoodLinkContainer();JTable jTable = new JTable(goodLinkContainer);jTable.setGridColor(Color.BLACK);jTable.setShowGrid(tru

11、e);jTable.setShowHorizontalLines(true);jTable.setShowVerticalLines(true);jTable.setFillsViewportHeight(true);playerScrollPane = new JScrollPane(jTable);playerScrollPane.setPreferredSize(new Dimension(200, 400);add(playerScrollPane, BorderLayout.CENTER);index = 0;list = new ArrayList();this.setVisibl

12、e(true);public void setTable(GoodLINK goodLINK) index+;goodLINK.setIndex(index);list.add(goodLINK);goodLinkContainer.setData(list);第3部分 详细设计3.1 爬取正确链接并获取网页源代码或错误链接1、 主要算法使用HttpURLConnection类 打开相应网络链接,如果打开相应的网络抛出异常则此链接为错误链接,并使用类中对应的httpURLConnection.getResponseCode()方法获取链接的返回码,如果返回码小于400则判断链接能够联通,否则则

13、为错误链接,我们将两种不同的链接分别记录在GoodLINK、ErrorURL实体类中,并将其链接的基本属性一并写入。如果是正确链接我们还将其网页内容爬取出来放到D:/spiderHtml+爬取网站名(比如D:/spiderHtml/http dean swjtu edu cn)中,具体实现:checkLink()函数实现。protected boolean checkLink(URL url) try BufferedReader reader;String line;StringBuffer stringBuffer = new StringBuffer();URLConnection connection = url.openConnection();connection.connect();HttpURLConnection httpURLConnection = (HttpURLConnection) connection;if (httpURLConnecti

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号