信息领域热词分析系统--详细设计说明书

文档编号:

 

引言

1.1 编写目的

编写详细设计的目的是:在概要设计的基础上,完成系统划分模块及明确模块之间的关系,同时给出相应的用户界面设计。

1.2 适用对象及范围

本设计说明书适用于参加本项目的所有管理人员、开发人员和维护人员。包括:项目经理、系统分析员、高级程序员、代码程序员、数据库程序员、测试人员、培训人员、实施人员、技术支持人员、项目监理人员、系统管理用户和最终使用用户。

1.3 名词解释

HTML超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。

CSS级联样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。

Javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

总体设计

2.1 需求规定

2.1.1 对功能的规定

2.1.1.1 热词查看功能

热词查看功能系统中包括方面的内容:热词搜索功能、热词分类功能、下载功能。

1.  热词搜索功能

用户通过搜索框进行热词的搜索,显示该热词的含义,并可以通过分类框来对该热词进行分类。

2.  热词分类显示功能

用户通过热词分类点击,查看该热词分类下的内容及链接,还可以通过联系图和词云进行显示查看热词具体含义。

3. 下载功能

用户可以通过点击下载,生成热词下载文档,并通过word打开显示。

2.1.2 输入/输出要求

1. 在数据输入的相关 Web页面,须提供页面数据合法性校验,包括:对数据类型的检查、对日期类型数据的检查、对特定字符转码和字符长度的检查。

2.  使用Web页面输出数据,包括页面显示的数据、可供下载或在线浏览的文档。对这类数据没有特殊要求。

2.1.3 故障处理要求

1. 软件支撑环境运行错误。

2. IIS运行环境错误,此时平台无法正确运行,管理员参考相关产品手册。

3. 数据库运行错误:系统无法使用,平台将提供错误提示页面,并记录日志。

4. 应用系统错误:由本应用系统提供错误提示页面,程序运行错误记录在平台日志中,数据运行错误记录在应用系统日志中。

2.2 基础服务

1. 关系数据库

图1: 数据库应用

在本平台之上的应用不是直接访问数据库,而是通过应用框架服务层提供的数据库访问组件来访问数据库。

2. web服务器

Web服务器(或称HTTP服务器)提供HTTP服务。本来Web服务器只提供“静态”内容,即返回在URL里指定的文件的内容,一般具备将URL名映射到文件名的功能,并能实施某种安全策略。Web服务是建立B/S结构应用的基础。Web服务在系统中的作用

Web服务以Web服务器的形式出现,主要的功能是提供静态的Http服务,即提供静态的Html页面。同时,Web服务还需要有诸如负载均衡、页面缓冲等功能。Web服务器通常需要和应用服务器相配合,提供动态的Http服务,应用服务器可以和数据库相配合提供动态Html页面。

3. 应用服务器

应用服务器为应用的业务逻辑提供了一个运行环境。它可以提供企业级的组件支持环境,支持网络环境下应用软件的快速开发和部署。应用组件在应用服务器的服务上运行,并利用网络基础架构提供的目录和安全服务。这些组件还可以利用数据库、事务处理和群集等设施。

系统功能设计

3.1 热词查看功能

序号

系统模块

功能

功能描述

操作

1

 

 

 

 

热词查看功能

热词搜索功能

用户通过搜索框进行热词的搜索,显示该热词的含义,并可以通过分类框来对该热词进行分类。

输入框搜索,下拉框分类提交

2

热词分类显示功能

用户通过热词分类点击,查看该热词分类下的内容及链接,还可以通过联系图和词云进行显示查看热词具体含义。

点击导航栏可以查看热词分类内容,及该分类下解释,点击链接可以查看该分词链接出处。

3

下载功能

用户可以通过点击下载,生成热词下载文档,并通过word打开显示。

点击导航栏的下载按钮,可以下载文档完成,之后打开文档查看

3.1.1 实现设计

