java小项目——快递驿站(纯基础白话文,小伙伴门放心食用,简单易懂)

java小项目——快递驿站(纯基础白话文,小伙伴门放心食用,简单易懂),第1张

文章目录
    • 简单介绍
      • 测试类Test:
      • 实体
        • Express
        • ExpressMessage
      • 视图界面ExpressView
      • *** 作类ExpressDao
      • 自定义异常类
        • CantFindExpressException
        • ExpressIsExistException
        • InputErrorException
        • OutOfBoundException
        • OutOfSpaceException

写了一段时间的java基础教程了,今天给小伙伴们分享一个仅用javase的基础知识做的一个小项目——快递驿站,功能如下:

简单介绍
快递驿站分两种用户:(由于还没有更新到数据库,所以此处是免登陆的哈)
	快递小哥(管理员)
		添加快递
		删除快递
		修改快递
		查看所有快递
	普通用户 user
		取出快递

实体类entity:
	快递:
		快递单号
		承运公司
		快递存放信息
		
	快递存放信息:
		存储在快递柜子的第几排
		存储在快递柜子的第几列

视图view:
	初始界面:
	管理员界面:
	用户界面
	
 *** 作dao:
	一个实体类对应一个dao,但是由于项目比较简单,且两个实体类关联度较高,就采用了一个dao
	快递 *** 作		

文末附上下载链接用于小白们进行测试!!!

测试类Test:
package com.jinhuan.chapter04.no4_4.task_010302_003.test;

import com.jinhuan.chapter04.no4_4.task_010302_003.view.ExpressView;

/**
 * @Author jinhuan
 * @Date 2022/3/20 13:16
 * Description:
 */
public class Test {
    public static void main(String[] args) {
        //启动类,初始化窗口
        ExpressView myView = new ExpressView();
        myView.inintMenu();
    }
}
实体 Express
package com.jinhuan.chapter04.no4_4.task_010302_003.entity;

/**
 * @Author jinhuan
 * @Date 2022/3/20 12:22
 * Description:快递类
 */
public class Express {

    /**
     * transportNum
     */
    private String transportNum;
    /**
     * company
     */
    private String company;
    /**
     * status
     */
    private Boolean status;
    /**
     * pickCode
     */
    private ExpressMessage message;

    /**
     * constructor
     * */

    public Express() {
    }

    public Express(String transportNum, String company, Boolean status, ExpressMessage message) {
        this.transportNum = transportNum;
        this.company = company;
        this.status = status;
        this.message = message;
    }

    public Express(String transportNum, String company, Boolean status) {
        this.transportNum = transportNum;
        this.company = company;
        this.status = status;
    }

    @Override
    public String toString() {
        return "运单号:'" + transportNum + '\'' +
                ", 承运公司:'" + company + '\'' +
                ", 取件码:'" + message.getPicCode()+ '\'' +
                "存储在第" +(message.getX()+1)+ "排"+ '\'' +
                "存第" +(message.getY()+1)+ "列";
    }

    public String getTransportNum() {
        return transportNum;
    }

    public void setTransportNum(String transportNum) {
        this.transportNum = transportNum;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public Boolean getStatus() {
        return status;
    }

    public void setStatus(Boolean status) {
        this.status = status;
    }

    public ExpressMessage getMessage() {
        return message;
    }

    public void setMessage(ExpressMessage message) {
        this.message = message;
    }
}
ExpressMessage
package com.jinhuan.chapter04.no4_4.task_010302_003.entity;

/**
 * @Author jinhuan
 * @Date 2022/3/20 19:21
 * Description:
 */
public class ExpressMessage {

    /**
     * x
     */
    private Integer x;
    /**
     * y
     */
    private Integer y;

    /**
     * picCode
     * */
    private String picCode;


    /**
     * constructor
     * */
    public ExpressMessage() {
    }

    public ExpressMessage(Integer x, Integer y, String picCode) {
        this.x = x;
        this.y = y;
        this.picCode = picCode;
    }

    public ExpressMessage(Integer x, Integer y) {
        this.x = x;
        this.y = y;
    }

    /**
     * getter and setter
     * */
    public Integer getX() {
        return x;
    }

    public Integer getY() {
        return y;
    }

    public String getPicCode() {
        return picCode;
    }

