java-Arraylist集合实现模拟快递柜
1.主函数
package main;
import Express.Dao.MyList;
import Express.Menu;
import Express.bean.Express;
/**
* @Author: 王洋洋
* @Description:
* @Date Created in 2020-08-15 13:11
* @Modified By:
*/
public class Main {
//初始化
private static MyList myList = new MyList();
private static Menu menu = new Menu();
public static void main(String[] args) {
//1.欢迎
menu.welcome();
//2.第一菜单
m:while (true){
int me = menu.topMenu();
switch (me) {
case 0:
break m;
case 1:
uClient();
break;
case 2:
cClient();
break;
default:
}
}
menu.bye();
}
//用户客户端
private static void uClient() {
//输入的取件码
int code = menu.userMenu();
//根据取件码取快递
Express e = myList.getExpress(code);
if(e == null){
menu.printNull();
}else {
//打印成功
menu.delVac();
//打印快递信息
menu.printExpress(e);
//删除快递
myList.delExpress(e);
}
}
//快递员客户端
private static void cClient() {
while (true){
int me = menu.admMenu();
switch (me) {
case 0:
//回到上层目录
return;
case 1: {
//视图
Express e = menu.insert();
myList.addExpress(e);
}
break;
case 2:{
//快递修改
String number = menu.findByNumber();
Express e = myList.findExpress(number);
if(e == null){
//如果内容为空
menu.printNull();
}else{
//调用方法,判断单号是否一样,然后再修改信息
menu.printExpress(e);
menu.update(e);
myList.updateExpress(e,e);
menu.printCode(e);
}
}
break;
case 3: {
//快递删除,和修改类似
String number = menu.findByNumber();
Express e = myList.findExpress(number);
if(e == null){
menu.printNull();
}else {
menu.printExpress(e);
int type = menu.delete();
//如果输入1就确定删除 输入2就返回
if(type == 1){
myList.delExpress(e);
menu.delVac();
}
}
}break;
case 4:
//快递查看
myList.findAllExpress();
break;
default:
}
}
}
}
2.视图界面class Menu
package Express;
import Express.bean.Express;
import javax.swing.*;
import javax.swing.text.StyledEditorKit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
/**
* @Author: 王洋洋
* @Description:
* @Date Created in 2020-08-12 21:26
* @Modified By:
*/
public class Menu {
private Scanner input = new Scanner(System.in);
//开始菜单
public void welcome() {
System.out.println("=============欢迎使用===========");
}
//结束菜单
public void bye(){
System.out.println("欢迎下次使用");
}
//--------------------------------------views 主菜单-------------------------------------
public int topMenu() {
System.out.println("选择: 1.用户取件 2.管理员登陆 0.退出");
//可以输入整形或字符串
String text = input.nextLine();
//先定义num,然后转成输入的形式
int num = -1;
//异常处理
try {
num = Integer.parseInt(text);
}
catch (NumberFormatException e) {
}
if(num<0 || num>2){
System.out.println("输入有误 重新输入");
return topMenu();
}
return num;
}
//--------------------------------------views 管理员菜单-------------------------------------
public int admMenu(){
System.out.println("选择: 1.存快递 2. 快递修改 3.删除快递 4.查询所有快递 0.返回");
String text = input.nextLine();
int num = -1;
try {
num = Integer.parseInt(text);
}
catch (NumberFormatException e) {
}
if(num<0 || num>4){
System.out.println("输入有误 重新输入");
return admMenu();
}
return num;
}
//--------------------------------------views 用户菜单-------------------------------------
public int userMenu(){
System.out.println("请输入取件码");
String code = input.nextLine();
int num = -1;
try {
num = Integer.parseInt(code);
}
catch (NumberFormatException e) {
}
if(num<100000 || num>999999){
System.out.println("输入有误 重新输入");
return userMenu();
}
return num;
}
//--------------------------------------views 录入快递-------------------------------------
/**
*@Description
快递员录入
*@Return Express.bean.Express,包含了快递单号和快递公司的快递对象
**/
public Express insert(){
System.out.println("请输入要录入的快递单号");
String number = input.nextLine();
System.out.println("请输入公司名称");
String company = input.nextLine();
Express e = new Express();
e.setCompany(company);
e.setNumber(number);
return e;
}
//--------------------------------------views 修改快递-------------------------------------
//先寻找快递
public String findByNumber(){
System.out.println("请输入要修改的快递单号");
String number = input.nextLine();
return number;
}
public void update(Express e){
System.out.println("请输入新的快递单号");
String number = input.nextLine();
System.out.println("请输入新的快递公司");
String company = input.nextLine();
e.setCompany(company);
e.setNumber(number);
//对象已经改变
}
//--------------------------------------views 删除快递-------------------------------------
public int delete(){
System.out.println("是否确认删除 1 .是 2. 否 ");
String text = input.nextLine();
int num = -1;
try {
num = Integer.parseInt(text);
}
catch (NumberFormatException e) {
}
if(num<1 || num>2){
System.out.println("输入有误 重新输入");
return delete();
}
return num;
}
//快递不存在的视图
public void printNull(){
System.out.println("快递不存在");
}
//打印所以快递信息的视图
public void printAll(List<Menu> list){
if(list.isEmpty()){
System.out.println("没有信息");
return;
}else {
//使用toArray打印所有信息
System.out.println(list.toArray().toString());
}
}
//快递已存在的视图
public void expressExist(){
System.out.println("快递已经存在,请检查");
}
//取件码视图
public void printCode(Express e){
System.out.println("快递的取件码为"+e.getCode());
}
//成功的视图
public void delVac(){
System.out.println("成功");
}
}
3.方法实现class MyList
package Express.Dao;
import Express.bean.Express;
import java.util.ArrayList;
import java.util.Random;
/**
* @Author: 王洋洋
* @Description:
* @Date Created in 2020-08-15 12:06
* @Modified By:
*/
public class MyList {
private ArrayList<Express> list = new ArrayList<>();
Random random = new Random();
//添加快递
public boolean addExpress(Express e){
//设定只有25个柜子
if(list.size() == 25){
return false;
}
int x = -1;
//取件码。生成6位随机数
int code = randomCode();
e.setCode(code);
//把对象存入集合list中
list.add(e);
return true;
}
private int randomCode(){
while (true) {
int code = random.nextInt(900000)+100000;
Express e = getExpress(code);
if(e == null){
return code;
}else {
}
}
}
//根据快递单号查询
public Express findExpress(String number){
Express e = new Express();
e.setNumber(number);
for(int i = 0;i<list.size();i++){
if(e.getNumber().equals(list.get(i).getNumber())){
return list.get(i);
}
}
return null;
}
//根据取件码取件
public Express getExpress(int code){
for(int i = 0;i<list.size();i++){
if(list.size() != 0 && list.get(i).getCode() == code){
return list.get(i);
}
}
return null;
}
//删除
public void delExpress(Express e){
p:for(int i = 0;i<list.size();i++){
if(e.equals(list.get(i))){
list.remove(i);
break p;
}
}
}
//更新快递信息
public void updateExpress(Express oldExpress,Express newExpress){
delExpress(oldExpress);
addExpress(newExpress);
}
//遍历所有的快递
public void findAllExpress(){
for(int i = 0 ; i < list.size() ; i++){
System.out.println(list.get(i).toString());
}
}
}
4.对象存储class Express
package Express.bean;
import java.util.Objects;
/**
* @Author: 王洋洋
* @Description:
* @Date Created in 2020-08-15 11:33
* @Modified By:
*/
public class Express {
//快递单号
private String number;
//快递公司
private String company;
//取件码
private int code;
public Express(String number, String company, int code) {
this.number = number;
this.company = company;
this.code = 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 code == express.code;
}
@Override
public int hashCode() {
return Objects.hash(code);
}
@Override
public String toString() {
return "Express{" +
"number='" + number + '\'' +
", company='" + company + '\'' +
", code=" + code +
'}';
}
public Express() {
}
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;
}
}