欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)簡單快遞系統(tǒng)

 更新時間:2022年03月24日 17:37:07   作者:helloworld370629  
這篇文章主要為大家詳細介紹了java實現(xiàn)簡單快遞系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)簡單快遞系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

創(chuàng)建四個類Express,Locker, User, Administrator分別模擬快遞,快遞柜,用戶和管理員。

import java.util.Random;
import java.util.Scanner;

/**
?* @author hxf
?* * @date 2020/12/12
?*/
public class Test {
? ? static Scanner in = new Scanner(System.in);
? ? public static void main(String[] args) {
? ? ?? ?// 生成快遞柜, 但在后續(xù)修改快遞位置時沒考慮越界問題
? ? ? ? Locker locker = new Locker(10, 10);
? ? ? ? // 創(chuàng)建管理員
? ? ? ? Administrator administrator = new Administrator(locker);
? ? ? ? //程序主邏輯
? ? ? ? outer: while (true){
? ? ? ? ? ? switch (login("請選擇身份:(-1退出 0管理員身份 1用戶身份)", 1)){
? ? ? ? ? ? ? ? case -1:
? ? ? ? ? ? ? ? ? ? break outer;
? ? ? ? ? ? ? ? case 0:
? ? ? ? ? ? ? ? ? ? switch (login("請選擇操作:(-1退出 0快遞錄入 1刪除快遞 2修改快遞 3查看快遞)", 3)){
? ? ? ? ? ? ? ? ? ? ? ? case -1:
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 0:
? ? ? ? ? ? ? ? ? ? ? ? ? ? in.nextLine();
? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("請輸入公司名稱:");
? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("取件碼:"+administrator.store(in.nextLine()));
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? ? ? ? ? administrator.remove();
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? ? ? ? ? administrator.change();
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? ? ? ? ? administrator.show();
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? switch (login("請選擇操作:(-1退出 0取快遞)", 0)){
? ? ? ? ? ? ? ? ? ? ? ? case -1:
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 0:
? ? ? ? ? ? ? ? ? ? ? ? ? ? in.nextLine();
? ? ? ? ? ? ? ? ? ? ? ? ? ? fetch(locker);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }

? ? ? ? }

? ? }
?? ?
?? ?// 生成有效選擇,處理無效選擇產(chǎn)生的異常
? ? public static int login(String string, int n){
? ? ? ? try{
? ? ? ? ? ? System.out.println(string);
? ? ? ? ? ? int select = in.nextInt();
? ? ? ? ? ? if (select > n || select < -1){
? ? ? ? ? ? ? ? System.out.println("請輸入有效選擇!");
? ? ? ? ? ? ? ? in.nextLine();
? ? ? ? ? ? ? ? return login(string, n);
? ? ? ? ? ? }
? ? ? ? ? ? return select;
? ? ? ? }catch (Exception e){
? ? ? ? ? ? System.out.println("請輸入有效選擇!");
? ? ? ? ? ? in.nextLine();
? ? ? ? ? ? return login(string, n);
? ? ? ? }
? ? }
?? ?
?? ?// 用戶取快遞,確保輸入有效驗證碼
? ? public static void fetch(Locker locker){
? ? ? ? System.out.println("請輸入六位驗證碼:");
? ? ? ? String code = in.nextLine();
? ? ? ? User user = new User(code, locker);
? ? ? ? if (user.fetch()){
? ? ? ? ? ? System.out.println("取件成功");
? ? ? ? }else {
? ? ? ? ? ? System.out.println("驗證碼有誤,請重新輸入!");
? ? ? ? ? ? fetch(locker);
? ? ? ? }
? ? }
}

class Express {

? ? /**
? ? ?* @param code: ? ? 6位驗證碼,數(shù)字字符串
? ? ?* @param company: ?公司名稱
? ? ?* @param number: ? 14位快遞單號, 數(shù)字字符串
? ? ?* @param position: 快遞存放位置
? ? ?* @author hxf
? ? ?* @describe: 快遞
? ? ?* @date 2020/12/11 1:17
? ? ?*/

? ? private final String code;
? ? private String company;
? ? private final String number;
? ? private int[] position;

? ? public Express(String code, String company, String number, int[] position) {
? ? ? ? this.code = code;
? ? ? ? this.company = company;
? ? ? ? this.number = number;
? ? ? ? this.position = position;
? ? }

? ? public String getCode() {
? ? ? ? return code;
? ? }

? ? public String getCompany() {
? ? ? ? return company;
? ? }

? ? public String getNumber() {
? ? ? ? return number;
? ? }

? ? public int[] getPosition() {
? ? ? ? return position;
? ? }

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

? ? public void setPosition(int row, int column) {
? ? ? ? this.position[0] = row;
? ? ? ? this.position[1] = column;
? ? }

? ? @Override
? ? public String toString() {
? ? ? ? StringBuilder stringBuilder = new StringBuilder();
? ? ? ? stringBuilder.append("快遞信息簡介{");
? ? ? ? stringBuilder.append("快遞公司:");
? ? ? ? stringBuilder.append(company);
? ? ? ? stringBuilder.append(", 快遞單號:");
? ? ? ? stringBuilder.append(number);
? ? ? ? stringBuilder.append(", 存放位置:");
? ? ? ? stringBuilder.append("第");
? ? ? ? stringBuilder.append(position[0]);
? ? ? ? stringBuilder.append("排,第");
? ? ? ? stringBuilder.append(position[1]);
? ? ? ? stringBuilder.append("列");
? ? ? ? return stringBuilder.toString();
? ? }
}


class Locker {

? ? /**
? ? ?* @param ? code: ? ? ? ? ? 存儲Express
? ? ?* @param ? random: ? ? ? ? 隨機數(shù)生成器
? ? ?* @param ? position: ? ? ? 存放臨時快遞位置
? ? ?* @param ? LENGTH_OF_CODE: 驗證碼長度
? ? ?* @author hxf
? ? ?* @describe: 快遞柜
? ? ?* @date 2020/12/11 1:25
? ? ?*/

? ? Express[][] code;
? ? Random random;
? ? int[] position;

? ? private final int LENGTH_OF_CODE = 6;
? ? private final int LENGTH_OF_NUMBER = 14;

? ? public Locker(int row, int column){
? ? ? ? code = new Express[row][column];
? ? ? ? random = new Random();
? ? ? ? position = new int[2];
? ? }
?? ?
?? ?// 生成驗證碼
? ? public String generateCode(){
? ? ? ? StringBuilder stringBuilder = new StringBuilder();
? ? ? ? for (int i = 0; i < LENGTH_OF_CODE; i++){
? ? ? ? ? ? stringBuilder.append(random.nextInt(10));
? ? ? ? }
? ? ? ? String string = stringBuilder.toString();
? ? ? ? checkCode(string);
? ? ? ? return position[0] == -1 ? string : generateCode();
? ? }
? ??
?? ?// 生成快遞單號
? ? public String generateNumber(){
? ? ? ? StringBuilder stringBuilder = new StringBuilder();
? ? ? ? for (int i = 0; i < LENGTH_OF_NUMBER; i++){
? ? ? ? ? ? stringBuilder.append(random.nextInt(10));
? ? ? ? }
? ? ? ? String string = stringBuilder.toString();
? ? ? ? checkNumber(string);
? ? ? ? return position[0] == -1 ? string : generateNumber();
? ? }
?? ?
?? ?//生成存放位置
? ? public int[] generatePosition(){
? ? ? ? int row = random.nextInt(code.length);
? ? ? ? int column = random.nextInt(code[0].length);
? ? ? ? if (code[row][column] != null){
? ? ? ? ? ? return generatePosition();
? ? ? ? }else{
? ? ? ? ? ? position[0] = row;
? ? ? ? ? ? position[1] = column;
? ? ? ? ? ? return position;
? ? ? ? }
? ? }
?? ?
?? ?// 檢查有無重復(fù)驗證碼,有則將position改成相應(yīng)位置,無則position第一個元素為-1
? ? public void checkCode(String string){
? ? ? ? position[0] = -1;
? ? ? ? outer: for (int i = 0; i < code.length; i++){
? ? ? ? ? ? for (int j = 0; j < code[0].length; j++) {
? ? ? ? ? ? ? ? if (code[i][j] != null && code[i][j].getCode().equals(string)) {
? ? ? ? ? ? ? ? ? ? position[0] = i;
? ? ? ? ? ? ? ? ? ? position[1] = j;
? ? ? ? ? ? ? ? ? ? break outer;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
?? ?
?? ?// 檢查有無重復(fù)快遞單號
? ? public void checkNumber(String string){
? ? ? ? position[0] = -1;
? ? ? ? outer: for (int i = 0; i < code.length; i++){
? ? ? ? ? ? for (int j = 0; j < code[0].length; j++) {
? ? ? ? ? ? ? ? if (code[i][j] != null && code[i][j].getNumber().equals(string)) {
? ? ? ? ? ? ? ? ? ? position[0] = i;
? ? ? ? ? ? ? ? ? ? position[1] = j;
? ? ? ? ? ? ? ? ? ? break outer;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }

?? ?// 將快遞存入快遞柜
? ? public String store(Express express){
? ? ? ? code[position[0]][position[1]] = express;
? ? ? ? return express.getCode();
? ? }

? ? public void store(Express express, int row, int column){
? ? ? ? code[row][column] = express;
? ? }
?? ?
?? ?// 取出快遞
? ? public Express fetch(){
? ? ? ? Express express = code[position[0]][position[1]];
? ? ? ? code[position[0]][position[1]] = null;
? ? ? ? return express;
? ? }

? ? public int[] getPosition() {
? ? ? ? return position;
? ? }
?? ?
?? ?// 打印所有快遞信息
? ? public void check(){
? ? ? ? int count = 0;
? ? ? ? for (Express[] expresses: code){
? ? ? ? ? ? for (Express express : expresses){
? ? ? ? ? ? ? ? if (express != null){
? ? ? ? ? ? ? ? ? ? System.out.println(express.toString());
? ? ? ? ? ? ? ? ? ? count++;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (count == 0){
? ? ? ? ? ? System.out.println("無快遞");
? ? ? ? }
? ? }
}


class User {

?? ?/**
? ? *@Param: code: ? ? ?驗證碼?
? ? *@Param: locker: ? ?快遞柜
? ? *@Author: hxf
? ? *@date: 2020/12/12
? ? */

? ? private final String code;
? ? private Locker locker;

? ? public User(String code, Locker locker) {
? ? ? ? this.code = code;
? ? ? ? this.locker = locker;
? ? }
?? ?
?? ?// 取快遞
? ? public boolean fetch(){
? ? ? ? locker.checkCode(code);
? ? ? ? if (locker.getPosition()[0] == -1){
? ? ? ? ? ? return false;
? ? ? ? }else {
? ? ? ? ? ? System.out.println(locker.fetch().toString());
? ? ? ? ? ? return true;
? ? ? ? }
? ? }

}

class Administrator {
?? ?
?? ?/**
? ? *@Param: locker: ? ?快遞柜
? ? *@Author: hxf
? ? *@date: 2020/12/12
? ? */
?? ?
? ? Locker locker;
? ? Scanner in = new Scanner(System.in);

? ? public Administrator(Locker locker) {
? ? ? ? this.locker = locker;
? ? }
?? ?
?? ?// 錄入快遞
? ? public String store(String company){
? ? ? ? String number = locker.generateNumber();
? ? ? ? String code = locker.generateCode();
? ? ? ? int[] position = locker.generatePosition();
? ? ? ? return locker.store(new Express(code, company, number, position));
? ? }
?? ?
?? ?// 刪除快遞
? ? public void remove(){
? ? ? ? System.out.println("請輸入14位快遞單號:");
? ? ? ? String number = in.nextLine();
? ? ? ? locker.checkNumber(number);
? ? ? ? if (locker.getPosition()[0] != -1){
? ? ? ? ? ? System.out.println("單號為"+locker.fetch().getNumber()+"的快遞已經(jīng)刪除");
? ? ? ? }else{
? ? ? ? ? ? System.out.println("快遞單號不存在,請重試");
? ? ? ? ? ? remove();
? ? ? ? }
? ? }
?? ?
?? ?// 修改快遞
? ? public void change(){
? ? ? ? System.out.println("請輸入14位快遞單號:");
? ? ? ? String number = in.nextLine();
? ? ? ? locker.checkNumber(number);
? ? ? ? if (locker.getPosition()[0] != -1){
? ? ? ? ? ? Express express = locker.fetch();
? ? ? ? ? ? System.out.println("請輸入新的快遞公司:");
? ? ? ? ? ? express.setCompany(in.nextLine());
? ? ? ? ? ? System.out.println("請輸入新的位置:(先行后列,空格隔開)");
? ? ? ? ? ? int row = in.nextInt();
? ? ? ? ? ? int column = in.nextInt();
? ? ? ? ? ? express.setPosition(row, column);
? ? ? ? ? ? locker.store(express, row, column);
? ? ? ? ? ? System.out.println("修改成功!");
? ? ? ? }else{
? ? ? ? ? ? System.out.println("快遞單號不存在,請重試");
? ? ? ? ? ? change();
? ? ? ? }
? ? }
?? ?
?? ?// 顯示所有快遞信息
? ? public void show(){
? ? ? ? locker.check();
? ? }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線程正確使用倒計時協(xié)調(diào)器CountDownLatch方法詳解

    Java多線程正確使用倒計時協(xié)調(diào)器CountDownLatch方法詳解

    這篇文章主要為大家介紹了Java多線程倒計時協(xié)調(diào)器CountDownLatch的正確使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 前置++和后置++ 運算的詳解及實例代碼

    前置++和后置++ 運算的詳解及實例代碼

    這篇文章主要介紹了前置++和后置++ 的相關(guān)資料,并附示例代碼,幫助大家學習參考,需要的朋友可以參考下
    2016-09-09
  • 使用java文件過濾器輸出制定格式文件路徑的實例代碼

    使用java文件過濾器輸出制定格式文件路徑的實例代碼

    這篇文章主要介紹了使用java文件過濾器輸出制定格式文件路徑的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • java語言圖形用戶登錄界面代碼

    java語言圖形用戶登錄界面代碼

    這篇文章主要為大家詳細介紹了java語言圖形用戶登錄界面代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 在eclipse導(dǎo)入Java的jar包的方法JDBC(圖文說明)

    在eclipse導(dǎo)入Java的jar包的方法JDBC(圖文說明)

    這篇文章主要介紹了在eclipse導(dǎo)入Java 的jar包的方法 JDBC 圖文說明 ,需要的朋友可以參考下
    2015-09-09
  • 利用Maven入手Spring Boot第一個程序詳解

    利用Maven入手Spring Boot第一個程序詳解

    這篇文章主要給大家介紹了關(guān)于如何利用Maven入手Spring Boot第一個程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-02-02
  • 教你怎么用Idea打包jar包

    教你怎么用Idea打包jar包

    這篇文章主要介紹了教你怎么用Idea打包jar包,文中有非常詳細的代碼示例,對剛開始使用IDEA的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • SpringBoot自動配置與啟動流程詳細分析

    SpringBoot自動配置與啟動流程詳細分析

    這篇文章主要介紹了SpringBoot自動配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對SpringBoot實現(xiàn)自動配置做一個詳細的介紹。如果可以的話,能不能畫一下實現(xiàn)自動配置的流程圖。牽扯到哪些關(guān)鍵類,以及哪些關(guān)鍵點
    2022-11-11
  • SpringIOC refresh()初始化代碼實例

    SpringIOC refresh()初始化代碼實例

    這篇文章主要介紹了SpringIOC refresh()初始化代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • java去除重復(fù)對象的簡單實例

    java去除重復(fù)對象的簡單實例

    下面小編就為大家?guī)硪黄猨ava去除重復(fù)對象的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論