【技能实训】DMS数据挖掘项目-Day06

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 【技能实训】DMS数据挖掘项目-Day06

任务6

【任务6.1】创建数据分析接口

在com.qst.dms.gather 下创建接口IDataAnalyse.java

【任务6.2】创建数据过滤抽象类

在com.qst.dms.gather 下创建抽象类DataFilter.java

【任务6.3】编写日志数据分析类

在com.qst.dms.gather 下创建LogRecAnalyse.java,继承DataFilter抽象类,实现数据分析IDataAnalyse接口

从6.5开始做

【任务6.5】编写物流数据分析类

在com.qst.dms.gather 下创建TransportAnalyse.java,继承DataFilter抽象类,实现数据分析IDataAnalyse接口

功能要求:

  1. 成员属性如下
    // 发货集合
  private Transport[] transSends;
  // 送货集合
  private Transport[] transIngs;
  // 已签收集合
  private Transport[] transRecs;
  1. 构造方法
    // 构造方法
  public TransportAnalyse() {
  }
  public TransportAnalyse(Transport[] trans) {
    super(trans);
  }
  1. 实现DataFilter抽象类中的过滤抽象方法
        // 获取数据集合
    ……
    // 根据物流状态统计不同状态的物流个数
    int numSend = 0;
    int numTran = 0;
    int numRec = 0;
    // 遍历统计
    ……
    // 创建不同状态的物流数组
    transSends = new Transport[numSend];
    transIngs = new Transport[numTran];
    transRecs = new Transport[numRec];
    // 数组下标记录
    int indexSend = 0;
    int indexTran = 0;
    int indexRec = 0;
    // 遍历,对物流数据进行过滤,根据物流状态分别放在不同的数组中    for (Transport tran : trans) {
      ……
    }
4实现IDataAnalyse接口中数据分析方法
     // 创建物流匹配数组
  MatchedTransport[] matchTrans = new MatchedTransport[transSends.length];
    // 日志匹配数组下标记录
    int index = 0;
    // 数据匹配分析
    for (Transport send : transSends) {
      for (Transport tran : transIngs) {
        for (Transport rec : transRecs) {
          if ((send.getReciver().equals(tran.getReciver()))
              && (send.getReciver().equals(rec.getReciver()))
              && (tran.getType()!=DataBase.MATHCH)
              && (rec.getType()!=DataBase.MATHCH)) {
            // 修改物流状态类型为“匹配”
            send.setType(DataBase.MATHCH);
            tran.setType(DataBase.MATHCH);
            rec.setType(DataBase.MATHCH);
            // 添加到匹配数组中
            matchTrans[index++] = new MatchedTransport(send, tran,
                rec);
          }
        }
      }
    }
    return matchTrans;

程序设计

package com.qst.dms.gather;
// 导入需要的类
import com.qst.dms.entity.DataBase;
import com.qst.dms.entity.MatchedTransport;
import com.qst.dms.entity.Transport;
public class TransportAnalyse extends DataFilter implements IDataAnalyse {
    // 成员属性
    private Transport[] transSends;
    private Transport[] transIngs;
    private Transport[] transRecs;
    // 构造方法
    public TransportAnalyse(Transport[] trans) {
        super(trans);
    }
    // 实现DataFilter抽象类中的过滤抽象方法
    @Override
    public void doFilter() {
        // 获取数据集合
        Transport[] trans = (Transport[]) getDatas();
        // 根据物流状态统计不同状态的物流个数
        int numSend = 0;
        int numTran = 0;
        int numRec = 0;
        // 遍历统计
        for (Transport tran : trans) {
            if (tran.getTransportType() == Transport.SENDING) {
                numSend++;
            } else if (tran.getTransportType() == Transport.TRANSPORTING) {
                numTran++;
            } else if (tran.getTransportType() == Transport.RECEIVED) {
                numRec++;
            }
        }
        // 创建不同状态的物流数组
        transSends = new Transport[numSend];
        transIngs = new Transport[numTran];
        transRecs = new Transport[numRec];
        // 数组下标记录
        int indexSend = 0;
        int indexTran = 0;
        int indexRec = 0;
        // 遍历,对物流数据进行过滤,根据物流状态分别放在不同的数组中
        for (Transport tran : trans) {
            if (tran.getTransportType() == Transport.SENDING) {
                transSends[indexSend++] = tran;
            } else if (tran.getTransportType() == Transport.TRANSPORTING) {
                transIngs[indexTran++] = tran;
            } else if (tran.getTransportType() == Transport.RECEIVED) {
                transRecs[indexRec++] = tran;
            }
        }
    }
    // 实现IDataAnalyse接口中数据分析方法
    @Override
    public MatchedTransport[] matchData() {
        // 创建物流匹配数组
        MatchedTransport[] matchTrans = new MatchedTransport[transSends.length];
        // 日志匹配数组下标记录
        int index = 0;
        // 数据匹配分析
        for (Transport send : transSends) {
            for (Transport tran : transIngs) {
                for (Transport rec : transRecs) {
                    if (send.getReciver().equals(tran.getReciver())
                            && send.getReciver().equals(rec.getReciver())
                            && tran.getType() != DataBase.MATHCH
                            && rec.getType() != DataBase.MATHCH) {
                        // 修改物流状态类型为“匹配”
                        send.setType(DataBase.MATHCH);
                        tran.setType(DataBase.MATHCH);
                        rec.setType(DataBase.MATHCH);
                        // 添加到匹配数组中
                        matchTrans[index++] = new MatchedTransport(send, tran, rec);
                    }
                }
            }
        }
        return matchTrans;
    }
}

