人员分工
任务 | 人员 |
前期调查与功能设计、面向对象设计 | 余锋 |
面向对象设计、博客制作、代码规范 | 李奇 |
1. 前期调查
以京东购物为例,我们搜索数据结构和JDK学习笔记,这里就需要一个商品的类,Commodity
将他们加入购物车,需要一个购物车类,ShoppingCart
我们发现这里的数量可以调整,且与后来提交的订单有直接关系
每个商品都有自己独有的编号、名字、单价等,这些就是商品类中的属性
2. 系统功能结构图
关键代码
public void putOnTheShelf()
{
read();
System.out.println("请输入商品名称,价格,及库存");
String data=Main.sc.nextLine();
String dataSplit[] = data.split(" ");
Commodity commodityIsExist=isExistCommodity(dataSplit[0]);
if(commodityIsExist!=null)
mallHashMap.merge(commodityIsExist,Integer.parseInt(dataSplit[2]),Integer::sum);
else {
Commodity commodity=new Commodity(dataSplit[0],Double.parseDouble(dataSplit[1]));
mallHashMap.put(commodity, Integer.valueOf(dataSplit[2]));
}
//merge()它将新的值赋值到 key (如果不存在)或更新给定的key 值对应的 value,最后的是remappingFunction,返回参数总和
writeCommodity();
}
关键代码
public void offShelf()
{
read();
System.out.println("请输入下架商品名称");
String commodityName=Main.sc.nextLine();
Commodity commodity= isExistCommodity(commodityName);
if(commodity==null){
System.out.println("找不到该商品!");
}else {
mallHashMap.remove(commodity);
System.out.println("下架成功!");
}
writeCommodity();
}
关键代码
public void searchCommodity()
{
System.out.println("请输入查找的商品名称");
String commodityName=Main.sc.nextLine();
Commodity commodity=isExistCommodity(commodityName);
if(commodity!=null)
{
System.out.println("商品名称:"+commodity.getName()+" 商品单价:"+Main.df.format(commodity.getPrice())
+" 商品库存:"+mallHashMap.get(commodity));
}else {
System.out.println("不存在该商品");
}
}
计算商品总价
public double getPrice()
{
double sum=0;
for (Commodity commodity: shoppingCartHashMap.keySet()) {
sum+=commodity.getPrice()*shoppingCartHashMap.get(commodity); //单价*键值(即数量)
}
return sum;
}
3. 系统描述
描述
用户在网上商城搜索并浏览商品, 一旦看到中意的商品可将商品放入购物车,可放多个。并可在购物车中增删商品、获得所有商品价格,最后可点击结算生成订单。
类
用户、商城、商品、购物车、订单
方法
读入、写入、是否存在商品、放入,增加、删除,下架、展示、结算,搜索
4. UML类图与代码
Commodity
字段名字、价格、库存stock私有化,体现封装性
package shop;
//商品
public class Commodity {
private String name; //名称
private double price; //价格
private int stock; //库存
public Commodity(String name, double price, int stock) {
this.name = name;
this.price = price;
this.stock = stock;
}
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;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
}
ShoppingCart
用哈希表将商品存入购物车,其中有加入商品,删除商品,清空购物车,结算订单
package shop;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
//购物车
public class ShoppingCart {
private HashMap<Commodity,Integer> shoppingCartHashMap; //哈希容器,前者是商品,后者是数量
//将num个商品加入购物车
public void addCommodity(Commodity commodity,int num)
{
shoppingCartHashMap.merge(commodity,num,Integer::sum);
//merge()它将新的值赋值到 key (如果不存在)或更新给定的key 值对应的 value,最后的是remappingFunction,返回参数总和
}
//将商品移除购物车
public void removeCommodity(Commodity commodity,int num)
{
shoppingCartHashMap.remove(commodity);
}
//计算商品总价
public int getPrice()
{
int sum=0;
for (Commodity commodity: shoppingCartHashMap.keySet()) {
sum+=commodity.getPrice()*shoppingCartHashMap.get(commodity); //单价*键值(即数量)
}
return sum;
}
//清空购物车
public void clearShoppingCart(){
shoppingCartHashMap.clear();
}
}
Customer
用户名和购物车私有,新建时初始化购物车。
package shop;
//顾客
public class Customer {
private String userName;
private ShoppingCart shoppingCart=new ShoppingCart();
public Customer(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
public ShoppingCart getShoppingCart() {
return shoppingCart;
}
}
5. 其他
目前将所有类放在shop包名下,因此可以更好得互相调用