ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:279.96KB ,
资源ID:6538268      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6538268.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java课程设计网络爬虫搜索引擎.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java课程设计网络爬虫搜索引擎.docx

1、java课程设计网络爬虫搜索引擎学 号: 课 程 设 计题 目网络爬虫搜索引擎学 院管理学院专 业信息管理与信息系统班 级姓 名指导教师王新201年7月4日课程设计任务书学生姓名: 指导教师: 王新 工作单位:信息管理与信息系统系 题 目: 网络爬虫搜索引擎 初始条件:合理应用Java相关知识与编程技能,结合UML面向对象设计,解决信息管理领域的实际问题,如学生成绩管理、学籍管理、图书借阅管理、自动存取款机、通信录管理、商品销售管理、医院门诊管理、火车订票管理、影院自动售票、世界杯足球比赛管理、人力资源管理、酒店前台管理、房产中介管理、停车收费管理等。要求完成的主要任务: (包括课程设计工作量

2、及其技术要求,以及说明书撰写等具体要求)1进行需求分析,撰写需求文档,绘制用例图。2识别需求文档中的类,建模类,初步绘制类图(之后逐渐完善)。3确定、建模类的实例变量。4确定、建模类的方法。5若有需要,在系统中加入继承与多态。6将UML图转换成Java代码框架。7设计算法,若有复杂的数据结构需求,使用相应集合框架。8设计数据访问层,若有数据持久化需求,使用数据库/文件。9添加表示层,若程序运行在桌面,使用图形用户界面。10实现完整的系统,最终Java源代码至少在300行以上。11进行测试,并给出相应结果。课程设计报告中要求详细描述思路、步骤、方法、实现、问题及解决过程、操作说明、测试及结果。时

3、间安排:12014年6月23日 课程设计选题、查阅资料22014年6月24日25日 UML面向对象设计32014年6月26日7月1日 Java程序设计与代码调试42014年7月2日 改进、完善、测试系统52014年7月3日7月4日上午 撰写、提交课程设计报告62014年7月4日下午 课程设计答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日网络爬虫搜索引擎1项目介绍1.1开发背景该项目软件开发的意图是开发出一款网络爬虫软件。应用目标为搜集网络信息,便于查询使用。在如今的BIG DATA时代,网络信息庞大而又复杂,用户很难直接从中获得需要的信息。网络爬虫软件就是将这些信息收集并

4、整理,当用户发起搜索请求时,该系统可将用户最需要的信息反馈给用户。1.2用户的特点 本软件为免费软件,可供所有可使用互联网的用户使用。最终用户只需掌握基本的上网技术即可,操作人员的主要工作是启动和关闭服务器,只需掌握基本的电脑使用方法即可。维护人员需要专业的程序员,懂得Java的网络编程以及计算机网络基础,教育水平在专科以上。软件的预期工作时间为24h/日。组织结构图及用户角色如图表1-1所示:1.3需求分析1.3.1各子模块功能的描述本系统共分为三大模块:爬虫模块、数据库模块和搜索模块,也就是后台、前台和数据库。每一个模块有各自的分工,最后三大模块集合在一起构成一个完整的网络爬虫系统。各个子

5、模块的详细功能如下:1.3.2爬虫模块第一个模块为爬虫模块。爬虫模块的主要任务是负责寻找网页,并将网页内的URL和关键字提取出来。此模块又详细分为两大模块:服务器模块和正则引擎模块,这两个模块分别负责上述的两个功能。服务器模块向某个种子URL发送请求,或得其页面内容;正则引擎模块将服务器获取的页面用正则表达式对其进行分析,截取其中的URL和关键字,然后再将URL传递给服务器模块。系统按照这样的方式不断的抓取网页并进行分析,最后将结果存进数据库。1.3.3搜索模块第二个模块是搜索模块,用户在搜索界面输入关键字,然后系统在数据库中搜索对应的关键字,最后将结果返回给用户。此模块又分为搜索界面和结果界

