java购物车系统-yuanguiyu2017

购物车系统
首先我把自己要实现的购物车按照需求在实现中一次创建了五个包



2.package com.emp.product.message主要是存储商品的属性id,name,price,count放在一个类中

3.package com.emp.customer.message存储顾客,就是买商品人的信息属性id,pwd,name,sex,birthday,还有score(积分属性),放在一个类中
积分属性本系统没有去实现,希望大家给一些建议

4package com.emp.product.administrator;管理员包中我创建了两个类,一个和上面是一样的,存储管理员信息属性类;另一个AdminUtil类是管理员登录后处理数据类


package com.emp.product.administrator;
/**
 * 管理员信息模块
 *
 * @author ygy
 *
 */
public class Administrator {
    
    private String adminId;    //管理员编号
    private String adminName;   //管理员姓名
    private String adminnPsw;   //管理员密码
    
    
    public String getAdminId() {
        return adminId;
    }
    public void setAdminId(String adminId) {
        this.adminId = adminId;
    }
    public String getAdminName() {
        return adminName;
    }
    public void setAdminName(String adminName) {
        this.adminName = adminName;
    }
    public String getAdminnPsw() {
        return adminnPsw;
    }
    public void setAdminnPsw(String adminnPsw) {
        this.adminnPsw = adminnPsw;
    }
    
    
    
    public Administrator(){
        super();
    }
    public Administrator(String adminId, String adminName, String adminnPsw) {
        super();
        this.adminId = adminId;
        this.adminName = adminName;
        this.adminnPsw = adminnPsw;
    }

}


package com.emp.product.administrator;

import java.util.Scanner;

import com.emp.product.message.Product;
import com.emp.shopping.cart.Cart;
import com.emp.shopping.cart.CartItems;
import com.emp.shopping.operator.CustomerShopping;
/**
 * 管理操作模块;
 *
 * @author ygy
 *
 */
public class AdminUtil extends Cart {
    static Scanner sc = new Scanner(System.in);
    static CustomerShopping cus = new CustomerShopping();
    
    
    
    //显示商品售后的库存情况:
    public static void showP(){
        System.out.println("===商品剩余情况===");
        System.out.println("编号\t名称\t\t单价\t剩余数量");
        
        for(Product p :  cus.lstProducts){
            for(CartItems a :cart){
                
                if(a.getP().getPid().equals(p.getPid())){
                    int pnum = p.getStock()-a.getCount();
                    p.setStock(pnum);
                }    
            }
             System.out.println(p.getPid()+"\t"+p.getPname()+"\t\t"+p.getPprice()+"\t"+p.getStock());
        }
        
        System.out.println("=============");
        
        cleanup();
    }
    
    
        //整理商品信息
    public static boolean cleanup(){
        System.out.println("是否需要整理商品信息?y/n");
        
        switch ((new Scanner(System.in).nextLine())) {
        case "y":
            //添加新商品,和商品的数量;
            //删除商品信息????
            while(true){
                System.out.print("商品Id:");
                String id = sc.nextLine();
                System.out.print("商品名称:");
                String name = sc.nextLine();
                System.out.print("商品价格:");
                String price = sc.nextLine();
                System.out.print("商品储存量:");
                String stock = sc.nextLine();
                for(Product p :  cus.lstProducts){
                    if(id.equals(p.getPid())){
                        p.setPname(name);
                        p.setPprice(Double.parseDouble(price));
                        p.setStock(Integer.parseInt(stock));
                        return true;
                    }
                }
                
                cus.lstProducts.add(new Product(id, name, Double.parseDouble(price),Integer.parseInt(stock)));
                
            }
            

        case "n":
            
            return false;
            
        }
        
        
        return false;
        
        
    }
    
                    
        
}
        




5.package com.emp.shopping.operator;购物包我创建了一个类,类中主要是初始化商品信息,会员信息和管理员信息,用集合arraylist存储;验证顾客和管理员录,分别进入不同的界面操作;这个类是贯穿和联系属性类和后面购物车逻辑类的枢纽;


package com.emp.shopping.operator;
import java.util.*;

import com.emp.customer.message.Customer;
import com.emp.product.administrator.AdminUtil;
import com.emp.product.administrator.Administrator;
import com.emp.product.message.Product;
import com.emp.shopping.cart.Cart;
import com.emp.shopping.cart.CartItems;


