小白一看就会的Java集合写简单的快递管理系统

您所在的位置:网站首页 百世快递怎么查取货码 小白一看就会的Java集合写简单的快递管理系统

小白一看就会的Java集合写简单的快递管理系统

2024-03-16 09:00| 来源: 网络整理| 查看: 265

小白一看就会的Java集合写最简单的快递管理系统 任务概述程序思路程序分解完整代码实现效果

任务概述

管理员

快递录入

柜子位置(系统产生不能重复) 快递单号(输入产生) 快递公司(输入产生) 6位取件码(系统产生不能重复)

删除快递(根据单号)

修改快递(根据单号)

查看所有快递(遍历)

普通用户

快递取出

输入取件码:显示快递信息和哪个柜子中,从柜子中移除这个快递 程序思路

1.视图和部分功能(view)

呈现给用户所看到的界面和大致的功能,如:文字提示等等。 同时让自己写程序有一个大局观,知道下一步该做什么。

2.通用对象方法(express)

建立通用方法和对象,方便使用

3主程序(main)

用主程序调用之前的视图和功能类方法,直接连接运行 程序分解

1.View 需要实现的内容:

(1)欢迎和再见 (2)选择管理员或者用户身份菜单(判断输入参数要合理) (3)快递员浏览的菜单、用户浏览的菜单(判断输入参数要合理) (4)快递删除:是否删除界面(判断输入参数要合理) (5)提示存取错误:快递不存在、已存在的提示语 考察点:字符串转数字Integer.parseInt(text)、异常处理NumberFormatException、返回数据类型

1)欢迎和再见

public void welcome() { System.out.println("欢迎使用XXX快递管理系统!"); } public void bye() { System.out.println("再见,欢迎下次使用!"); }

2)选择管理员或者用户身份菜单

public int menu() { //提示用户输入 System.out.println("请根据提示,输入功能序号:"); System.out.println("1.快递员"); System.out.println("2.普通用户"); System.out.println("0.退出"); //接收输入内容存储到text String text = input.nextLine(); //异常处理 int num = -1; try { //字符串转数字 num = Integer.parseInt(text); }catch(NumberFormatException e) { } //判断,防止用户误操作 if ( num 2 ) { System.out.println("输入错误,请重新输入0-2之间的功能序号:"); //返回menu让用户重新输入 return menu(); } return num; }

3)快递员浏览的菜单、用户浏览的菜单(判断输入参数要合理)

//快递员浏览的菜单 public int cMenu(){ //提示用户 System.out.println("请根据提示,输入功能序号:"); System.out.println("1.快递录入"); System.out.println("2.快递修改"); System.out.println("3.快递删除"); System.out.println("4.查看所有快递"); System.out.println("0.返回上级目录"); String text = input.nextLine(); int num = -1; try { num = Integer.parseInt(text); }catch(NumberFormatException e) { } if ( num 4 ) { System.out.println("输入错误,请重新输入0-4的功能序号:"); return cMenu(); } return num; } //用户浏览的菜单 public int uMenu(){ //提示用户 System.out.println("请根据提示,进行取件:"); System.out.println("请输入您的取件码:"); //接收用户输入的取件码存储到变量code String code = input.nextLine(); //异常处理 int num = -1; try { num = Integer.parseInt(code); }catch(NumberFormatException e) { } //判断是否为6位数取件码 if ( num 999999 ) { System.out.println("输入错误,请重新输入6位取件码:"); //不是让用户重新输入 return uMenu(); } return num; }

4)快递删除:是否删除界面(判断输入参数要合理)

public int delete() { //提示用户输入 System.out.println("是否确认删除:"); System.out.println("1.确认删除"); System.out.println("2.取消删除"); //接收用户输入的取件码存储到变量text String text = input.nextLine(); int num = -1; try { num = Integer.parseInt(text); }catch(NumberFormatException e) { } if ( num 2 ) { System.out.println("输入错误,请重新输入:"); return delete(); } return num; }

5)提示存取错误:快递不存在、已存在的提示语

