一、运行部分截图
二、事物层代码
package com.sky.fruits;
import com.sun.org.apache.xpath.internal.operations.Or;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Service {
//初始化
Scanner scanner = new Scanner(System.in);
ArrayList<Fruits> fruits = new ArrayList<Fruits>();
//构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
{
fruits.add(new Fruits(1001, "Apple", "red", 15.00, 100, 1));
fruits.add(new Fruits(1002, "Banana", "yellow", 12.00, 100, 1));
fruits.add(new Fruits(1003, "Orange", "green", 10.00, 100, 2));
}
/**
* 查看所有的水果
*/
public ArrayList<Fruits> getAllFruits() {
return fruits;
}
/**
* 添加水果
*/
public boolean addFruits(Fruits fruit) {
//判断水果编号是否重复
//遍历list
for (Fruits fruits1 : fruits) {
//判断编号是否重复
if (fruits1.getFruitsNum() == fruit.getFruitsNum()) {
System.out.println("\t\t编号重复,请再次添加");
return false;
}
//判断名字是否重复(不区分大小写)
if (fruits1.getFruitsName().equalsIgnoreCase(fruit.getFruitsName())) {
System.out.println("\t\t名字重复,请再次添加");
return false;
}
//判断价格(1-100元)
if (fruit.getFruitsPrice() < 1 || fruit.getFruitsPrice() > 100) {
System.out.println("\t\t价格输入错误,范围(1-100)元");
return false;
}
//判断库存(100-1000)
if (fruit.getFruitsInventory() < 100 || fruit.getFruitsInventory() > 1000) {
System.out.println("\t\t库存输入错误,范围(100-1000)件");
return false;
}
//判断状态
if (fruit.getFruitsStatus() != 1 && fruit.getFruitsStatus() != 2) {
System.out.println("\t\t状态错误,请输入(1\2)");
return false;
}
}
//执行添加过程
fruits.add(fruit);
return true;
}
/**
* 修改水果
* 修改价格、库存、状态
*/
public boolean updateFruits(String fruitsName) {
//匹配list里面是否有这个水果名字
int index = 0;//使用index定位需要修改水果的索引
boolean isTrue = false;//能够匹配到为true ,不能为false;
for (int i = 0; i < fruits.size(); i++) {
//能匹配到,把索引赋值给index
if (fruits.get(i).getFruitsName().equalsIgnoreCase(fruitsName)) {
index = i;
isTrue = true;
}
}
//没有匹配到
if (isTrue == false) {
System.out.println("\t\t没有找到该水果,请重新输入!!!");
return false;
}
/*这么写会有一个逻辑错误,在第一次没匹配到就返回false*/
// for (Fruits fruit : fruits) {
// //没有匹配到水果名字
// if (!fruit.getFruitsName().equalsIgnoreCase(fruitsName)) {
// System.out.println("\t\t没有找到该水果,请重新输入!!!");
// return false;
// }
// }
//水果名字匹配成功
System.out.println("\t\t需要修改的水果的信息为:");
System.out.println("\t编号:" + fruits.get(index).getFruitsNum() + "\t名字:" + fruits.get(index).getFruitsName() + "\t\t颜色:" + fruits.get(index).getFruitsColor() + "\t\t价格:" +
fruits.get(index).getFruitsPrice() + " 元" + "\t\t库存:" + fruits.get(index).getFruitsInventory() + " 件" + "\t\t状态:" + (fruits.get(index).getFruitsStatus() == 1 ? "上架" : "下架"));
//修改内容
System.out.println("\t\t请输入要修改的选项(1.价格、2.库存、3.状态)");
int num = scanner.nextInt();
switch (num) {
case 1:
System.out.println("\t\t请输入要修改的价格:");
fruits.get(index).setFruitsPrice(scanner.nextDouble());
break;
case 2:
System.out.println("\t\t请输入要修改的库存:");
fruits.get(index).setFruitsInventory(scanner.nextInt());
break;
case 3:
System.out.println("\t\t请输入要修改的状态(1:上架,2:下架):");
int status = scanner.nextInt();
//输入状态错误,则修改失败
if (status != 1 && status != 2) {
System.out.println("\t\t输入状态错误!!!");
return false;
}
fruits.get(index).setFruitsStatus(status);
break;
default:
System.out.println("输入序号错误!!!");
return false;
}
return true;
}
/**
* 删除水果
*/
public boolean removeFruits(String fruitsName) {
//是否存在这个水果的标识
boolean isTrue = false;
int index = 0;
for (int i = 0; i < fruits.size(); i++) {
if (fruits.get(i).getFruitsName().equalsIgnoreCase(fruitsName)) {
//匹配成功,则把索引下标赋值给index
index = i;
//存在这个水果
isTrue = true;
}
}
if (isTrue == false) {
System.out.println("\t\t没有查找到该水果名称!!");
return false;
}
fruits.remove(index);
System.out.println(fruits);
return true;
}
}
三、测试类代码
package com.sky.fruits;
import java.util.ArrayList;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
update();
}
//查看所有水果
public static void selectAllFruits() {
Service service = new Service();
ArrayList<Fruits> fruits = service.getAllFruits();
for (Fruits fruit : fruits) {
//使用三目运算符(?:)修改打印的水果状态(1:上架,2:下架)
System.out.println("\t编号:" + fruit.getFruitsNum() + "\t名字:" + fruit.getFruitsName() + "\t\t颜色:" + fruit.getFruitsColor() + "\t\t价格:" +
fruit.getFruitsPrice() + " 元" + "\t\t库存:" + fruit.getFruitsInventory() + " 件" + "\t\t状态:" + (fruit.getFruitsStatus() == 1 ? "上架" : "下架"));
}
}
//添加水果
public static void addFruits() {
Service service = new Service();
Scanner scanner = new Scanner(System.in);
Fruits fruits = new Fruits();
//匹配输入是否是数字
//Pattern pattern = Pattern.compile("^[0-9]*$");
//boolean isMatch = pattern.matcher(scanner.nextInt() + "").matches();
while (true) {
System.out.println("\t请输入水果编号");
fruits.setFruitsNum(scanner.nextInt());
System.out.println("\t请输入水果名字");
fruits.setFruitsName(scanner.next());
System.out.println("\t请输入水果颜色:");
fruits.setFruitsColor(scanner.next());
System.out.println("\t请输入水果价格:");
fruits.setFruitsPrice(scanner.nextDouble());
System.out.println("\t请输入水果库存:");
fruits.setFruitsInventory(scanner.nextInt());
System.out.println("\t请输入水果状态:");
fruits.setFruitsStatus(scanner.nextInt());
boolean isStatus = service.addFruits(fruits);
//正确添加返回true 跳出循环
if (isStatus == true) {
System.out.println("\t\t添加成功!!!");
return;
}
System.out.println("添加错误,请在次添加");
}
}
//修改水果内容
public static void update() {
Service service = new Service();
Scanner scanner = new Scanner(System.in);
selectAllFruits();
while (true) {
System.out.println("\t\t请输入水果名称:");
String fruitsName = scanner.next();
boolean isStatus = service.updateFruits(fruitsName);
if (isStatus == true) {
System.out.println("\t\t修改成功!");
return;
}
if (isStatus == false) {
System.out.println("\t\t修改失败");
}
}
}
//删除水果
public static void delete(){
Service service = new Service();
Scanner scanner = new Scanner(System.in);
System.out.println("\t\t请输入水果的名字:");
String fruitsName = scanner.next();
boolean isTrue = service.removeFruits(fruitsName);
if (isTrue == true){
System.out.println("删除成功!!!");
}
if (isTrue == false){
System.out.println("删除失败!!!");
}
}
}
四、实体类代码
package com.sky.fruits;
/**
* 编号
* 名字
* 颜色
* 价格
* 库存
* 状态 (上架、下架)
*/
public class Fruits {
private Integer fruitsNum;
private String fruitsName;
private String fruitsColor;
private Double fruitsPrice;
private Integer fruitsInventory;
private Integer fruitsStatus;
@Override
public String toString() {
return "Fruits{" +
"fruitsNum=" + fruitsNum +
", fruitsName='" + fruitsName + '\'' +
", fruitsColor='" + fruitsColor + '\'' +
", fruitsPrice=" + fruitsPrice +
", fruitsInventory=" + fruitsInventory +
", fruitsStatus=" + fruitsStatus +
'}';
}
public Fruits() {
}
public Fruits(Integer fruitsNum, String fruitsName, String fruitsColor, Double fruitsPrice, Integer fruitsInventory, Integer fruitsStatus) {
this.fruitsNum = fruitsNum;
this.fruitsName = fruitsName;
this.fruitsColor = fruitsColor;
this.fruitsPrice = fruitsPrice;
this.fruitsInventory = fruitsInventory;
this.fruitsStatus = fruitsStatus;
}
public Integer getFruitsNum() {
return fruitsNum;
}
public void setFruitsNum(Integer fruitsNum) {
this.fruitsNum = fruitsNum;
}
public String getFruitsName() {
return fruitsName;
}
public void setFruitsName(String fruitsName) {
this.fruitsName = fruitsName;
}
public String getFruitsColor() {
return fruitsColor;
}
public void setFruitsColor(String fruitsColor) {
this.fruitsColor = fruitsColor;
}
public Double getFruitsPrice() {
return fruitsPrice;
}
public void setFruitsPrice(Double fruitsPrice) {
this.fruitsPrice = fruitsPrice;
}
public Integer getFruitsInventory() {
return fruitsInventory;
}
public void setFruitsInventory(Integer fruitsInventory) {
this.fruitsInventory = fruitsInventory;
}
public Integer getFruitsStatus() {
return fruitsStatus;
}
public void setFruitsStatus(Integer fruitsStatus) {
this.fruitsStatus = fruitsStatus;
}
}