脚本宝典收集整理的这篇文章主要介绍了面向对象大作业1-购物车,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
0.人员分工
任务 | 姓名 |
编码规范、前期调查与功能设计 | 陈倩 |
面向对象设计、PPT制作或博客制作 | 包琪琪 |
1.前期调查
调查结果显示购物车程序所能实现的功能大致有:
1.购物车中的商品属性包括名称、单价、编号,且满足商品的增加、删除、结算等功能(即清空购物车等);
2.在购物车中能显示总价。
2.系统功能结构图
3.UML类图
4.本系统对面向对象的封装性的体现(体现了继承与多态):
我们在编写程序时,有一些方法的接口可能会被他人利用,这样的话,我们不想让他人做的事就可能会通过这些接口来实现,或者不想让他人看到的信息就可以被外界看到。所以,我们需要将一些方法改为”private",仅类内程序能够调用,在想办法在从内部调用的基础上让外部可以在可控范围内操作,简单一点来说就是建立一道门将我们的方法保护起来,比如说本程序的下列代码,因为list()方法写的太烂,我不想让用户看到这个方法,那么我可以将这个方法设置为private,外部只能通过调用showList()方法来看到我的商品架,从而向用户隐藏了list()这个方法。
5.项目包结构与关键代码:项目的包结构(为什么要这样设计包结构),主要功能(如网购物车添加、删除商品)的流程图与关键代码。
1.查看购物车(可以看到购物车中已有的商品、数量、及其金额)(在这里我添加了卡西欧手表、SNH48徽章、外星人高端游戏本,数量都为1)
2.删除购物车中的商品
3.增加购物车中的商品
4.结算购物车
5.Shop包
Product类
package Shop; public class Product { private int id;// 商品编号 private String name;// 商品名称 private double price;// 单价 public Product(int id, String name,double price) { this.id = id; this.name = name; this.price = price; } @Override public String toString() { return "Product [id=" + id + ", name=" + name + ", 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; } }
ProductItem类
package Shop; public class ProductItem { private Product product;//购买的商品 private int count;//商品数量 public ProductItem() { } public ProductItem(Product product, int count) { this.product = product; this.count = count; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public double totalMoney(){//小计 double price=product.getPrice();//获取商品单价 return price*count; } }
ShoppingCart类
package Shop; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class ShoppingCart { private static Map<Integer,ProductItem> map=new LinkedHashMap<Integer,ProductItem>(); public void addProduct(Product p){//添加商品 int productId=p.getId(); if(map.containsKey(productId)){ //判断商品编号是否存在 ProductItem productItem=map.get(productId); productItem.setCount(productItem.getCount()+1); //数量增加 }else{ map.put(productId, new ProductItem(p,1));//新增商品 } } public static void showAll(){//查看订单信息 Collection<ProductItem> productItems = map.values();//获取键值 Iterator<ProductItem> iterator = productItems.iterator(); while(iterator.hasNext()){ ProductItem productItem = iterator.next(); Product product = productItem.getProduct(); System.out.println("编号:"+product.getId()+",名称:" +product.getName()+",单价:"+product.getPrice()+",数量:"+productItem.getCount() +",小计:"+productItem.totalMoney()); } } public boolean deleteProduct(int productId){//删除商品 if(map.containsKey(productId)){ map.remove(productId); return true; } return false; } public boolean modifyProduct(int productId,int count){//修改商品数量 if(map.containsKey(productId)){ if(count>=1){ ProductItem productItem = map.get(productId); productItem.setCount(count); return true; }else if(count==0){//删除某商品 deleteProduct(productId); return true; } } return false; } public void clearCart(){//清空购物车 map.clear(); } public double totalAllMoney(){//商品总价值 double total=0; Collection<ProductItem> productItems = map.values(); Iterator<ProductItem> iterator = productItems.iterator(); while(iterator.hasNext()){ ProductItem productItem = iterator.next(); double money=productItem.totalMoney(); total+=money; } return total; } public static int addGoods(int choiceGoods, int choiceAddNumber) { // TODO Auto-generated method stub return 0; } public static void cleanGoods() { // TODO Auto-generated method stub } }
Test类
package Shop; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); ShoppingCart cart = new ShoppingCart(); Product p1 = new Product(1, "卡西欧手表", 890); Product p2 = new Product(2, "SNH48徽章", 48); Product p3 = new Product(3, "外星人高端游戏本", 18969);// 测试买两件商品的情况 cart.addProduct(p1); cart.addProduct(p2); cart.addProduct(p3); cart.showAll(); System.out.println("------------------------"); System.out.println("请输入你要删除的商品编号:"); int id=in.nextInt(); boolean flag = cart.deleteProduct(id); if (flag) { System.out.println("编号为:" + id + "的商品删除成功!"); } else { System.out.println("删除失败"); } cart.showAll(); System.out.println("------------------------"); System.out.println("请输入你要修改的商品编号:"); int id1=in.nextInt(); System.out.println("请输入你要修改的商品数量:"); int count=in.nextInt(); boolean flag2 = cart.modifyProduct(id1, count); if (flag2) { System.out.println("编号为:" + id1 + "的商品修改成功!"); } else { System.out.println("修改失败"); } cart.showAll(); System.out.println("总价为:" + cart.totalAllMoney()); } }
以上是脚本宝典为你收集整理的面向对象大作业1-购物车全部内容,希望文章能够帮你解决面向对象大作业1-购物车所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。