6、面。搜索界面是首页,用户在此界面中输入想要搜索的关键词,这些关键词将被此页面记录下来传递到数据中进行搜素。结果页面是数据库结果的接受者,当数据库完成搜素后会将结果传递给次页面,然后结果页面会将结果呈现给用户。1.3.4数据库模块数据库模块在整个系统中起到存储和桥梁作用。爬虫模块将搜索的结果整理完成后存入数据库,搜索模块从数据库中获取需要的信息并呈现给用户。1.4对非功能性的需求1.4.1精度 该系统的输入为一个字符串,里面包含了一个或多个关键字,长度在38个汉字以内,超过的部分将被直接舍弃。输出的数据要求包括网站的URL和页面简介,按照页面内容与搜索内容的匹配程度来排序。1.4.2时间特性要求

7、 a)响应时间0.01sb)更新处理时间0.1c)数据的转换和传送时间0.1s1.4.3灵活性该系统运用的主要语言是Java,由于Java是一门跨平台的语言,所以本系统的兼容性比较强,只要配置了Java环境就可以运行。当该系统与数据库MySQL的接口发生变化时,系统在重新加载了新的驱动后要能够正常运行。1.4.4输人输出要求输入:由用户输入搜索关键字,关键字类型为合法字符。输出:显示结果列表或提示信息,包含页面地址、页面标题、页面描述的条目列表或字符串提示信息。1.4.5故障处理要求出错输出信息:根据不同的错误提供不同的错误提示信息。例如无网络连接、无法检索到结果。出错处理对策:1)一般错误:

8、显示错误信息,提示用户重新操作 2)严重错误:重新启动,必要时启用备份恢复数据1.4.6其他专门要求如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。 1) 健壮性:如果用户在发送搜索请求后与服务器连接中断,在用户重新连接后并重新请求时,系统应快速将信息反馈给用户。2) 可维护性:新的管理员应该可以在10分钟以内掌握关闭和开启服务器等基本操作。3)运行环境可转换行:任何装有浏览器的系统都应该可以访问服务器。当服务器更换操作系统时,在部署好Java环境后应可以马上运行。2程序设计2.1总体设计思想本软件通过客户端浏览器,用户设置自己

9、的爱好,并通过http传给服务器,服务器接收信息执行响应操作。2.3程序设计总体框图系统功能层次模块图如图1-2所示图表1-2 系统层次模块图2.4程序详细设计(1)RecordDAOProxy类UML设计(2)IRecordDAO类设计说明(3)DatabaseConnection类设计说明(4)RecordDAOImpl类设计说明(5)Record类设计说明(6)HtmlHelper类设计说明(7)SpiderThread类设计说明(8)DAOFactory类设计说明(9)Page类UML设计(10)测试类UML设计(7)主体程序UML类图源代码部分:1RecordDAOProxy.jav

10、a代码import java.util.ArrayList;import com.engine.dao.impl.RecordDAOProxy;import com.engine.po.Record;import com.engine.util.HtmlHelper;/* author */public class ResultController private ResultController () private static ResultController resultController;/* * return ResultController */ Public static s

11、ynchronized ResultController getResultController() if(resultController = null) resultController = new ResultController(); return resultController; /* * param keyWord * return Record * throws Exception*/ public ArrayList queryResult(String keyWord) throws Exception String keyWords = keyWord.split(s);

