zoukankan      html  css  js  c++  java
  • 信息领域热词分析系统--详细设计说明书

    文档编号:

     

    引言

    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

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    微信调用相机上传照片+拍照上传
    遮罩层+软键盘
    样式问题
    连接微信分享图片
    一些链接
    图片等比例缩放
    About Memory Analysis
    Monitor Network and File I/O
    Measure Graphics Performance
    Measure CPU Use
  • 原文地址:https://www.cnblogs.com/wl2017/p/10294485.html
Copyright © 2011-2022 走看看