栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

第一次大作业:购物车

Java 更新时间:发布时间: 百科书网 趣学号

0.人员分工
任务姓名
编码规范、前期调查与功能设计唐宇悦
代码编写、面向对象设计、博客编写制作吕以晴



 

1.前期调查

购物车功能:
  • 1.展示库内所有商品
  • 2.商品的搜索功能
  • 3.选定商品添加入购物车
  • 4.查看购物车所有商品或从购物车删除某选中商品。
  • 5.清空购物车
  • 6.在购物车中有显示结算总价的程序


首先进入到京东商城,可以看到很多商品信息,我们在最上面进行想搜索的商品

点击搜索到的商品其中之一,可以看到该商品详细信息,最下面还可以将该商品加入购物车

 

搜索可乐和前面搜索饼干一样的流程,仍可得到商品信息,并可加入购物车

用户进入到购物车后,可以看到购物车中商品名称和价格以及自己加入的各商品数量,并还可以点击删除商品等操作,最右下角可以看到所有已勾选商品总价,点击结算即可购买购物车中选中商品。

 2.系统功能结构图

 3.系统描述

红色字代表可能的对象(名词)或属性,用蓝色字代表可能的方法(动词)

 展示库中所有商品,并通过用户的选择做出搜索特定商品,向购物车中添加、删除商品,甚至清空购物车等操作,最后结算时还需统计购物车内商品的总金额。

 4.UML类图

类的关键属性与方法、类与类之间的关系。

5.封装性

 List类中的各变量都被设置为private,仅类内程序能够调用,外部只能通过getter和setter方法来对它们进行操作。

6.程序功能介绍 6.1开始与结束菜单

6.2功能选择界面 ①展示商品

选择选项1,则会展示库内所有商品信息

 

 若选择添加商品到购物车,则会提示用户输入商品id与数量

 成功加入购物车后,可选择是否继续添加,若否,则返回选择界面

加入商品后的购物车

②商品查询

选择选项1,则会提示用户输入想要查找的商品名,并输出相应信息[有/没有]

 若商品存在,则会询问用户是否要将该商品加入购物车,若是,则会继续询问加入购物车的数量

 加入后的购物车

 ③查看购物车

添加商品至购物车后,会展示出其信息,并询问用户是否对购物车内商品进行删除

 若选择是,则会询问想要删除的商品的id及数量

 

 删除后的购物车

 

 ④清空购物车

清空后的购物车

 ⑤购物车预结算

 选择选项5,则会展示购物车内所有商品,并自动算出商品总价

 7.主要代码

Main类

package Shopping;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		Scanner pause = new Scanner(System.in);// 暂停参数
		List.list();// 将商品加入库中
		
		while (true) {
			Menu.beginMenu();//
			// Menu.endMenu();
			System.out.println("请输入您的选择:");
			int choose = sc.nextInt();
			switch (choose) {
			case 1:// 展示商品
				Show.showGoods();

				System.out.println("<输入任意数字,按回车返回主界面>");
				String Pause = pause.next();
				break;
			case 2:// 商品查询
				System.out.println("请输入商品名称:");
				String name = sc.next();
				if (List.searchGoods(name) == 0)
					System.out.println("没有找到该商品!");
				System.out.println("<输入任意数字,按回车返回主界面>");
				Pause = pause.next();
				break;
			case 3:// 查看购物车
				Show.showCart();
				System.out.println("<输入任意数字,按回车返回主界面>");
				Pause = pause.next();
				break;
			case 4:// 清空购物车
				ShoppingCart.cleanGoods();
				System.out.println("<购物车已清空>");
				System.out.println("<输入任意数字,按回车返回主界面>");
				Pause = pause.next();
				break;
			case 5:// 购物车预结算
				Show.showPay();
				System.out.println("<输入任意数字,按回车返回主界面>");
				Pause = pause.next();
				break;
			case 0:// 退出
				break;

			}
			for (int i = 0; i < 25; i++)
				System.out.println();
			if (choose == 0)
				break;
		}
		Menu.endMenu();
	}

}

Menu类

package Shopping;

public class Menu {

	public static void beginMenu() {
		System.out.println("  ==================================");
		System.out.println("  ======       欢迎光临!           ======");
		System.out.println("  ==================================");
		System.out.println("您有什么需要?");
		System.out.println("1)商品展示");
		System.out.println("2)商品查询(Name)");
		System.out.println("3)查看购物车");
		System.out.println("4)清空购物车");
		System.out.println("5)购物车预结算");
		System.out.println("0)退出");
	}

