Java-----------集合类的应用【仓库管理系统】

简介: Java-----------集合类的应用【仓库管理系统】

实现功能: 模拟库存管理系统,该系统主要包括系统首页、商品入库、商品显示和删除商品功能。


首页:要求显示系统所有的操作,用户可进行选择操作进行不同功能的实现。

商品入库功能:根据用户输入的信息判断是否需要录入商品。

商品显示功能:用户选择商品显示功能后,在控制台打印仓库所有商品信息。

删除商品功能:用户选择删除商品功能后,根据用户输入的商品编号删除商品

显示效果如下:


基本思路:

仓库为一个集合或者列表,而列表或集合中的元素对象即为产品,通过product类去定义产品的属性,再通过phone具体的类去实现列表或集合中的增删查操作。

代码如下:

产品类:

package Warehouse;
public class product {
    //产品属性
    private String name;
    private String color;
    private double price;
    private int size;
    private int num;
    public product(String name, String color, double price, int num,int size) {//构造方法
        this.name = name;
        this.color = color;
        this.price = price;
        this.num = num;
        this.size=size;
    }
    public product() {
    }
    public String getName() { return name;}
    public String getColor() { return color; }
    public double getPrice() {return price; }
    public int getNum() {return num;}
    public int getSize() {
        return size;
    }
}

产品实现类:

package Warehouse;
import java.util.*;
public class phone {
    private static List<product> products = new ArrayList<product>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        product product = new product("小米", "红色", 5899, 3,64);
        products.add(product);
        int choose;
        while(true){
        printMenu();
        choose = sc.nextInt();
        switch(choose)//用户选择
        {
            case 1: {//入库
                System.out.println("产品名称:");
                String pname = sc.next();
                System.out.println("产品颜色:");
                String pcolor = sc.next();
                System.out.println("产品价格:");
                double price = sc.nextDouble();
                System.out.println("产品内存大小:");
                int psize = sc.nextInt();
                System.out.println("产品数量:");
                int pnum = sc.nextInt();
                product p = new product(pname, pcolor, price,psize,pnum);
                addProduct(p);
            }break;
            case 2: {
                showInfo(products);
                System.out.println("\n");
            }break;
            case 3: {//出库
                System.out.println("请输入需要删除的商品编号:");
                int i = sc.nextInt();
                delete(i);
            }break;
            case 0: {//退出系统
                System.out.println("谢谢使用!");
                System.exit(0);
            }break;
            default: {
                System.out.println("输入有误,请重新输入!");
            }
            break;
        }
        }
    }
    public static void delete(int i) {//商品出库
        i--;
        products.remove(i);
        System.out.println("出库成功!\n");
    }
    public static void addProduct(product p) {//商品入库
        products.add(p);
        System.out.println("产品已入库\n");
    }
    public static void showInfo(List<product> products) {//显示商品信息
        Iterator<product> it = products.iterator();//使用迭代器显示
        int n = 1;
        while (it.hasNext()) {
            product p = it.next();
            System.out.println("商品编号:"+n+"  商品名称:"+p.getName() + "   商品颜色:" + p.getColor() + "  商品价格:" + p.getPrice() + " 商品内存大小:" + p.getSize()+" 商品数量:" + p.getNum());
            n++;
        }
    }
    public static void printMenu() {//菜单
        System.out.println("欢迎使用库房管理系统~");
        System.out.println("1. 商品入库");
        System.out.println("2. 商品展示");
        System.out.println("3. 商品出库");
        System.out.println("0. 退出仓库");
        System.out.println("请输入您要选择的操作:");
    }


输出:

欢迎使用库房管理系统~
1. 商品入库
2. 商品展示
3. 商品出库
0. 退出仓库
请输入您要选择的操作:
2
商品编号:1  商品名称:小米   商品颜色:红色  商品价格:5899.0 商品内存大小:64 商品数量:3
欢迎使用库房管理系统~
1. 商品入库
2. 商品展示
3. 商品出库
0. 退出仓库
请输入您要选择的操作:
1
产品名称:
三星
产品颜色:
渐变色
产品价格:
5490
产品内存大小:
128
产品数量:
8
产品已入库
欢迎使用库房管理系统~
1. 商品入库
2. 商品展示
3. 商品出库
0. 退出仓库
请输入您要选择的操作:
2
商品编号:1  商品名称:小米   商品颜色:红色  商品价格:5899.0 商品内存大小:64 商品数量:3
商品编号:2  商品名称:三星   商品颜色:渐变色  商品价格:5490.0 商品内存大小:8 商品数量:128
欢迎使用库房管理系统~
1. 商品入库
2. 商品展示
3. 商品出库
0. 退出仓库
请输入您要选择的操作:
3
请输入需要删除的商品编号:
1
出库成功!
欢迎使用库房管理系统~
1. 商品入库
2. 商品展示
3. 商品出库
0. 退出仓库
请输入您要选择的操作:
0
谢谢使用!
相关文章
|
21天前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
39 3
|
2月前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
84 7
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
172 57
|
27天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
28天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
64 2
|
1月前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
49 5
|
2月前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
237 6
|
1月前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
48 2
|
2月前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
56 4
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
75 8