写再前面的话:
1,本文为Java学习第五部分第一阶段所有项目回顾(快递e站部分-对应Java体系第一部分第三阶段-11-IO)集合那里我也没有把练习作业写上,当然不止这一个练习作业。哪些作业在网盘里都有对应体现。
2,整体项目系列博客(包括整体快递e站系列)
3,完整的Java体系链接(比你想的更多的Java内容)
需求介绍:
涉及到的知识点:
上一版:
面向对象+集合
这一版:
面向对象+集合+IO
代码运行成功截图:
查看所有快递
快递录入
快递删除
快递修改
用户取快递
思路分析:
上一版的流程图如下:
以上一个快递 E 栈系统03(数组+面向对象+集合)为基础讲一下这个。
首先:
新增加了一个IO工具类,用来读写文件。(从指定的文件读取数据,写入数据到指定文件)
dao层:
1,创建了整个项目存储数据的文件(静态私有不可变变量),
2,创建了一个对应的静态代码快用来创建存储数据的文件。开始时,确定快递柜大小时初始化文件,IO工具类读取文件。
3,添加/删除快递时,IO工具类写入对应信息。
异常类,test类。main层,view层,bean层都无变化
然后我们迭代一下流程图
代码
bean层
package com.wyh.rewu.bean;
import java.io.Serializable;
/**
* 快递实体类
*/
public class Expresss implements Serializable {
private String number; // 单号
private String company; // 快递公司
private int code; // 取件码
// 坐标
public Integer x;
public Integer y;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public Integer getX() {
return x;
}
public void setX(Integer x) {
this.x = x;
}
public Integer getY() {
return y;
}
public void setY(Integer y) {
this.y = y;
}
public Expresss() {
}
public Expresss(String number, String company, int code, Integer x, Integer y) {
this.number = number;
this.company = company;
this.code = code;
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Expresss{" +
"number='" + number + '\'' +
", company='" + company + '\'' +
", code=" + code +
", x=" + x +
", y=" + y +
'}';
}
}
dao层
package com.wyh.rewu.dao;
import com.wyh.rewu.bean.Expresss;
import com.wyh.rewu.util.IOUtil;
import java.io.EOFException;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.*;
public class ExpressDao{
boolean[][] cabinet = new boolean[10][]; // 二维数组表示快递柜
HashMap<Integer, Expresss> data = new HashMap<>(); // HashMap代替二维数组表示快递柜
List<Expresss> expressList = new ArrayList<>(data.values()); // 存放所有的Express对象
private int size=0; // 当前存储的快递数目(便于判断是否还有空位 否则在随机生成取件码时可能陷入死循环)
private Random random = new Random(); // 用于生成随机数
private static final String FILE_NAME = "D:\\eclipse-workspace\\C_XX_HeXinLeiKu\\c_XX_IO\\IO\\express.txt"; // 整个项目存储数据的文件
static {
System.out.println("静态方法执行");
File file = new File(FILE_NAME);
if (!file.exists()){
// 如果文件不存在,就创建一个
try {
if(file.createNewFile()){
System.out.println("第一次启动项目,创建存储文件成功");
}
} catch (IOException e) {
//e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
{
System.out.println("初始化数据");
for(int i = 0; i <