	public static void endMenu() {
		System.out.println("  ======================================");
		System.out.println("  ====      谢谢惠顾,欢迎下次光临!    ====");
		System.out.println("  ======================================");
	}
}

List类

package Shopping;

import java.util.Scanner;

public class List {
	private static int goodsNumber = 12;// 商品总数
	private static int[] goodsId = new int[100];// 商品id
	private static String[] goodsName = new String[100];// 商品名
	private static double[] goodsPrice = new double[100];// 商品价格

	public static int getGoodsNumber() {
		return goodsNumber;
	}

	public static void setGoodsNumber(int goodsNumber) {
		List.goodsNumber = goodsNumber;
	}

	public static int[] getGoodsId() {
		return goodsId;
	}

	public static void setGoodsId(int[] goodsId) {
		List.goodsId = goodsId;
	}

	public static String[] getGoodsName() {
		return goodsName;
	}

	public static void setGoodsName(String[] goodsName) {
		List.goodsName = goodsName;
	}

	public static double[] getGoodsPrice() {
		return goodsPrice;
	}

	public static void setGoodsPrice(double[] goodsPrice) {
		List.goodsPrice = goodsPrice;
	}

	// 将商品加入库中
	public static void list() {
		for (int i = 0; i < 12; i++) {
			goodsId[i] = i;
			switch (i) {
			case 0:
				goodsName[i] = "饼干";
				goodsPrice[i] = 58.0;
				break;
			case 1:
				goodsName[i] = "可口可乐";
				goodsPrice[i] = 38.9;
				break;
			case 2:
				goodsName[i] = "橙汁";
				goodsPrice[i] = 20.3;
				break;
			case 3:
				goodsName[i] = "笔记本";
				goodsPrice[i] = 5.5;
				break;
			case 4:
				goodsName[i] = "钢笔";
				goodsPrice[i] = 103.6;
				break;
			case 5:
				goodsName[i] = "矿泉水";
				goodsPrice[i] = 2.0;
				break;
			case 6:
				goodsName[i] = "脸盆";
				goodsPrice[i] = 23.7;
				break;
			case 7:
				goodsName[i] = "薯片";
				goodsPrice[i] = 5.0;
				break;
			case 8:
				goodsName[i] = "泡面";
				goodsPrice[i] = 12.3;
				break;
			case 9:
				goodsName[i] = "帽子";
				goodsPrice[i] = 51.5;
				break;
			case 10:
				goodsName[i] = "围巾";
				goodsPrice[i] = 78.4;
				break;
			case 11:
				goodsName[i] = "积木";
				goodsPrice[i] = 133.8;
				break;
			}
		}
	}

	 展示商品
	// public static void showGoods() {
	// System.out.println("ID 商品名 价格");
	// for (int i = 0; i < goodsNumber; i++) {
	// System.out.println(goodsId[i] + " " + goodsName[i] + " " + goodsPrice[i]);
	// }
	// }

	// 搜索商品
	public static int searchGoods(String name) {
		Scanner sc = new Scanner(System.in);
		// 通过循环,将需要查找的商品名与库中的商品名逐一比较
		for (int i = 0; i < goodsNumber; i++) {
			if (name.equals(goodsName[i])) {
				System.out.println("以下是寻找的结果 : ");
				System.out.println();
				System.out.println("ID	商品名	价格");
				System.out.println(goodsId[i] + "	" + goodsName[i] + "	" + goodsPrice[i]);

				System.out.print("是否将该商品添加到购物车?[是(1)/否(0)] :");
				int chioce = sc.nextInt();

				if (chioce == 1) {
					System.out.print("添加数量?:");

					int number = sc.nextInt();

					if (true) {
						if (ShoppingCart.addGoods(goodsId[i], number) == 1)
							System.out.println("已加入购物车!");// 在购物车单中添加商品
						else
							System.out.println("添加失败!");
					}
				}
				return 1;// 找到商品
			}
		}
		return 0;// 未找到商品
	}
}

ShoppingCart类

package Shopping;

public class ShoppingCart {

	private static int[] number = new int[100];// 记录每个商品的数量,数组的编号刚好与商品id对应
	// 如number[i]=3,即购物车中id=i的商品有3个

	public static int[] getNumber() {
		return number;
	}

	public static void setNumber(int[] number) {
		ShoppingCart.number = number;
	}

	// 增加购物车商品
	public static int addGoods(int goodsId, int goodsAddNumber) {

		for (int i = 0; i < List.getGoodsNumber(); i++) {
			if (i == goodsId) {// 找到商品对应的id
				number[i] += goodsAddNumber;// 增加对应商品数量
				return 1;// 添加成功
			}
		}
		return 0;// 添加失败
	}

