控制台快递系统-面向过程

/** 
* Project Name:day01_test1.
* File Name:ExpressEStation.java.
* Package Name:
* Date:
* Copyright (c)
*
*/  
 
package day01;

import java.util.*;
import java.util.Map.Entry;

/**
* ClassName:ExpressEStation.
* Function: TODO ADD FUNCTION.
* Reason:   TODO ADD REASON.
* Date:    
* @author  
* @version  
* @since   JDK 1.8
* @see      
*/
public class ExpressEStation {
/**
* 存放所有快递的仓库。
*/
private static HashMap<String, String> allExpresses = new HashMap<>();
/**
* 用户取快递时,取件码与快递单号的对应关系。
*/
private static HashMap<String, String> relationships = new HashMap<>();
/**
* 获取用户键盘输入。
*/
private static Scanner input = new Scanner(System.in);
/**
* storageExpress:(存放快递).
* @author
* @param expressNumber 快递单号
* @param companyName 公司名称
* @since JDK 1.8
*/
public static void storageExpress(String expressNumber, String companyName) {
if (allExpresses.containsKey(expressNumber)) {
System.out.println("在仓库中已有快递单号为" + expressNumber +"的快递。");
System.out.println("该快递的信息是:");
System.out.println("快递单号\t\t公司名称\t\t取件码");
System.out.println(expressNumber + "\t\t" + allExpresses.get(expressNumber));
} else {
//快递的取件码,采取随机生成的策略,值在100-999之间。
int pickUpCode = (int)(Math.random()*899 + 100);
while (relationships.containsKey(pickUpCode + "")) {
pickUpCode = (int)(Math.random()*899 + 100);
}
allExpresses.put(expressNumber, companyName + "\t\t" + pickUpCode);
relationships.put(pickUpCode+"", expressNumber);
System.out.println("快递已存入,取件码是:" + pickUpCode);
}
}
/**
* deleteExpress:(删除快递).
* @author
* @param expressNumber 快递单号
* @since JDK 1.8
*/
public static void deleteExpress(String expressNumber) {
if (allExpresses.containsKey(expressNumber)) {
System.out.println("您确定要删除仓库中快递信息为:");
System.out.println("快递单号\t\t公司名称\t\t取件码");
System.out.println(expressNumber + "\t\t" + allExpresses.get(expressNumber));
System.out.println("的快递吗?");
System.out.println("请输入您的选择:1-是 2-否");
if (input.hasNextInt()) {
int choice = input.nextInt();
while(true) {
if (choice == 1) {
String pickUpCode = allExpresses.get(expressNumber).split("\t\t")[1];
allExpresses.remove(expressNumber);
relationships.remove(pickUpCode);
System.out.println("删除快递成功!");
break;
} else if (choice == 2) {
System.out.println("取消删除快递,快递未删除!");
break;
} else {
System.out.println("输入错误,请输入1或2进行操作。");
}
}
} else {
System.out.println("请输入一个整数!");
}
} else {
System.out.println("仓库中没有快递单号为:" + expressNumber + "的快递!");
}
}
/**
* modifyExpress:(修改快递).
* @author
* @param expressNumber 快递单号
* @since JDK 1.8
*/
public static void modifyExpress(String expressNumber) {
if (allExpresses.containsKey(expressNumber)) {
System.out.println("您确定要修改仓库中快递信息为:");
System.out.println("快递单号\t\t公司名称\t\t取件码");
System.out.println(expressNumber + "\t\t" + allExpresses.get(expressNumber));
System.out.println("的快递吗?");
System.out.println("请输入您的选择:1-是 2-否");
if (input.hasNextInt()) {
int choice = input.nextInt();
while(true) {
if (choice == 1) {
System.out.println("请输入新的快递单号:");
String newExpressNumber = input.next();
System.out.println("请输入新的公司名称:");
String newCompanyName = input.next();
int newPickUpCode = (int)(Math.random()*899 + 100);
while (relationships.containsKey(newPickUpCode + "")) {
newPickUpCode = (int)(Math.random()*899 + 100);
}
String pickUpCode = allExpresses.get(expressNumber).split("\t\t")[1];
allExpresses.remove(expressNumber);
allExpresses.put(newExpressNumber, newCompanyName + "\t\t" + newPickUpCode);
relationships.remove(pickUpCode);
relationships.put(newPickUpCode + "", newExpressNumber);
System.out.println("修改快递成功!");
System.out.println("新的快递信息为:");
System.out.println("快递单号\t\t公司名称\t\t取件码");
System.out.println(newExpressNumber + "\t\t" + allExpresses.get(newExpressNumber));
break;
} else if (choice == 2) {
System.out.println("取消修改快递,快递未修改!");
break;
} else {
System.out.println("输入错误,请输入1或2进行操作。");
System.out.println("请输入您的选择:1-是 2-否");
}
}
} else {
System.out.println("请输入一个整数!");
}
} else {
System.out.println("仓库中没有快递单号为:" + expressNumber + "的快递!");
}
}
/**
* seeAllExpress:(查看所有快递).
* @author
* @since JDK 1.8
*/
public static void seeAllExpress() {
if (!allExpresses.isEmpty()) {
System.out.println("仓库中的所有快递信息为:");
System.out.println("快递单号\t\t公司名称\t\t取件码");
for (Entry<String, String> express : allExpresses.entrySet()) {
String expressNumber = express.getKey();
String otherInformation = express.getValue();
System.out.println(expressNumber + "\t\t" + otherInformation);
}
} else {
System.out.println("仓库为空,无快递信息!");
}
}
/**
* deliveryExpress:(取出快递).
* @author
* @param pickUpCode 取件码
* @since JDK 1.8
*/
public static void deliveryExpress(String pickUpCode) {
if (relationships.containsKey(pickUpCode)) {
String expressNumber = relationships.get(pickUpCode);
System.out.println("取出快递信息为:");
System.out.println("快递单号\t\t公司名称\t\t取件码");
System.out.println(expressNumber + "\t\t" + allExpresses.get(expressNumber));
System.out.println("的快递成功!");
allExpresses.remove(expressNumber);
relationships.remove(pickUpCode);
} else {
System.out.println("仓库中无此快递!");
}
}
/**
* main:(程序执行的入口).
* @author
* @param args 命令行参数
* @since JDK 1.8
*/
public static void main(String[] args) {
   first:while(true) {
System.out.println("===========欢迎来到控制台快递e站系统===========");
String expressNumber;
String companyName;
String pickUpCode;
int choice;
second:while (true) {
System.out.println("请输入您的身份:1-快递员 2-用户");
choice = input.nextInt();
if (choice == 1) {
while (true) {
System.out.println("请选择操作:");
System.out.println("1-存放快递 2-取出快递");
System.out.println("3-修改快递 4-查看快递");
System.out.println("5-删除快递 6-选择身份");
System.out.println("7-退出系统");
choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("请输入快递单号:");
expressNumber = input.next();
System.out.println("请输入公司名称:");
companyName = input.next();
storageExpress(expressNumber,companyName);
break;

case 2:
System.out.println("请输入取件码:");
pickUpCode = input.next();
deliveryExpress(pickUpCode);
break;

case 3:
System.out.println("请输入快递单号:");
expressNumber = input.next();
modifyExpress(expressNumber);
break;

case 4:
seeAllExpress();
break;

case 5:
System.out.println("请输入快递单号:");
expressNumber = input.next();
deleteExpress(expressNumber);
break;

case 6:
break second;

case 7:
break first;

default:
System.out.println("请输入1-5之间的数字进行操作的选择!");
break;
}
}
} else if (choice == 2) {
while (true) {
System.out.println("请选择操作:");
System.out.println("1-取出快递 2-选择身份");
System.out.println("3-退出系统");
choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("请输入取件码:");
pickUpCode = input.next();
deliveryExpress(pickUpCode);
break;

case 2:
break second;

case 3:
break first;

default:
System.out.println("请输入1-3之间的数字进行操作的选择!");
break;
}
}
}
}
  }
   System.out.println("=====退出成功!期待您再次使用控制台快递e站系统=====");
}
}

 

posted @ 2021-08-09 21:10  leafruomu  阅读(255)  评论(0)    收藏  举报