12、 ArrayList list = new ArrayList(); RecordDAOProxy recordDao =null; for(int i=0; ikeyWords.length;+i) keyWord = keyWordsi; recordDao = new RecordDAOProxy(); list.addAll(recordDao.getRecord(WHERE recordTitle LIKE % + keyWord + %); recordDao = new RecordDAOProxy(); list.addAll(recordDao.getRecord(WHERE

13、 recordContent LIKE % + keyWord + %); return list; User.java代码import java.io.Serializable;public class User implements Serializable private static final long serialVersionUID = 5612649006026227700L; private String no; private String name; private Integer age; private String sex; private String phone

14、; private String imagePath; public String getNo() return no; public void setNo(String no) this.no = no; public String getName() return name; public void setName(String name) this.name = name; public Integer getAge() return age; public void setAge(Integer age) this.age = age; public String getSex() r

15、eturn sex; public void setSex(String sex) this.sex = sex; public String getPhone() return phone; public void setPhone(String phone) this.phone = phone; public String getImagePath() return imagePath; public void setImagePath(String imagePath) this.imagePath = imagePath; BusinessObject.java代码import ja

16、va.util.List;public class BusinessObject int currentPos; User users; PropertiesUtil proutil; public BusinessObject() currentPos = 0; proutil = new PropertiesUtil(config/telephone.dat); users = getAllUsers(); public User getAllUsers() List list = proutil.getUsers(); User users2 = new Userlist.size();

17、 for(int i =0;i0) currentPos -; return userscurrentPos; public User next() if(currentPos users.length - 1) currentPos +; return userscurrentPos; public User last() currentPos = users.length - 1; return userscurrentPos; public void saveUser(User user) proutil.save(user); users = getAllUsers(); curren

18、tPos = Integer.parseInt(user.getNo() - 1; PropertiesUtil.java代码import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayL

19、ist;import java.util.List;import javax.swing.JOptionPane;public class PropertiesUtil private ObjectInputStream ois = null; private ObjectOutputStream oos = null; private List lstUsers = new ArrayList(); private String fileName = null; public PropertiesUtil(String fileName) this.fileName = fileName;

20、SuppressWarnings(unchecked) public List getUsers() try ois = new ObjectInputStream(new FileInputStream(fileName); lstUsers = (ArrayList)ois.readObject(); ois.close(); catch(FileNotFoundException e) intRecord(); catch (ClassNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackT

21、race(); return lstUsers; public void save(User user) try oos = new ObjectOutputStream(new FileOutputStream(config/telephone.dat); int i; for( i = 0;i = lstUsers.size() lstUsers.add(user);/新增 oos.writeObject(lstUsers); oos.flush(); oos.close(); catch (IOException e) e.printStackTrace(); /* * 若记录文件不存在

22、,则初始化记录文件 */ private void intRecord() /创建文件 File f = new File(config/telephone.dat); try f.createNewFile(); catch (IOException e1) e1.printStackTrace(); /新建一条记录 User u = new User(); u.setNo(1); u.setName(); u.setAge(0); u.setSex(F); u.setPhone(); u.setImagePath(); try oos = new ObjectOutputStream(ne

23、w FileOutputStream(config/telephone.dat); lstUsers.add(u); oos.writeObject(lstUsers); oos.close(); JOptionPane.showMessageDialog(null, 请重启本程序); System.exit(0); catch (FileNotFoundException e1) e1.printStackTrace(); catch (IOException e1) e1.printStackTrace(); Test.java代码import java.io.FileNotFoundEx

24、ception;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.List;public class Test private ObjectOutputStream oos = null; private List lstUsers = new ArrayList(); User u1 = null; User u2 = null; User u3 = null; publ

25、ic Test() try oos = new ObjectOutputStream(new FileOutputStream(config/telephone.dat); u1 = new User(); u1.setNo(1); u1.setName(人物1); u1.setSex(M); u1.setAge(11); u1.setPhone(111); u1.setImagePath(config/demo8.jpg); lstUsers.add(u1); u2 = new User(); u2.setNo(2); u2.setName(人物2); u2.setSex(F); u2.se

26、tAge(22); u2.setPhone(222); u2.setImagePath(config/demo4.jpg); lstUsers.add(u2); u3 = new User(); u3.setNo(3); u3.setName(人物3); u3.setSex(F); u3.setAge(33); u3.setPhone(333); u3.setImagePath(config/demo2.jpg); lstUsers.add(u3); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException

27、e) e.printStackTrace(); public static void main(String args) Test t = new Test(); try t.oos.writeObject(t.lstUsers); t.oos.close(); catch (IOException e) e.printStackTrace(); public class Result private String recordLink; private String recordTitle; private String recordAbstractContent; private String keywordTimes; public String getRecordLink() return recordLink; public void se

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1