超市购物系统小票打印

完成超市购物小票案例:下图为购物小票案例的控制台输出的数据

超市购物系统小票打印_第1张图片

首先定义一个商品的实体类代码如下:

/*
 * 定义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;
	}




}

       然后创建一个ShoppingReceipt类,用于实现小票的打印,和方法的创建,这里我把主函数和方法都放在这一个类中,方便你们看。

        这里我把方法和mian函数给你们分开放,但是写的时候我是写在一起的,分开放有利于你们观看。

        我们根据图片将超市购物系统的原始界面打印出来,首先我们要先创建两个集合用于存储商品,一个是存储商品的集合,一个是购物车的集合。 然后再主函数中,我们要循环操作所以用while,当然首先我们要先初始化商品将商品添加到系统中

public class ShoppingReceipt {
    // 定义集合存储商品
	static ArrayList items = new ArrayList();
	// 定义集合存储用户购买的商品项
	static ArrayList shoppingCar = new ArrayList();

	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;
			}
		}
	}

        //上面的方法,写在这里,我只不过把它放在下面展示了而已

}

初始化商品创建静态的initGoodsItems方法

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);
	}

创建buyGoods方法

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;
				}
				// 获得商品id
				String 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不存在,请重新输入!!");
				}
			}
		}
	}

创建根据商品id查找商品方法

/*
	 * 根据商品项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 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);
	}

最后打印小票

/*
	 * 打印小票
	 */
	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();
	}

你可能感兴趣的:(java,开发语言)