通过对业务功能实现时序的分析,所有业务功能的实现处理过程分为4大模块:信息搜索模块,信息查看模块,信息分类模块,信息下载模块。

3.1.2 信息搜索模块

3.1.2.1 功能设计

信息搜索功能为用户通过内容搜索,可以查看该内容的解释。先从数据库进行查询若没有,则从百度百科进行内容爬取。将结果解释。界面设计如图所示:

图2: 信息搜索界面

 

图3: 信息结果显示界面

3.1.2.2 类设计

类名

描述

mean

热词类,包含热词的名字、含义、类型。

select

对数据进行爬取

dao

对热词进行查询、添加。

3.1.2.3 代码设计

搜索项目导入代码设计

  1 <!-- Start Banner Area -->
  2 <section class="home-banner-area relative">
  3 <div class="container">
  4 <div
  5 class="row fullscreen d-flex align-items-center justify-content-center">
  6 <div class="banner-content col-lg-8 col-md-12">
  7 <h1 class="wow fadeIn" data-wow-duration="4s">
  8 信息领域 <br>热词分析
  9 </h1>
 10 <div class="input-wrap">
 11 <form action="index.jsp" method="get"
 12 class="form-box d-flex justify-content-between">
 13 <input type="text" placeholder="请输入搜索内容" class="form-control"
 14 name="wordd">
 15 <button type="submit" class="btn search-btn">Search</button>
 16 <%
 17 select s = new select();
 18 mean mean1 = s.mean2;
 19 mean1.setMeann("该词没有解释");
 20 mean1.setWord("");
 21 %>
 22 </form>
 23 </div>
 24 <h4 class="text-white">热词</h4>
 25  
 26 <div class="courses pt-20">
 27 <%
 28 typeIndex = keyDaoI.loadKeyType();
 29 typeIndex.toArray(ti);
 30 for (int i = 0; i < ni / 2; i++) {
 31 %>
 32 <a href="chengXuRenSheng.jsp?word=<%=ti[i]%>"
 33 data-wow-duration="1s" data-wow-delay=".9s"
 34 class="primary-btn transparent mr-10 mb-10 wow fadeInDown"><%=ti[i]%></a>
 35 <%
 36 }
 37 for (int i = ni / 2; i < ni; i++) {
 38 %>
 39 <a href="chengXuRenSheng.jsp?word=<%=ti[i]%>"
 40 data-wow-duration="1s" data-wow-delay="1.8s"
 41 class="primary-btn transparent mr-10 mb-10 wow fadeInDown"><%=ti[i]%></a>
 42 <%
 43 }
 44 %>
 45 </div>
 46 </div>
 47 </div>
 48 <div class="rocket-img">
 49 <img src="img/rocket.png" alt="">
 50 </div>
 51 </section>
 52 <!-- End Banner Area -->
 53  
 54  
 55 <%
 56 if (word!=null&&!word.equals("")) {
 57 %>
 58 <!-- Start About Area -->
 59 <section class="about-area section-gap">
 60 <div class="container">
 61 <div class="row align-items-center justify-content-center">
 62 <div class="col-lg-5 col-md-6 about-left">
 63 <img class="img-fluid" src="img/about.jpg" alt="">
 64 </div>
 65 <div class="offset-lg-1 col-lg-6 offset-md-0 col-md-12 about-right">
 66 <h1>
 67 <%=word%>
 68 </h1>
 69 <div class="wow fadeIn" data-wow-duration="1s">
 70 <%
 71 if (type.equals("") && mean3.equals("该词没有解释")) {//没有爬取到意思,数据库中也没有分类
 72 %>
 73 <p>
 74 <%=mean3%><br /> <br />
 75 <form action="index.jsp" method="get">
 76 <textarea name="jieshi" rows="7" cols="70" value=""
 77 placeholder="请输入热词解释"></textarea>
 78 <!-- 输入解释 -->
 79 <br /> <br /> <select name="leibie">
 80 <!-- 输入类别 -->
 81 <option value="">选择热词类别</option>
 82 <%
 83 typeIndex.toArray(ti);
 84 for (int i = 0; i < ni; i++) {
 85 %>
 86 <option value="<%=ti[i]%>"><%=ti[i]%></option>
 87  
 88 <%
 89 }
 90 %>
 91 </select> <input type="hidden" name="wordd" value="<%=word%>">
 92 <!-- 点击按钮,依旧查询这个词 -->
 93 <input type="submit" value="提交"
 94 style="position: absolute; right: 30px;  100px">
 95 <!-- 按钮 -->
 96 </form>
 97 </p>
 98 <%
 99 } else if (!type.equals("") && !mean3.equals("该词没有解释")) {//数据库中既有解释也有类别
100 %>
101 <p>
102 <%=mean3%><br /> <br /> 类别:<%=type%>
103 </p>
104 <%
105 }
106 else if(type.equals("") && !mean3.equals("该词没有解释")){//爬取到了词语得意思,但是数据库中没有分类
107 %>
108 <p>
109 <%=mean3%><br /> <br />
110 <form action="index.jsp" method="get">
111 <select name="leibie">
112 <!-- 输入类别 -->
113 <option value="">选择热词类别</option>
114 <%
115 typeIndex.toArray(ti);
116 for (int i = 0; i < ni; i++) {
117 %>
118 <option value="<%=ti[i]%>"><%=ti[i]%></option>
119  
120 <%
121 }
122 %>
123 </select> <input type="hidden" name="wordd" value="<%=word%>">
124 <!-- 点击按钮,依旧查询这个词 -->
125 <input type="submit" value="提交"
126 style="position: absolute; right: 30px;  100px;">
127 <!-- 按钮 -->
128 </form>
129 </p>
130 <%} %>
131 </div>
132 </div>
133 </div>
134 </div>
135 </section>
136 <!-- End About Area -->
137 <%
138 }
139 %>
140 l mean热词名称、含义、类型
141 public class mean {
142 private String word;
143 private String meann;
144 private String type;
145 public String getWord() {
146 return word;
147 }
148 public void setWord(String word) {
149 this.word = word;
150 }
151 public String getMeann() {
152 return meann;
153 }
154 public void setMeann(String meann) {
155 this.meann = meann;
156 }
157 public String getType() {
158 return type;
159 }
160 public void setType(String type) {
161 this.type = type;
162 } 
163 }
164 l dao代码查询
165 public static String find_mean(String word) {
166 Connection connection = DBUtil.getConnection();
167 String sql = "select DETAIL.CONTENT from DETAIL WHERE KEY='" + word + "'";
168 PreparedStatement preparedStatement = null;
169 ResultSet resultSet = null;
170 String mean = "";
171 try {
172 System.out.println("sql:" + sql);
173 preparedStatement = connection.prepareStatement(sql);
174 resultSet = preparedStatement.executeQuery();
175 while (resultSet.next()) {
176 mean = resultSet.getString("CONTENT");
177 }
178 } catch (SQLException e) {
179 e.printStackTrace();
180 } finally {
181 DBUtil.close(resultSet);
182 DBUtil.close(preparedStatement);
183 DBUtil.close(connection);
184 }
185 return mean;
186 }
187  
188 public static mean find_mean2(String word) {//查询出词的意思以及类别
189 Connection connection = DBUtil.getConnection();
190 String sql = "select DETAIL.CONTENT,SORT.TYPE from DETAIL join SORT on DETAIL.KEY=SORT.KEY WHERE DETAIL.KEY='" + word + "'";
191 PreparedStatement preparedStatement = null;
192 ResultSet resultSet = null;
193 mean mean1=new mean();
194 mean1.setMeann("");
195 mean1.setType("");
196 try {
197 System.out.println("sql:" + sql);
198 preparedStatement = connection.prepareStatement(sql);
199 resultSet = preparedStatement.executeQuery();
200 while (resultSet.next()) {
201 mean1.setMeann(resultSet.getString("CONTENT")); 
202 mean1.setType(resultSet.getString("TYPE"));
203 }
204 } catch (SQLException e) {
205 e.printStackTrace();
206 } finally {
207 DBUtil.close(resultSet);
208 DBUtil.close(preparedStatement);
209 DBUtil.close(connection);
210 }
211 return mean1;
212 }
213 public static void addMean(String word, String mean) {
214  
215 int count = find_countWord(word);
216 System.out.println("count:"+count);
217 if (count > 0) {
218 } else {
219  
220 // 获得连接对象
221 Connection connection = DBUtil.getConnection();
222 // 创建语句传输对象
223 PreparedStatement preparedStatement = null;
224 ResultSet resultSet = null;
225 try {
226 String sql = "INSERT into DETAIL(KEY,CONTENT) VALUES ('" + word + "','" + mean + "')";
227 preparedStatement = connection.prepareStatement(sql);
228 System.out.println("sql" + sql);
229 preparedStatement.executeUpdate();
230  
231 } catch (SQLException e) {
232 // TODO Auto-generated catch block
233 e.printStackTrace();
234 } finally {
235 // 关闭资源
236 DBUtil.close(resultSet);
237 DBUtil.close(preparedStatement);
238 DBUtil.close(connection);
239 }
240 }
241 }
View Code

