集合的使用——超市购物小票案例

1.定义GoodsItem类(名称、货号、单价、数量、计价单位、金额)

/*** 定义GoodsItem类(名称、货号、单价、数量、计价单位、金额)*/
public class GoodsItem {/*** 成员变量*/// 商品名称private String name;// 商品标识private String id;// 商品单价private double price;// 商品数量private int number;// 计价单位private String unit;// 金额private double money;/*** 构造方法*/public GoodsItem() {super();}public GoodsItem(String name, String id, double price, int number, String unit, double money) {this.name = name;this.id = id;this.price = price;this.number = number;this.unit = unit;this.money = money;}/*** getter/setter方法*/public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}}

2.具体功能实现

public class ShoppingReceipt {/**定义集合存储商品*/public static ArrayList<GoodsItem> items = new ArrayList<GoodsItem>();/**定义集合存储用户购买的商品项*/public static ArrayList<GoodsItem> shoppingCar = new ArrayList<GoodsItem>();public static void main(String[] args) {// 初始化商品initGoodsItems();// 打印欢迎语句System.out.println("\t欢迎使用超市购物系统");// 创建键盘录入对象Scanner sc = new Scanner(System.in);// 循环使用购物系统while(true){System.out.println("请输入你要进行的操作:\n1:购买商品\t 2:结算并打印小票\t3:退出系统");int optNumber = sc.nextInt();switch (optNumber) {case 1: // 购买商品buyGoods();break;case 2: // 打印小票printTicket();break;case 3:System.out.println("感谢您使用超市购物系统,欢迎下次光临,拜拜");// 退出购物系统System.exit(0);break;default:System.out.println("你输入的数字有误,请重新输入");break;}}}/*** 打印小票*/public static void printTicket(){// 判断是否已经购买了商品if(shoppingCar.size() == 0) {System.out.println("您还没购买任何商品,无法结算,请先购买!!");return;}System.out.println("------------------------------");// 票头System.out.println("\t欢迎光临");System.out.println("名称\t售价\t数量\t金额");System.out.println("------------------------------");// 记录总数量int totalNumber = 0;// 记录总价格double totalMoney = 0;// 票体for (int index = 0; index < shoppingCar.size(); index++) {// 获得每一个商品项GoodsItem goodsItem = shoppingCar.get(index);totalNumber += goodsItem.getNumber();totalMoney += goodsItem.getMoney();System.out.println(goodsItem.getName()+"\t"+goodsItem.getPrice()+"\t"+goodsItem.getNumber()+"\t"+goodsItem.getMoney());}System.out.println("------------------------------");// 票尾System.out.println(shoppingCar.size()+"项商品");System.out.println("共计:"+totalNumber+"件");System.out.println("共:"+totalMoney+"元");System.out.println("------------------------------");// 清空集合shoppingCar.clear();}/*** 购买商品*/public static void buyGoods() {System.out.println("------------------------------");System.out.println("\t商品列表");System.out.println("商品id\t名称\t单价\t计价单位");// 展示所有商品项for (int index = 0; index < items.size(); index++) {// 获取每一个商品项GoodsItem goodsItem = items.get(index);System.out.println(goodsItem.getId()+"\t"+goodsItem.getName()+"\t"+goodsItem.getPrice()+"\t"+goodsItem.getUnit());}System.out.println("------------------------------");System.out.println("请输入您要购买的商品项(输入格式:商品id-购买数量),输入end表示购买结束。");// 创建键盘输入对象Scanner sc = new Scanner(System.in);while(true){// 接收用户输入String str = sc.nextLine();if(str.equals("end")){ // 结束购买System.out.println("购买结束");break;} else {String[] strs = str.split("-");if(strs.length != 2) {System.out.println("你输入的购买姿势不对,请换个姿势再来一次(格式:商品id-购买数量)");continue;}// 获得商品idString id = strs[0];// 获得商品数量int number = Integer.parseInt(strs[1]);// 根据商品id获得商品项GoodsItem item = findGoodsItemById(id);if(item != null) {item.setNumber(number);item.setMoney(number * item.getPrice());// 添加商品到购物车addItemToShoppingCar(item);} else {// 用户输入的商品id不存在System.out.println("您输入的商品id不存在,请重新输入!!");}}}}/*** 添加商品到购物车*/public static void addItemToShoppingCar(GoodsItem item){// 遍历购物车中的所有商品项for (int index = 0; index < shoppingCar.size(); index++) {// 获取每一个商品项GoodsItem goodsItem = shoppingCar.get(index);if(goodsItem.getId().equals(item.getId())){goodsItem.setNumber(goodsItem.getNumber() + item.getNumber());goodsItem.setMoney(goodsItem.getPrice() * goodsItem.getNumber());return;}}// 将要够购买的商品项添加集合中shoppingCar.add(item);}/*** 根据商品项id查找商品*/public static GoodsItem findGoodsItemById(String id){// 遍历所有商品项for (int index = 0; index < items.size(); index++) {// 获取每一个商品项GoodsItem goodsItem = items.get(index);if(goodsItem.getId().equals(id)){// 创建购买商品对象return new GoodsItem(goodsItem.getName(), id, goodsItem.getPrice(), 0, goodsItem.getUnit(), 0);}}return null;}/*** 初始化商项*/public static void initGoodsItems() {// 创建多个商品项GoodsItem item1 = new GoodsItem("少林核桃", "001", 15.5, 0, "斤", 0);GoodsItem item2 = new GoodsItem("尚康饼干", "002", 14.5, 0, "包", 0);GoodsItem item3 = new GoodsItem("移动硬盘", "003", 345, 0, "个", 0);GoodsItem item4 = new GoodsItem("高清无码", "004", 199, 0, "G", 0);// 将商品项添加到集合中items.add(item1);items.add(item2);items.add(item3);items.add(item4);}
}

运行结果:

集合的使用——超市购物小票案例相关推荐

