信息領域熱詞分析系統--詳細設計說明書


文檔編號:

 

引言

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; width: 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; width: 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("\n");
13             for(mean model:means) {
14             String word=model.getWord();//標題
15             bw.write(count+"."+model.getWord());
16             bw.write("\n");
17             bw.write("   ");
18             bw.write(model.getMeann());
19             bw.write("\r\n");
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("\n");
49              bw.write("\n");
50              bw.write("\n");
51             bw.write("一.程序人生....................................................................1");
52             bw.write("\n");
53             bw.write("二.大數據......................................................................2");
54             bw.write("\n");
55             bw.write("三.運維........................................................................2");
56             bw.write("\n");
57             bw.write("四.編程語言....................................................................3");
58             bw.write("\n");
59             bw.write("五.區塊鏈......................................................................4");
60             bw.write("\n");
61             bw.write("六.架構....................................................................... 4");
62             bw.write("\n");
63             bw.write("六.人工智能....................................................................5");
64             bw.write("\n");
65             bw.write("\n");
66             bw.write("\n");
67             bw.write("\n");
68             bw.write("\n");
69             bw.write("\n");
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM