Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Java实现超市结账系统_控制台交互式项目完整逻辑_创想鸟

Java实现超市结账系统_控制台交互式项目完整逻辑

答案:系统实现商品管理、购物车操作与结算功能,包含Product、CartItem和SupermarketSystem类,支持浏览商品、添加至购物车、查看 cart、会员折扣结算及打印小票,通过控制台交互完成购物流程。

java实现超市结账系统_控制台交互式项目完整逻辑

用Java实现一个控制台交互式超市结账系统,核心目标是模拟真实购物场景下的商品管理、顾客选购、结算和打印小票功能。整个项目结构清晰,适合初学者掌握面向对象编程、集合操作和控制台输入输出处理。

1. 系统功能需求分析

系统应具备以下基本功能:

商品管理:添加商品(编号、名称、价格、库存)浏览商品2>顾客购物:按商品编号选择并输入购买数量结算功能:计算总价,支持打折或会员优惠打印小票:显示所购商品明细和最终金额退出系统:安全退出程序

2. 核心类设计与代码结构

采用面向对象方式设计以下几个类:

① 商品类(Product)

立即学习“Java免费学习笔记(深入)”;

封装商品的基本属性和行为。

“`javapublic class Product { private String id; private String name; private double price; private int stock;

public Product(String id, String name, double price, int stock) {    this.id = id;    this.name = name;    this.price = price;    this.stock = stock;}// Getter 和 Setter 方法public String getId() { return id; }public String getName() { return name; }public double getPrice() { return price; }public int getStock() { return stock; }public void setStock(int stock) { this.stock = stock; }@Overridepublic String toString() {    return "ID:" + id + " | 名称:" + name + " | 价格:" + price + "元 | 库存:" + stock;}

}

九歌 九歌

九歌–人工智能诗歌写作系统

九歌 322 查看详情 九歌

② 购物车条目类(CartItem)

记录每种商品的购买数量和对应商品信息。

```javapublic class CartItem { private Product product; private int quantity; public CartItem(Product product, int quantity) { this.product = product; this.quantity = quantity; } public Product getProduct() { return product; } public int getQuantity() { return quantity; } public double getTotalPrice() { return product.getPrice() * quantity; } public void setQuantity(int quantity) { this.quantity = quantity; }}

③ 超市管理系统主类(SupermarketSystem)

包含商品列表、购物车、控制台交互逻辑。

“`javaimport java.util.*;

public class SupermarketSystem {private List products;private List cart;private Scanner scanner;

public SupermarketSystem() {    products = new ArrayList();    cart = new ArrayList();    scanner = new Scanner(System.in);    initProducts(); // 初始化一些测试商品}// 初始化默认商品private void initProducts() {    products.add(new Product("001", "矿泉水", 2.0, 50));    products.add(new Product("002", "面包", 8.0, 30));    products.add(new Product("003", "牛奶", 15.0, 20));    products.add(new Product("004", "苹果", 6.5, 100));}// 显示菜单private void showMenu() {    System.out.println("\n=== 欢迎光临超市自助结账系统 ===");    System.out.println("1. 浏览所有商品");    System.out.println("2. 添加商品到购物车");    System.out.println("3. 查看购物车");    System.out.println("4. 结算并打印小票");    System.out.println("5. 退出系统");    System.out.print("请选择操作:");}// 执行主循环public void run() {    while (true) {        showMenu();        String choice = scanner.nextLine();        switch (choice) {            case "1" -> displayProducts();            case "2" -> addToCart();            case "3" -> viewCart();            case "4" -> checkout();            case "5" -> {                System.out.println("感谢使用,再见!");                return;            }            default -> System.out.println("无效选择,请重新输入。");        }    }}// 展示所有商品private void displayProducts() {    System.out.println("\n--- 商品列表 ---");    for (Product p : products) {        System.out.println(p);    }}// 添加商品到购物车private void addToCart() {    System.out.print("请输入商品编号: ");    String id = scanner.nextLine();    Product p = findProductById(id);    if (p == null) {        System.out.println("未找到该商品!");        return;    }    System.out.print("请输入购买数量: ");    int qty;    try {        qty = Integer.parseInt(scanner.nextLine());    } catch (NumberFormatException e) {        System.out.println("数量格式错误!");        return;    }    if (qty  p.getStock()) {        System.out.println("库存不足或数量无效!");        return;    }    // 减少库存    p.setStock(p.getStock() - qty);    // 添加到购物车(如果已有则合并)    for (CartItem item : cart) {        if (item.getProduct().getId().equals(id)) {            item.setQuantity(item.getQuantity() + qty);            System.out.println("已将 " + qty + " 件 " + p.getName() + " 加入购物车(合并)");            return;        }    }    cart.add(new CartItem(p, qty));    System.out.println("已将 " + qty + " 件 " + p.getName() + " 加入购物车");}// 查看购物车内容private void viewCart() {    if (cart.isEmpty()) {        System.out.println("购物车为空!");        return;    }    System.out.println("\n--- 当前购物车 ---");    for (CartItem item : cart) {        System.out.printf("商品: %s | 数量: %d | 小计: %.2f元\n",                item.getProduct().getName(),                item.getQuantity(),                item.getTotalPrice());    }}// 结算并打印小票private void checkout() {    if (cart.isEmpty()) {        System.out.println("购物车为空,无法结算!");        return;    }    System.out.println("\n正在生成小票...");    System.out.println("================== 超市收据 ==================");    double total = 0.0;    for (CartItem item : cart) {        double itemTotal = item.getTotalPrice();        System.out.printf("%s × %d = %.2f元\n",                item.getProduct().getName(),                item.getQuantity(),                itemTotal);        total += itemTotal;    }    System.out.println("============================================");    System.out.printf("总计: %.2f元\n", total);    // 可扩展:会员折扣    boolean isMember = askIfMember();    if (isMember) {        double discount = 0.9; // 9折        double discounted = total * discount;        System.out.printf("会员9折后: %.2f元\n", discounted);        total = discounted;    }    System.out.printf("实付: %.2f元\n", total);    System.out.println("谢谢惠顾,欢迎下次光临!");    // 清空购物车    cart.clear();}// 询问是否为会员private boolean askIfMember() {    System.out.print("是否为会员?(y/n): ");    String input = scanner.nextLine().trim().toLowerCase();    return input.equals("y") || input.equals("yes");}// 根据ID查找商品private Product findProductById(String id) {    for (Product p : products) {        if (p.getId().equals(id)) {            return p;        }    }    return null;}

}

3. 启动类 Main

程序入口,运行系统。

```javapublic class Main { public static void main(String[] args) { new SupermarketSystem().run(); }}

