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

1.1  超市购物购物小票需求分析

用户循环进行三个操作:

1、输入购买数量,代表为所购买货物的数量赋值,从而计算每项商品金额

2、打印小票,将已有数据打印

3、退出系统(因为该程序为循环操作,无法终止,如果不想再进行操作,则退出系统)

1.1.1 案例代码一

public class GoodsItem {

//成员变量
                     private String name;   //名称
                     private String id;     //编号
                     private double price;  //单价
                     private int num;       //数量
                     private String unit;   //计价单位
                     private double money;  //金额
 
 //有参构造方法
 public GoodsItem(String name, String id, double price, int num, String unit, double money) {
            super();
            this.name = name;
            this.id = id;
            this.price = price;
            this.num = num;
            this.unit = unit;
            this.money = money;
 }
 //无参构造方法
 public GoodsItem() {
  super();
  // TODO Auto-generated constructor stub
 }
 
 //取值(get)和赋值(set)方法
 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 getNum() {
  return num;
 }
 public void setNum(int num) {
  this.num = num;
 }
 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;
 }

}

1.2  打印超市购物小票

import java.util.ArrayList;
import java.util.Scanner;

public class supermaket {
/**

*@Fields data :成员位置定义集合,存储所有的商品项对象

*/

static ArrayList<GoodsItem> data=new ArrayList<GoodsItem>();
                       public static void main(String[] args) {
                       //为集合准备数据

initData();

//打印欢迎语句
                       System.out.println("欢迎进入超市购物系统!");

while(true) {
                 //使用switch给出操作选择

System.out.println("请输入你要进行的操作:1输入购物数量 2打印小票 3退出");
                 //通过键盘录入得到数据
                 Scanner sc=new Scanner(System.in);
                 int optNumber=sc.nextInt();

switch(optNumber) {
          case 1:   //给所有数据量赋值,调用给所有数据的数量与金额赋值方法
                        enterNumber();
                        break;
          case 2:  //打印购物小票,调用打印购物小票的方法
                        printReceipt();
                        break;
          case 3:
                      System.out.println("谢谢您的使用");
                      //退出程序

System.exit(0);
         default:

System.out.println("请输入正确的数字!");

break;
               }
         }
}

//定义方法,向成员位置的集合赋值
 public static void initData() {
            //创建多个商品项对象

GoodsItem sls=new GoodsItem("少林寺核桃","090115",15.5,0,"个",0);
            GoodsItem shk=new GoodsItem("尚康饼干","090027",14.5,0,"袋",0);
            //将多个商品项对象放入集合中

data.add(sls);
            data.add(shk);
 }

//为所有的数据赋值数量和金额
  public static void enterNumber() {
                    //集合的变遍历

for(int i=0;i<data.size();i++) {
                                   //依次获取到集合中每一个元素

GoodsItem thisGoods = data.get(i);

//提示用户,输入该商品项的数量

//获取该商品项名称
                                  String thisGoodsName = thisGoods.getName();
                                  System.out.println("请输入"+thisGoodsName+"的购买数量");

//键盘录入接受商品数量  
                                 Scanner sc = new Scanner(System.in);
                                 int thisGoodsNumber=sc.nextInt();
                                 //根据数量计算金额   金额=单价*数量

double thisGoodsMoney=thisGoods.getPrice()*thisGoodsNumber;

//为该商品的数量与金额赋值
                                 thisGoods.setNum(thisGoodsNumber);
                                 thisGoods.setMoney(thisGoodsMoney);
                   }
  }

//打印小票的方法
 private static void printReceipt() {
                       //票头

System.out.println("欢迎光临");
                       System.out.println("品名\t售价\t数量\t单位\t金额");
                       System.out.println("------------------------");
                       //票体

//定义变量,记录所有的商品数量

                         int totalNumber = 0;
                       //定义变量,记录所有的商品金额 

                        double totalMoney = 0;
                       //遍历集合     
                        for(int i=0;i<data.size();i++) {
                                  //一依次获取每一个商品项   

                                 GoodsItem g=data.get(i);
                                 //打印商品项   

System.out.println(g.getName()+g.getId()+"\t"+g.getPrice()+"\t"+g.getNum()+"\t"+g.getUnit()+"\t"+g.getMoney());
                           

                                //累加数量和金额  
                                totalNumber+=g.getNum();
                                totalMoney+=g.getMoney();
               }
             System.out.println("------------------------");
             //票脚
             System.out.println("共"+data.size()+"项商品");
             System.out.println("共"+totalNumber+"件商品");
             System.out.println("共"+totalMoney+"元");
             System.out.println();
       }
}

学习更多基础Java教程可以在这个网站学习:http://how2j.cn/p/2099

原文地址:https://www.cnblogs.com/fishshadow/p/10997507.html

时间: 2024-10-05 05:32:06

Java-超市购物小票案例-详细介绍的相关文章

超市购物小票案例

//定义商品类,包含名称,货号,单价,数量计价单位,金额 public class GoodsItem{     private String name;     private String id;     private int number;     private String unit;     private double money;     //构造方法     public GoodsItem(){}     GoodItem(String name,String id,dou

Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要  和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数

Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayLis

Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 第1部分 Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, F

Java 并发专题 : Executor详细介绍 打造基于Executor的Web服务器

适配器模式,将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景:系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配.适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况. 代码实现: //Adapter.h #include "stdafx.h" #include <iostream> class Adaptee

Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例

此页面为WP8"Surface Pro 3"应用的发布页面. "Surface Pro 3"是一款收集Surface Pro 3的玩机技巧的WP8程序,更好的帮助Surface用户理解并使用它. 此页面主要记录开发进度.APP发布等情况. -------------------相关进度--------------------- 目前进度:UI相关资源前期准备中,各相关开放平台的AppID申请中... Java 集合系列 09 HashMap详细介绍(源码解析)和使用

Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

Java 集合系列之 HashMap详细介绍(源码解析)和使用示例

学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:286945438 我们一起学Java! 概要 这一章,我们对HashMap进行学习. 我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括: 第1部分 HashMap介绍 第2部分 HashMap数据结构 第3部分 HashMap源码解析(基于JDK1.6.0_45) 第3.1部分 HashMap的"拉链法"相关内容 第

Java输入输出流的使用详细介绍

出处:http://www.jb51.net/article/36138.htm 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用