从零开始的Java学习(6)

Episode-6 做一个商品管理系统!【2】

在上一篇文章中,我们搭建了一个完成了一个简单的Java商品管理系统,并使用它进行了简单的商品查询和添加。现在,我们将继续完善这个系统,实现一些更高级的功能。

本期学习所需的前置知识

  • 知道ArrayList是一个大类,里面提供了多种操作方法
  • 知道如何使用remove方法删除数据
  • 结合上一篇文章定义的javabean,理解修改数据的过程

先准备一个find方法

接下来的操作将会多次涉及到商品序号的查找,因此我们有必要写一个find方法,用于判断用户输入的序号是否合法,并返回ArrayList内部存储商品的序号,用于进一步的处理:

	public static int find(ArrayList<item> items, int id){
		int result = -1;
		if (id > 0 && id < (items.size()+1)){
			result = id - 1;
		}
		return result;
	}
}

实现删除商品

我们已经介绍过ArrayList类,现在我们来尝试一下使用ArrayList里的remove方法。

ArrayList的remove方法可以有两种重载形式:一种是remove(int index),用于删除指定位置的元素,并返回被删除的元素;另一种是remove(Object o),用于删除列表中首次出现的指定元素(如果存在),并返回一个布尔值,表示元素是否存在于列表中并被成功删除。

而我们今天需要使用的,则是第一种形式。

public static void del(ArrayList<item> items){
		System.out.println("请输入需要删除的商品的序号");
		Scanner delin = new Scanner(System.in);
		int id = delin.nextInt();
		int index = find(items, id);
		if (index >= 0){
			item del = items.remove(index);
			System.out.println("已经删除商品:" + del.getName() + ",该商品的价格为:" + del.getPrice() + " 元.");
		} else {
			System.out.println("删除失败,原因:需要操作的商品不存在.");
		}
		System.out.println();
	}

使用第一种形式的remove方法,不仅能成功删除想要删除的数据,还能用一个临时的item容器将被删除的数据暂时存储起来,用以提示用户。

实现修改商品

实际上,ArrayList提供了一个用于修改元素的方法,即set()方法,但这个方法只适用于元素只有单个属性的情况。然而,我们的商品“item”具有两个属性:商品名“name”和价格“price”。那么,要如何修改我们的商品呢?这个时候让我们回顾一下上一篇文章中,我们定义的item类:

package Item;

public class item{
    private String name;
    private int price;

    public item(String name, int price){
        this.name = name;
        this.price = price;
    }
    
    public item(){
    }
    
    public String getName(){
        return name;
    }
    
    public int getPrice(){
        return price;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public void setPrice(int price){
        this.price=price;
    }
}

可以看到,我们早在刚刚开始的时候,就已经把获取和修改商品属性的方法写好了。

我们可以使用ArrayList里的get()方法获取需要修改的商品,再调用我们自己定义的setName()方法和getPrice()方法来修改商品的属性。

具体的实现如下:

public static void set(ArrayList<item> items){
		System.out.println("请输入需要修改的商品的序号");
		Scanner setItem = new Scanner(System.in);
		int id = setItem.nextInt();
		setItem.nextLine();
		int index = find(items, id);
		if (index >= 0){
			item operating = items.get(index);
			System.out.println("正在操作的商品名:" + operating.getName() + ",该商品的价格为:" + operating.getPrice() + " 元.");
			System.out.println("请输入新的商品名");
			String newName = setItem.nextLine();
			operating.setName(newName);
			System.out.println("请输入新的价格");
			int newPrice = setItem.nextInt();
			operating.setPrice(newPrice);
			System.out.println("修改成功,新的商品名:" + operating.getName() + ",新的价格为:" + operating.getPrice() + " 元.");
		} else {
			System.out.println("修改失败,原因:需要操作的商品不存在.");
		}
		System.out.println();
	}

到了这一步,我们的商品管理系统的操作部分可以说是初步完成了。

接下来,我们需要再搭建一个用户界面,用于实现人机交互。

搭建一个用户界面

这一步比较简单,先打印一个简单的操作界面,再根据用户的输入调用相应的操作方法即可。

package User;
import java.util.Scanner;
import java.util.ArrayList;
import operation.Operation;
import Item.item;


public class user{
	public static void main(String[] args){
		ArrayList<item> items = new ArrayList<>();
		while (true){
			System.out.println("——————————欢迎使用商品管理系统!——————————");
            System.out.println("1.查询当前商品");
            System.out.println("2.增加商品");
            System.out.println("3.删除商品");
            System.out.println("4.修改商品");
            System.out.println("5.退出系统");

            int input = 0;
            Scanner get = new Scanner(System.in);
            input = get.nextInt();
            switch (input){
                case 1 :
                    Operation.query(items);
                    break;
                case 2 :
                    Operation.add(items);
                    break;
                case 3 :
                    Operation.del(items);
                    break;
                case 4 :
                    Operation.set(items);
                    break;
                case 5 :
                    System.out.println("已退出购买系统,欢迎下次光临!");
                    return;
                default:
                    System.out.println("无效的操作编号");
                    System.out.println();
                    break;
            }
        }
	}
}

至此,一个简单的商品管理系统大功告成!我们可以简单地使用命令行编译和运行这个简易的商品管理系统:

SaleSystem

完整的代码可以从这里下载:商品管理系统完整代码

谢谢观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值