快递e栈——数组篇小型项目

本文介绍了如何使用控制台实现一个简单的快递E栈系统,包括角色切换(快递员和普通用户)、存快递、删除快递、修改快递、查看所有快递和取快递等功能。通过这个项目,作者旨在巩固数组、变量和流程控制等基础知识,并强调在实现过程中理解和掌握业务逻辑的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

功能介绍:

1. 角色切换(快递员和普通用户 

2. 存快递 

 3. 删除快递

 4. 修改快递

5. 查看所有快递 

6. 取快递

思路:

踩坑原因: 

代码实现



 

今天的任务,是完成快递 E 栈(控制台简易版)系统。 经过了变量,流程控制,数组三部分的学习,让我们通过一个小项目来巩 固这些技能点吧!可不要小看我们之前学习的这些内容,现在我们足以通过这 些知识点完成一版简易的,基于控制台版本的快递 E 栈,在完成的过程中,大 家既要掌握知识的应用,也要学习里面的业务逻辑,为我们之后更大的快递 E 栈系统实现做准备

功能介绍:

1. 角色切换(快递员和普通用户 

 快递员功能:存快递,删除快递,修改快递,查看所有快递

 普通用户功能:取快递

2. 存快递 

 3. 删除快递

 4. 修改快递

5. 查看所有快递 

6. 取快递

思路:

1:数组可以表示快递柜,利用遍历来查找快递,创建对象,相当于一个快递柜的存取。

2:switch循环适合一个一个展现的项目,在此项目中比for更适合作主循环

3:数组下标的特性,从0下标开始,无论有多少个下标都不可能=-1,利用-1来判断对象是否创建

踩坑原因: 

不知道contentEquals()方法和Math.random()方法


代码实现

package com.java.bean;
import java.util.Scanner;
public class ExpressArray {
    public static void main(String[] args) {//主方法
        Scanner scan = new Scanner(System.in);//控制台接收数据
        String[] OrderId = new String[10];//快递单号
        String[] comName = new String[10];//快递名称
        int[] codeGet = new int[10];//取件码
        System.out.println("欢迎使用新职课快递柜======");
        System.out.println("请输入你的身份信息: 1.快递员     2.用户");
        int num = scan.nextInt();//接收整数型num1
        switch (num) {
            case 1://快递员
                System.out.println("请选择: 1.存快递		2.删除快递	3.修改快递信息	4.查看所有快递信息");
                int num2 = scan.nextInt();//接收整数型num2
                switch (num2) {
                    case 1: //存快递
                        int index1 = -1;//给定index1一个-1的值,用于判断快递柜是否已满,循环遍历
                        for (int i = 0; i < OrderId.length; i++) {//遍历数组,String类型数组初始值为null
                            if (OrderId[i] == null) {//查看有没有null,如果存了对象就不是null了
                                index1 = i;//如果有null,就把他赋值给index
                                break;//结束语句
                            }
                        }
                        if (index1 == -1) {//如果index还是-1说明i没有给index赋值,证明所有数组都不是null
                            System.out.println("快递柜已满,无法继续存入");
                        } else {//既然能走到else,说明有数组为null,那么久可以给这个数组下标重新赋值
                            System.out.println("请输入快递单号:");
                            String number1 = scan.next();//输入number1
                            OrderId[index1] = number1;//将数组OrderId[index1]下标赋值number1
                            System.out.println("请输入快递公司:");
                            String company = scan.next();//输入company
                            comName[index1] = company;//将comName[index1]下标赋值company
                            int code = (int) (Math.random() * 100000) + 100000;//int类型的取件码code赋值一个1000以内的数
                            codeGet[index1] = code;//上面code是个随机六位数,把codeGet[index1]下标赋值给他
                            System.out.println("快递已经存入,取件码是" + code);//输出取件码
                            break;//结束语句
                        }
                        break;
                    case 2: {//删除快递
                        System.out.println("请输入您要删除的快递单号");
                        String number2 = scan.next();//接收一个string类型的数据,number2
                        int index2 = -1;//同样先给定index2下标一个-1的值,查找跟number2相同的对象
                        for (int i = 0; i < OrderId.length; i++) {//遍历数组后,如果有跟number相同的对象把他赋值给index下标
                            if ((number2).equals(OrderId[i])) {//如果i下标的快递单号有跟number2相同的,则找到目标
                                index2 = i;//找到目标将i赋值给index
                                break;//结束if语句
                            }
                        }
                        if (index2 == -1) {//如果index还是-1说明i没有给index2赋值,证明所有下标的数组数据都不是number2
                            System.out.println("该快递单号不存在");
                        } else {//程序走到这里,说明index不是-1,number2已经找到。
                            OrderId[index2] = null;//但index下标下的三个数组都是初始值,说明快递已经被删除
                            comName[index2] = null;
                            codeGet[index2] = 0;
                            System.out.println("已删除改快递单号");
                        }
                        break;
                    }
                    case 3: {//修改快递
                        System.out.println("请输入您要修改的快递单号");
                        String number3 = scan.next();//接收一个string类型的数据,number2
                        int index3 = -1;//同样先给定index3下标一个-1的值,查找跟number3相同的对象
                        for (int i = 0; i < OrderId.length; i++) {
                            if ((number3).contentEquals(OrderId[i])) {
                                index3 = i;
                                break;
                            }
                            if (index3 == -1) {//如果index3还是-1说明i没有给index3赋值,证明所有下标的数组数据都不是number3
                                System.out.println("该快递单号不存在");
                            } else {//程序走到这里,说明index3不是-1,number3已经找到
                                System.out.println("请输入新的快递单号");
                                String number4 = scan.next();//接收一个string类型的数据,number4
                                OrderId[index3] = number4;//将数组OrderId[index3]下标赋值number4
                                System.out.println("请输入新的快递公司");
                                String newCompany = scan.next();//接收一个string类型的数据,newCompan
                                comName[index3] = scan.next();//将comName[index3]下标赋值company
                                int newCodeGet = (int) (Math.random() * 100000) + 100000;//随机数创建
                                codeGet[index3] = newCodeGet;//将六位随机数赋值给新的取件码newCodeGet
                            }
                            break;
                        }
                    }
                    case 4: {//查看所有快递
                        int index4 = -1; //判断快递柜是否全空
                        for (int i = 0; i < OrderId.length; i++) {//遍历数组
                            if (OrderId[i] != null) {//只要有一个下标
                                index4 = 0;//给index赋值0
                                break;//结束语句
                            }
                        }
                        if (index4 == -1) {//如果index4还是-1说明i没有给index4赋值,证明所有下标的数组数据都是null
                            System.out.println("快递柜为空,暂无快递");
                        } else {//程序走到这里,说明index4不是-1,index4已经赋值0
                            System.out.println("所有快递信息如下:");
                            System.out.println("快递单号\t公司名称\t取件码");
                            for (int i = 0; i < OrderId.length; i++) {//遍历数组输出新的取件码信息
                                System.out.println(OrderId[i] + "\t" + comName[i] + "\t" + codeGet[i]);
                            }
                        }
                    }
                    break;//结束循环

                }
            case 2://用户
                System.out.println("请输入取件码");
                int codeUser = scan.nextInt();//接收一个int类型的数据,codeUser
                int index = -1;//匹配取件码
                for (int i = 0; i < OrderId.length; i++) {
                    if (codeGet[i] != 0 && codeGet[i] == codeUser) {
                        index = i;
                        break;
                    }
                }
                if (index == -1) {//如果index还是-1说明i没有给index4赋值,即没有匹配到
                    System.out.println("未找到该快递");
                } else {//程序走到这里,说明已经匹配上
                    OrderId[index] = null;//取件码为null,说明被取走
                    System.out.println("你已取件成功");
                }
                break;
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值