	// 删除购物车商品
	public static int subGoods(int goodsId, int goodsSubNumber) {

		for (int i = 0; i < List.getGoodsNumber(); i++) {
			if (i == goodsId) {// 找到对应的商品
				number[i] = number[i] - goodsSubNumber;// 删除对应数量的商品
				if (number[i] < 0)
					number[i] = 0;// 商品数量不能小于0
				return 1;// 删除成功
			}
		}
		return 0;// 删除失败
	}

	// 清空购物车商品
	public static void cleanGoods() {
		// 令每一个商品的对应number均为0
		for (int i = 0; i < List.getGoodsNumber(); i++) {
			number[i] = 0;// 商品数量不能小于0

		}

	}

}

Show类

package Shopping;

import java.util.Scanner;

public class Show {

	// 展示商品清单
	public static void showGoods() {
		System.out.println("ID	商品名	价格");
		for (int i = 0; i < List.getGoodsNumber(); i++) {
			System.out.println(List.getGoodsId()[i] + "	" + List.getGoodsName()[i] + "	" + List.getGoodsPrice()[i]);
		}

		while (true) {
			System.out.print("是否添加商品到购物车?[是(1)/否(0)] :");
			Scanner sc = new Scanner(System.in);
			int chioce = sc.nextInt();

			if (chioce == 1) {
				System.out.println("请输入您需要添加的商品的对应ID:");
				int addId = sc.nextInt();
				System.out.println("请输入您需要添加的商品的数量:");
				int addNumber = sc.nextInt();

				if (true) {
					if (ShoppingCart.addGoods(addId, addNumber) == 1)
						System.out.println("已加入购物车!");// 在购物车单中添加商品
					else
						System.out.println("添加失败!");
				}

			} else
				break;
		}
	}

	public static void showCart() {// 显示购物车中的商品
		double countCartPay = 0;
		System.out.println("———————————— 您的购物车 ————————————");
		System.out.println("商品ID" + "	" + "商品名" + "	" + "商品单价" + "	  " + "购买数量");

		for (int i = 0; i < List.getGoodsNumber(); i++) {
			if (ShoppingCart.getNumber()[i] != 0) {
				System.out.println(List.getGoodsId()[i] + "	" + List.getGoodsName()[i] + "	" + List.getGoodsPrice()[i]
						+ "	* " + ShoppingCart.getNumber()[i]);
			}
			countCartPay = countCartPay + (ShoppingCart.getNumber()[i] * List.getGoodsPrice()[i]);
		}
		System.out.println();
		System.out.println("	您的账单估算 :  " + String.format("%.2f", countCartPay));

		// 让用户选择是否删除购物车中商品
		System.out.println();
		System.out.println("————————————————————————————————————");
		System.out.print("是否要删除购物车中的商品?[是(1)/否(0)] :");
		Scanner sc = new Scanner(System.in);
		int choice = sc.nextInt();
		if (choice == 1) {
			System.out.println("请输入您需要删除的商品的对应ID:");
			int subId = sc.nextInt();
			System.out.println("请输入您需要减少的商品的数量:");
			int subNumber = sc.nextInt();
			if (ShoppingCart.subGoods(subId, subNumber) == 1)
				System.out.println("已从购物车中移除!");// 在购物车单中添加商品
			else
				System.out.println("删除商品失败!");// 判断输入参数是否有效
		}

	}

	public static void showPay() {
		double Pay = 0;
		System.out.println();
		System.out.println("===================================");
		System.out.println("===============购物车===============");
		System.out.println("商品ID" + "	" + "商品名" + "	" + "商品单价" + "	  " + "购买数量");
		System.out.println();
		for (int i = 0; i < List.getGoodsNumber(); i++) {
			if (ShoppingCart.getNumber()[i] != 0) {// 购物车中有该商品
				System.out.println(List.getGoodsId()[i] + "	 " + List.getGoodsName()[i] + "	 " + List.getGoodsPrice()[i]
						+ " 	" + ShoppingCart.getNumber()[i]);
				// 总价格=单价*数量
				Pay = Pay + (ShoppingCart.getNumber()[i] * List.getGoodsPrice()[i]);
			}
		}
		System.out.println();
		System.out.println("===================================");
		// 使用String.format()对字符串进行常规类型格式化
		System.out.println("============总价:" + String.format("%.2f", Pay) + "============");
		System.out.println("");
	}
}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/294513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号