用Java简单编写一个购物车程序
人员分工:
任务 | 姓名 |
---|---|
博客编写、面向对象设计、前期调查与功能设计(ShoppingCart类,Main类主要框架构建) | 潘鋆祥 |
编码规范检查、前期调查与功能设计(Commodity类,Main类剩下的界面展示代码) | 曾宇 |
要求:
- 编写一个商品类,带有商品名称,商品单价等属性
- 写一个购物车类,有添加商品,修改商品数量,删除商品等方法
- 编写一个测试类测试上述功能
流程图
主要功能描述
浏览商品时能直接将想要的商品加入到购物车内,而浏览购物车时,能删除不想要的商品,且能修改商品的数目,以上功能均能返回菜单。最后结账。
系统功能设计
- 添加商品时,通过商品编号来加入购物车,同时通过商品编号来判断购物车中是否已有该商品
- 删除商品时,通过购物车中的List来进行删除商品操作
- 修改商品信息时,也是通过购物车中的List来定位元素进行修改
- 除了最终的结账操作外,其中每个操作都能再执行一遍,即进行操作之后能返回原来的界面
代码如下
商品类:
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;
}
}
}
}