【任务6.6】创建物流数据分析测试类,测试任务6.5-6.6中的程序,演示物流信息的采集、分析及打印输出

在com.qst.dms.dos 下创建TransportDataAnalyseDemo.java

功能要求:

采集4组物流信息,放到数组中,进行物流分析、过滤,对于匹配的物流信息打印输出

        // 创建一个物流业务类
    // 创建一个物流对象数组,用于存放采集的四个物流信息
    //  创建物流数据分析对象
    ;
    // 物流数据过滤
    ;
    // 物流数据分析
    ;
    // 判断objs数组是否是配置物流数组
    if (objs instanceof MatchedLogRec[]) {
      // 将对象数组强制类型转换成配置物流数组
      ;
      // 输出匹配的物流信息
      ;
    }

程序设计

package com.qst.dms.dos;
// 导入需要的类
import com.qst.dms.entity.MatchedTransport;
import com.qst.dms.entity.Transport;
import com.qst.dms.gather.TransportAnalyse;
import com.qst.dms.service.TransportService;
public class TransportDataAnalyseDemo {
    public static void main(String[] args) {
        // 创建一个物流业务类
        TransportService tb = new TransportService();
        // 创建一个物流对象数组,用于存放采集的四个物流信息
        Transport[] transports = new Transport[4];
        // 假设采集到的物流信息放在transports数组中
        transports[0] = tb.inputTransport();
        transports[1] = tb.inputTransport();
        transports[2] = tb.inputTransport();
        transports[3] = tb.inputTransport();
        // 创建物流数据分析对象
        TransportAnalyse ta = new TransportAnalyse(transports);
        // 物流数据过滤
        ta.doFilter();
        // 物流数据分析
        Object[] objs = ta.matchData();
        // 判断objs数组是否是匹配物流数组
        if (objs instanceof MatchedTransport[]) {
            // 将对象数组强制类型转换成匹配物流数组
            MatchedTransport[] matchedTransports = (MatchedTransport[]) objs;
            // 输出匹配的物流信息
            for (MatchedTransport log : matchedTransports) {
                if(log!=null) {
                    System.out.println(log);
                }
            }
        }
    }
}

测试

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
监控 数据挖掘 数据库
【技能实训】DMS数据挖掘项目(完整程序) 1
【技能实训】DMS数据挖掘项目(完整程序)
124 0
|
存储 数据挖掘 测试技术
【技能实训】DMS数据挖掘项目(完整程序)2
【技能实训】DMS数据挖掘项目(完整程序)
84 0
|
6月前
|
前端开发 Java 数据管理
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
108 0
|
6月前
|
数据管理 程序员 人工智能
后台数据管理系统 - 项目架构设计【黑马程序员】
后台数据管理系统 - 项目架构设计【黑马程序员】
253 0
后台数据管理系统 - 项目架构设计【黑马程序员】
|
存储 数据挖掘 Java
【技能实训】DMS数据挖掘项目-Day15
【技能实训】DMS数据挖掘项目-Day15
71 0