public void expressExit(){ System.out.println("此单号在快递柜中已存在,请勿重复存储!"); } public void printNull(){ System.out.println("快递不存在,请检查输入!"); }

2.Express 需要实现的内容:

(1)创建快递对象 (2)无参构造方法 (3)有参构造方法 (4)Getter和Setter方法 (5)equals()和hashCode方法 (6)toString()方法 public Express(String number) { this.number = number; } public Express(String number, String company, int code, int x, int y) { this.number = number; this.company = company; this.code = code; this.x = x; this.y = y; } public String getNumber() { return number; } public String getCompany() { return company; } public int getCode() { return code; } public int getX() { return x; } public int getY() { return y; } public void setNumber(String number) { this.number = number; } public void setCompany(String company) { this.company = company; } public void setCode(int code) { this.code = code; } public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; } @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 && x == express.x && y == express.y && Objects.equals(number, express.number) && Objects.equals(company, express.company); } @Override public int hashCode() { return Objects.hash(number, company, code, x, y); } @Override public String toString() { return "Express{" + "number='" + number + '\'' + ", company='" + company + '\'' + ", code=" + code + ", x=" + x + ", y=" + y + '}'; } }

3.main 主程序需要实现的内容:

调用欢迎和再见 (1)case选择 (2)生成快递信息 (3)修改快递信息 (4)删除快递信息 (5)查询快递信息

1)case选择

//快递员菜单 m:while (true) { int menu = v.menu(); switch (menu) { case 0: // 退出 v.bye(); break m; case 1: // 快递员 cClient(); break; case 2: // 普通用户 uClient(); break; } } while (true) { int menu = v.cMenu(); switch (menu) { case 0: return; case 1:{ // 快递录入 System.out.println("请根据提示,输入快递信息:"); System.out.println("请输入快递公司:"); String company = input.nextLine(); System.out.println("请输入快递单号:"); String number = input.nextLine(); // 内容 } break; case 2: { // 快递修改 System.out.println("请输入要修改的快递单号:"); String oldExpressNumber = input.nextLine(); // 内容 } break; case 3 : { // 快递删除 System.out.print("请输入要删除的快递单号:"); String delExpressNumber = input.nextLine(); // 内容 } break; case 4 :{ // 查看所有快递 // 内容 } break; } }

2)生成快递信息(快递录入)

// 随机生成不重复的六位数取货码 int code = 0; do{ code = random.nextInt(900000)+100000; }while(expressMap.get(code) != null); // Hashmap保证不重复 // 生成 不重复 的快递位置 int x = -1; int y = -1; do{ x = random.nextInt(10); y = random.nextInt(10); }while(expressMap.get(x) != null && expressMap.get(y) != null); // 创建一个快递对象 Express e = new Express(number,company,code,x,y); expressMap.put(number, e); System.out.println("恭喜你,快递存储成功!"); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列"); System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]"); //记录存储的快递数 count++; System.out.println("当前快递存储数为:"+count);

3)修改快递信息

System.out.println("请输入新的快递信息:"); System.out.println("请输入快递公司:"); String company = input.nextLine();//接收输入 System.out.print("请输入新的快递单号:"); String newExpressNumber = input.nextLine();//接收输入 //找到旧的快递取件码和位置 int code = expressMap.get(oldExpressNumber).getCode(); int x = expressMap.get(oldExpressNumber).getX(); int y = expressMap.get(oldExpressNumber).getY(); //更新新的快递数据 Express e = new Express(newExpressNumber,company,code,x,y); //删除之前的快递单号 expressMap.remove(oldExpressNumber); expressMap.put(newExpressNumber, e); System.out.println("恭喜你,快递信息修改成功!"); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列"); System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]");

4)删除快递信息