  1. java打印超市消费小票_Java-超市购物小票案例-详细介绍

    1.1  超市购物购物小票需求分析 用户循环进行三个操作: 1.输入购买数量,代表为所购买货物的数量赋值,从而计算每项商品金额 2.打印小票,将已有数据打印 3.退出系统(因为该程序为循环操作,无法终 ...

  2. mysql超市买东西的购物小票_Java-超市购物小票案例-详细介绍

    1.1  超市购物购物小票需求分析 用户循环进行三个操作: 1.输入购买数量,代表为所购买货物的数量赋值,从而计算每项商品金额 2.打印小票,将已有数据打印 3.退出系统(因为该程序为循环操作,无法终 ...

  3. Java-超市购物小票案例-详细介绍

    1.1  超市购物购物小票需求分析 用户循环进行三个操作: 1.输入购买数量,代表为所购买货物的数量赋值,从而计算每项商品金额 2.打印小票,将已有数据打印 3.退出系统(因为该程序为循环操作,无法终 ...

  4. c语言中,偷机取巧,输出超市购物小票的票头

    #include <stdio.h> int main() {     printf("****************************\n");     pr ...

  5. 超市购物系统小票打印

    完成超市购物小票案例:下图为购物小票案例的控制台输出的数据 首先定义一个商品的实体类代码如下: /** 定义GoodsItem类(名称.货号.单价.数量.计价单位.金额)*/ public class ...

  6. 超市小票案例--适合Java初级练习Scanner类以及Java基础语法的例题

    购买总数量超过10件或者总金额大于100,就在总价的基础上打五折,要求最终出现如下效果. //超市购物小票案例 import java.util.Scanner; public class Super ...

  7. 超市购物打印小票的简单程序 记录下来

    做了2个版本的超市购物小票打印程序,做过记录 一.C/S样图如下:      其中 输入商品的编码 回车 将会调用该商品的信息,显示在下面的DataGridView中 ,DataGridView中数量 ...

  8. 购物小票的巧妙新设计

    背景 标题:The humble receipt gets a brilliant redesign 发表时间:2019年5月17日 原文链接 资讯来源:阮一峰先生每周推荐第 60 期的内容 正文内容 ...

  9. 【案例2-3】超市购物程序设计

    黑马程序员java基础案例教程 编写一个超市购物程序,在一家超市有牙刷.毛巾.水杯.苹果和香蕉五种商品,商品价格如下图所示 编号 商品名称 价格(元) 1 牙刷 8.8 2 毛巾 10.0 3 水杯 ...

最新文章

  1. 列举一些RNN类模型的常见使用形式以及常见的应用
  2. php实现stripos,php stripos()函数
  3. 2011年9月最新整理的10个有趣的jQuery插件集合
  4. mysql修改表的备注信息_修改mysql 数据库的 表的列的备注信息
  5. 机器人三定律真有用?但AI可能并不会遵守
  6. Redis源码阅读-Dict哈希字典
  7. 自制简易浏览器(Python)
  8. 淘宝新店刚开详情页到底需要怎么做
  9. 【联盛德W806上手笔记】四、PWM模块
  10. 使用 Go 进行 iOS 和 Android 编程
  11. html 手机录视频,手机怎么录制视频 怎么用手机录视频?
  12. jBox----弹出层插件
  13. 联想 扬天M4000q-11-Hackintosh-Opencore 黑苹果efi引导文件
  14. java 红绿灯_java -- GUI 红绿灯
  15. java win10窗口启动假死_win10桌面假死如何解决
  16. 360浏览器怎样清除缓存
  17. 怎样让chatGPT给你打工然后月入过千?
  18. redis发布订阅与集群
  19. 信息系统项目管理师高频考点(第八章)
  20. python项目七:自建公告板

热门文章

  1. pico的学习之路(四)——HC-SR501人体感应模块(树莓派pico实现)
  2. [汇编]四字,双字,字,字节以及四进制和32进制
  3. 无线标准802.11ac 和 802.11ax到底有什么区别?哪个更快?
  4. 如何修改ICO文件的尺寸
  5. 2022-2028年中国眼镜制造行业市场竞争策略及未来发展潜力报告
  6. soj115 御坂网络
  7. 解决问题CondaVerificationError: The package for olefile located at...
  8. 在Linux服务器上解压rar压缩文件
  9. 报错WARNING: Ignoring invalid distribution -pencv-python
  10. Android 数据库Sqlite的使用(1)