java实现简单购物车,主要用到了集合知识,实现了增删改查

源代码如下:

商品类:

package org.jsoft.shoppingcar;

public class Goods {
    private String name;
    private double price;
    private int num;
    private int ID;
    public int getID() {
        return ID;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    private String guiGe;
    
    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 String getGuiGe() {
        return guiGe;
    }
    public void setGuiGe(String guiGe) {
        this.guiGe = guiGe;
    }
    public Goods(int ID,String name,double price,int num,String guiGe){
        this.ID=ID;
        this.name=name;
        this.price=price;
        this.num=num;
        this.guiGe=guiGe;
    }
    public Goods(){}
    public String toString(){
        return this.getID()+"."+this.getName()+",价格:"+this.getPrice()+this.getGuiGe()+",数量:"+this.getNum();
    }
    
}
购物类:

package org.jsoft.shoppingcar;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Pattern;

public class Shopping {
    private List<Goods> list1=new ArrayList();//保存已有商品
    private List<Goods> list2=new ArrayList();//保存购物车商品
    private Map map=new HashMap();
    
    public void menu(){
        System.out.println("欢迎来到就要发购物商场!有以下商品供您选购,祝您购物愉快:");
        Goods g1 = new Goods(1,"巧克力",20,5,"元/盒");
        Goods g2 = new Goods(2,"麦片",25,6,"元/盒");
        Goods g3 = new Goods(3,"橘子",1.5,10,"元/斤");
        Goods g4 = new Goods(4,"苹果",2,20,"元/斤");
        list1.add(g1);
        list1.add(g2);
        list1.add(g3);
        display1(list1);
        int choose=0;
        Scanner sc = new Scanner(System.in);
        while(choose!=5){
            System.out.println("请输入您要选择的服务编号:");
            System.out.println("1.购买商品     2.删除商品     3.修改已买商品数量     4.查看已买商品      5.去结算");
            String str = sc.next();
            if(isInteger(str)){
                choose=Integer.parseInt(str);
                if(choose>=1&&choose<=5){
                    switch(choose){
                        case 1:addGoods();break;
                        case 2:deleteGoods();break;
                        case 3:changeGoods();break;
                        case 4:displayGoods();break;
                        case 5:spendMoney();break;
                        default:System.out.println("输入数字");
                    }
                }
                else{
                    System.out.println("请输入指定的服务编号!");
                }
            }
            else{
                System.out.println("请输入指定的服务编号!");
            }
        }
        System.out.println("欢迎下次再来!");
    }
    public void addGoods(){//解决重复购买商品数量的增加;购买数量为0时,不添加信息;问题不成立,第一次购买后,要想修改直接用3功能
        System.out.println("请输入您要购买的商品编号:");
        Scanner sc = new Scanner(System.in);
        int ID=sc.nextInt();
        Goods good=new Goods();
        Goods good1=new Goods();
        int i;
        for(i=0;i<list1.size();i++){
            Object obj = list1.get(i);
            good= (Goods)obj;
            if(good.getID()==ID){
                break;
            }
        }
        System.out.println("请输入购买数量:");
        int num;
        while(true){//判断输入数量大于已有数量
            num=sc.nextInt();
            if(num>good.getNum()){
                System.out.println("对不起没有这么多存货,请重新输入数量:");
            }else{
                break;
            }
        }
        if(num==good.getNum()){//把某个商品全部买完,则库存没有该商品
            good1.setID(good.getID());
            good1.setName(good.getName());
            good1.setNum(num);
            good1.setPrice(good.getPrice());
            list2.add(good1);
            list1.remove(i);
            System.out.println("购买成功!");
            System.out.println("剩余商品:");
            display1(list1);        
        }else if(num==0){
            System.out.println("购买成功!");
            System.out.println("剩余商品:");
            display1(list1);
        }else{
            good1.setID(good.getID());
            good1.setName(good.getName());
            good1.setNum(num);
            good1.setPrice(good.getPrice());
            list2.add(good1);
            good.setNum(good.getNum()-num);//每个商品购买完后,修改库存的商品数
            list1.remove(i);
            list1.add(i, good);
            System.out.println("购买成功!");
            System.out.println("剩余商品:");
            display1(list1);
        }
    }
    
    public void deleteGoods(){
        if(list2.size()==0){
            System.out.println("购物车里空空如也!");
        }else{
            displayGoods();
            System.out.println("请输入要删除的商品编号:");
            Scanner sc = new Scanner(System.in);
            int ID=sc.nextInt();
            int i;
            for(i=0;i<list2.size();i++){
                Object obj = list1.get(i);
                Goods good= (Goods)obj;
                if(good.getID()==ID){
                    break;
                }
            }
            list2.remove(i);
            System.out.println("删除成功!");
        }
    }
    
    public void changeGoods(){//如果某个商品的数量为零,则该商品在已购买中去除,完成;
        if(list2.size()==0){
            System.out.println("购物车里空空如也");
        }else{
            displayGoods();
            System.out.println("请输入要修改的商品编号:");
            Scanner sc=new Scanner(System.in);
            int ID=sc.nextInt();
            System.out.println("请输入要修改的数量:");
            int num=sc.nextInt();
            for(int i=0;i<list2.size();i++){
                Object obj = list2.get(i);
                Goods good= (Goods)obj;
                if(good.getID()==ID){
                    if(num==0){
                        list2.remove(i);
                    }else{
                        good.setNum(num);
                        list2.remove(i);
                        list2.add(i, good);
                    }
                    System.out.println("修改成功!");
                }
            }
        }
    }
    
    public void displayGoods(){
        System.out.println("您已经购买以下商品:");
        if(list2.size()==0){
            System.out.println("购物车里空空如也");
        }
        Goods g=new Goods();
        for(int i=0;i<list2.size();i++){
            Object obj = list2.get(i);
            g= (Goods)obj;
            System.out.println(g.getID()+"."+g.getName()+",数量:"+g.getNum());
        }
    }
    
    public void spendMoney(){
        double sum=0;
        for(int i=0;i<list2.size();i++){
            Object obj = list2.get(i);
            Goods good= (Goods)obj;
            sum+=good.getPrice()*good.getNum();
            System.out.println(good.getName()+",数量:"+good.getNum()+",金额:"+good.getPrice()*good.getNum());
        }
        if(sum==0){
            System.out.println("您还什么都没买");
        }else{
            System.out.println("共计:"+sum);
            System.out.println("请输入支付金额:");
            Scanner sc=new Scanner(System.in);
            double money=sc.nextDouble();
            if(money>sum){
                System.out.println("找零:"+(money-sum));
            }
            System.out.println("支付成功");
        }
    }
    public  boolean isInteger(String str) { //判断是不是整数 
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");  
        return pattern.matcher(str).matches();  
    }
    public void display1(List list){
        for(int i=0;i<list.size();i++){
            Object obj = list.get(i);
            Goods good= (Goods)obj;
            System.out.println(good);
        }
    }
    
}
测试类:

package org.jsoft.shoppingcar;

public class TestShopping {
    
    public static void main(String[] args) {
        Shopping shop = new Shopping();
        shop.menu();
    }
}
运行结果:

205751_zJ0s_3715020.png

205842_xs91_3715020.png

205909_XbqC_3715020.png

205959_2JOw_3715020.png

转载于:https://my.oschina.net/u/3715020/blog/1582398