WareHouse 仓库管理
基本思路:
创建方法类Product 、 Main方法
重要操作----->循环显示选择菜单 —>实现集合的增删查改—>退出程序
我们创建一个类用来存放信息,方便实例化调用,在main方法中我们需要通过一个循环体来重复显示菜单栏,通过键盘输入来执行操作
do{}while循环可以有效的实现这一系列操作,并且通过控制台输入来控制程序的执行及终止。
代码中字段过多的case执行代码我们也可以通过封装使得更加整洁,再次不做过多修改,方便直接查看执行代码块,本文档仅为学习笔记,仍然存在很多疏漏。
代码实现
Product —>商品类
import java.util.Objects;
public class Product {
private String name;
private String size;
private String configuration;
private int num;
private double price;
public Product() {
}
public Product(String name, String size, String configuration, int num, double price) {
this.name = name;
this.size = size;
this.configuration = configuration;
this.num = num;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getConfiguration() {
return configuration;
}
public void setConfiguration(String configuration) {
this.configuration = configuration;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Product product = (Product) o;
return num == product.num &&
Double.compare(product.price, price) == 0 &&
Objects.equals(name, product.name) &&
Objects.equals(size, product.size) &&
Objects.equals(configuration, product.configuration);
}
@Override
public int hashCode() {
return Objects.hash(name, size, configuration, num, price);
}
@Override
public String toString() {
return "Product{" +
"name='" + name + '\'' +
", size='" + size + '\'' +
", configuration='" + configuration + '\'' +
", num=" + num +
", price=" + price +
'}';
}
public void printInfo(){
System.out.println(name+"\t\t" + size+"\t\t" + configuration+"\t\t"
+ num+"\t\t" + price+"\t\t" + (num * price));
}
}
实现方法 ---->main
package com.chapter02.warehouse;
import java.util.ArrayList;
import java.util.Scanner;
/**
* 现要对华为和小米两种手机产品进行入库,本案例要求编写一个模拟商品入库的程序,
* 可以在控制台输入入库商品的数量,最后打印出仓库中所有商品详细信息以及所有商品的总库存数和库存商品总金额。
*/
public class Test {
public static void main(String[] args) {
Test t = new Test();
ArrayList<Product> productsList = new ArrayList<>();
boolean isLoop = true;
do {
char check = 'N';
System.out.println("------------------仓库管理----------------" + "\n" +
"\t\t\t\t1、查看库存" + "\n" +
"\t\t\t\t2、增加商品" + "\n" +
"\t\t\t\t3、删除库存" + "\n" +
"\t\t\t\t4、修改信息" + "\n" +
"\t\t\t\t5、退出系统" + "\n");
System.out.print("请输入你要执行的操作:(整数)");
int chose = t.getScanner().nextInt();
if (chose>=1&& chose<=5){
switch (chose) {
case 1:
if (productsList.size() > 0) {
int inventory = 0;
System.out.println("序号\t\t" + "名称\t\t" + "尺寸\t\t" + "配置\t\t" + "库存\t\t" + "价格\t\t" + "\t总价");
for (int i = 0; i < productsList.size(); i++) {
System.out.print((i + 1) + "\t\t");
productsList.get(i).printInfo();
inventory = inventory + productsList.get(i).getNum();
}
System.out.println("商品总库存:" + inventory);
} else {
System.out.println("库存为空!");
}
break;
case 2:
Product p = t.getNewProduct();
System.out.print("请入商品名称:");
String a1 = t.getScanner().next();
p.setName(a1);
System.out.print("请入商品尺寸:");
String a2 = t.getScanner().next();
p.setSize(a2);
System.out.print("请入商品配置:");
String a3 = t.getScanner().next();
p.setConfiguration(a3);
System.out.print("请入商品数量:");
int a4 = t.getScanner().nextInt();
p.setNum(a4);
System.out.print("请入商品价格:");
double a5 = t.getScanner().nextDouble();
p.setPrice(a5);
productsList.add(p);
System.out.println("添加成功!");
break;
case 3:
System.out.print("请输入你要删除的商品序号:");
int num = t.getScanner().nextInt();
System.out.println("名称\t\t" + "尺寸\t\t" + "配置\t\t" + "库存\t\t" + "价格\t\t" + "总价");
System.out.print("商品信息:");
productsList.get(num - 1).printInfo();
System.out.print("你确认要删除吗吗?(Y/N)");
check = t.getScanner().next().charAt(0);
if (check == 'Y') {
productsList.remove(num - 1);
}
break;
case 4:
System.out.print("请输入你要修改的商品序号:");
int num1 = t.getScanner().nextInt();
System.out.println("名称\t\t" + "尺寸\t\t" + "配置\t\t" + "库存\t\t" + "价格\t\t" + "总价");
productsList.get(num1 - 1).printInfo();
System.out.print("你确认要删除吗吗?(Y/N)");
check = t.getScanner().next().charAt(0);
if (check == 'Y') {
System.out.print("商品名称:" + productsList.get(num1 - 1).getName() + " ");
String str1 = t.getScanner().next();
productsList.get(num1 - 1).setName(str1);
System.out.print("商品尺寸:" + productsList.get(num1 - 1).getSize() + " ");
String str2 = t.getScanner().next();
productsList.get(num1 - 1).setSize(str2);
System.out.print("商品配置:" + productsList.get(num1 - 1).getConfiguration() + " ");
String str3 = t.getScanner().next();
productsList.get(num1 - 1).setConfiguration(str3);
System.out.print("商品库存:" + productsList.get(num1 - 1).getNum() + " ");
int str4 = t.getScanner().nextInt();
productsList.get(num1 - 1).setNum(str4);
System.out.print("商品价格:" + productsList.get(num1 - 1).getPrice() + " ");
double str5 = t.getScanner().nextDouble();
productsList.get(num1 - 1).setPrice(str5);
}
break;
case 5:
System.out.print("你确认要退出吗?(Y/N)");
check = t.getScanner().next().charAt(0);
if (check == 'Y') {
isLoop = false;
} else if (check == 'N') {
isLoop = true;
}
break;
default:
System.out.println("输入错误,请重新输入!");
break;
}
}else {
System.out.println("输入异常,请重新输入");
}
} while (isLoop);
}
public Product getNewProduct() {
Product product = new Product();
return product;
}
public Scanner getScanner() {
Scanner scanner = new Scanner(System.in);
return scanner;
}
}