项目实战-javaSE-快递e栈-一图胜千言

话不多说,直接上一波项目导图~

 

参考代码

package com.water.javaSE;

import java.util.Scanner;

public class Goods {
    //定义容量为11(含表头,实际为10)的三个字符串数组存储快递信息:快递编号、公司名称、取件码
    private static final int TOTAL = 11;
    //记录快递柜可用数量
    private static int store = 10;
    //快递编号
    private static final String[] NUM = new String[TOTAL];
    //公司名称
    private static final String[] COMPANY = new String[TOTAL];
    //取件码
    private static final String[] CODE = new String[TOTAL];
    //用户交互,获取输入值
    private static final Scanner INPUT = new Scanner(System.in);
    //初始化表头信息
    static {
        NUM[0]="快递编号";
        COMPANY[0]="公司名称";
        CODE[0]="取件码";
    }

    /**
     * 主程序入口
     * @param args
     */
    public static void main(String[] args) {
        //快栈e递测试
        controller();
    }
    /**
     * 1、主界面控制
     * 角色:快递员-1,用户-2
     * 快递员功能:
     *      1、存快递(新建)
     *      2、删除快递
     *      3、修改快递信息
     *      4、查看所有快递
     *
     *  用户功能:1、取快递
     */
    public static void controller(){
        System.out.println();
        System.out.println("===============欢迎来到”waterking“快递柜===============");
        System.out.println("  ==============可用柜子【"+store+"】个==============  ");
        System.out.println();
        System.out.println("请输入您的角色:1-快递员,2-用户");
        int a=0;
        while(true){
            if (INPUT.hasNextInt()){
                a= INPUT.nextInt();
                if (a==1||a==2)
                    break;
            }
            System.out.println("输入无效,请重新输入1或者2");
        }
        switch (a){
            case 1:
                System.out.println("请输入操作:1-存快递,2-删除快递,3-修改快递信息,4-查看所有快递");
                while(true){
                    if (INPUT.hasNextInt()){
                        a= INPUT.nextInt();
                        if (a==1||a==2||a==3||a==4)
                            break;
                    }
                    System.out.println("输入无效,请重新输入1~4");
                }
                if (a==1)
                    add();
                else if (a==2)
                    delete();
                else if (a==3)
                    update();
                else
                    selectAll();
                break;
            case 2:
                System.out.println("请输入操作:1-取快递");
                while(true){
                    if (INPUT.hasNextInt()){
                        a= INPUT.nextInt();
                        if (a==1)
                            break;
                    }
                    System.out.println("输入无效,请重新输入1");
                }
                get();
                break;
        }
    }

    /**
     * 取快递
     */
    private static void get() {
        System.out.println("请输入快递单号:");
        String strNum = INPUT.next();
        System.out.println("请输入取件码!");
        String strCode = INPUT.next();
        //忽略表头,从索引1开始遍历
        for (int i = 1; i < TOTAL; i++) {
            if (strNum.equals(NUM[i])&&strCode.equals(CODE[i])){
                System.out.println("取件成功!");
                //取件成功,清空该条记录,表示可用数量+1
                NUM[i]=null;
                COMPANY[i]=null;
                CODE[i]=null;
                store--;
                break;
            }
            if (i==TOTAL-1){
                System.out.println("未找到快递!");
            }
        }
        //功能跳转
        System.out.println("请选择你的操作:1-重复当前操作,其他输入-返回主界面");
        String str = INPUT.next();
        if (str.equals("1")) {
            get();
        } else {
            controller();
        }
    }

    /**
     * 查看所有快递
     */
    private static void selectAll() {
        System.out.println("所有快递信息如下:");
        for (int i = 0; i < TOTAL; i++) {
            if (NUM[i]==null){
                //跳转语句,跳过该次循环,不展示null的记录
                continue;
            }

            System.out.print(NUM[i]+"\t\t"+ COMPANY[i]+"\t\t"+ CODE[i]);
            System.out.println();
        }
        //功能跳转
        System.out.println("请选择你的操作:1-重复当前操作,其他输入-返回主界面");
        String str = INPUT.next();
        if (str.equals("1")) {
            selectAll();
        } else {
            controller();
        }
    }

    /**
     * 修改快递信息
     */
    private static void update() {
        System.out.println("请输入要修改的快递单号:");
        String strNum = INPUT.next();
        for (int i = 1; i < TOTAL; i++) {
            if (strNum.equals(NUM[i])){
                System.out.println("请输入新的快递单号:");
                NUM[i]= INPUT.next();
                System.out.println("请输入新的公司名称:");
                COMPANY[i]= INPUT.next();
                System.out.println("修改成功!");
                break;
            }
            if (i==TOTAL-1){
                System.out.println("未找到快递!");
            }
        }
        //功能跳转
        System.out.println("请选择你的操作:1-重复当前操作,其他输入-返回主界面");
        String str = INPUT.next();
        if (str.equals("1")) {
            update();
        } else {
            controller();
        }
    }

    /**
     * 删掉快递
     */
    private static void delete() {
        System.out.println("请输入要删除的快递单号:");
        String strNum = INPUT.next();
        for (int i = 1; i < TOTAL; i++) {
            if (strNum.equals(NUM[i])){
                //删除,表示清空记录,可用数量+1
                System.out.println("删除成功!");
                NUM[i]=null;
                COMPANY[i]=null;
                CODE[i]=null;
                store++;
                break;
            }
            if (i==TOTAL-1){
                System.out.println("未找到快递!");
            }
        }
        //功能跳转
        System.out.println("请选择你的操作:1-重复当前操作,其他输入-返回主界面");
        String str = INPUT.next();
        if (str.equals("1")) {
            delete();
        } else {
            controller();
        }
    }

    /**
     * 存快递
     */
    private static void add() {
        System.out.println("请输入快递单号:");
        String strNum = INPUT.next();
        System.out.println("请输入公司名称:");
        String strCompany = INPUT.next();
        //生成1000以内的随机码,1-999
        String strCode = Math.round(Math.random()*1000)+"";
        //添加前,先判断可用数量是否为0
        if (store!=0){
            for (int i = 1; i < TOTAL; i++) {
                if (NUM[i]==null){
                    NUM[i]=strNum;
                    COMPANY[i]=strCompany;
                    CODE[i]=strCode;
                    //添加成功,表示可用数量-1
                    store--;
                    System.out.println("存储成功!取件码为:"+strCode);
                    break;
                }
            }
        }else {
            //可用数量为0,表示快递柜已满,需要更改初始容量!
            System.out.println("快递柜已满!");
        }
        //功能跳转
        System.out.println("请选择你的操作:1-重复当前操作,其他输入-返回主界面");
        String str = INPUT.next();
        if (str.equals("1")) {
            add();
        } else {
            controller();
        }
    }
}

代码要多敲才有感觉,看懂了不代表真的会,会的也不一定熟练。

唯有多敲多思考多总结,才能夯实基础,体会编程带来的快乐~

有态度的结尾:

“编程之光是谁?你大爷还是你大爷……”

“下回再指教~”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值