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

news2024/9/23 5:32:52

文章目录

  • 任务3
    • 【任务3.1】实现日志实体类
    • 【任务3.2】创建日志业务类,实现日志信息的采集及打印输出
    • 【任务3.3】创建日志测试类,测试任务3.2中的程序,演示日志信息的采集及打印输出
  • 任务4
    • 【任务4.1】物流实体信息类
    • 【任务4.2】创建物流业务类,实现物流信息的采集及打印输出
    • 【任务4.3】创建物流测试类,测试任务4.2中的程序,演示物流信息的采集及打印输出

任务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);
    }
}

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

存在哪些可能的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);
    }
}

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

2

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Slicer学习笔记(六十四) 关于3DSlicer的python脚本和编程

Slicer学习笔记(六十四) 关于3DSlicer的python脚本和编程 目标1. 软件结构2. 在Slicer中使用python控制台 简单的脚本模块示例3. 单独编写简单的脚本模块目标 1. 软件结构 Slicer应用程序架构 模块类型:c++可加载 模块类型:脚本加载 模块类型:CLI Slicer数据模型 MRML

SendGrid 无法注册,Create Account 按钮灰色无法点击

问题描述: 注册SendGrid的时候,账号密码都输好了,就是没办法点【Create Account】。 解释思路: 其实空白处有一个reCAPTCHA 验证码,但是被隐去了。所以我们的思路是如何让网页中的reCAPTCHA 验证码顺利显示出来。 问…

vue实现一个购物车全功能

效果图: 1.静态代码结构渲染 <div class"app-container" id"app"><!-- 顶部banner --><div class"banner-box"><img src"http://autumnfish.cn/static/fruit.jpg" alt"" /></div><!-- 面包…

了解个人所得税

文章目录 1 个人所得税1.1 前置知识&#xff08;一定多看几遍&#xff09;1.2 个人所得税计算 2 汇算清缴参考 1 个人所得税 1.1 前置知识&#xff08;一定多看几遍&#xff09; 首先我们要弄清楚几个概念&#xff1a; ① 应纳税所得额 综合所得额 - 免征 - 扣除 ② 综合所…

Selenium浏览器自动化测试框架简单介绍

目录 selenium简介 介绍 功能 优势 基本使用 获取单节点 获取多节点 节点交互 动作链 执行JavaScript代码 获取节点信息 切换frame 延时等待 前进和后退 cookies 选项卡管理 异常处理 选项卡切换 无头浏览器 selenium简介 介绍 Selenium [1] 是一个用于We…

VectorCAST软件的License 配置

一、配置 License 服务 进入 VectorCAST 安装目录&#xff08;默认为 C:\VCAST&#xff0c;如果在安装时修改了安装路径&#xff0c;在这里需要进入对 应的安装目录&#xff09;&#xff0c;找到 FLEXlm 文件夹&#xff0c;将 License 文件复制到 FLEXlm 文件夹下面。运行 lmt…

当你按下键盘A键

CPU 里面的内存接口&#xff0c;直接和系统总线通信&#xff0c;然后系统总线再接入一个 I/O 桥接器&#xff0c;这个 I/O 桥接器&#xff0c;另一边接入了内存总线&#xff0c;使得 CPU 和内存通信。再另一边&#xff0c;又接入了一个 I/O 总线&#xff0c;用来连接 I/O 设备&…

视图与索引的详细用法

视图与索引的详细用法 1.视图的主要作用包括&#xff1a;1.简化查询&#xff1a;2.数据安全性&#xff1a;3.数据抽象&#xff1a; 2.索引简介1.索引的作用主要有以下几个方面&#xff1a;1.快速定位数&#xff1a;2. 提高查询性能3.加速排序和连接操作4.维护数据完整性 3.索引…

文字和祝福语:创意的粒子效果网页(❤️好看好用❤️)HTML+CSS+JS

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

Flink DataStream之Union合并流

新建类 package test01;import jdk.nashorn.internal.runtime.regexp.joni.Config; import org.apache.flink.api.java.ExecutionEnvironment; import org.apache.flink.configuration.Configuration; import org.apache.flink.streaming.api.datastream.DataStream; import o…

