快递e栈(控制台简易版)——集合(1)

System.out.print(“请输入快递公司:”);

String company = input.nextLine();

Express e = new Express();

e.setNumber(number);

e.setCompany(company);

return e;

}

//删除快递

public static int isDeleteExpress() throws NumberFormatException, OutNumberBoundException {

do{

System.out.println(“是否进行删除操作?”);

System.out.println(“1.确认删除”);

System.out.println(“0.取消操作”);

String s = input.nextLine();

int deleteNum = -1;

try{

deleteNum = validNum(s,0,1);

return deleteNum;

}catch(NumberFormatException | OutNumberBoundException e){

System.out.println(e.getMessage());

}

}while(true);

}

//修改快递

public Express updateExpress(){

Express e = new Express();

String number;

do{//如果快递单号已经存在,则重新输入

System.out.print(“请输入新的快递单号:”);

number = input.nextLine();

if(dao.findExpressIsExist(number) == 1){

hasExist();

}

}while(dao.findExpressIsExist(number) == 1);

System.out.print(“请输入新的快递公司:”);

String company = input.nextLine();

e.setNumber(number);

e.setCompany(company);

return e;

}

//打印所有快递信息

public static void printAllExpress(Map<String, Express> expressMap){

System.out.println(“当前快递柜存储情况:”);

for(Express express:expressMap.values()){//遍历

printExpress(express);//打印单个快递信息

}

}

//打印一个快递信息

public static void printExpress(Express e){

System.out.println(e.toString());

}

//打印快递位置信息

public static void printExpressLocation(Express e){

System.out.println(“您的快递存储在快递柜的第” + (e.getX() + 1) + “排,第” + (e.getY() + 1) + “列,取件愉快~”);

}

//用户菜单(其实是有点多余的,但是为了体现视图的圆润性)

public static int userMain(){

int userNum = 0;

do{

System.out.println(“请选择您要进行的操作:”);

System.out.println(“1.取出快递”);

System.out.println(“0.返回上一级界面”);

String s = input.nextLine();

try{

userNum = validNum(s,0,1);

break;

}catch(NumberFormatException | OutNumberBoundException e){

System.out.println(e.getMessage());

}

}while(true);

return userNum;

}

//输入取件码

public static int findByCode(){

int code = -1 ;

do{

System.out.print(“请输入取件码:”);

String s = input.nextLine();

try{

code = validNum(s,100000,999999);

break;

}catch(NumberFormatException | OutNumberBoundException e){

System.out.println(e.getMessage());

}

}while(true);

return code;

}

//输入快递单号

public static String findByNumber(){

System.out.print(“请输入快递单号:”);

String s = input.nextLine();

return s;

}

//操作成功

public static void success(){

System.out.println(“操作成功!”);

}

//快递单号已经存在

public static void hasExist(){

System.out.println(“该单号已经存在!”);

}

//快递单号不存在

public static void noExist(){

System.out.println(“快递不存在!”);

}

}

2. ExpressDao类

//将同一包下的子包中的类导入进来,此行代码需自行导包,不能直接复制

import mission.demo03.express.Express;

import java.util.Map;

import java.util.Random;

import java.util.TreeMap;

//数据存取的dao层

public class ExpressDao {

//用的是TreeMap,因为可以在输出所有快递的时候自动排序,让程序看着更加美观

static Map<String, Express> expressMap = new TreeMap<>();//key为快递单号,value为快递信息

//初始化快递柜,默认添加几个快递

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));

}

/**

  • 添加快递

  • @param express

  • @return express

*/

public static Express add(Express express){

Random random = new Random();

if(expressMap.size() == 100){

try {

throw new Exception(“快递柜已满!不能放入快递了!”);

} catch (Exception e) {

e.printStackTrace();

}

}

int x,y;

do{

x = random.nextInt(10);

y = random.nextInt(10);

}while(isExist(x,y));

int code;

do{

code = random.nextInt(100000)+900000;

}while(isExistCode(code));

express.setCode(code);

express.setX(x);

express.setY(y);

expressMap.put(express.getNumber(),express);

return express;

}

/**

  • 判断快递柜是否已存在快递

  • @param x

  • @param y

  • @return true/false

*/

public static boolean isExist(int x, int y){

for(Express express : expressMap.values()){

if(express.getX() == x && express.getY() == y){

return true;

}

}

return false;

}

/**

  • 判断取件码是否已经存在

  • @param code

  • @return true/false

*/

public static boolean isExistCode(int code){

for(Express express : expressMap.values()){

if(express.getCode() == code){

return true;

}

}

return false;

}

/**

  • 根据快递单号查找快递,返回快递对象

  • @param number

  • @return express/null

*/

public Express findExpressByNumber(String number){

for(Express express : expressMap.values()){

if(express.getNumber().equals(number)){

return express;

}

}

return null;

}

/**

  • 根据快递单号查找快递,如果不存在返回-1

  • @param number

  • @return 1/-1

*/

public static int findExpressIsExist(String number){

for(Express express:expressMap.values()){

if(express.getNumber().equals(number)){

return 1;

}

}

return -1;

}

/**

  • 根据快递单号删除快递

  • @param number

  • @return true

*/

public static boolean delete(String number) {

expressMap.remove(number);

return true;

}

