写再前面:
1,本文为Java学习第五部分第一阶段所有项目回顾(快递e站部分-对应Java体系第一部分第二阶段-08-异常)
2,整体项目系列博客(包括整体快递e站系列)
3,完整的Java体系链接(比你想的更多的Java内容)
写在前面的画话
在08-异常那里我没有写上这个作业,思来想去还是准备把所有的项目都单独写上博客,方便回顾。思路分析是重点,我会尽可能把这个项目的逻辑讲解清楚的。
需求介绍:
涉及到的知识点:
上一版:
Java基础语法(变量,数据类型,标识符,数据类型转换,方法,运算符),流程控制(API,Scanner类,执行结构),数组
这一版:
面向对象+异常处理
代码运行成功截图:
进入快递系统-输入错误信息![在这里插入图片描述](https://img-blog.csdnimg.cn/3c88bb66d6294452a80b1e7bd3643b45.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L5a6H6L6J,size_20,color_FFFFFF,t_70,g_se,x_16)
快递员界面:
快递录入
快递删除
快递修改
查看所有快递
用户取快递
思路分析:
毕竟用自己的思路讲一遍
上一版的流程图如下:(毕竟核心的逻辑就是那么回事)
因为这次需要用到面见对象+异常进行迭代,所以需要简单给代码分一下类。
既然学习了类与对象。那不把涉及到的操作的变量封装到一个类里就说不过去了。类里至少要有快递单号信息,快递公司信息和取件码信息吧。
基础的类定义完了,该写一些基础的CRUD方法了,把这些方法定义到dao层(简单方法实现层)需求里要求我们使用二维数组(快递点)保存快递的信息,那就建一个二维数组,看一下上一版的流程图,那再定义一个变量用来记录存储的快递数,定义一个随机数用来随机生成取件码。再写方法之前随便把快递点的大小定义了10*10就行。
方法无非就是增删改查+生成不重复的取件码这个样子了。不会吧,不会吧,真的需要解释吗?还是画个图吧.
view层就是见名知意了
main可以理解为主程序,调用dao与view里的方法来实现功能。
其他:
test:不用管,当成一个启动按钮,
exception:异常类,再异常处理的时候用到
代码:
bean层
package rewu.bean;
import java.util.Objects;
/**
* 快递类
*/
public class Expresss {
private String number; // 单号
private String company; // 快递公司
private int code; // 取件码
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 Expresss() {
}
public Expresss(String number, String company, int code) {
this.number = number;
this.company = company;
this.code = code;
}
@Override
public String toString() {
return "Express{" +
"number='" + number + '\'' +
", company='" + company + '\'' +
", code=" + code +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Expresss express = (Expresss) o;
return Objects.equals(number, express.number);
}
}
dao层
package rewu.dao;
import rewu.bean.Expresss;
import java.util.Random;
public class ExpressDao {
private Expresss[][]data = new Expresss[10][];
private int size; // 当前存储的快递数
{
for (int i = 0; i < 10; i++) {
data[i] = new Expresss[10];
}
}
private Random random = new Random();
/**
* 添加快递
* @param e
* @return
*/
public boolean add(Expresss e){
if (size == 100){
return false;
}
size++;// 添加一个快递,实际数量加一
// 1,随机生成2个0-9的下标
int x = -1;
int y = -1;
while (true){
x = random.nextInt(10);
y= random.nextInt(10);