第一次面向对象任务--购物车
0. 人员分工
| 任务 | 姓名 |
|---|---|
| 系统功能结构设计,流程图,功能描述 | 兰心怡 |
| 前期调查,博客制作,部分代码 | 王思嘉 |
1. 前期调查
1)我们以京东上买东西为例,进去界面可以看到查询商品

2)点击想要的商品可以加去购物车

3)在购物车中可以增加或删除商品,并且可以计算出总金额

2. 系统功能结构图

3. 系统描述

4.UML类图
1)Product类

2)联系

5.本系统哪里体现了面向对象的封装性
**体现在将商品类的对象属性都设置为private,外部无法直接访问到它的属性,只能通过getter(getXX)、setter(setXX)来访问。
**面向对象的封装性就是把类的这些内部的信息统一保护起来,防止外包随意修改内部数据,保证数据的安全性,保证外部尽可能正确地使用这个类。

6.购物车相关运行成果展示
1)商品展示

2)添加商品

3)删除商品

4)查看购物车

5)计算总金额

7.项目包结构与关键代码:
1)购物车的包结构

2)Product类
package shoppingCart;
public class Product {
private static int[] productId = new int[100];// 商品id
private static String[] productName = new String[100];// 商品名称
private static double[] productPrice = new double[100];// 商品价格
private static int[] productCount = new int[100];//商品在购物车中的数量
public static int[] getProductId() {
return productId;
}
public static void setProductId(int[] productId) {
Product.productId = productId;
}
public static String[] getProductName() {
return productName;
}
public static void setProductName(String[] productName) {
Product.productName = productName;
}
public static double[] getProductPrice() {
return productPrice;
}
public static void setProductPrice(double[] productPrice) {
Product.productPrice = productPrice;
}
public static int[] getProductCount() {
return productCount;
}
public static void setProductCount(int[] productCount) {
Product.productCount = productCount;
}
public static void list() {
for(int i = 0; i < 9; i++) {
productId[i] = i;
switch (i) {
case 0:
productName[i] = "羽绒服";
productPrice[i] = 210.8;
productCount[i] = 1;
break;
case 1:
productName[i] = "项链";
productPrice[i] = 2000;
productCount[i] = 0;
break;
case 2:
productName[i] = "耳环";
productPrice[i] = 157.0;
productCount[i] = 0;
break;
case 3:
productName[i] = "连衣裙";
productPrice[i] = 218.3;
productCount[i] = 0;
break;
case 4:
productName[i] = "毛衣";
productPrice[i] = 177.6;
productCount[i] = 2;
break;
case 5:
productName[i] = "围巾";
productPrice[i] = 88.4;
productCount[i] = 1;
break;
case 6:
productName[i] = "手镯";
productPrice[i] = 120.8;
productCount[i] = 0;
break;
case 7:
productName[i] = "背包";
productPrice[i] = 168;
productCount[i] = 1;
break;
case 8:
productName[i] = "牛仔裤";
productPrice[i] = 154.8;
productCount[i] = 0;
break;
}
}
}
public static void showProduct() {
System.out.println("ID 商品名 价格");
for (int i = 0; i < 9; i++) {
System.out.println(productId[i] + " " + productName[i] + " " + productPrice[i]);
}
}
}
3)shopCart代码
package shoppingCart;
public class ShopCart {
public static void showCart() {
System.out.println("ID 商品名 价格 数量");
for(int i = 0; i < 9; i++) {
if(Product.getProductCount()[i] > 0) {
System.out.println(Product.getProductId()[i] + " " + Product.getProductName()[i] + " " + Product.getProductPrice()[i]+" "+Product.getProductCount()[i]);
}
}
}
public static void add(int productId, int addNumber) {
for(int i = 0; i < 9; i++) {
if(Product.getProductId()[i] == productId) {
Product.getProductCount()[i]+=addNumber;
}
}
}
public static void delete(int productId, int deltNumber) {
for(int i = 0; i < 9; i++) {
if(Product.getProductId()[i] == productId) {
if(Product.getProductCount()[i]-deltNumber < 0) {
System.out.println("删除无效");
}else {
Product.getProductCount()[i]-=deltNumber;
System.out.println("删除成功");
}
}
}
}
public static void find(int productId) {
for(int i = 0; i < 9; i++) {
if(Product.getProductId()[i] == productId) {
System.out.println(Product.getProductId()[i] + " " + Product.getProductName()[i] + " " +Product.getProductPrice()[i]);
}
}
}
public static void total() {
int sum=0;
for(int i = 0; i < 9; i++) {
if(Product.getProductCount()[i] > 0) {
sum+=Product.getProductPrice()[i]*Product.getProductCount()[i];
}
}
System.out.println("商品总价格为:"+sum);
}
}
4)购物车的Main代码
package shoppingCart;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Scanner pause = new Scanner(System.in);
Product.list();
while(true) {
beginMenu();
System.out.print("请输入您的选项:");
int choice = sc.nextInt();
switch(choice) {
case 1:
Product.showProduct();
System.out.println("按任意键+回车返回主界面");
String Pause = pause.next();
break;
case 2:
System.out.println("请输入所查询商品ID");
int id = sc.nextInt();
ShopCart.find(id);
System.out.println("1.加入购物车");
System.out.println("2.删除此商品");
int c1 = sc.nextInt();
if(c1 == 1) {
System.out.println("请输入所要增加的商品数量");
int addNumber = sc.nextInt();
ShopCart.add(id, addNumber);
}
if(c1 == 2) {
System.out.println("请输入要减少的商品数量");
int deltNumber = sc.nextInt();
ShopCart.delete(id, deltNumber);
}
ShopCart.showCart();
System.out.println("按任意键+回车返回主界面");
String Pause1 = pause.next();
break;
case 3:
ShopCart.showCart();
System.out.println("按任意键+回车返回主界面");
String Pause2 = pause.next();
break;
case 4:
ShopCart.showCart();
ShopCart.total();
System.out.println("按任意键+回车返回主界面");
String Pause3 = pause.next();
break;
case 0:break;
}
if(choice==0)break;
}
endMenu();
}
public static void beginMenu() {
System.out.println("**********************************");
System.out.println("****** 欢迎光临! ******");
System.out.println("**********************************");
System.out.println("您有什么需要?");
System.out.println("1)商品展示");
System.out.println("2)商品查询");
System.out.println("3)查看购物车");
System.out.println("4)购物车预结算");
System.out.println("0)退出");
}
public static void endMenu() {
System.out.println("**********************************");
System.out.println("**** 谢谢惠顾,欢迎下次光临! ****");
System.out.println("**********************************");
}
}
8.总结与思考
在此次编写购物车中,觉得编写代码首先要了解自己需要创建哪些类,而这些类中又需要哪些属性和方法,确定类的属性和方法可以从想要代码实现的功能入手,从功能出发,确定可能会用到的方法和属性。编写代码过程中尽量使用自己比较浅显易懂的方法和类。一定要注意各个类之间的引用。我们在研究Arrarylist的使用上花费了很多时间,虽然最终不能应用,但在过程中受益匪浅。
浙公网安备 33010602011771号