java实现简单的小超市程序

Java实现简单的小超市程序攻略

需求分析

在实现小超市程序之前,我们需要了解程序的需求。假设我们需要实现以下功能:

  1. 商品信息的录入和展示
  2. 商品的购买和结算
  3. 支持会员折扣和促销活动

设计思路

在了解需求之后,我们再来规划一下小超市程序的设计思路。

商品实体类

首先我们需要设计一个商品的实体类,包括商品名称、单价、库存、条形码等属性。

超市类

我们还需要设计一个超市的类,主要职责包括:

  1. 存储商品信息
  2. 展示商品信息
  3. 实现购买和结算功能

会员类

为了支持会员折扣,我们需要设计会员类,其中会员属性包括会员编号、姓名、折扣等信息。同时,会员类还需要实现会员折扣计算功能。

实现以上类之后,我们就可以开始写代码了。

代码实现

商品实体类代码

public class Goods {
    private String name;    // 商品名称
    private double price;   // 单价
    private int stock;      // 库存
    private String barcode; // 条形码

    // 构造函数
    public Goods(String name, double price, int stock, String barcode) {
        this.name = name;
        this.price = price;
        this.stock = stock;
        this.barcode = barcode;
    }

    // getName, setName等方法省略...
    // 最好重写toString方法,方便输出测试
    @Override
    public String toString() {
        return "商品名称:" + name +
                ",单价:" + price +
                ",库存:" + stock +
                ",条形码:" + barcode;
    }
}

超市类代码

public class Supermarket {
    private List<Goods> goodsList;  // 商品列表
    private double totalPrice;      // 总价
    private boolean isMember;       // 是否为会员

    public Supermarket() {
        goodsList = new ArrayList<>();
        totalPrice = 0;
        isMember = false;
    }

    // 购买商品
    public void buyGoods(String barcode, int num) {
        Goods goods = findGoodsByBarcode(barcode);
        if (goods != null && goods.getStock() >= num) {
            goods.setStock(goods.getStock() - num);
            totalPrice += goods.getPrice() * num;
            System.out.println("购买成功!");
        } else {
            System.out.println("商品库存不足或商品不存在!");
        }
    }

    // 简单计算购物车价格
    public double calculateTotalPrice() {
        double price = totalPrice;
        if (isMember) { // 如果是会员,使用会员折扣计算价格
            price *= 0.9; // 九折优惠
        }
        return price;
    }

    // 根据条形码查找商品
    private Goods findGoodsByBarcode(String barcode) {
        for (Goods goods : goodsList) {
            if (goods.getBarcode().equals(barcode)) {
                return goods;
            }
        }
        return null;
    }

    // 添加商品
    public void addGoods(Goods goods) {
        goodsList.add(goods);
    }

    // 输出所有商品
    public void listGoods() {
        for (Goods goods : goodsList) {
            System.out.println(goods);
        }
    }

    // 成为会员
    public void becomeMember() {
        isMember = true;
    }
}

会员类代码

public class Member {
    private String memberId;    // 会员编号
    private String name;        // 姓名
    private double discount;    // 折扣

    public Member(String memberId, String name, double discount) {
        this.memberId = memberId;
        this.name = name;
        this.discount = discount;
    }

    public double calculatePrice(double price) {
        return price * discount;
    }

    // 其他getter和setter省略...
}

示例说明

以下是两个简单的示例说明:

示例1

public class Main {
    public static void main(String[] args) {
        // 创建一个超市
        Supermarket supermarket = new Supermarket();

        // 添加商品
        Goods goods1 = new Goods("可乐", 2.5, 10, "0001");
        Goods goods2 = new Goods("矿泉水", 1.0, 20, "0002");
        supermarket.addGoods(goods1);
        supermarket.addGoods(goods2);

        // 输出商品列表
        supermarket.listGoods();

        // 购买商品
        supermarket.buyGoods("0001", 3);
        supermarket.buyGoods("0002", 5);

        // 计算总价
        double totalPrice = supermarket.calculateTotalPrice();
        System.out.println("总价:" + totalPrice);
    }
}

执行以上代码后,控制台输出以下内容:

商品名称:可乐,单价:2.5,库存:10,条形码:0001
商品名称:矿泉水,单价:1.0,库存:20,条形码:0002
购买成功!
购买成功!
总价:11.5

示例2