/**
 * 会员操作模块
 *
 * @author ygy
 *
 */
public class CustomerShopping {
    static Scanner sc = new Scanner(System.in);
    
    private static Cart cart =new Cart();//创建一个购物车;
    
    public static ArrayList<Customer> lstCustomers=
            new ArrayList<Customer>();
    public static ArrayList<Product> lstProducts=
              new ArrayList<Product>();
    public static ArrayList<Administrator> lstAdministrators=
            new ArrayList<Administrator>();
    
  //初始化数据,运行时先初始化3个会员,存入
  public static void initData(){
      
         
      lstCustomers.add(new Customer("01","123","andy","女","1996-6-1",100));
      lstCustomers.add(new Customer("02","123","jimi","女","1997-7-1",0));
      lstCustomers.add(new Customer("03","123","zsan","男","1994-3-1",233));
      lstCustomers.add(new Customer("05","123","tom","男", "    ", 1212));
      
      //设置一个管理员
      lstAdministrators.add(new Administrator("01","yuan" , "0926"));
      
      lstProducts.add(new Product("011","柠檬霸",13.0,100));
      lstProducts.add(new Product("012","金桔柠檬",10.0,110));
      lstProducts.add(new Product("013","密西柠檬汁",11.0,120));
      lstProducts.add(new Product("014","柠檬水",12.0,130));
      lstProducts.add(new Product("015","柠檬柚子水",9.0,150));
      lstProducts.add(new Product("016","珍珠奶茶",9.0,130));
      lstProducts.add(new Product("017","蛋挞",5.0,50));
      lstProducts.add(new Product("018","汉堡",6.0,110));
      lstProducts.add(new Product("019","北京鸡肉卷",15.0,130));
      lstProducts.add(new Product("020","正新鸡排",11.0,130));
  }
 
 
  //1.会员登录;用户名和密码。从顾客集合中查找是否能匹配,true登录成功
  public static boolean login(){
      
      System.out.println("请选择:1.会员登录2.管理员登录");
      switch ((new Scanner(System.in).nextLine())) {
    case "1":
          System.out.println("=======会员登录======");
          System.out.println("用户名:");
          String name=sc.nextLine();
          
          System.out.println("密码:");
          String pwd=sc.nextLine();
          
          for(Customer c: lstCustomers){
              if (name.equals(c.getName()) && pwd.equals(c.getPwd())){
                  buy();
                  return true;
              }
              
          }
        System.out.println("你输入的信息有误!");
        return false;

    case "2":
        System.out.println("=======管理员登录======");
          System.out.println("管理员:");
          String name1=sc.nextLine();
          
          System.out.println("密码:");
          String pwd1=sc.nextLine();
          
          for(Administrator a: lstAdministrators){
              if (name1.equals(a.getAdminName()) && pwd1.equals(a.getAdminnPsw())){
                  AdminUtil.showP();
                  return true;
              }
              
          }
        System.out.println("你输入的信息有误!");
        return false;
    }
      
      
    /*  if ((new Scanner(System.in).nextLine()).equals("1")) {

        
        
    }
      if((new Scanner(System.in).nextLine()).equals("2")){
        
    }*/
      
      
      return false;

  }
 
  //2.顾客购买商品1.先打印出所有商品明细
  //          2.顾客选择指定编号的商品及购买数量
  //          3.把选择要购买的商品信息存入到购物车
  //           (购买商品明细集合,总计花费)
  //            购物商品明细类(商品编号,购买数量,费用)
  public static void  buy(){
      
    
      
      //显示商品信息
      System.out.println("--------------商品信息--------------");
      System.out.println("编号\t名称\t\t\t单价\t数量");
      for(Product p:lstProducts){
          System.out.println(p.getPid()+"\t"+p.getPname()+"\t\t\t"+p.getPprice()+"\t"+p.getStock());
      }
      System.out.println("---------------------------------");
      
      
      while(true){
          Scanner sc = new Scanner(System.in);
          System.out.println("输入商品编号:");
          String id=sc.nextLine();      //pid
          System.out.println("输入购买数量:");
          String count=sc.nextLine();  //pcount
          if(id.equals("")||count.equals("")){
              System.out.println("操作有误!");
              break;
          }else{
              boolean f = false;
              for(Product p: lstProducts){   //在集合里找用户输入的商品;
                  if(p.getPid().equals(id)){
                      //将购买的商品记录在清单里
                      CartItems item=new CartItems(p, Integer.parseInt(count));
                      //添加到购物车
                      cart.addItem(item);
            
                       f =true;
                  }
              }
              
              if(f){
                  pay();
                  System.out.println("总计:"+cart.getTotalCost()+"元");
                  
              }else{
                  System.out.println("你输入的信息有误!请核对后,输入正确信息");
                 break;
              }
              
                  
          }  
      }
      
  }
    
    