    public void setX(Integer x) {
        this.x = x;
    }

    public void setY(Integer y) {
        this.y = y;
    }

    public void setPicCode(String picCode) {
        this.picCode = picCode;
    }
}
视图界面ExpressView
package com.jinhuan.chapter04.no4_4.task_010302_003.view;

import com.jinhuan.chapter04.no4_2.exception.CantFindExpressException;
import com.jinhuan.chapter04.no4_4.task_010302_003.dao.ExpressDao;
import com.jinhuan.chapter04.no4_4.task_010302_003.entity.Express;
import com.jinhuan.chapter04.no4_4.task_010302_003.entity.ExpressMessage;
import com.jinhuan.chapter04.no4_4.task_010302_003.exception.ExpressIsExistException;
import com.jinhuan.chapter04.no4_4.task_010302_003.exception.InputErrorException;
import com.jinhuan.chapter04.no4_4.task_010302_003.exception.OutOfBoundException;
import com.jinhuan.chapter04.no4_4.task_010302_003.exception.OutOfSpaceException;

import java.util.Scanner;

/**
 * @Author jinhuan
 * @Date 2022/4/22 9:26
 * Description:
 */
public class ExpressView {
    private static Scanner input = new Scanner(System.in);
    private static ExpressDao expressDao = new ExpressDao();
    private static final int TRANSPORTNUM_LENGTH = 6;

    /**
     * 初始化菜单
     * */
    public void inintMenu() {
        System.out.println("===========欢迎使用Quiet快递驿站服务系统===========");
        do {
            System.out.println("请输入您的身份: 1-管理员  2-用户 0-退出");
            String receive = input.nextLine();
            try {
                //调用指令检查方法
                if(orderCheck(receive, 0, 2)){
                    //说明数据输入合法
                    if("1".equals(receive)){
                        //进入管理员界面
                        System.out.println("欢迎进入管理员界面!");
                        adminstor();
                    }else if("2".equals(receive)){
                        System.out.println("欢迎进入用户界面!");
                        userMenu();
                    }else {
                        System.out.println("谢谢使用!已安全退出!");
                    }
                    break;
                }
            } catch ( NumberFormatException e) {
                System.out.println(e.getMessage());
            }
        } while (true);
    }

    /**
     * 管理员界面
     * */
    public void adminstor(){
        do{
            System.out.println("请输入指令:1-快递录入 2-删除快递 3-修改快递 4-查看所有快递 0-返回上一级");
            String receive = input.nextLine();
            if(orderCheck(receive,0,4)){
                //说明数据输入合法
                switch (receive) {
                    case "1":
                        System.out.println("进入快递录入界面:");
                        addExpressMenu();
                        break;
                    case "2":
                        System.out.println("进入快递删除界面:");
                        deleteExpressMenu();
                        break;
                    case "3":
                        System.out.println("进入快递修改界面:");
                        alterExpressMenu();
                        break;
                    case "4":
                        System.out.println("进入快递查看界面:");
                        showExpressMenu();
                        break;
                    default:
                        System.out.println("已返回上一级!");
                        inintMenu();
                        break;
                }
                break;
            }

        }while (true);
    }

    /**
     * 用户界面
     */
    private void userMenu() {
        do{
            System.out.println("请输入指令:1-取快递 0-返回上一级");
            String receive = input.nextLine();
            if(orderCheck(receive, 0, 1)){
                if ("1".equals(receive)){
                    do {
                        System.out.println("请输入取件码:");
                        String code = input.nextLine();
                        Express findExpress = expressDao.getExpressByPicCode(code);
                        if (findExpress != null){
                            expressDao.deleteExpressByTransportCode(findExpress.getTransportNum());
                            System.out.println("快递已取出!");
                            System.out.println("是否继续取件? 1-是  0-否");
                            String num = input.nextLine();
                            if(orderCheck(num,0,1)){
                                if("0".equals(num)){
                                    userMenu();
                                    return;
                                }
                            }
                        }else{
                            System.out.println("查询不到对应的快递信息!请检查取件码后重试!");
                        }
                    }while (true);
                }else{

                    inintMenu();
                }
            }

        }while (true);
    }