3.1.3 信息查看模块

3.1.3.1 功能设计

当按分类检索是所有热词的含义及链接显示到界面上。界面设计如图所示:、

 

图4: 热词含义及链接模板界面

通过在联系图及词云的显示的内容,通过标签的点击可以查看该热词下的内容。界面设计如图所示:

 

图5: 热词含义界面

 

6:热词链接跳转界面

通过词云显示该热词内容:

 

7:热词词云界面

通过联系图显示热词间联系:

 

8:热词联系图界面

3.1.3.2 类设计

类名

描述

dao

查询该热词下的含义

url

热词链接、名称及文章标题

Key

热词相关信息

KeyDao

查询热词间联系及热词top50

3.1.3.3 代码设计

  1 l dao 查询热词下的链接及文章标题
  2 public static mean find_mean2(String word) {//查询出词的意思以及类别
  3 Connection connection = DBUtil.getConnection();
  4 String sql = "select DETAIL.CONTENT,SORT.TYPE from DETAIL join SORT on DETAIL.KEY=SORT.KEY WHERE DETAIL.KEY='" + word + "'";
  5 PreparedStatement preparedStatement = null;
  6 ResultSet resultSet = null;
  7 mean mean1=new mean();
  8 mean1.setMeann("");
  9 mean1.setType("");
 10 try {
 11 System.out.println("sql:" + sql);
 12 preparedStatement = connection.prepareStatement(sql);
 13 resultSet = preparedStatement.executeQuery();
 14 while (resultSet.next()) {
 15 mean1.setMeann(resultSet.getString("CONTENT"));
 16 mean1.setType(resultSet.getString("TYPE"));
 17 }
 18 } catch (SQLException e) {
 19 e.printStackTrace();
 20 } finally {
 21 DBUtil.close(resultSet);
 22 DBUtil.close(preparedStatement);
 23 DBUtil.close(connection);
 24 }
 25 return mean1;
 26 }
 27  
 28 public static List<url> find_allUrls2(String word) {
 29 Connection connection = DBUtil.getConnection();
 30 String sql = "select DISTINCT  URL.KEY,URL.URL,TITLEE.TITLE from URL join TITLEE on URL.URL=TITLEE.URL  WHERE URL.KEY ='"
 31 + word + "'";
 32 PreparedStatement preparedStatement = null;
 33 ResultSet resultSet = null;
 34 List<url> means = new ArrayList<url>();
 35  
 36 try {
 37 System.out.println("sql:" + sql);
 38 preparedStatement = connection.prepareStatement(sql);
 39 resultSet = preparedStatement.executeQuery();
 40 while (resultSet.next()) {
 41 url m = new url();
 42 m.setWord(resultSet.getString("KEY"));
 43 m.setUrll(resultSet.getString("URL"));
 44 m.setTitle(resultSet.getString("TITLE"));
 45 means.add(m);
 46 }
 47 } catch (SQLException e) {
 48 e.printStackTrace();
 49 } finally {
 50 DBUtil.close(resultSet);
 51 DBUtil.close(preparedStatement);
 52 DBUtil.close(connection);
 53 }
 54 return means;
 55 }
 56  
 57 public static int find_countWord(String word) {//查询该词是否有解释
 58 Connection connection = DBUtil.getConnection();
 59 String sql = "select count(KEY) from DETAIL where KEY ='" + word + "'";
 60 PreparedStatement preparedStatement = null;
 61 ResultSet resultSet = null;
 62 int count = 0;
 63 try {
 64 System.out.println("sql:" + sql);
 65 preparedStatement = connection.prepareStatement(sql);
 66 resultSet = preparedStatement.executeQuery();
 67 while (resultSet.next()) {
 68 count = resultSet.getInt("count(KEY)");
 69  
 70 }
 71 } catch (SQLException e) {
 72 e.printStackTrace();
 73 } finally {
 74 DBUtil.close(resultSet);
 75 DBUtil.close(preparedStatement);
 76 DBUtil.close(connection);
 77 }
 78 return count;
 79 }
 80  
 81 public static int find_countWord2(String word) {//查询该词是否分类
 82 Connection connection = DBUtil.getConnection();
 83 String sql = "select count(KEY) from SORT where KEY ='" + word + "'";
 84 PreparedStatement preparedStatement = null;
 85 ResultSet resultSet = null;
 86 int count = 0;
 87 try {
 88 System.out.println("sql:" + sql);
 89 preparedStatement = connection.prepareStatement(sql);
 90 resultSet = preparedStatement.executeQuery();
 91 while (resultSet.next()) {
 92 count = resultSet.getInt("count(KEY)");
 93  
 94 }
 95 } catch (SQLException e) {
 96 e.printStackTrace();
 97 } finally {
 98 DBUtil.close(resultSet);
 99 DBUtil.close(preparedStatement);
100 DBUtil.close(connection);
101 }
102 return count;
103 }
104 l url链接类 
105 public class url {
106 private String word;
107 private String urll;
108 private String title;
109 public String getWord() {
110 return word;
111 }
112 public void setWord(String word) {
113 this.word = word;
114 }
115 public String getUrll() {
116 return urll;
117 }
118 public void setUrll(String urll) {
119 this.urll = urll;
120 }
121 public String getTitle() {
122 return title;
123 }
124 public void setTitle(String title) {
125 this.title = title;
126 }
127 }
128 l Key热词相关信息类 
129 package com.model;
130 public class Key {
131 private String key;//热词名字
132 private String num;//热词出现次数
133 private String type;//热词种类
134 private String url;//热词链接
135 private String content;//热词内容
136 public Key() {}
137 public Key(String key,String num,String type,String url,String content)
138 {
139 this.key=key;
140 this.num=num;
141 this.key=key;
142 this.url=url;
143 this.content=content;
144 }
145 public String getKey() {
146 return key;
147 }
148 public void setKey(String key) {
149 this.key = key;
150 }
151 public String getNum() {
152 return num;
153 }
154 public void setNum(String num) {
155 this.num = num;
156 }
157 public String getType() {
158 return type;
159 }
160 public void setType(String type) {
161 this.type = type;
162 }
163 public String getUrl() {
164 return url;
165 }
166 public void setUrl(String url) {
167 this.url = url;
168 }
169 public String getContent() {
170 return content;
171 }
172 public void setContent(String content) {
173 this.content = content;
174 }
175 }
176 l KeyDao查询热词间联系及热词top50
177 public List<Key> loadKey(String type) {
178 Connection connection=DBUtil.getConnection();
179  
180 String sql=null;
181 if(!"".equals(type)&&type!=null)
182 {
183 sql="SELECT key from sort where type='"+type+"'";
184 }
185 PreparedStatement preparedStatement=null;
186 ResultSet resultSet=null;
187 //String[] keys=new []String;
188 List <Key>keys=new ArrayList<Key>();
189 Key key;
190 try {
191 preparedStatement=connection.prepareStatement(sql);
192 resultSet=preparedStatement.executeQuery();
193 while(resultSet.next())
194 {
195 key=new Key();
196 key.setKey(resultSet.getString("key"));
197 keys.add(key);
198 }
199 } catch (SQLException e) {
200 // TODO Auto-generated catch block
201 e.printStackTrace();
202 }finally {
203 DBUtil.close(resultSet);
204 DBUtil.close(preparedStatement);
205 DBUtil.close(connection);
206 }
207 return keys;
208 }
209  
210 @Override
211 public List<Key> loadKey() {
212 Connection connection=DBUtil.getConnection();
213 String sql="select * FROM ( SELECT key,num from MOON.sort ORDER BY NUM DESC)WHERE ROWNUM < 50";
214 PreparedStatement preparedStatement=null;
215 ResultSet resultSet=null;
216 //String[] keys=new []String;
217 List <Key>keys=new ArrayList<Key>();
218 Key key;
219 try {
220 System.out.println(sql);
221 preparedStatement=connection.prepareStatement(sql);
222 resultSet=preparedStatement.executeQuery();
223 while(resultSet.next())
224 {
225 key=new Key();
226 key.setKey(resultSet.getString("key"));
227 key.setNum(resultSet.getString("num"));
228 keys.add(key);
229 }
230 } catch (SQLException e) {
231 // TODO Auto-generated catch block
232 e.printStackTrace();
233 }finally {
234 DBUtil.close(resultSet);
235 DBUtil.close(preparedStatement);
236 DBUtil.close(connection);
237 }
238 return keys;
239 }
View Code