/**

  • 修改快递信息

  • @param number

  • @param newExpress

*/

public static void updateExpress(String number, Express newExpress) {

Express oldExpress = expressMap.get(number);//获取旧的快递信息

oldExpress.setCompany(newExpress.getCompany());

oldExpress.setNumber(newExpress.getNumber());

}

/**

  • 获取所有的快递信息

  • @return expressMap

*/

public Map<String, Express> getExpressMap(){

return expressMap;

}

/**

  • 通过取件码查询是否存在

  • @param code

  • @return express/null

*/

public static Express findByExpressCode(int code){

Express e = new Express();

e.setCode(code);

for(Express express : expressMap.values()){

if(express.getCode() == code){

return express;

}

}

return null;

}

}

3. ExpressController类

//将同一包下的子包中的类导入进来,这三行代码需自行导包,不能直接复制

import mission.demo03.dao.ExpressDao;

import mission.demo03.express.Express;

import mission.demo03.view.ExpressView;

//调度逻辑的controller层

public class ExpressController {

static ExpressView v = new ExpressView();

static ExpressDao dao = new ExpressDao();

//初始化界面

public static void use() {

//调用主菜单进入相应的使用者(用户or管理员)平台

system:while(true){

int mainNum = v.mainMenu();//调用主菜单

switch(mainNum){

case 0://结束使用

break system;

case 1://进入管理员平台

try {

managerPlatform();

} catch (Exception e) {

e.printStackTrace();

}

break;

case 2://进入用户平台

try {

userPlatform();

} catch (Exception e) {

e.printStackTrace();

}

break;

}

}

v.bye();

}

//管理员操作界面

public static void managerPlatform() {

manager:while(true){

int managerNum = v.managerMain();

switch(managerNum){

case 0:{//返回上一级页面

return;

}

case 1:{//1.录入快递

try {

insert();

} catch (Exception e) {

e.printStackTrace();

}

}

break manager;

case 2:{//2.删除快递

try {

delete();

} catch (Exception e) {

e.printStackTrace();

}

}

break manager;

case 3:{//3.修改快递

try {

update();

} catch (Exception e) {

e.printStackTrace();

}

}

break manager;

case 4:{//4.查看所有快递

printAll();

}

break manager;

}

}

}

//用户操作界面

public static void userPlatform() {

user:while(true){

int userNum = v.userMain();

switch(userNum){

case 0:{//返回上一级页面

v.mainMenu();

}

break user;

case 1:{//1.取出快递

int code = v.findByCode();

Express e = dao.findByExpressCode(code);

if(e == null){

v.noExist();

}else {

System.out.println(“取件成功!”);

v.printExpress(e);

v.printExpressLocation(e);

try {

dao.delete(e.getNumber());

} catch (Exception exception) {

exception.printStackTrace();

}

}

}

break user;

}

}

}

//录入快递

public static void insert() {

Express e1 = v.insertExpress();//输入快递信息

Express e2 = dao.findExpressByNumber(e1.getNumber());//通过快递单号查询是否存在

if (e2 == null){//此快递柜为空,add,生成取件码

try {

e2 = dao.add(e1);

} catch (Exception e) {

e.printStackTrace();

}

v.printExpress(e2);//打印单条快递信息

v.success();

}else{

v.hasExist();

}

}

//删除快递

public static void delete() {

String num = v.findByNumber();//输入快递单号

int exist = dao.findExpressIsExist(num);//查找快递是否存在

if( exist == -1){//快递不存在

v.noExist();

}else {

int deleteNum =v.isDeleteExpress();//确认是否进行删除操作

if (deleteNum == 1){//确认删除

try {

dao.delete(num);

} catch (Exception e) {

e.printStackTrace();

}

System.out.println(“删除成功!”);

}else if (deleteNum == 0){//取消删除

System.out.println(“取消操作成功!”);

}

}

}

//删除快递

public static void update() {

String num = v.findByNumber();//输入快递单号

Express e1 = dao.findExpressByNumber(num);//通过快递单号查找快递,有则返回快递

if( e1 == null){//快递不存在

v.noExist();

}else {

String number = dao.findExpressByNumber(num).getNumber();//通过快递单号返回快递信息,获取number

Express e2 = v.updateExpress();

try {

dao.updateExpress(number,e2);//修改快递信息

} catch (Exception e) {

e.printStackTrace();

}

System.out.println(“快递信息更新成功!”);

v.printExpress(e1);//输出单条快递信息

}

}

//查看所有快递

public static void printAll(){

v.printAllExpress(dao.getExpressMap());

}

}

4. Express类

//快递类

public class Express {

private String number;

private String company;

private int code;

private int x;//x坐标为快递所在的行数

private int y;//y坐标为快递所在的列数

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后的话

无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。
同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,好了希望这篇文章对大家有帮助!

部分截图:
在这里插入图片描述

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-CGhdvyQR-1713684494595)]

[外链图片转存中…(img-ZXkp0ZUm-1713684494595)]

[外链图片转存中…(img-Ffnfniat-1713684494596)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后的话

无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。
同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,好了希望这篇文章对大家有帮助!

部分截图:
[外链图片转存中…(img-nlod1zKv-1713684494596)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值