今天不学习,明天变垃圾。U1S1,讲道理吧,其实不用变
优化的逻辑
前两篇文章,快递的数据都是存在内存里的,一旦断开程序数据就丢失了。总不能一辈子都不断电吧,必须用IO优化掉。
为优化成IO,将快递的存储容器再次改变,由HashMap优化为Properties(Properties也是key-value的一种,不需要指定key和value的数据类型,因为都必须是String)。因此作为int类型的取件码code必须被改造为String。作为value的Express类采用了jackson将其转化为Json字符串的形式。(这里导入了三个与jackson相关的包,用maven添加依赖也可以)。将数据从容器中进行读取以后,再强转为Express对象就可以了。
数据都存在了express.properties文件中,听java工程师舍友说,.properties文件已经不咋用了,那以后再优化掉他(考虑优化为XML吧,据说这个东西还有人用)。数据的output和input使用了转换流,charset使用了gbk实现中文数据的可读
第一步:JavaBean
跟(二)相比,没有做一个标点符号上的改变
import java.util.Objects;
public class Express{
//快递公司名
private String company;
// 快递单号
private String num;
// 快递取件码
private String code;
// 快递所在柜子号
private int lockerNumber;
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public int getLockerNumber() {
return lockerNumber;
}
public void setLockerNumber(int lockerNumber) {
this.lockerNumber = lockerNumber;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Express express = (Express) o;
return Objects.equals(num, express.num);
}
@Override
public String toString() {
return "Express{" +
"company='" + company + '\'' +
", num='" + num + '\'' +
", code=" + code +
", lockerNumber=" + lockerNumber +
'}';
}
}
第二步:View
没有改变的必要,能敲出来就是美,界面功能完善又不能吃
import java.util.Scanner;
public class View {
private Scanner input = new Scanner(System.in);
public void welcome(){
System.out.println("欢迎使用xxx快递管理系统");
}
public void bye(){
System.out.println("您已退出xxx快递管理系统,期待您的下次使用");
}
public int menu(){
System.out.println("请输入你要选择的功能序号:1.管理员相关功能;2.用户相关功能;0.退出快递管理系统");
try{
String identitySelect = input.nextLine();
int idSelect = Integer.parseInt(identitySel