public class Main {
    public static void main(String[] args) {
        // 创建一个超市
        Supermarket supermarket = new Supermarket();

        // 添加商品
        Goods goods1 = new Goods("可乐", 2.5, 10, "0001");
        Goods goods2 = new Goods("矿泉水", 1.0, 20, "0002");
        supermarket.addGoods(goods1);
        supermarket.addGoods(goods2);

        // 成为会员
        Member member = new Member("00000001", "张三", 0.8);
        supermarket.becomeMember();

        // 输出商品列表
        supermarket.listGoods();

        // 购买商品
        supermarket.buyGoods("0001", 3);
        supermarket.buyGoods("0002", 5);

        // 计算总价
        double totalPrice = supermarket.calculateTotalPrice();
        double memberPrice = member.calculatePrice(totalPrice);
        System.out.println("总价:" + totalPrice);
        System.out.println("会员价:" + memberPrice);
    }
}

执行以上代码后,控制台输出以下内容:

商品名称:可乐,单价:2.5,库存:10,条形码:0001
商品名称:矿泉水,单价:1.0,库存:20,条形码:0002
购买成功!
购买成功!
总价:11.5
会员价:9.2

建议

以上代码仅为简单示例,实际开发中还需要考虑多线程、异常处理、数据库等更多因素。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现简单的小超市程序 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • SpringBoot 2.0 整合sharding-jdbc中间件实现数据分库分表

    下面是详细的攻略。 1. 简介 sharding-jdbc 是一个基于 Java 开发的开源分布式中间件,可以提供数据分库、数据分表等功能。而SpringBoot 2.0 框架已经支持了 sharding-jdbc。 2. 步骤 2.1 添加 Maven 依赖 在 pom.xml 文件中添加 sharding-jdbc 的 Maven 依赖: <!–…

    Java 2023年5月20日
    00
  • jquery实现联想词搜索框和搜索结果分页的示例

    首先,需要明确的是,jQuery 是一个 JavaScript 函数库,其目的是使JavaScript的使用更容易,简洁。使用 jQuery 可以帮助我们更快捷地编写出与原生 JavaScript 相同的功能。 要实现一个联想词搜索框和搜索结果分页,大致可以分为以下几个步骤: 1. 设计 UI 首先,我们需要设计一下我们的页面 UI,包括搜索框、搜索结果展示…

    Java 2023年6月15日
    00
  • Spring Boot修改内置Tomcat默认端口号的示例

    请听我详细讲解 “Spring Boot修改内置Tomcat默认端口号的示例”的完整攻略。 一、Spring Boot如何修改Tomcat默认端口号 Spring Boot作为一种快速开发框架,其内置了Tomcat作为默认的Web容器。而默认的端口号是8080端口,但有时候需要把它修改为其他端口号。如何修改呢? 在Spring Boot中修改Tomcat默认…

    Java 2023年5月19日
    00
  • 计算机二级考试java软件操作教程 教大家如何学习java

    计算机二级考试Java软件操作教程 为什么学习Java? Java是一门跨平台的编程语言,在开发Web应用、移动应用、桌面应用等众多领域都有广泛应用。学习Java可以让程序员扩展自己的技能树,更好地适应市场需求。而计算机二级考试中也有Java相关的考察内容,学习Java可以更好地准备考试。 学习Java的基本步骤 下载安装Java开发环境(JDK)和集成开发…

    Java 2023年5月20日
    00
  • Java 判断一个时间是否在另一个时间段内

    下面我就来详细讲解一下 “Java 判断一个时间是否在另一个时间段内” 的完整攻略。 1. 获取时间和时间段 首先,我们需要获取到我们要比较的时间和时间段。在Java中,可以使用以下两种方式来获取时间和时间段: (1)Date类型 Java中Date类表示一个时间点,可以使用new Date()来获取当前时间。如果需要指定具体的时间可以使用new Date(…

    Java 2023年5月20日
    00
  • 带大家深入了解Spring事务

    带大家深入了解Spring事务的完整攻略 什么是事务 在计算机领域中,事务可以简单理解为一系列操作(如读写数据库)的集合,这些操作在逻辑上是一个整体,在执行过程中要么全部成功,要么全部失败。这就是ACID原则(Atomicity、Consistency、Isolation、Durability)。 Spring的事务管理机制主要是基于Spring AOP实现…

    Java 2023年5月19日
    00
  • 详解如何在spring boot中使用spring security防止CSRF攻击

    当开发一个基于web的应用程序时,防止CSRF攻击是非常重要的步骤。Spring Security提供了很多的功能和配置选项,旨在帮助我们保护Web应用程序。以下是在Spring Boot中使用Spring Security防止CSRF攻击的完整攻略。 1.添加Spring Security依赖 我们需要在项目的pom.xml文件中添加spring-boot…

    Java 2023年5月20日
    00
  • Java ArrayList add(int index, E element)和set(int index, E element)两个方法的说明

    Java ArrayList是一种动态数组,可以添加、删除、修改、访问其中的元素。其中,add(int index, E element)和set(int index, E element)两个方法是用于修改ArrayList中指定位置元素的方法。 add(int index, E element)方法 方法说明 add(int index, E eleme…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部