    /**
     * 快递录入 *** 作面板
     */
    private void addExpressMenu() {
        while (true){
            System.out.println("请输入要录入的快递单号及承运公司:");
            try {
                System.out.println("请输入运单号:");
                String transPortNum = input.nextLine();
                if (checkTransPortNum(transPortNum)){
                    System.out.println("请输入承运公司:");
                    String company = input.nextLine();
                    if (checkInput(company)){
                        if (expressDao.findExpressByTransportNum(transPortNum) == null) {
                            Express express = new Express(transPortNum, company, true);
                            //获取存储位置
                            ExpressMessage expressMessage = expressDao.add(express);
                            System.out.println("快递存入成功!取件码为:"+expressMessage.getPicCode()+";在第" + (expressMessage.getX() + 1) + "排第" + (expressMessage.getY() + 1) + "列储物柜中!");
                            while (true){
                                try{
                                    System.out.println("是否继续存快递? 1-是 0-否");
                                    String receiveNum = input.nextLine();
                                    if (checkInput(receiveNum)){
                                        if (orderCheck(receiveNum, 0, 1)) {
                                            if ("0".equals(receiveNum)) {
                                                adminstor();
                                                return;
                                            }
                                        }
                                        break;
                                    }
                                }catch (InputErrorException e){
                                    System.out.println(e.getMessage());
                                }
                            }
                        }else {
                            throw new ExpressIsExistException("快递单号已存在,请重新录入");
                        }
                    }
                }
            } catch ( ExpressIsExistException | InputErrorException | OutOfSpaceException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    /**
     * 快递删除修改界面
     */
    private void deleteExpressMenu() {
        if (expressDao.getSize() == 0){
            System.out.println("当前快递柜为空!");
            adminstor();
            return;
        }
        do{
            System.out.println("请输入要删除的快递单号:");
            try{
                String transportCode = input.nextLine();
                if(checkTransPortNum(transportCode)){
                    if(expressDao.deleteExpressByTransportCode(transportCode)){
                        while (true){
                            try{
                                System.out.println("是否继续删除快递? 1-是 0-否");
                                String receiveNum = input.nextLine();
                                if (checkInput(receiveNum)){
                                    if (orderCheck(receiveNum, 0, 1)) {
                                        if ("0".equals(receiveNum)) {
                                            adminstor();
                                            return;
                                        }
                                    }
                                    break;
                                }
                            }catch (InputErrorException e){
                                System.out.println(e.getMessage());
                            }
                        }
                    }else{
                        throw new CantFindExpressException("查询不到该快递,请检查单号后重新输入!");
                    }
                }
            }catch (CantFindExpressException e){
                System.out.println(e.getMessage());
            }
        }while (true);
    }

    /**
     * 快递修改 *** 作面板
     */
    private void alterExpressMenu() {
        if (expressDao.getSize() == 0){
            System.out.println("当前快递柜为空!");
            adminstor();
            return;
        }
        while (true) {
            System.out.println("请输入要修改的快递单号:");
            String transportCode = input.nextLine();
            if(checkTransPortNum(transportCode)){
                try {
                    if(expressDao.alterExpress(transportCode)){
                        while (true){
                            try{
                                System.out.println("是否继续修改快递? 1-是 0-否");
                                String receiveNum = input.nextLine();
                                if (checkInput(receiveNum)){
                                    if (orderCheck(receiveNum, 0, 1)) {
                                        if ("0".equals(receiveNum)) {
                                            adminstor();
                                            return;
                                        }
                                    }
                                    break;
                                }
                            }catch (InputErrorException e){
                                System.out.println(e.getMessage());
                            }
                        }
                    }
                } catch (CantFindExpressException e) {
                    System.out.println(e.getMessage());
                }
            }
        }
    }

    /**
     * 快递展示界面
     */
    private void showExpressMenu() {
        expressDao.printExpress(expressDao.getExpressList());
        adminstor();
    }

    /**
     * 对运单号格式的检查
     * @param transPortNum
     * @return
     */
    public static boolean checkTransPortNum(String transPortNum) {
        try {
            if(checkInput(transPortNum)){
                if (transPortNum.length() != TRANSPORTNUM_LENGTH){
                    System.out.println("请输入6位合法字符!");
                    return false;
                }else {
                    return true;
                }
            }
        } catch (InputErrorException e) {
            System.out.println(e.getMessage());
        }
        return false;
    }

    /**
     *
     * @param transPortNum
     * @return 判断结果
     * 判断输入是否为空
     */
    public static boolean checkInput(String transPortNum) throws InputErrorException {
        if (transPortNum.length() < 1){
            throw new InputErrorException("输入不能为空!");
        }
        return true;
    }

    /**
     * @param receive:  用户输入的指令号码
     * @param leftBound:指令集左边界
     * @param rightBound:指令集右边界
     * @return boolean 返回判定结果的合法性
     * decription:
     * 检查用户是否输入了合法指令
     */
    private static boolean orderCheck(String receive, int leftBound, int rightBound){
        try {
            if(receive.length() < 1){
                throw new InputErrorException("指令输入格式有误!不能为空!");
            }else {
                int num = Integer.parseInt(receive);
                if (num >= leftBound && num <= rightBound){
                    return true;
                }else {
                    throw new OutOfBoundException("指令输入有误,请检查后重新输入"+leftBound+"到"+rightBound+"范围之间的数字指令!");
                }
            }
        } catch (InputErrorException | OutOfBoundException e) {
            System.out.println(e.getMessage());
        }catch (NumberFormatException e) {
            System.out.println("指令输入有误,请检查后重新输入"+leftBound+"到"+rightBound+"范围之间的数字指令!");
        }
        return false;
    }

}
*** 作类ExpressDao
package com.jinhuan.chapter04.no4_4.task_010302_003.entity;

/**
 * @Author jinhuan
 * @Date 2022/3/20 19:21
 * Description:
 */
public class ExpressMessage {

    /**
     * x
     */
    private Integer x;
    /**
     * y
     */
    private Integer y;

    /**
     * picCode
     * */
    private String picCode;


    /**
     * constructor
     * */
    public ExpressMessage() {
    }

    public ExpressMessage(Integer x, Integer y, String picCode) {
        this.x = x;
        this.y = y;
        this.picCode = picCode;
    }

    public ExpressMessage(Integer x, Integer y) {
        this.x = x;
        this.y = y;
    }

    /**
     * getter and setter
     * */
    public Integer getX() {
        return x;
    }

    public Integer getY() {
        return y;
    }

    public String getPicCode() {
        return picCode;
    }

    public void setX(Integer x) {
        this.x = x;
    }

    public void setY(Integer y) {
        this.y = y;
    }

    public void setPicCode(String picCode) {
        this.picCode = picCode;
    }
}
自定义异常类 CantFindExpressException
package com.jinhuan.chapter04.no4_4.task_010302_003.exception;

/**
 * @Author jinhuan
 * @Date 2022/3/20 20:21
 * Description:
 */
public class CantFindExpressException extends Throwable{
    public CantFindExpressException(String message) {
        super(message);
    }
}
ExpressIsExistException
package com.jinhuan.chapter04.no4_4.task_010302_003.exception;

/**
 * @Author jinhuan
 * @Date 2022/3/20 22:12
 * Description:
 */
public class ExpressIsExistException extends Throwable{
    public ExpressIsExistException(String message) {
        super(message);
    }
}
InputErrorException
package com.jinhuan.chapter04.no4_4.task_010302_003.exception;

/**
 * @Author jinhuan
 * @Date 2022/3/21 8:29
 * Description:输入指令错误异常
 */
public class InputErrorException extends Throwable{
    public InputErrorException(String message) {
        super(message);
    }
}
OutOfBoundException
package com.jinhuan.chapter04.no4_4.task_010302_003.exception;

/**
 * @Author jinhuan
 * @Date 2022/3/20 13:22
 * Description:
 *      自定义的异常类,用于提醒指令输入异常
 */
public class OutOfBoundException extends Throwable {
    public OutOfBoundException(String message) {
        super(message);
    }
}
OutOfSpaceException
package com.jinhuan.chapter04.no4_4.task_010302_003.exception;

/**
 * @Author jinhuan
 * @Date 2022/3/20 20:40
 * Description:
 */
public class OutOfSpaceException extends Throwable{
    public OutOfSpaceException(String message) {
        super(message);
    }
}

以上均为本人个人观点,借此分享,希望能和大家一起进步。如有不慎之处,劳请各位批评指正!鄙人将不胜感激并在第一时间进行修改!

下载链接如下,如果觉得有用的话,给博主个三连支持一下吧:

传送门

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存