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

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【技能实训】DMS数据挖掘项目-Day02

任务3

【任务3.1】实现日志实体类

在com.qst.dms.entity 下创建LogRec.java

功能要求:

  1. 成员属性如下
    // ID标识
  private int id;
  // 时间
  private Date time;
  // 地点
  private String address;
  // 状态
  private int type;
  /**
   * 登录用户名
   */
  private String user;
  /**
   * 登录用户主机IP地址
   */
  private String ip;
  /**
   * 登录状态:登录、登出
   */
  private int logType;
  /**
   * 登录常量LOG_IN、登出常量LOG_OUT
   */
  public static final int LOG_IN = 1;
  public static final int LOG_OUT = 0;
  // 状态常量(公共的静态常量)
  public static final int GATHER = 1;// "采集"
  public static final int MATHCH = 2;// "匹配";
  public static final int RECORD = 3;// "记录";
  public static final int SEND = 4;// "发送";
  public static final int RECIVE = 5;// "接收";
  public static final int WRITE = 6;// "归档";
  public static final int SAVE = 7;// "保存";
  1. 构造方法、get/set方法、toString()。
  2. 实现toArray()方法,将对象的属性数据,转换为字符数组。

程序设计

package com.qst.dms.entity;
import java.util.Date;
public class LogRec {
    // ID标识
    private int id;
    // 时间
    private Date time;
    // 地点
    private String address;
    // 状态
    private int type;
    /**
     * 登录用户名
     */
    private String user;
    /**
     * 登录用户主机IP地址
     */
    private String ip;
    /**
     * 登录状态:登录、登出
     */
    private int logType;
    /**
     * 登录常量LOG_IN、登出常量LOG_OUT
     */
    public static final int LOG_IN = 1;
    public static final int LOG_OUT = 0;
    // 状态常量(公共的静态常量)
    public static final int GATHER = 1;// "采集"
    public static final int MATCH = 2;// "匹配";
    public static final int RECORD = 3;// "记录";
    public static final int SEND = 4;// "发送";
    public static final int RECEIVE = 5;// "接收";
    public static final int WRITE = 6;// "归档";
    public static final int SAVE = 7;// "保存";
    public static final String LogTypeArray[]=new String[]{
        "LogOut",
        "LogIn"
    };
    public LogRec(int id, Date time, String address, int type, String user, String ip, int logType) {
        this.id = id;
        this.time = time;
        this.address = address;
        this.type = type;
        this.user = user;
        this.ip = ip;
        this.logType = logType;
    }
    public LogRec() {
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public Date getTime() {
        return time;
    }
    public void setTime(Date time) {
        this.time = time;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getType() {
        return type;
    }
    public void setType(int type) {
        this.type = type;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    public int getLogType() {
        return logType;
    }
    public void setLogType(int logType) {
        this.logType = logType;
    }
    @Override
    public String toString() {
        return "LogRec:" +
                "\nid=" + id +
                "\ntime=" + time +
                "\naddress='" + address +
                "\ntype=" + type +
                "\nuser='" + user +
                "\nip='" + ip +
                "\nlogType=" + LogTypeArray[logType] +
                "\n";
    }
    public String[] toArray() {
        String[] arr = new String[7];
        arr[0] = String.valueOf(id);
        arr[1] = String.valueOf(time);
        arr[2] = address;
        arr[3] = String.valueOf(type);
        arr[4] = user;
        arr[5] = ip;
        arr[6] = String.valueOf(LogTypeArray[logType]);
        return arr;
    }
}

【任务3.2】创建日志业务类,实现日志信息的采集及打印输出

在com.qst.dms.service 下创建LogRecService.java

功能要求:

  1. 实现inputLog方法
public LogRec inputLog() {
    ……
    }
        // 提示用户输入ID标识
    System.out.println("请输入ID标识:");
    // 接收键盘输入的整数
    int id = scanner.nextInt();
    // 获取当前系统时间
    Date nowDate = new Date();
    // 提示用户输入地址
    System.out.println("请输入地址:");
    // 接收键盘输入的字符串信息
    String address = scanner.next();
    // 数据状态是“采集”
    int type = LogRec.GATHER;
    // 提示用户输入登录用户名
    System.out.println("请输入 登录用户名:");
    // 接收键盘输入的字符串信息
    String user = scanner.next();
    // 提示用户输入主机IP
    System.out.println("请输入 主机IP:");
    // 接收键盘输入的字符串信息
    String ip = scanner.next();
    // 提示用户输入登录状态、登出状态
    System.out.println("请输入登录状态:1是登录,0是登出");
    int logType = scanner.nextInt();

在inputLog方法中实现,在控制台模拟接收数据,并返回日志数据对象

  1. 实现showLog方法,可打印输出日志信息
public void showLog(LogRec... logRecs) {
  ……
  }

程序设计

package com.qst.dms.service;
import com.qst.dms.entity.LogRec;
import java.util.Date;
import java.util.Scanner;
public class LogRecService {
    private Scanner scanner;
    public LogRecService() {
        scanner = new Scanner(System.in);
    }
    public LogRec inputLog() {
        System.out.println("请输入ID标识:");
        int id = scanner.nextInt();
        Date nowDate = new Date();
        System.out.println("请输入地址:");
        String address = scanner.next();
        int type = LogRec.GATHER;
        System.out.println("请输入登录用户名:");
        String user = scanner.next();
        System.out.println("请输入主机IP:");
        String ip = scanner.next();
        int logType;
        while (true) {
            try {
                System.out.println("请输入登录状态(1表示登录,0表示登出):");
                logType = scanner.nextInt();
                if (logType == 0 || logType == 1) {
                    break;
                } else {
                    throw new IllegalArgumentException("非法的登录状态");
                }
            } catch (Exception e) {
                System.out.println("输入错误,请重新输入");
                scanner.nextLine();
            }
        }
        return new LogRec(id, nowDate, address, type, user, ip, logType);
    }
    public void showLog(LogRec... logRecs) {
        System.out.println("日志信息:");
        for (LogRec logRec : logRecs) {
            System.out.println(logRec);
        }
    }
}

【任务3.3】创建日志测试类,测试任务3.2中的程序,演示日志信息的采集及打印输出

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

功能要求:采集2组日志信息,放到数组中,再打印输出

package com.qst.dms.dos;
import com.qst.dms.entity.LogRec;
import com.qst.dms.service.LogRecService;
public class LogRecDemo {
    public static void main(String[] args) {
        LogRecService logRecService = new LogRecService();
        // 采集日志信息
        LogRec logRec1 = logRecService.inputLog();
        LogRec logRec2 = logRecService.inputLog();
        // 放到数组中
        LogRec[] logRecArray = {logRec1, logRec2};
        // 打印输出
        logRecService.showLog(logRecArray);
    }
}

测试:

要求全部可能情况都要测一遍

存在哪些可能的bug及修复?

当登陆状态输入非0非1的其他字符时,程序会报错,应该通过异常处理当用户输入非0非1的其他字符时,提醒用户重新输入。

任务4

【任务4.1】物流实体信息类

在com.qst.dms.entity 下创建Transport.java

功能要求:

  1. 成员属性如下
    // ID标识
  private int id;
  // 时间
  private Date time;
  // 地点
  private String address;
  // 状态
  private int type;
  /**
   * 经手人
   */
  private String handler;
  /**
   * 收货人
   */
  private String reciver;
  /**
   * 物流状态
   */
  private int transportType;
  /**
   * 物流状态常量:发货中, 送货中, 已签收
   */
  public static final int SENDDING = 1;// 发货中
  public static final int TRANSPORTING = 2;// 送货中
  public static final int RECIEVED = 3;// 已签收
  // 状态常量
  public static final int GATHER = 1;// "采集"
  public static final int MATHCH = 2;// "匹配";
  public static final int RECORD = 3;// "记录";
  public static final int SEND = 4;// "发送";
  public static final int RECIVE = 5;// "接收";
  public static final int WRITE = 6;// "归档";
  public static final int SAVE = 7;// "保存";
  1. 构造方法、get/set方法、toString()
  2. 实现toArray()方法,将对象的属性数据,转换为字符数组。

程序设计

package com.qst.dms.entity;
import java.util.Date;
public class Transport {
    private int id;
    private Date time;
    private String address;
    private int type;
    private String handler;
    private String reciver;
    private int transportType;
    public static final int SENDDING = 1;
    public static final int TRANSPORTING = 2;
    public static final int RECIEVED = 3;
    public static final int GATHER = 1;
    public static final int MATHCH = 2;
    public static final int RECORD = 3;
    public static final int SEND = 4;
    public static final int RECIVE = 5;
    public static final int WRITE = 6;
    public static final int SAVE = 7;
    public static final String TransportArray[]=new String[]{
            null,
            "SENDDING",
            "TRANSPORTING",
            "RECIEVED"
    };
    public Transport() {
    }
    public Transport(int id, Date time, String address, int type, String handler, String reciver, int transportType) {
        this.id = id;
        this.time = time;
        this.address = address;
        this.type = type;
        this.handler = handler;
        this.reciver = reciver;
        this.transportType = transportType;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public Date getTime() {
        return time;
    }
    public void setTime(Date time) {
        this.time = time;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getType() {
        return type;
    }
    public void setType(int type) {
        this.type = type;
    }
    public String getHandler() {
        return handler;
    }
    public void setHandler(String handler) {
        this.handler = handler;
    }
    public String getReciver() {
        return reciver;
    }
    public void setReciver(String reciver) {
        this.reciver = reciver;
    }
    public int getTransportType() {
        return transportType;
    }
    public void setTransportType(int transportType) {
        this.transportType = transportType;
    }
    public String[] toArray() {
        String[] arr = new String[8];
        arr[0] = String.valueOf(id);
        arr[1] = String.valueOf(time);
        arr[2] = address;
        arr[3] = String.valueOf(type);
        arr[4] = handler;
        arr[5] = reciver;
        arr[6] = TransportArray[transportType];
        return arr;
    }
    @Override
    public String toString() {
        return "Transport:" +
                "\nid=" + id +
                "\ntime=" + time +
                "\naddress=" + address +
                "\ntype=" + type +
                "\nhandler=" + handler +
                "\nreciver=" + reciver +
                "\ntransportType=" + TransportArray[transportType]+
                "\n";
    }
}

【任务4.2】创建物流业务类,实现物流信息的采集及打印输出

在com.qst.dms.service 下创建TransportService.java

功能要求:

  1. 实现inputTransport方法
public Transport inputTransport() {
    ……
}

在inputTransport方法中实现,在控制台模拟接收数据,并返回物流数据

        // 提示用户输入ID标识
    System.out.println("请输入ID标识:");
    // 接收键盘输入的整数
    int id = scanner.nextInt();
    // 获取当前系统时间
    Date nowDate = new Date();
    // 提示用户输入地址
    System.out.println("请输入地址:");
    // 接收键盘输入的字符串信息
    String address = scanner.next();
    // 数据状态是“采集”
    int type = Transport.GATHER;
    // 提示用户输入登录用户名
    System.out.println("请输入货物经手人:");
    // 接收键盘输入的字符串信息
    String handler = scanner.next();
    // 提示用户输入主机IP
    System.out.println("请输入 收货人:");
    // 接收键盘输入的字符串信息
    String reciver = scanner.next();
    // 提示用于输入物流状态
    System.out.println("请输入物流状态:1发货中,2送货中,3已签收");
    // 接收物流状态
    int transportType = scanner.nextInt();
  1. 实现showTransport方法,可打印输出物流信息
public void showTransport(Transport... transports) {
  ……
}

程序设计

package com.qst.dms.service;
import com.qst.dms.entity.Transport;
import java.util.Date;
import java.util.Scanner;
public class TransportService {
    private Scanner scanner;
    public TransportService() {
        scanner = new Scanner(System.in);
    }
    public Transport inputTransport() {
        System.out.println("请输入ID标识:");
        int id = scanner.nextInt();
        Date nowDate = new Date();
        System.out.println("请输入地址:");
        String address = scanner.next();
        int type = Transport.GATHER;
        System.out.println("请输入货物经手人:");
        String handler = scanner.next();
        System.out.println("请输入收货人:");
        String reciver = scanner.next();
        int transportType;
        while (true) {
            try {
                System.out.println("请输入物流状态(1表示发货中,2表示送货中,3表示已签收):");
                transportType = scanner.nextInt();
                if (transportType ==1 || transportType == 2 || transportType==3) {
                    break;
                } else {
                    throw new IllegalArgumentException("非法的物流状态");
                }
            } catch (Exception e) {
                System.out.println("输入错误,请重新输入");
                scanner.nextLine();
            }
        }
        return new Transport(id, nowDate, address, type, handler, reciver, transportType);
    }
    public void showTransport(Transport... transports) {
        System.out.println("物流信息:");
        for (Transport transport : transports) {
            System.out.println(transport);
        }
    }
}

【任务4.3】创建物流测试类,测试任务4.2中的程序,演示物流信息的采集及打印输出

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

功能要求:采集2组物流信息,放到数组中,再打印输出

package com.qst.dms.dos;
import com.qst.dms.entity.Transport;
import com.qst.dms.service.TransportService;
public class TransportDemo {
    public static void main(String[] args) {
        TransportService transportService = new TransportService();
        // 采集物流信息
        Transport transport1 = transportService.inputTransport();
        Transport transport2 = transportService.inputTransport();
        // 放到数组中
        Transport[] transportArray = {transport1, transport2};
        // 打印输出
        transportService.showTransport(transportArray);
    }
}

测试:

要求全部可能情况都要测一遍

存在哪些可能的bug及修复?

当物流状态输入非1非2非3的其他字符时,程序会报错,应该通过异常处理当用户输入非1非2非3的其他字符时,提醒用户重新输入。

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
监控 数据挖掘 数据库
【技能实训】DMS数据挖掘项目(完整程序) 1
【技能实训】DMS数据挖掘项目(完整程序)
124 0
|
存储 数据挖掘 数据库
【技能实训】DMS数据挖掘项目-Day13
【技能实训】DMS数据挖掘项目-Day13
56 0
|
数据采集 数据挖掘 数据库管理
【技能实训】DMS数据挖掘项目-Day12
【技能实训】DMS数据挖掘项目-Day12
43 0
|
数据挖掘 数据库 数据库管理
【技能实训】DMS数据挖掘项目-Day14
【技能实训】DMS数据挖掘项目-Day14
69 1
|
存储 数据挖掘 测试技术
【技能实训】DMS数据挖掘项目(完整程序)2
【技能实训】DMS数据挖掘项目(完整程序)
84 0
|
6月前
|
前端开发 Java 数据管理
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
108 0
|
6月前
|
数据管理 程序员 人工智能
后台数据管理系统 - 项目架构设计【黑马程序员】
后台数据管理系统 - 项目架构设计【黑马程序员】
253 0
后台数据管理系统 - 项目架构设计【黑马程序员】
|
存储 数据挖掘 Java
【技能实训】DMS数据挖掘项目-Day15
【技能实训】DMS数据挖掘项目-Day15
71 0
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
103 1
|
4月前
|
SQL NoSQL 数据管理
数据管理DMS使用问题之如何批量导入MongoDB的数据文件
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。