基于ArrayList增删改查实现的java商品管理系统

某超市为实现仓库商品标准管理化,需一套操作简单的商品管理系统。该系统主要业务包括商品的增删改查,商品有编号、名称、价格、库存等属性,编号需唯一。文中还给出了各业务的细节及程序实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统简介

某超市开业,为了实现仓库商品标准管理化,需要一套操作简单的商品管理系统。主要业务
有:添加商品、删除商品、修改商品属性、查看某一种商品信息、查看所有商品信息。

细节提示
需要管理的商品有以下几种属性:商品编号、商品名、商品价格以及商品库存。商品编号是
唯一的,每种商品的编号都不能一样。
业务细节

添加功能
添加商品信息时需要手动输入商品编号、商品名、商品价格以及商品库存,每次录入完一种
商品后可提示是否继续录入或返回上一级,该系统录入的商品数量是不受限制的。
需要注意在输入商品编号时判断该商品编号是否已经存 在,保证它的唯一性,如果已存在则
当前商品不能被录入系统。

查询指定信息
在录入信息后可以根据商品编号查看指定商品信息。
注意:查询时输入的商品编号需要进行验证是否存在,如 果存在则显示商品信息,如果不存
在则提示要查找的商品不存在。

查询所有商品信息
查询所有已经录入系统的商品信息

修改商品信息
可以修改已经录入的商品信息属性。需要输

删除某个商品
在删除某个商品的时候要输入目标商品的商品编号,删除前需要输入商品编号显示一次目标
商品的信息,然后确定删除。注意:删除某一个商品后自该商品编号之后的所有商品编号依
次往前移。 删除前系统已经录入的所有信息展示。

程序实现如下所示

package homeWork;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class productSystem {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//调用程序主界面
		/*
		 * 这里写一个主界面函数而不是写在主函数里面是因为下面程序要递归调用这个函数,
		 * 为避免递归调用main函数所以就单独把主界面函数列出来了!
		 */
		index();
		
		
	}
	//静态创建zeng'cang'ai'cha增删改查操作对象
	//如果将这句话卸载index()函数中则再次递归调用的时候会重新创建对象,
	//就会导致再次递归调用的时候list为空
	static Curd c = new Curd();
	
	//主界面函数
	public static void index(){
		System.out.println("欢迎使用商品信息管理系统");
		System.out.println("请输入序号选择您的业务:");
		System.out.println("1、添加商品信息"+"\t2、修改信息"+"\t3、删除信息"+
		"\t4、查看指定信息"+"\t5、查看所有信息!");
		
		//创建输入
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		//创建输入选择器
		switch(n){
		
			case 1:
				c.add();
				//add()方法的ruturn到这里之后再递归调用下面的index()函数,
				index();
				break;
			case 2:
				c.mod();
				index();
				break;
			case 3:
				c.del();
				index();
				break;
			case 4:
				c.searchOne();
				index();
				break;
			case 5:
				c.searchAll();
				index();
				break;
			default :
				System.out.println("输入有误");
				break;
		}
		
	}

}

//商品Product 实体类
class Product{
	//商品编号
	private Integer number;
	//商品名称
	private String name;
	//商品价格
	private double price;
	//商品库存
	private int count;
	
	// getter()  &&  setter ()
	public int getNumber() {
		return number;
	}
	public void setNumber(Integer number) {
		this.number = number;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	
	//无参构造
	public Product() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	//有参构造
//	public Product(Integer number, String name, double price, int count) {
//		super();
//		this.number = number;
//		this.name = name;
//		this.price = price;
//		this.count = count;
//	}
//	
	
	//重写 toString方法
	@Override
	public String toString() {
		return "Product [number=" + number + ", name=" + name + ", price="
				+ price + ", count=" + count + "]";
	}
}

//增删改查操作实现类
class Curd{
	
	Scanner sc = new Scanner(System.in);
	List<Product> list = new ArrayList<Product>();
	