int type = v.delete(); if (type == 1) { // 取货码 存储位置 快递 信息清空 expressMap.remove(expressMap.get(delExpressNumber).getCode()); expressMap.remove(expressMap.get(delExpressNumber).getX()); expressMap.remove(expressMap.get(delExpressNumber).getY()); expressMap.remove(delExpressNumber); System.out.println("恭喜你,快递删除成功!"); //减去快递删除数量 count --; System.out.println("当前快递存储数为:"+count);

5)查询快递信息

// 查看所有快递 for (String number : expressMap.keySet()) { Express e = expressMap.get(number); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列") System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]"); //根据单号查找快递 for (String number : expressMap.keySet()) { temp ++ ; // 单号存在 if (expressMap.get(number).getCode() == code ){ String s = number; Express e = expressMap.get(s); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列"); System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]"); // 用户取件后删除之前的数据 System.out.println("取货成功!"); expressMap.remove(e.getCode()); expressMap.remove(e.getX()); expressMap.remove(e.getY()); expressMap.remove(e.getNumber()); count --; break; // 单号不存在 } else if (count == temp ){ //调用视图View里的printNull提示用户 v.printNull(); } 完整代码

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("欢迎下次使用!"); } // 选择身份的菜单 public int menu() { System.out.println("请根据提示,输入功能序号:"); System.out.println("1.快递员"); System.out.println("2.普通用户"); System.out.println("0.退出"); String text = input.nextLine(); int num = -1; try { num = Integer.parseInt(text); }catch(NumberFormatException e) { } if ( num 2 ) { System.out.println("输入错误,请重新输入:"); return menu(); } return num; } // 快递员浏览的菜单 public int cMenu(){ System.out.println("请根据提示,输入功能序号:"); System.out.println("1.快递录入"); System.out.println("2.快递修改"); System.out.println("3.快递删除"); System.out.println("4.查看所有快递"); System.out.println("0.返回上级目录"); String text = input.nextLine(); int num = -1; try { num = Integer.parseInt(text); }catch(NumberFormatException e) { } if ( num 4 ) { System.out.println("输入错误,请重新输入:"); return cMenu(); } return num; } // 用户浏览的菜单 public int uMenu(){ System.out.println("请根据提示,进行取件:"); System.out.println("请输入您的取件码:"); String code = input.nextLine(); int num = -1; try { num = Integer.parseInt(code); }catch(NumberFormatException e) { } if ( num 999999 ) { System.out.println("输入错误,请重新输入:"); return uMenu(); } return num; } // 询问是否删除 public int delete() { System.out.println("是否确认删除:"); System.out.println("1.确认删除"); System.out.println("2.取消删除"); String text = input.nextLine(); int num = -1; try { num = Integer.parseInt(text); }catch(NumberFormatException e) { } if ( num 2 ) { System.out.println("输入错误,请重新输入:"); return delete(); } return num; } public void expressExit(){ System.out.println("此单号在快递柜中已存在,请勿重复存储!"); } public void printNull(){ System.out.println("快递不存在,请检查输入!"); } }

Express对象方法