  //顾客结算,打印明细
  public static void pay(){
      
     cart.showDetail();
    
  }
 
  //查看会员积分
  public static void showScore(){
      
  }


          
}



6.package com.emp.shopping.operator;购物车包,创建了两个类,其中CartItem类主要是保存用户单次购物的信息,并计算购买的总价,最后放在购物车里
Cart类中主要有将传来的单次购买的商品信息放入到一个集合然后汇总,其中需要处理商品库存和购买的数量问题

package com.emp.shopping.cart;

import java.util.LinkedList;

import com.emp.product.message.Product;


/**
 * 购物车模块;存储顾客购买的商品信息,计算总价
 * @author ygy
 *
 */
//购物车
//怎么将购物车重复的商品合并???
//创建一个管理员为商品添加和修改商品信息?

public class Cart {
    
    //创建清单集合--->购物车
    public static LinkedList<CartItems> cart  = new LinkedList<CartItems>();
    
    
    //添加商品到购物车(主要处理数量问题)
    public boolean addItem(CartItems item) {
        
        //顾客刚才第一次下单数量就过了库存;
        if(item.getCount()>item.getP().getStock()){
            System.out.println("对不起,您需要的数量太多,现有的数量是:"+item.getP().getStock()+",请重新下单或者请求管理员增加商品数量!");
            return true;
        }
        
        //顾客下单中下次下同一商品时,数量总和超过了库存;
        for(CartItems a : cart){
            if(item.getP().getPname().equals(a.getP().getPname())){
                int sum = a.getCount()+item.getCount() ;
                if(sum > a.getP().getStock()){
                    
                    System.out.println("对不起,您需要的仅剩:"+(a.getP().getStock()-a.getCount())+",请重新下单或者请求管理员增加商品数量!");
                    return true;
                }else{
                    a.setCount(sum);
                    return true;
                }
                
                
            }
        }
        cart.add(item);
        return true;
    }
    
    
    //计算总价格;
    public double getTotalCost() {
        double sum = 0.0;  
        for(CartItems a :cart){
            sum += a.getCost();
        }
        return sum;
    }
    
    //显示清单;
    public void showDetail() {
        System.out.println("===购物车清单===");
        System.out.println("编号\t名称\t\t单价\t数量");
        for(CartItems a :cart){
                 Product p = a.getP();
                 System.out.println(p.getPid()+"\t"+p.getPname()+"\t\t"+p.getPprice()+"\t"+a.getCount());
        }
    
        System.out.println("=============");
    }


    

}

package com.emp.shopping.cart;

import com.emp.product.message.Product;

/**
 * 清单模块:
 * 购买车每一个商品明细类(商品对象,购买数量,费用)
 * @author ygy
 *
 */
public class CartItems {
    
    
    private Product p;
    private int count;
    private double cost;   //商品单价*购买数量
    
    

    public Product getP() {
        return p;
    }


    
    public double getCost() {
        return this.cost;
    }


    public void setCost(double cost) {
        this.cost = cost;
    }


    public CartItems(Product p, int count) {
        super();
        this.p = p;
        this.count = count;
        this.cost=p.getPprice()*count;   //cost要计算;
    }



    
    public CartItems() {
        // TODO Auto-generated constructor stub
    }


    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
        this.cost=p.getPprice()*this.count;
    }
    
    
    
    
    
    
    
}

                                                                                                                                                                                                                                       作者:yuanguiyu2017
                                                                                                                                                                                                                                                            2017.7.23


                                                                                              

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值