【SpringBoot3】--01.快速入门、基本框架原理、常用注解、yaml配置文件、日志配置

文章目录 SpringBoot3核心特性1.简介1. 1前置知识1.2 环境要求1.3SpringBoot是什么 2.快速入门2.1开发流程2.1.1创建项目2.1.2导入场景2.1.3 主程序2.1.4 业务2.1.5 测试2.1.6 打包 2.2 特性小结2.2.1 简化整合2.2.2简化开发2.2.3 简化配置2.2.4 简化部署2.2.5 简化运维 2.3 Sp…

iOS通用链接(UniversalLink)配置详细流程

一、Universal Links 配置过程 登录苹果账号后&#xff0c;点击创建的APP 的Bundle ID&#xff0c;跳转到APP 信息页面。记录下Team ID 和Bundle ID 备用。勾选上 功能列表上的 ”Associated Domains“选项。 配置苹果后台 创建一个text空文本文件&#xff0c;去掉文件后缀&a…

【Linux | Shell】构建基础脚本 - 读书笔记

目录 一、创建第一个Shell脚本1.1 执行多个命令1.2 创建 shell 脚本1.2.1 指定使用的shell1.2.2 在脚本文件各行输入命令1.2.3 添加执行权限1.2.4 执行脚本 1.3 显示消息——echo命令 二、使用变量2.1 三四五 一、创建第一个Shell脚本 前面得文章介绍过一些基础的 Linux 命令了…

【InnoDB 存储引擎】5.4.5 The Slow Query Log(慢日志实验, 详细描述了与 MySQL 相关的慢日志方方面面)

文章目录 1 慢日志实验环境准备2 开始实验2.1 实验 1&#xff1a;超过查询时间相关慢日志并观察2.2 实验 2&#xff1a;不使用索引相关慢日志并观察2.3 实验 3&#xff1a;打印额外的慢日志信息2.4 实验 4&#xff1a;使用 mysqldumpslow 工具分析日志文件2.5 实验 5&#xff1…

【雕爷学编程】Arduino动手做(153)---2.4寸TFT液晶触摸屏模块5

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【计算机组成与体系结构Ⅰ】实验5 CPU组成与机器指令执行实验

一、实验目的 1&#xff1a;将微程序控制器同执行部件&#xff08;整个数据通路&#xff09;联机&#xff0c;组成一台模型计算机。 2&#xff1a;用微程序控制器控制模型机数据通路。 3&#xff1a;通过CPU运行几条机器指令&#xff08;排除中断指令&#xff09;组成的简单…

MARLIN: Masked Autoencoder for facial video Representation LearnINg

题目MARLIN: Masked Autoencoder for facial video Representation LearnINg译题MARLIN&#xff1a;用于面部视频表示的 maked 自动编码器 LearnINg时间2023年期刊/会议CVPR 论文链接&#xff1a;MARLIN_MASKED_Autoencoder_for_Facial_Video_Representation_Learning MARLIN…

C++11右值引用(移动构造、完美转发等)

在讲解移动构造和完美转发之前&#xff0c;我们需要先了解什么是右值引用。 但在讲解右值引用之前&#xff0c;我们也得知道左值和右值分别是什么&#xff0c;有什么区别。 目录 左值与右值 左值与左值引用 右值与右值引用 引用和右值引用的区别 移动构造 移动赋值 插…

基于simulink处理监控视频以选择包含运动的帧(附源码)

一、前言 此示例演示如何处理监控视频以选择包含运动的帧。安全问题要求使用摄像机对重要位置进行持续监控。为了有效地记录、查看和存档这些海量数据&#xff0c;您可以减小视频帧大小或减少录制的视频帧总数。此示例说明了后一种方法。在其中&#xff0c;相机视野中的运动会…

1762_gcc编译c语言makefile自动生成工具的Perl实现

全部学习汇总&#xff1a; GreyZhang/g_makefile: Learn makefile from all kinds of tutorials on the web. Happy hacking and lets find an common way so we may dont need to touch makefile code any more! (github.com) 前阵子实现了一个CodeWarrior嵌入式开发环境的自动…