Java综合练习小项目——快递柜

5 篇文章 0 订阅

快递柜


前言

这是针对基础部分的综合练习,需要了解的知识有变量、数据类型、数组。
取快递是现在大部分人都会做的事情,那么小白该怎么写出一个简单的取快递的程序呢?那么请按照以下功能条件来写出一个简单的快递柜小项目吧。


一、项目介绍

1.功能介绍

  1. 身份选择(快递员和普通用户)
    在这里插入图片描述
    在这里插入图片描述

2.存快递
在这里插入图片描述
3.删除快递
在这里插入图片描述

4.修改快递信息
在这里插入图片描述
5.查看快递信息
在这里插入图片描述
6.取快递
在这里插入图片描述

注意:因为快递柜是一个系统,那么完成每一步操作后,都会返回到欢迎界面。

2.注意点

随机数:Math.random()
1.生成从0到n的随机整数 即返回值[0,n]
	int number=(int)(Math.random()*(n+1);
2.生成从a到b的随机整数 即返回值[a,b]
	int num=a+(int)(Math.random()*(b-a+1)); 

二、相关代码


/*
    需求:身份:1 快递员 2 用户
        1.快递员=》功能:1.存快递 2.删除快递 3.修改快递 4.查看快递
        2.用户=》功能:1.取快递

 */

import java.util.Scanner;

public class kd {

    public static void main(String[] args) {


        //欢迎界面和提示:输入角色




        //定义数组,存放快递信息
        //创建数组,存放取件码
        int[] code=new int[50];
        //存放快递单号
        String id[] = new String[50];
        //存放快递公司名称
        String[] company = new String[50];

        //进入快递E栈
        while (true){
            System.out.println("====欢迎来到快递E栈====");
            System.out.println("请输入你的身份:1-快递员 2-用户");
            Scanner input = new Scanner((System.in));
            int role = input.nextInt();

            if (role==1){
                System.out.println("请选择操作:1-存快递 2-删除快递 3-修改快递信息 4-查看所有快递");
                int num=input.nextInt();

                if (num==1){
                        //存快递操作
                        System.out.println("请输入快递单号");
                        String sid=input.next();
                        System.out.println("请输入公司名称");
                        String scompany=input.next();
                        //Math.random():产生一个随机数[0.0,1.0)
                        //(数据类型)(Math.random()*(最大值-最小值)+最小值)
                        int scode=(int)(Math.random()*(1000-100)+100);  //生成100~1000之间的随机数

                        //首先判断是否快递柜存满
                        int index=-1;//数组下标暂为-1,若快递柜没满,那么赋值给index,即需要存的快递为index(因为数组下标从0开始);
                        for (int i=0;i<id.length;i++){
                            if (id[i]==null){
                                index=i;
                                break;
                            }
                        }
                        //
                        if(index==-1){
                            System.out.println("快递柜已满");
                        }else {
                            //即上述for查询中,快递柜index已改变,快递柜未满,那么就添加数据
                            id[index]=sid;  //快递单号
                            company[index] = scompany;  //快递公司
                            code[index]=scode;  //取件码
                            //添加成功之后,显示成功
                            System.out.println("快递添加成功,"+"取件码:"+scode);
                        }

                }else if (num==2){
                    //删除快递
                    System.out.println("请输入要删除的快递单号");
                    String sid2 = input.next();
                    //进行数据匹配
                    int index=-1;
                    for (int i=0;i<id.length;i++){
                        //判断单号是否为空,且输入和数组中的数据是否相等
                        if (id[i].equals(sid2) && id[i]!=null){
                            //符合数据
                            index=i;
                            break;
                        }
                    }
                    //进行判断操作=》是否删除
                    if (index==-1){
                        System.out.println("没有该快递信息");
                    }//存在该快递信息
                    else {
                        //符合数据库,进行删除和移动位置操作
                        //移位(因为需要删除该index 上的数据,且不用index占据的位置,所以id.length-1)
                       //用后面的覆盖前面的内容
                        for (int i=index;i<id.length-1;i++){
                            id[i]=id[i+1];
                            code[i]=code[i+1];
                            company[i]=company[i+1];
                        }
                        //把最后的位置设置为空,因为都向前移动一位(id.length-1是因为现存数组长度比原数组长度少1,所以需要-1)
                        id[id.length-1]=null;
                        company[company.length-1]=null;
                        code[code.length-1]=0;
                        System.out.println("删除成功");
                    }

                }else if (num==3){
                    //修改快递信息
                    System.out.println("请输入要修改的快递单号");
                    String sid3=input.next();


                    //循环遍历单号
                    int index=-1;//用该变量来匹配是否有对应的快递单号
                    for (int i=0;i<id.length;i++){
                        //存在该单号
                        if (id[i].equals(sid3) && id[i]!=null){
                            index=i;
                            break;
                        }

                    }
                    //操作
                    if (index==-1){
                        System.out.println("没有该快递信息");
                    }
                    else {
                        //存在该快递,那么就开始修改
                        System.out.println("请输入新的快递单号");
                        String sid4=input.next();
                        id[index]=sid4; //赋值
                        System.out.println("请输入新的公司名称");
                        String scompany2=input.next();
                        company[index]=scompany2;
                        //取件码不变,输出显示
                        System.out.println("修改成功!");
                    }

                }else if (num==4){
                    //查看快递
                    //1.判断是否数组内容为空
                    int index=-1;   //用该变量来查看数组是否为空
                    System.out.println("所有快递信息如下:");
                    for (int i=0;i<id.length;i++){
                        if (id[i]!=null && company[i]!=null && code[i]!=0){
                            //该数组不为空
                            System.out.println("快递单号:"+id[i]+",快递公司:"+company[i]+",取件码:"+code[i]);
                            index=i;    //赋值,并继续

                        }else if (index==-1){
                            System.out.println("快递柜没有快递");
                        }
                    }
                }else {
                    System.out.println("请输入正确的编号");
                }
            }
            else if(role==2){
                System.out.println("请输入取件码");
                int scode2=input.nextInt();
                //循环遍历
                int index=-1;
                for (int i=0;i<id.length;i++){
                    if (code[i]==scode2 && code[i]!=0){
                        index=i;
                        break;
                    }
                }
                //操作
                if (index==-1){
                    System.out.println("没有该快递信息");
                }
                else {
                    //存在该快递,取件
                    id[index]=null;
                    code[index]=0;
                    company[index]=null;
                    System.out.println("取件成功");
                }


            }else {
                System.out.println("请输入正确的选项");
            }

        }
    }
}

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值