import java.util.Objects; public class Express { private String number; // 快递单号 private String company; // 快递公司 private int code; // 取件码 private int x; // 快递箱排数 private int y; // 快递箱列数 public Express(String number) { this.number = number; } public Express(String number, String company, int code, int x, int y) { this.number = number; this.company = company; this.code = code; this.x = x; this.y = y; } public String getNumber() { return number; } public String getCompany() { return company; } public int getCode() { return code; } public int getX() { return x; } public int getY() { return y; } public void setNumber(String number) { this.number = number; } public void setCompany(String company) { this.company = company; } public void setCode(int code) { this.code = code; } public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; } @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 && x == express.x && y == express.y && Objects.equals(number, express.number) && Objects.equals(company, express.company); } @Override public int hashCode() { return Objects.hash(number, company, code, x, y); } @Override public String toString() { return "Express{" + "number='" + number + '\'' + ", company='" + company + '\'' + ", code=" + code + ", x=" + x + ", y=" + y + '}'; } }

Main主程序

import java.util.*; public class main { private static View v = new View(); private static Map expressMap = new HashMap(); private static Scanner input = new Scanner(System.in); private static Random random = new Random(); private static int count; public static void main(String[] args) { v.welcome(); // 身份选择菜单 m:while (true) { int menu = v.menu(); switch (menu) { case 0: // 退出 v.bye(); break m; case 1: // 快递员 cClient(); break; case 2: // 普通用户 uClient(); break; } } } // 快递员菜单 private static void cClient() { while (true) { int menu = v.cMenu(); switch (menu) { case 0: return; case 1:{ // 快递录入 System.out.println("请根据提示,输入快递信息:"); System.out.println("请输入快递公司:"); String company = input.nextLine(); System.out.println("请输入快递单号:"); String number = input.nextLine(); if (expressMap.get(number) != null) { v.expressExit(); } else { // 生成 不重复 的六位数取货码 int code = 0; do{ code = random.nextInt(900000)+100000; }while(expressMap.get(code) != null); // 生成 不重复 的快递位置 int x = -1; int y = -1; do{ x = random.nextInt(10); y = random.nextInt(10); }while(expressMap.get(x) != null && expressMap.get(y) != null); Express e = new Express(number,company,code,x,y); expressMap.put(number, e); System.out.println("快递存储成功!"); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列"); System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]"); count++; System.out.println("当前快递存储数为:"+count); } } break; case 2: { // 快递修改 System.out.println("请输入要修改的快递单号:"); String oldExpressNumber = input.nextLine(); if (expressMap.get(oldExpressNumber) == null) { v.printNull(); } else { System.out.println("请输入新的快递信息:"); System.out.println("请输入快递公司:"); String company = input.nextLine(); System.out.print("请输入新的快递单号:"); String newExpressNumber = input.nextLine(); int code = expressMap.get(oldExpressNumber).getCode(); int x = expressMap.get(oldExpressNumber).getX(); int y = expressMap.get(oldExpressNumber).getY(); Express e = new Express(newExpressNumber,company,code,x,y); expressMap.remove(oldExpressNumber); expressMap.put(newExpressNumber, e); System.out.println("恭喜你,快递信息修改成功!"); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列"); System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]"); } } break; case 3 : { // 快递删除 System.out.print("请输入要删除的快递单号:"); String delExpressNumber = input.nextLine(); if (expressMap.get(delExpressNumber) == null) { v.printNull(); } else { int type = v.delete(); if (type == 1) { // 取货码 存储位置 快递 信息清空 expressMap.remove(expressMap.get(delExpressNumber).getCode()); expressMap.remove(expressMap.get(delExpressNumber).getX()); expressMap.remove(expressMap.get(delExpressNumber).getY()); expressMap.remove(delExpressNumber); System.out.println("快递删除成功!"); count --; System.out.println("当前快递存储数为:"+count); } } } break; case 4 :{ // 查看所有快递 for (String number : expressMap.keySet()) { Express e = expressMap.get(number); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列"); System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]"); } System.out.println("当前快递存储数为:"+count); break; } } } } private static void uClient() { int code = v.uMenu(); int temp = 0; // 根据code找快递单号 for (String number : expressMap.keySet()) { temp ++ ; // 单号存在 if (expressMap.get(number).getCode() == code ){ String s = number; Express e = expressMap.get(s); System.out.println("快递存放在第[" + (e.getX() + 1) + "]排第[" + (e.getY() + 1) + "]列"); System.out.println("快递信息:"+"快递公司:[" + e.getCompany() + "],快递号单号:[" + e.getNumber() + "]," +"取件码:[" + e.getCode() + "]"); // 用户取件后 System.out.println("取货成功!"); expressMap.remove(e.getCode()); expressMap.remove(e.getX()); expressMap.remove(e.getY()); expressMap.remove(e.getNumber()); count --; break; // 单号不存在 } else if (count == temp ){ v.printNull(); } } } } 实现效果

录入 在这里插入图片描述

删除 在这里插入图片描述 用户取件 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3