
| 任务 | 姓名 |
|---|---|
| 编码规范、前期调查与功能设计 | 唐宇悦 |
| 代码编写、面向对象设计、博客编写制作 | 吕以晴 |
首先进入到京东商城,可以看到很多商品信息,我们在最上面进行想搜索的商品
点击搜索到的商品其中之一,可以看到该商品详细信息,最下面还可以将该商品加入购物车
搜索可乐和前面搜索饼干一样的流程,仍可得到商品信息,并可加入购物车
用户进入到购物车后,可以看到购物车中商品名称和价格以及自己加入的各商品数量,并还可以点击删除商品等操作,最右下角可以看到所有已勾选商品总价,点击结算即可购买购物车中选中商品。
2.系统功能结构图 3.系统描述红色字代表可能的对象(名词)或属性,用蓝色字代表可能的方法(动词)
展示库中所有商品,并通过用户的选择做出搜索特定商品,向购物车中添加、删除商品,甚至清空购物车等操作,最后结算时还需统计购物车内商品的总金额。
4.UML类图类的关键属性与方法、类与类之间的关系。
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("");
}
}