3.1.4 信息分类模块

3.1.4.1 功能设计

将数据库已存在的信息进行分类,显示在导航栏上。界面设计如图:

 

图1: 信息分类界面

若数据库中不存在该词语,可将查询到的词语进行手工选择分类提交给客户端存储在数据库。界面设计如下:

 

图2: 热词分类界面

如果作者已准备好则点击“提交”按钮,即可跳转到当前页面,且显示该分类。

界面设计如下

 

图3: 热词查看界面

若该热词在百度百科查取不到,且在数据库也不含有,我们可以自己添加内容及分类。界面如下:

 

图4: 添加内容及分类界面

3.1.4.2 类设计

类名

描述

Key

热词相关信息

KeyDao

热词分类

dao

热词分类及内容添加

3.1.4.3 代码设计

l Key显示热词相关信息类。

  1 public class Key {
  2 private String key;//热词名字
  3 private String num;//热词出现次数
  4 private String type;//热词种类
  5 private String url;//热词链接
  6 private String content;//热词内容
  7 public Key() {}
  8 public Key(String key,String num,String type,String url,String content)
  9 {
 10 this.key=key;
 11 this.num=num;
 12 this.key=key;
 13 this.url=url;
 14 this.content=content;
 15 }
 16 public String getKey() {
 17 return key;
 18 }
 19 public void setKey(String key) {
 20 this.key = key;
 21 }
 22 public String getNum() {
 23 return num;
 24 }
 25 public void setNum(String num) {
 26 this.num = num;
 27 }
 28 public String getType() {
 29 return type;
 30 }
 31 public void setType(String type) {
 32 this.type = type;
 33 }
 34 public String getUrl() {
 35 return url;
 36 }
 37 public void setUrl(String url) {
 38 this.url = url;
 39 }
 40 public String getContent() {
 41 return content;
 42 }
 43 public void setContent(String content) {
 44 this.content = content;
 45 }
 46 }
 47 l KeyDao进行热词种类查询类。
 48 public List<String> loadKeyType() {
 49 Connection connection=DBUtil.getConnection();
 50 String sql = null;
 51 sql="SELECT DISTINCT type from sort ";
 52 PreparedStatement preparedStatement=null;
 53 ResultSet resultSet=null;
 54 List <String>types=new ArrayList<String>();
 55 String type=null;
 56 try {
 57 preparedStatement=connection.prepareStatement(sql);
 58 resultSet=preparedStatement.executeQuery();
 59 while(resultSet.next())
 60 {
 61 type=resultSet.getString("type");
 62 types.add(type);
 63 }
 64 } catch (SQLException e) {
 65 // TODO Auto-generated catch block
 66 e.printStackTrace();
 67 }finally {
 68 DBUtil.close(resultSet);
 69 DBUtil.close(preparedStatement);
 70 DBUtil.close(connection);
 71 }
 72 return types;
 73 }
 74 l dao进行种类添加。
 75 public static void addMean(String word, String mean) {
 76 int count = find_countWord(word);
 77 System.out.println("count:"+count);
 78 if (count > 0) {
 79 } else {
 80 // 获得连接对象
 81 Connection connection = DBUtil.getConnection();
 82 // 创建语句传输对象
 83 PreparedStatement preparedStatement = null;
 84 ResultSet resultSet = null;
 85 try {
 86 String sql = "INSERT into DETAIL(KEY,CONTENT) VALUES ('" + word + "','" + mean + "')";
 87 preparedStatement = connection.prepareStatement(sql);
 88 System.out.println("sql" + sql);
 89 preparedStatement.executeUpdate();
 90  
 91 } catch (SQLException e) {
 92 // TODO Auto-generated catch block
 93 e.printStackTrace();
 94 } finally {
 95 // 关闭资源
 96 DBUtil.close(resultSet);
 97 DBUtil.close(preparedStatement);
 98 DBUtil.close(connection);
 99 }
100 }
101 }
102 public static void addleibe(String word, String leibe) {
103  
104 int count = find_countWord2(word);
105 System.out.println("count:"+count);
106 if (count > 0) {
107 } else {
108 // 获得连接对象
109 Connection connection = DBUtil.getConnection();
110 // 创建语句传输对象
111 PreparedStatement preparedStatement = null;
112 ResultSet resultSet = null;
113 try {
114 String sql = "INSERT into SORT(KEY,NUM,TYPE) VALUES ('" +word +"','10','"+leibe+"')";
115 preparedStatement = connection.prepareStatement(sql);
116 System.out.println("sql" + sql);
117     preparedStatement.executeUpdate();
118 } catch (SQLException e) {
119 // TODO Auto-generated catch block
120 e.printStackTrace();
121 } finally {
122 // 关闭资源
123 DBUtil.close(resultSet);
124 DBUtil.close(preparedStatement);
125 DBUtil.close(connection);
126 }
127 }
128 }
View Code

