任务3
【任务3.1】实现日志实体类
在com.qst.dms.entity 下创建LogRec.java
功能要求:
- 成员属性如下
// 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;// "保存";
- 构造方法、get/set方法、toString()。
- 实现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
功能要求:
- 实现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方法中实现,在控制台模拟接收数据,并返回日志数据对象
- 实现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
功能要求:
- 成员属性如下
// 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;// "保存";
- 构造方法、get/set方法、toString()
- 实现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
功能要求:
- 实现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();
- 实现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的其他字符时,提醒用户重新输入。