	//商品的添加方法
	public void add(){
		//循环添加
		while(true){
			//商品Product对象的创建必须写在循环里面,否则添加不进去
			//如果写在循环外面则添加的结果都是最后一个添加的数据
			Product p = new Product();
			System.out.println("请输入商品编号:");
			//本来想用Integer创建输入的
			p.setNumber(Integer.parseInt(sc.next()));
			
			System.out.println("请输入商品名称:");
			String name = sc.next();
			p.setName(name);
			
			System.out.println("请输入商品价格:");
			double price = sc.nextDouble();
			p.setPrice(price);
			
			System.out.println("请输入商品库存:");
			int count = sc.nextInt();
			p.setCount(count);
			
			//将添加的数据存到list中
			list.add(p);
			
			System.out.println("添加成功!\n请继续选择您的操作:");
			System.out.println("1、继续添加。\t2、返回主界面");
			int x = sc.nextInt();
				switch(x){
					//跳出本循环,继续执行添加操作
					case 1:
						break;
					//跳出本方法,返回index()函数
					case 2:
						return;
					default :
						System.out.println("输入错误!");
						break;
				}
			
		}
	}
	
	//查找所有商品
	public void searchAll(){
		//输出所有商品的toString方法
		System.out.println(list);
		
		System.out.println("遍历成功!\n请继续选择您的操作:");
		System.out.println("1、返回主界面");
		int x = sc.nextInt();
			switch(x){
				case 1:return;
				default :System.out.println("输入错误!");break;
			}
	}
	
	//查找单个商品
	public void searchOne(){
		System.out.println("请输入您要查找的商品编号:");
		Integer i = sc.nextInt();
		
		boolean b = true;
		//foreach遍历
		for (Product p : list) {
			if (p.getNumber() == i) {
				//如果找到就输出,并且把遍历设为false
				b=false;
				System.out.println(p);
			}
			
		}
		if (b) {
			System.out.println("您输入的商品编号不存在!");
		}
		
		System.out.println("查找"+(b?"失败!":"成功!")+"\n请继续选择您的操作:");
		System.out.println("1、返回主界面");
		int x = sc.nextInt();
		switch(x){
				case 1:
					return;
				default :
					System.out.println("输入错误!");
					break;
		}
		
	}
	
	
	//删除单个商品
	public void del(){
		System.out.println("请输入您要删除的商品编号:");
		Integer i = sc.nextInt();
		boolean b = true;
		//循环遍历删除
		for (int j = 0; j < list.size(); j++) {
			if (list.get(j).getNumber()==i) {
				//如果找打就删除此元素的下标
				list.remove(j);
				b=false;
			}
		}
		
		
		if (b) {
			System.out.println("商品编号不存在!");
		}
		System.out.println("删除"+(b?"失败!":"成功!")+"\n请继续选择您的操作:");
		System.out.println("1、返回主界面");
		int x = sc.nextInt();
		switch(x){
			case 1:
				return;
			default :
				System.out.println("输入错误!");
				break;
		}
	
	}
	
	//修改单个商品
	public void mod(){
		
		//循环遍历修改
		while(true){
			
			System.out.println("请输入您要修改的商品编号:");
			Integer i = sc.nextInt();
			boolean b = true;
			for (Product p : list) {
				if (p.getNumber() == i) {
					
					System.out.println("请输入商品编号:");
					//Integer num = sc.nextInt();
					p.setNumber(Integer.parseInt(sc.next()));
					
					System.out.println("请输入商品名称:");
					String name = sc.next();
					p.setName(name);
					System.out.println("请输入商品价格:");
					double price = sc.nextDouble();
					p.setPrice(price);
					System.out.println("请输入商品库存:");
					int count = sc.nextInt();
					p.setCount(count);
					
					//list.set(i, p);
					b=false;
				}
				
			}
			if (b) {
				System.out.println("商品编号不存在!");
			}
			System.out.println("修改"+(b?"失败!":"成功!")+"\n请继续选择您的操作:");
			System.out.println("1、继续修改 \t2、返回主界面");
			int x = sc.nextInt();
			switch(x){
				case 1:
					break;
				case 2:
					return;
				default :
					System.out.println("输入错误!");
					break;
			}
		}
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马不常有

整理不易,点滴助力就是不竭动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值