Java大作业:购物车1、小组成员以及任务分配2、前期调查(以京东商城界面为例)2.1 主界面2.2 商品界面2.3购物车界面3、系统描述4、系统功能结构图和主要功能流程图功能结构图5、类的设计和UML类图5.1类的设计5.1.1商品5.1.2菜单5.1.3清单5.1.4清单5.2UML类图6、关键代码6.1主界面6.2购物车7、总结 1、小组成员以及任务分配班级 姓名 任务 网络2014 兰苏瑀 负责编写代码相关的工作:编码规范,面向对象设计,功能设计 网络2014 刘宇恒 负责编写博客相关的工作:前期调查,博客制作 2、前期调查(以京东商城界面为例)2.1 主界面![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_UML](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf3cfd76592.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 2.2 商品界面![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_System_02](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf419af48911.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 2.3购物车界面![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_java_03](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf3c27d57063.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184)
由观察京东商城可知:主界面要有分类,使购买者更有目的性。商品展示时主要信息含商品的名称描述和单价。购物车显示的信息有:商品名称和单价,每种商品的预购数量和金额小计,所有商品的总金额。购物车的功能操作按键有:增加或者减少某种商品的预购数量,删除某种商品,清空购物车。 3、系统描述用户进入到商城的主界面,可以看到搜索商品功能的框,以及商品的分类选项。然后点击商品,可以看到商品的名称、单价,可以选择将商品加入购物车。进入购物车,能看到商品的名称介绍、数量、某种商品的小计金额,可以进行增加或减少某种商品的数量、删除某种商品的操作,还可以直接清空购物车。 4、系统功能结构图和主要功能流程图功能结构图![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_UML_04](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf4e86649765.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 5、类的设计和UML类图5.1类的设计5.1.1商品![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_UML_05](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf75aac31650.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 5.1.2菜单![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_System_06](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf4af0538605.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 5.1.3清单![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_System_07](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf558a499578.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 5.1.4清单![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_java_08](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf4a0ff357.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 5.2UML类图![在这里插入图片描述 java中购物车代码 购物车java项目怎么做_java_09](https://s2.51cto.com/images/blog/202305/19111511_6466e9bf4fe4431802.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184) 6、关键代码6.1主界面package shoppingcart;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Menu{
private static Map map = new LinkedHashMap();
static{//类别// 货物编号// 货物名称// 单价//属性
Commodity good1 = new Commodity(1, "苹果", 3.0,"水果");
Commodity good2 = new Commodity(2, "芒果", 7.0,"水果");
map.put(good1.getId(), good1);
map.put(good2.getId(), good2);
}
public static void showMenu(){
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(" [5]清空购物车 ");
System.out.println(" [0]退出 ");
}
public static void inputOption(ShoppingCart cart) {
System.out.println("请输入你要添加的货物编号及个数:");
Scanner sc = new Scanner(System.in);
if (sc.hasNextLine()) {
String s = sc.nextLine();
String[] strings = s.split(" ");
int id = Integer.parseInt(strings[0]);
int count = Integer.parseInt(strings[1]);
Commodity p = map.get(id);
cart.addGood(p, count);
}
System.out.println("——————————————————————【用户总预购货物】——————————————————————");
cart.showAll();
System.out.println("货物总价钱为:" + cart.totalAllMoney()+"¥");
System.out.println("—————————————————————————————————————————————————————");
}
public static void deleteOption(ShoppingCart cart) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你想要删除的货物编号:");
if (sc.hasNextLine()) {
String s = sc.nextLine();
int id = Integer.parseInt(s);
boolean flag = cart.deleteGood(id);
if (flag) {
System.out.println("货物编号:" + id + "的货物删除成功!");
} else {
System.out.println("货物编号" + id + "删除失败,购物车没有该货物!!!");
}
}
System.out.println("——————————————————————【用户总预购货物】——————————————————————");
cart.showAll();
System.out.println("货物总价钱为:" + cart.totalAllMoney()+"¥");
System.out.println("—————————————————————————————————————————————————————");
}
public static void reduceOption(ShoppingCart cart) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你想要减少的货物编号及个数:");
if (sc.hasNextLine()) {
String s = sc.nextLine();
String[] strings = s.split(" ");
int id = Integer.parseInt(strings[0]);
int count = Integer.parseInt(strings[1]);
boolean flag = cart.reduceGood(id,count);
if (flag) {
System.out.println("货物编号:" + id + "的货物减少"+count+"个!");
} else {
System.out.println("减少失败!");
}
}
System.out.println("——————————————————————【用户总预购货物】——————————————————————");
cart.showAll();
System.out.println("货物总价钱为:" + cart.totalAllMoney()+"¥");
System.out.println("—————————————————————————————————————————————————————");
}
public static void clearOption(ShoppingCart cart) {
cart.clearCart();
System.out.println("——————————————————————【清空购物车】————————————————————————");
cart.showAll();
System.out.println("预购货物总价钱为:" + cart.totalAllMoney()+"¥");
System.out.println("—————————————————————————————————————————————————————");
}
}6.2购物车package shoppingcart;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class ShoppingCart {
public static final String add = null;
private Map map = new LinkedHashMap();
// 集合
public void addGood(Commodity p, int count) {// 添加货物
int goodID = p.getId();
if (map.containsKey(goodID)) {// 如果购物车已经存在同样的货物,则的数量增加
GoodItem goodItem = map.get(goodID);
goodItem.setCount(goodItem.getCount() + count);
} else {
map.put(goodID, new GoodItem(p, count));// 如果没有,则新建一个商品信息
}
}
public void showAll() {// 查看购物车所有信息
Collection GoodItems = map.values();
Iterator iterator = GoodItems.iterator();
while (iterator.hasNext()) {
GoodItem GoodItem = iterator.next();
Commodity Good = GoodItem.getGood();
System.out.println("货物编号" + ":" + Good.getId() + ", 货物名称:" + Good.getName() + ", 单价:"
+ Good.getPrice() + "¥, 数量:" + GoodItem.getCount() + ", 小计:" + GoodItem.totalMoney()+"¥");
}
}
public boolean deleteGood(int goodID) {// 删除货物
if (map.containsKey(goodID)) {
map.remove(goodID);
return true;
}
return false;
}
public boolean reduceGood(int goodId,int count) {// 减少货物
GoodItem goodItem = map.get(goodId);
if (map.containsKey(goodId)) {
if(count>goodItem.getCount()) {
System.out.println("不能把货物数量减少成负数哦");
return false;
}else if (count < goodItem.getCount()) {
goodItem.setCount(goodItem.getCount()-count);//数量设置成原数量-count
return true;
} else if (count == goodItem.getCount()) {// 删除该商品,数量减到0
deleteGood(goodId);
return true;
}
}
else System.out.println("购物车中没有该货物");
return false;
}
public void clearCart() {// 清空购物车
map.clear();
}
public double totalAllMoney() {// 货物总价格
double total = 0;
Collection GoodItems = map.values();
Iterator iterator = GoodItems.iterator();
while (iterator.hasNext()) {
GoodItem GoodItem = iterator.next();
double money = GoodItem.totalMoney();
total += money;
}
return total;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
}7、总结这是第一次Java面向对象设计的大作业,购物车。我们小组进行了前期调查、类与对象的设计、代码结构的设计等等工作。由于较为生疏,对作业要求认真研究后,编写代码时我们会注意变量名,函数名,类名,方法名的定义,也就是重视代码的规范性。做好代码命名规范,使得代码可读性更强,便于读者阅读。在编写代码的过程中,我们不可避免的遇到各类问题,比如编写好的代码意外出现错误、对类中该包含的属性和方法不清楚等。我们通过向高手请教、百度借鉴相似的项目、一步一步尝试新思路等等方法解决问题。本次的作业在多次修改以后依旧存在较多问题,我们将会在往后继续更新。
|