面向对象大作业——购物车程序

用Java简单编写一个购物车程序

人员分工:
任务姓名
博客编写、面向对象设计、前期调查与功能设计(ShoppingCart类,Main类主要框架构建)潘鋆祥
编码规范检查、前期调查与功能设计(Commodity类,Main类剩下的界面展示代码)曾宇
要求:
  1. 编写一个商品类,带有商品名称,商品单价等属性
  2. 写一个购物车类,有添加商品,修改商品数量,删除商品等方法
  3. 编写一个测试类测试上述功能
流程图

在这里插入图片描述

主要功能描述

浏览商品时能直接将想要的商品加入到购物车内,而浏览购物车时,能删除不想要的商品,且能修改商品的数目,以上功能均能返回菜单。最后结账。

系统功能设计
  1. 添加商品时,通过商品编号来加入购物车,同时通过商品编号来判断购物车中是否已有该商品
  2. 删除商品时,通过购物车中的List来进行删除商品操作
  3. 修改商品信息时,也是通过购物车中的List来定位元素进行修改
  4. 除了最终的结账操作外,其中每个操作都能再执行一遍,即进行操作之后能返回原来的界面
代码如下

商品类:

package shoppingCartSystem;

public class Commodity {
	private int id;
	private String name;
	private double price;
	
	public Commodity(int id, String name, double price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
}

购物车类

package shoppingCartSystem;
import java.util.ArrayList;

public class ShoppingCart {
	
	private ArrayList<Commodity> items = new ArrayList<>();
	int  []num = new int[20];
	{
		for(int i = 0;i<20;i++)
		{
			num[i] = 0;
		}
	}
	public int size()
	{
		return items.size();
	}
	public void changeNum(int x, int y)
	{
		num[x-1] = y;
	}

	public void add(Commodity item) {
		int i;
		for(i = 0; i < items.size(); i++)
		{
			if(items.get(i).getId() == item.getId())
			{
				break;
			}
		}
		if(i == items.size())
		{
			items.add(item);
		}
		num[i]++;
	}
	public void delete(int x) {
		for(int i = x - 1; i < items.size(); i++)
		{
			num[i] = num[i+1];
		}
		items.remove(x - 1);
	}

	public int getQty() {
		int x = 0;
		for(int i = 0; i < items.size(); i++)
		{
			x += num[i];
		}
		return x;
	}
	
	public double checkout() {
		double x = 0;
		for(int i = 0; i< items.size(); i++)
		{
			x += items.get(i).getPrice()*num[i];
		}
		return x;
	}
	
	public void show() {
		for(int i = 0; i < items.size(); i++)
		{
			printCommodity(items.get(i));
			System.out.println(", number: " + num[i] + ", subtotal: " + num[i]*items.get(i).getPrice());
		}
		if(items.size()==0)
		{
			System.out.println("您的购物车暂时为空呢。");
		}
	}

	private void printCommodity(Commodity commodity) {
		System.out.printf("name: %s, price: %f", commodity.getName(), commodity.getPrice());
		
	}

}

测试类

package shoppingCartSystem;

import java.util.ArrayList;
import java.util.Scanner;
import shoppingCartSystem.Commodity;
import shoppingCartSystem.ShoppingCart;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		Commodity[] product = new Commodity[20];
		product[0] = new Commodity(10001, "苹果", 10.5);
		product[1] = new Commodity(10002, "手机", 25.99);
		product[2] = new Commodity(10003, "Java教程", 8.88);
		ShoppingCart cart = new ShoppingCart();
		while (true) {
			System.out.println("----------------------------------------------");
			System.out.println("1.查看商品列表");
			System.out.println("2.查看购物车");
			int x;
			switch (x = sc.nextInt()) {
			case 1:
				for (int i = 0; i < 3; i++) {
					System.out.printf("number: %d, name: %s, price: %f", product[i].getId(), product[i].getName(),
							product[i].getPrice());
					System.out.println();
				}
				System.out.println("请选择你需要加入购物车的商品编号(若要退出该界面,请输入0):");
				while (true) {
					int y = sc.nextInt();
					if (y > 10000 && y < 10004) {
						cart.add(product[y - 10001]);
						System.out.println("添加成功!如需要继续添加商品,请输入商品编号(若要退出该界面,请输入0):");
					} else if (y == 0) {
						break;
					} else {
						System.out.println("您的输入有误,请重新输入!");
					}
				}
				continue;

			case 2:
				while (true) {
					cart.show();
					if (cart.size() == 0) {
						break;
					}
					System.out.println("----------------------------------------------");
					System.out.println("1.删除购物车中的商品");
					System.out.println("2.修改商品的数量");
					System.out.println("3.结算");
					System.out.println("若要退出该界面,请输入0");
					int y = sc.nextInt();
					switch (y) {
					case 0:
						break;
					case 1:
						System.out.println("输入你需要删除商品的位置(若该商品在第一行,则输入1)");
						while (true) {
							int z = sc.nextInt();
							if (z <= cart.size()) {
								cart.delete(z);
								System.out.println("删除成功!");
							} else {
								System.out.println("您的输入有误,请重新输入!");
								continue;
							}
							break;
						}
						continue;
					case 2:
						System.out.println("请输入你需要修改商品的位置(若该商品在第一行,则输入1)");
						int location = sc.nextInt();
						System.out.println("然后再输入你修改后的目标数字:");
						int target = sc.nextInt();
						cart.changeNum(location, target);
						continue;
					case 3:
						System.out.println("数量:" + cart.getQty());
						System.out.println("总价" + cart.checkout());
						return;
					}
					break;
				}
				break;
			}
		}
	}
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的Java面向对象购物系统的代码示例: ```java import java.util.*; class Product { String name; double price; int quantity; public Product(String name, double price, int quantity) { this.name = name; this.price = price; this.quantity = quantity; } public double getTotalPrice() { return price * quantity; } } class ShoppingCart { List<Product> products; public ShoppingCart() { products = new ArrayList<>(); } public void addProduct(Product product) { products.add(product); } public void removeProduct(Product product) { products.remove(product); } public double getTotalPrice() { double totalPrice = 0; for (Product product : products) { totalPrice += product.getTotalPrice(); } return totalPrice; } } public class Main { public static void main(String[] args) { Product p1 = new Product("Book", 10.0, 2); Product p2 = new Product("Pen", 1.0, 5); Product p3 = new Product("Notebook", 3.0, 3); ShoppingCart cart = new ShoppingCart(); cart.addProduct(p1); cart.addProduct(p2); cart.addProduct(p3); System.out.println("Total price: " + cart.getTotalPrice()); } } ``` 在这个示例中,我们定义了两个类:`Product`和`ShoppingCart`。`Product`类用于表示一个商品,包括名称、价格和数量。`ShoppingCart`类用于表示购物,包括产品列表和一些操作方法,如添加和删除产品以及获取总价。 在主方法中,我们创建了三个产品,并将它们添加到购物中。最后,我们打印出购物中所有产品的总价。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值