本文共 3774 字,大约阅读时间需要 12 分钟。
快递e栈(控制台简易版)——集合
本节任务旨在通过面向对象思想,结合集合数据结构,完成一个简易的快递管理控制台项目。该项目模块包含用户界面、数据存取、业务逻辑调度等核心功能。
需求分析与类定义
根据快递管理业务需求,设计了两个核心类:数据存储逻辑
为了实现快递单号快速定位功能,选择Map集合作为数据存储结构,key为快递单号,value为快递对象。这种设计确保了O(1)复杂度的查询效率,特别适合频繁查询快递信息的场景。功能实现
异常处理
针对输入错误设计了自定义异常类OutNumberBoundException,用于处理数字超出范围等异常情况。用户界面设计
系统采用分级用户界面设计,管理员和普通用户分别拥有不同的操作权限。管理员可完成快递的录入、删除、修改等管理操作,而普通用户仅能查询并取出快递。import java.util.Scanner;import java.util.Map;public class ExpressView { static Scanner input = new Scanner(System.in); static ExpressDao dao = new ExpressDao(); public static void welcome() { System.out.println("=====欢迎使用快递e栈快递柜====="); } public static void bye() { System.out.println("=====系统已退出,感谢您的使用====="); } public static int mainMenu() { int mainNum = 0; do { welcome(); System.out.println("请选择您的身份:"); System.out.println("1. 管理员"); System.out.println("2. 普通用户"); System.out.println("0. 退出"); String s = input.nextLine(); try { mainNum = validNum(s, 0, 2); break; } catch (NumberFormatException | OutNumberBoundException e) { System.out.println(e.getMessage()); } } while (true); return mainNum; } private static int validNum(String s, int begin, int end) throws NumberFormatException, OutNumberBoundException { try { int num = Integer.parseInt(s); if (num < begin || num > end) { throw new OutNumberBoundException("数字的范围必须在" + begin + "和" + end + "之间"); } return num; } catch (NumberFormatException e) { throw new NumberFormatException("输入的必须是数字!"); } } // 其他方法如:managerMain, insertExpress等...} import java.util.Map;import java.util.TreeMap;public class ExpressDao { static Map expressMap = new TreeMap<>(); public ExpressDao() { expressMap.put("1001", new Express("1001", "中通快递", 123456, 1, 3)); expressMap.put("1002", new Express("1002", "圆通快递", 456789, 2, 7)); expressMap.put("1003", new Express("1003", "顺丰速递", 123789, 6, 2)); } // 其他数据操作方法如:add, delete, findExpressByNumber等...} public class Express { private String number; private String company; private int code; private int x; private int y; 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; } @Override public String toString() { return "快递信息[" + "快递单号:" + getNumber() + ", 快递公司:" + getCompany() + ", 取件码:" + getCode() + " , 在第" + (getX() + 1) + "行 第" + (getY() + 1) + "列柜子]"; } // getter和setter方法...} public class OutNumberBoundException extends RuntimeException { public OutNumberBoundException(String s) { super(s); }} public class Main { public static void main(String[] args) { ExpressController e = new ExpressController(); e.use(); }} 通过以上实现,完成了一个简易的快递管理系统。系统采用面向对象思想,模块化设计,支持快递的录入、删除、修改和查询功能,同时具备良好的用户交互界面和稳定的数据存取逻辑。
转载地址:http://nkhfk.baihongyu.com/