目录
代码模块分析:MVC
1.V 视图展示(欢迎,菜单,子菜单)
2.M 数据存储(快递数据)
3.C 调度逻辑(根据视图接收到的用户输入内容,调度数据存取)
视图层
主界面视图
1.读取用户输入流:要用private来修饰权限
2.欢迎语:void类型,打印欢迎语
3.结束语:void类型,打印结束语
4.选择身份菜单menu:返回int类型,无参;返回的是用户输入的数字。
-
打印功能序号与对应内容
-
做一些错误输入的异常处理或限制
-
错误输入则递归返回menu函数
-
返回数字
快递员界面视图
5.快递员菜单cmenu:逻辑同menu。
6.快递员录入快递提示视图:返回Express快递信息储存对象,无参;
-
打印录入快递信息的提示语
-
接收并存储用户输入的内容
-
使用对象的setxx()方法设置对象的内容,内容为用户输入的内容。
-
返回Express对象
7.查询单号视图 :返回String类型的数字,无参;
-
打印提示信息
-
接收并存储用户输入的内容
-
返回用户输入的内容
8.显示快递信息视图:void类型,参数为Express对象。仅打印提示语和快递信息(用对象调用方法)。
9.修改快递信息视图:void类型,参数为Express对象。
-
打印输入快递信息的提示语
-
接收并存储用户输入的内容
-
使用对象的setxx()方法设置对象的内容,内容为用户输入的内容。
10.询问是否删除快递视图:返回int类型,无参;返回的是用户输入的数字。
-
打印功能序号与对应内容
-
做一些错误输入的异常处理或限制
-
错误输入则递归返回delete函数
-
返回数字
11.打印所有快递信息视图:void类型,参数为二维数组。仅打印
-
两层for循环暴力搜索每个二维数组的元素。如果非空,打印信息
-
如果都是空的,没有快递信息,打印相应的提示语。
用户界面视图
12.用户输入取件码视图:逻辑同menu
其他视图(类型为void,功能为仅打印)
13.提示快递单号已存在视图
14.提示快递单号不存在视图
15.打印取件码视图
16.打印操作成功视图
dao层
1.初始化相关变量,对象:数组,已存储的数组统计量size,随机码对象等
2.存储快递add():返回Boolean型,表示是否成功存储快递。参数为Express对象。
-
如果size=100,数组已满,返回false,存储失败
-
如果size<100
-
随机生成二维数组下标
-
生成取件的随机码
-
3.生成取件随机码 :private int 类型,无参,返回的是取件的随机码
-
生成随机数字
-
while死循环
-
用取件码查询快递,返回一个二维数组对象
-
如果对象为空,则表示生成的取件码在已生成的取件码中不存在的,则返回刚刚生成的取件码
-
否则循环到有空对象为止。
-
-
4.根据单号查询快递:返回二维数组对象,参数为string型的整数。
-
用参数设置Express 对象
-
用两层for循环暴力搜索二维数组
-
将对象与二维数组用equals来比较其内容是否相同。必须用Express e.equals(data[i[j)
-
如果相同,则返回data[i[j].否则返回null.
-
5.根据取件码查询快递:与根据单号查询快递逻辑类似,但参数是int类型的随机码。并且判断条件更改为:data[i[j.getCode() == code
6.修改快递信息:void类型,两参数(旧快递信息对象,新快递信息对象)
-
删除旧对象
-
使用存储快递的add函数添加新对象
7.删除快递信息:void类型,参数为Express对象。
-
两层for暴力搜索
-
如果二维数组非空,并且用e.equals(data[i[j)作为条件,
-
满足,则令data[i[j==null,并退出最外层for循环
-
-
8.返回所有快递:返回类型为二维数组,无参。返回整个data
调度层
1.初始化视图对象view和dao层对象。
2.欢迎语
3.弹出身份选择菜单:
-
死循环
-
初始化主菜单
-
switch()选择和调用
-
4.快递员客户端:大框架与身份选择菜单相同
-
录入快递
-
打印提示信息
-
根据单号判断快递是否储存过
-
储存过,打印快递单号已存在视图
-
未储存过,用add()方法存储并打印显示快递信息视图
-
-
-
删除快递
-
输入快递单号
-
根据单号查找快递对象
-
对象为空,打印快递单号不存在视图
-
对象不为空
-
打印快递对象信息
-
调用删除delete方法。
-
-
-
-
修改快递
-
输入快递单号
-
根据单号查找快递对象
-
打印快递信息
-
对象为空,打印快递单号不存在视图
-
对象不为空,打印显示快递信息视图
-
-
提示修改(v.update(e))
-
-
打印所有
-
返回所有(dao层)
-
打印所有(view层)
-
5.用户客户端
-
取件码获取
-
根据取件码取出快递
-
如果取件码为空,打印快递单号不存在视图
-
如果取件码不为空
-
打印操作成功视图
-
打印显示快递信息视图
-
删除快递信息
-
-
Express对象
private String num; //快递单号
private String company;//快递公司
private int code;//快递取件码
@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);
}