3.1.5 信息下载模块

3.1.5.1 功能设计

可以将数据库中所有的热词下载到word文档里。

点击下载进行下载。

 

图5: 导航栏界面

通过下载可以显示下载成功。

 

图6: 下载成功界面

打开下载的word文档进行查看。

 

图7: 下载文档界面

双击进行打开。

 

图8: 文档界面内容

3.1.5.2 类设计

类名

描述

File

文档下载

3.1.5.3 代码设计

 1 public class File {
 2 static int count=1;
 3 static int c=0;
 4   static String[] q= {"","","","","","",""}; 
 5   public static void WriteStringToFile2(List<mean>  means,String type,String name) {
 6  
 7         try {
 8         
 9             FileWriter fw = new FileWriter(name, true);
10             BufferedWriter bw = new BufferedWriter(fw);
11             bw.append(q[c]+"."+type);//类别
12             bw.write("
");
13             for(mean model:means) {
14             String word=model.getWord();//标题
15             bw.write(count+"."+model.getWord());
16             bw.write("
");
17             bw.write("   ");
18             bw.write(model.getMeann());
19             bw.write("
");
20             count++;
21                 }
22             bw.close();
23             fw.close();
24         } catch (Exception e) {
25             // TODO Auto-generated catch block
26             e.printStackTrace();
27         }
28     }
29   public static void down() {
30   c=0;
31   String[] type= {"程序人生","大数据","运维","编程语言","区块链","架构","人工智能"};
32   Date day=new Date();    
33   SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");   
34   String name="C:\Users\lenovo\Desktop\热词解释"+df.format(day)+".docx";
35   mulu(name);
36   for(int i=0;i<type.length;i++) {
37   count=1;
38   List<mean> words=dao.find_allwords1(type[i]);
39   WriteStringToFile2(words,type[i],name);
40   c++;
41   }
42   }
43   public static void mulu(String name) {
44        try {
45             FileWriter fw = new FileWriter(name, true);
46             BufferedWriter bw = new BufferedWriter(fw);
47             bw.append("                          信息领域热词解释");//类别
48              bw.write("
");
49              bw.write("
");
50              bw.write("
");
51             bw.write("一.程序人生....................................................................1");
52             bw.write("
");
53             bw.write("二.大数据......................................................................2");
54             bw.write("
");
55             bw.write("三.运维........................................................................2");
56             bw.write("
");
57             bw.write("四.编程语言....................................................................3");
58             bw.write("
");
59             bw.write("五.区块链......................................................................4");
60             bw.write("
");
61             bw.write("六.架构....................................................................... 4");
62             bw.write("
");
63             bw.write("六.人工智能....................................................................5");
64             bw.write("
");
65             bw.write("
");
66             bw.write("
");
67             bw.write("
");
68             bw.write("
");
69             bw.write("
");
70             bw.close();
71             fw.close();
72         } catch (Exception e) {
73             // TODO Auto-generated catch block
74             e.printStackTrace();
75         }
76   }
77 }
View Code

4.数据库设计

1. 热词链接表记录热词的名称,热词的链接及热词的来源及作者的名称。如表4-1所示

 

4-1 热词链接表(url)

字段名

中文含义

数据类型

允许空

约束条件

Key

热词名称

Varchar2(300)

Y

URl

热词链接

Varchar2(500)

Y

Source

作者名称

Varchar2(300)

Y

2.文章表记录从网站爬取的文章的链接、题目及作者。如表4-2所示

 

4-2 文章表(TITLEE)

字段名

中文含义

数据类型

允许空

约束条件

TITLE

题目名称

Varchar2(255)

Y

URl

题目链接

Varchar2(255)

Y

AUTHOR

作者名称

Varchar2(255)

Y

3. 热词详细表用于该热词名称及具体含义。如表4-3所示

 

4-3 热词详细表(detail)

字段名

中文含义

数据类型

允许空

约束条件

KEY

热词名称

Varchar2(300)

Y

CONTENT

热词内容

Varchar2(1500)

Y

4.热词排行表用来表示该热词名称、频数、类型。如表4-4所示

4-4用户表(login)

字段名

中文含义

数据类型

允许空

约束条件

KEY

热词名称

Varchar2(300)

Y

NUM

频数

Varchar2(20)

Y

TYPE

类型

Varchar2(300)

Y

 全部源代码查看地址:https://github.com/wangli-wangli/BigData

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/wl2017/p/10294485.html