4. 使用说明与运行效果

编译并运行后,用户可在控制台看到菜单,例如:

=== 欢迎光临超市自助结账系统 ===1. 浏览所有商品2. 添加商品到购物车3. 查看购物车4. 结算并打印小票5. 退出系统请选择操作:1

选择后可完成完整购物流程。结算时会自动计算总金额,并根据会员状态打折。

基本上就这些。这个系统虽然简单,但涵盖了输入处理、数据封装、集合操作和业务流程控制,非常适合练习Java基础和OOP思想。后续可扩展数据库存储、图形界面或商品分类等功能。

以上就是Java实现超市结账系统_控制台交互式项目完整逻辑的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1029156.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何更换win11系统的主题
上一篇 2025年12月2日 02:13:49
传统呼叫 out!大模型外呼引领企业通信新潮流,深度解析云蝠智能大模型呼叫,解锁企业高效沟通密码
下一篇 2025年12月2日 02:13:52

相关推荐

  • 使用 Java Map 聚合 List 中重复元素的数值

    使用 Java Map 聚合 List 中重复元素的数值使用 Java Map 聚合 List 中重复元素的数值使用 Java Map 聚合 List 中重复元素的数值使用 Java Map 聚合 List 中重复元素的数值

    本文介绍了如何使用 Java Map 结构有效地聚合 List 中具有相同类型(Type)的元素的数值,例如金额(Amount)和数量(Quantity)。通过将 List 转换为 Map,并利用 compute 方法或 Stream API 的 toMap 操作,可以避免手动循环和比较,从而简化代…

    2026年9月28日 • 用户投稿
    000
  • Mac如何退出安全模式_Mac安全模式启动与退出方法

    Mac如何退出安全模式_Mac安全模式启动与退出方法Mac如何退出安全模式_Mac安全模式启动与退出方法Mac如何退出安全模式_Mac安全模式启动与退出方法Mac如何退出安全模式_Mac安全模式启动与退出方法

    首先通过常规重启退出安全模式,若无效则强制中断安全模式启动流程,最后可尝试重置NVRAM/PRAM恢复默认启动设置。 如果您在使用Mac时发现系统启动后显示“安全模式”提示,这通常意味着系统正在进行磁盘检查或缓存清理,可能影响部分功能的正常使用。以下是退出安全模式的操作步骤: 本文运行环境:MacB…

    2026年9月28日 • 用户投稿
    000
  • Java编程:计算用户输入字符串的词汇属性百分比

    Java编程:计算用户输入字符串的词汇属性百分比Java编程:计算用户输入字符串的词汇属性百分比Java编程:计算用户输入字符串的词汇属性百分比Java编程:计算用户输入字符串的词汇属性百分比

    本教程详细介绍了如何在Java中接收用户输入字符串,并利用正则表达式计算符合特定词汇属性(如纯字母单词、首字母大写单词)的字符串百分比。文章涵盖了输入验证、数据存储、正则表达式匹配以及模块化计数方法,旨在提供一个清晰、高效的解决方案。 1. 教程概述与核心挑战 在许多应用场景中,我们需要从用户那里获…

    2026年9月28日 • 用户投稿
    000
  • 豆包无需安装秒启动 豆包AI智能助手即时响应

    豆包无需安装秒启动 豆包AI智能助手即时响应豆包无需安装秒启动 豆包AI智能助手即时响应豆包无需安装秒启动 豆包AI智能助手即时响应豆包无需安装秒启动 豆包AI智能助手即时响应

    全民k歌:歌房舞台效果开启指南 腾讯出品的全民K歌,以其智能打分、修音、混音和专业音效等功能,深受K歌爱好者喜爱。本教程将详细指导您如何在全民K歌歌房中开启炫酷的舞台效果。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 步骤: 打开全民K歌…

    2026年9月28日 • 用户投稿
    000
  • Java中输入字符串单词百分比及特定模式识别教程

    Java中输入字符串单词百分比及特定模式识别教程Java中输入字符串单词百分比及特定模式识别教程Java中输入字符串单词百分比及特定模式识别教程Java中输入字符串单词百分比及特定模式识别教程

    本教程详细介绍了如何在Java中高效处理用户输入的字符串集合,并计算其中符合特定模式(如纯字母单词或以大写字母开头的单词)的字符串百分比。文章着重讲解了输入收集、正则表达式的应用、模块化计数方法的实现以及最终结果的展示,旨在帮助读者掌握字符串分析与处理的关键技巧。 在java应用程序开发中,经常需要…

    2026年9月28日 • 用户投稿
    000
  • 怎么用豆包AI帮我优化递归算法 递归算法优化的AI解决方案

    怎么用豆包AI帮我优化递归算法 递归算法优化的AI解决方案怎么用豆包AI帮我优化递归算法 递归算法优化的AI解决方案怎么用豆包AI帮我优化递归算法 递归算法优化的AI解决方案怎么用豆包AI帮我优化递归算法 递归算法优化的AI解决方案

    全民k歌:歌房舞台效果开启指南 腾讯出品的全民K歌,以其智能打分、修音、混音和专业音效等功能,深受K歌爱好者喜爱。本教程将详细指导您如何在全民K歌歌房中开启炫酷的舞台效果。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 步骤: 打开全民K歌…

    2026年9月28日 • 用户投稿
    100
  • sublime如何高亮显示当前编辑行_Sublime当前编辑行高亮显示设置指南

    sublime如何高亮显示当前编辑行_Sublime当前编辑行高亮显示设置指南sublime如何高亮显示当前编辑行_Sublime当前编辑行高亮显示设置指南sublime如何高亮显示当前编辑行_Sublime当前编辑行高亮显示设置指南sublime如何高亮显示当前编辑行_Sublime当前编辑行高亮显示设置指南

    启用Sublime Text当前行高亮需在用户配置中添加”highlight_line”: true,并可通过修改主题文件自定义颜色,注意语法正确与作用域匹配。 Sublime Text 高亮显示当前编辑行,能让你更专注于正在编写的代码,减少视觉疲劳,提高效率。简单来说,通过…

    2026年9月28日 • 用户投稿
    200
  • Java Mail发送会议邀请时处理时区问题的教程

    Java Mail发送会议邀请时处理时区问题的教程Java Mail发送会议邀请时处理时区问题的教程Java Mail发送会议邀请时处理时区问题的教程Java Mail发送会议邀请时处理时区问题的教程

    本文档旨在帮助开发者在使用Java Mail发送会议邀请时正确处理时区问题,避免会议时间在不同时区显示错误。我们将通过示例代码演示如何设置会议邀请的开始和结束时间,并指定正确的时区,确保会议时间在接收者的日历中准确显示。 在使用Java Mail发送会议邀请时,时区问题是一个常见的困扰。如果未正确处…

    2026年9月28日 • 用户投稿
    100
  • 谷歌发布实验性 AI 工具 Mixboard,支持使用自然语言生成创意板

    谷歌发布实验性 AI 工具 Mixboard,支持使用自然语言生成创意板谷歌发布实验性 AI 工具 Mixboard,支持使用自然语言生成创意板谷歌发布实验性 AI 工具 Mixboard,支持使用自然语言生成创意板谷歌发布实验性 AI 工具 Mixboard,支持使用自然语言生成创意板

    谷歌近日发布了一款实验性 ai 创意工具——mixboard,这是一款依托生成式 ai 技术打造的概念设计板,主打“开放式画布”理念,致力于帮助用户高效地将创意可视化。 https://www.php.cn/link/4fa0d97504185879b6e7524dda47d98b 据官方介绍,Mi…

    2026年9月28日 • 用户投稿
    000
  • Java Mail iCal会议邀请时区偏移问题详解与解决方案

    Java Mail iCal会议邀请时区偏移问题详解与解决方案Java Mail iCal会议邀请时区偏移问题详解与解决方案Java Mail iCal会议邀请时区偏移问题详解与解决方案Java Mail iCal会议邀请时区偏移问题详解与解决方案

    本文旨在解决Java Mail发送iCal会议邀请时因时区处理不当导致的会议时间偏移问题。核心问题在于iCal DTSTART和DTEND属性末尾的’Z’字符,它将时间指定为UTC,从而忽略了本地时区设置。教程将详细介绍iCal时间格式规范,并提供基于Java java.ti…

    2026年9月28日 • 用户投稿
    100
  • 雷军谈自研手机SoC:只有做最高端才有一线生机

    雷军谈自研手机SoC:只有做最高端才有一线生机雷军谈自研手机SoC:只有做最高端才有一线生机雷军谈自研手机SoC:只有做最高端才有一线生机雷军谈自研手机SoC:只有做最高端才有一线生机

    9月25日晚,小米集团董事长兼CEO雷军举行了其第6场年度演讲,主题为《改变》。演讲伊始,他便分享了小米在芯片领域的探索历程,重点介绍了最新成果——小米玄戒芯片。 回顾小米的造芯征程,雷军提到,小米早在2014年便通过成立松果电子正式进军芯片领域。在推出搭载自研“澎湃S1”芯片的小米手机后,虽取得阶…

    2026年9月28日 • 用户投稿
    000
  • 豆包 AI 大模型如何和 AI 模型风格设计工具结合设计风格?攻略​

    豆包 AI 大模型如何和 AI 模型风格设计工具结合设计风格?攻略​豆包 AI 大模型如何和 AI 模型风格设计工具结合设计风格?攻略​豆包 AI 大模型如何和 AI 模型风格设计工具结合设计风格?攻略​豆包 AI 大模型如何和 AI 模型风格设计工具结合设计风格?攻略​

    全民k歌:歌房舞台效果开启指南 腾讯出品的全民K歌,以其智能打分、修音、混音和专业音效等功能,深受K歌爱好者喜爱。本教程将详细指导您如何在全民K歌歌房中开启炫酷的舞台效果。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 步骤: 打开全民K歌…

    2026年9月28日 • 用户投稿
    200
  • 解决Java Mail发送iCalendar邀请时的时间区域问题

    解决Java Mail发送iCalendar邀请时的时间区域问题解决Java Mail发送iCalendar邀请时的时间区域问题解决Java Mail发送iCalendar邀请时的时间区域问题解决Java Mail发送iCalendar邀请时的时间区域问题

    本文将围绕在使用Java Mail发送iCalendar会议邀请时,会议时间出现偏差的问题展开,重点讨论如何正确处理时区信息。正如摘要所述,问题的根源在于iCalendar规范对时间格式的严格要求,以及开发者对时区处理的疏忽。下面我们将深入分析原因,并提供详细的解决方案。 理解iCalendar中的…

    2026年9月28日 • 用户投稿
    200
  • Java Mail iCal会议邀请中的时区处理:避免时间偏移的专业指南

    Java Mail iCal会议邀请中的时区处理:避免时间偏移的专业指南Java Mail iCal会议邀请中的时区处理:避免时间偏移的专业指南Java Mail iCal会议邀请中的时区处理:避免时间偏移的专业指南Java Mail iCal会议邀请中的时区处理:避免时间偏移的专业指南

    本教程深入探讨了Java Mail发送iCal会议邀请时常见的时区偏移问题。核心在于iCal DTSTART和DTEND字段对UTC时间(以’Z’结尾)的默认解释。文章将详细阐述如何利用java.time API正确构造本地时间或带有时区标识的时间字符串,从而确保会议邀请在接…

    2026年9月28日 • 用户投稿
    200
  • 6-8月8000元以上手机市场份额揭晓:华为占比超2成

    6-8月8000元以上手机市场份额揭晓:华为占比超2成6-8月8000元以上手机市场份额揭晓:华为占比超2成6-8月8000元以上手机市场份额揭晓:华为占比超2成6-8月8000元以上手机市场份额揭晓:华为占比超2成

    国内超高端手机市场的最新竞争格局如何? 据了解,近日有数码博主曝光了相关数据,2025年6月至8月暑期期间,国内8000元以上超高端手机市场竞争格局呈现显著分化。 苹果凭借iPhone Pro系列产品的强势表现,以66.26%的市场份额稳居榜首,持续领跑超高端细分市场。 值得关注的是,华为在该价位段…

    2026年9月28日 • 用户投稿
    000
  • 荣耀手机摄像头如何调整以提升拍摄质量?教你设置高画质的步骤

    答案:荣耀手机拍出高画质照片需善用专业模式与AI功能。清洁镜头后,根据场景选择模式,如夜景、人像或专业模式;在专业模式中调整ISO、快门速度、EV、白平衡和对焦;开启HDR和构图辅助线提升细节与构图;利用AI摄影优化色彩,结合高分辨率与三脚架保持稳定,不同光线下灵活设置参数,实现清晰出彩的拍摄效果。…

    2026年9月28日
    100
  • 用高刷带鱼屏打游戏 Vidda 三色激光投影亮相 AWE2024

    用高刷带鱼屏打游戏 Vidda 三色激光投影亮相 AWE2024用高刷带鱼屏打游戏 Vidda 三色激光投影亮相 AWE2024用高刷带鱼屏打游戏 Vidda 三色激光投影亮相 AWE2024用高刷带鱼屏打游戏 Vidda 三色激光投影亮相 AWE2024

    vidda三色激光投影于2024年3月14日在上海awe中国家电及消费电子博览会再次展示其技术。除了传统的电影观赏体验,vidda三色激光投影还展示了一种新的玩法——通过两台投影仪拼接成超宽屏幕,为高刷新率游戏带来全新的沉浸体验。这种创新的应用方式吸引了众多参观者的目光,展示了投影技术在娱乐领域的无…

    2026年9月28日 • 用户投稿
    100
  • 在线小说阅读平台排名2025-完结小说免费观看网站推荐

    在线小说阅读平台排名2025-完结小说免费观看网站推荐在线小说阅读平台排名2025-完结小说免费观看网站推荐在线小说阅读平台排名2025-完结小说免费观看网站推荐在线小说阅读平台排名2025-完结小说免费观看网站推荐

    起点、番茄、七猫是2025年看完结小说的主流平台,起点书库经典多,番茄免费资源丰富且分类清晰,七猫女频完结作品全,三者均支持免费阅读,适合不同偏好的读者。 想找2025年靠谱的在线小说平台看完结书?免费资源多、体验好的平台其实集中在几家大厂旗下。下面这几个,不仅书库全,完结作品丰富,而且支持直接阅读…

    2026年9月28日 • 用户投稿
    200
  • JNA高级教程:如何高效映射C语言嵌套结构体与联合体

    JNA高级教程:如何高效映射C语言嵌套结构体与联合体JNA高级教程:如何高效映射C语言嵌套结构体与联合体JNA高级教程:如何高效映射C语言嵌套结构体与联合体JNA高级教程:如何高效映射C语言嵌套结构体与联合体

    本教程深入探讨了JNA在Java与C语言之间进行复杂数据类型映射的机制,特别是针对包含嵌套结构体和联合体(Union)的场景。文章通过分析一个实际的错误案例,详细阐述了JNA对Java类继承Structure或Union的严格要求,并提供了两种核心解决方案:一是直接构建与C语言定义精确对应的JNA映…

    2026年9月28日 • 用户投稿
    100
  • 如何在Docker中安装Linux环境_Docker容器运行Ubuntu系统

    如何在Docker中安装Linux环境_Docker容器运行Ubuntu系统如何在Docker中安装Linux环境_Docker容器运行Ubuntu系统如何在Docker中安装Linux环境_Docker容器运行Ubuntu系统如何在Docker中安装Linux环境_Docker容器运行Ubuntu系统

    首先拉取Ubuntu镜像并启动容器,使用docker pull ubuntu:20.04和docker run -it命令进入系统,安装软件需执行apt update并配置常用工具,通过-v参数实现文件挂载共享,建议用Dockerfile或提交容器保存配置以防丢失。 在Docker中安装Linux环…

    2026年9月28日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信