一个简单的快递箱存储业务

任务要求:分模块进行编写,面向对象,要有快递员类,用户类,快递员要有增删改查的功能,用户可以凭随机取件码拿快递。

我的思路:分为master主模块,view视图模块,Dao存储模块,和Express快递功能模块

一,Master主模块

package com.mei.cn5.a;

import com.mei.cn5.b.View;
import com.mei.cn5.c.Express;
import com.mei.cn5.d.Dao;


import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;


public class Master {

    public static Scanner in = new Scanner(System.in);
    public static List<Dao> parcelArray = new ArrayList<>();
    public static Set<Integer> codeCheck = new HashSet<>();


    public static void main(String[] args) {
        while (true){
            startMenu();
        }
    }

    private static void startMenu() {
        view.start();
        while (true) {
            int num = in.nextInt();
            if (num == 1) {
                staffMenu();
            } else if (num == 2) {
                userMenu();
            } else if (num == 3) {
                System.exit(0);
            } else {
                System.out.println("请重新输入");
            }
        }
    }

    private static void userMenu() {
        view.userStart();
        while (true) {
            int num = in.nextInt();
            if (num == 1) {
                userGetMod();
            } else if (num == 2) {
                showMod();
            } else if (num == 3) {
                startMenu();
            } else if (num == 4) {
                System.exit(0);
            } else {
                System.out.println("请重新输入");
            }
        }
    }

    private static void userGetMod() {
        view.usergetmodStart();
        Express.userGetMod();
        userMenu();
    }

    private static void staffMenu() {
        view.staffStart();
        while (true) {
            int num = in.nextInt();
            if (num == 1) {
                saveMod();
            } else if (num == 2) {
                getMod();
            } else if (num == 3) {
                updateMod();
            } else if (num == 4) {
                showMod();
            } else if (num == 5) {
                startMenu();
            } else if (num == 6) {
                System.exit(0);
            } else {
                System.out.println("请重新输入");
            }
        }
    }

    private static void showMod() {
        view.showmodStart();
        Express.showMod();
        startMenu();
    }

    private static void updateMod() {
        view.updatemodStart();
        Express.updateMod();
        staffMenu();
    }

    private static void getMod() {
        view.getmodStart();
        Express.getMod();
        staffMenu();
    }

    private static void saveMod() {
        Express.saveMod();
        staffMenu();
    }
}

ps:主程序中的主方法调用startMenu运用的无限循环可能导致程序效率低,可以选择其他方法调用

二,Express快递功能模块

package com.mei.cn5.c;


import com.mei.cn5.d.Dao;


import java.util.Random;

import static com.mei.cn5.a.Master.*;

public class Express {

    public static void showMod(){
        for (Dao parcelMessage : parcelArray) {
            System.out.println(parcelMessage.getUid() + "\t" + parcelMessage.getCompanyName() + "\t"
                    + parcelMessage.getPickupCode() + "\t");
        }
    }

    public static void saveMod(){
        if (parcelArray.size() > 999) {
            System.out.println("快递柜已存满");
        }
        System.out.println("请输入一个新的快递单号");
        String num = in.next();
        System.out.println("请输入快递公司");
        String com = in.next();
        int id;
        do {
            id = new Random().nextInt(1000);
        } while (codeCheck.contains(id));
        parcelArray.add(new Dao(num, com, id));

    }

    public static void getMod() {
        String num = in.next();
        Dao parcelMessage = getByUid(num);
        if (parcelMessage == null) {
            System.out.println("这个单号不正确,请重新输入");
            getMod();
        } else {
            parcelArray.remove(parcelMessage);
            codeCheck.remove(parcelMessage.getPickupCode());
        }
    }

    private static Dao getByUid(String num) {
        for (Dao parcelMessage : parcelArray) {
            if (parcelMessage.getUid().equals(num)) {
                return parcelMessage;
            }
        }
        return null;
    }

    public static void updateMod() {
        System.out.println("请输入要修改的快递单号");
        String num = in.next();
        Dao parcelMessage = getByUid(num);
        if (parcelMessage == null) {
            System.out.println("这个单号不正确");
        } else {
            System.out.println("请输入修改后的快递单号");
            num = in.next();
            System.out.println("请输入新的公司名");
            String com = in.next();
            parcelMessage.setUid(num);
            parcelMessage.setCompanyName(com);
        }
    }

    public static void userGetMod() {
        int num = in.nextInt();
        Dao parcelMessage = getByPickupCode(num);
        if (parcelMessage == null) {
            System.out.println("你的取件码无效,请重新输入");
        } else {
            System.out.println("取件成功");
            parcelArray.remove(parcelMessage);
        }
    }

    private static Dao getByPickupCode(int num) {
        for (Dao parcelMessage : parcelArray) {
            if (parcelMessage.getPickupCode() == num) {
                return parcelMessage;
            }
        }
        return null;
    }
}

ps:这里博主偷懒,本应把所有System.out.print语句内容放到view模块下,正常调用方法即可。

还有就是如果不会使用

public static List<Dao> parcelArray = new ArrayList<>()

可以选择用数组进行修改和存取快递


    private static void getMetmod(int indexget) {
            for(int i = indexget ; i < index ; i++){
                uid[i] = uid[i+1];
                comp[i] = comp[i+1];
                code[i] = code[i+1];
            }
        index--;
        startMenu();
    }

一个思路,需要修改

三,Dao存储模块

package com.mei.cn5.d;

import com.mei.cn5.c.Express;

public class Dao  {
    private String uid;
    private String companyName;
    private int pickupCode;

    public Dao(String uid, String companyName, int pickupCode) {
        this.uid = uid;
        this.companyName = companyName;
        this.pickupCode = pickupCode;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public int getPickupCode() {
        return pickupCode;
    }
}

ps:本模块主要存储快递相关信息,按需更改代码即可

四,View视图模块

本模块比较简单,主要是各种对话,用于装饰系统

package com.mei.cn5.b;

import com.mei.cn5.a.Master;


public class View extends Master {
    public static void start(){
        System.out.println("===菜单===");
        System.out.println("请选择您的身份");
        System.out.println("1,快递员 2,用户 3,退出");
    }

    public static void userStart() {
        System.out.println("欢迎来到用户操作系统");
        System.out.println("=请选择您需要的功能=");
        System.out.println("1,取快递 2,查快递 3,返回 4,退出");
    }

    public static void staffStart() {
        System.out.println("欢迎来到快递员操作系统");
        System.out.println("=请选择您需要的功能=");
        System.out.println("1,存快递  2,取快递  3,修改快递 4,查快递 5,返回 6,退出");
    }

    public static void showmodStart() {
        System.out.println("查询信息");
        System.out.println("单号\t公司\t取件码");
    }

    public static void updatemodStart() {
        System.out.println("请输入要修改的快递单号");
    }

    public static void getmodStart() {
        System.out.println("请输入要取出的快递单号");
    }

    public static void usergetmodStart() {
        System.out.println("请输入你的取件码");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值