24.Java环境下购物系统后台商品管理

对于之前的网上购物系统做了单独的分系统,来管理后台的商品数据,共包含6个界面,运行截图放在文章最后。

1.主界面MyMain

import java.util.Scanner;

public class MyMain {
    public static void main(String[] args) {
        System.out.println("-------------------------");
        System.out.println(" 线上购物系统后台商品管理(商家版)");
        System.out.println("            版本号:v1.0");
        System.out.println("           作者:Srymaker");
        System.out.println("-------------------------");
        Scanner scanner = new Scanner(System.in);
        char function_no='0';
        //需要把非静态类的方法GoodManagerImpl进行实例化
        GoodsManagerImpl manager = new GoodsManagerImpl();
        //这个显示的菜单,执行一遍操作后,后面还可以选择,这个菜单反复出现,供用户选择
        //显示商家进行商品增删改查的操作
        while(true){
            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("6-------按商品名称查询部分商品");
            System.out.println("7-------按价格区间查询部分商品");
            System.out.println("8-------退出");
            System.out.println("---------------------------");
            System.out.println("请选择操作的功能编号:");
            String myfunction_no=scanner.next();
            System.out.println(myfunction_no);
            //字符串本身就是一个char数组
            function_no=myfunction_no.toCharArray()[0];
//            try{
//                function_no=(char)scanner.nextByte();
//
//            }catch(Exception e){
//                System.out.println("你选择的功能编号不正确,请重新选择");
//                //使用 continue后面代码不执行,继续下次循环,执行速度太快,try...catch没有判断输入内容就开始执行
//            }
            //如果循环中有switch的优化,break只是退出switch的作用,并不退出循环,这里只能用if条件限定用户的退出
            if(function_no=='8'){
                break;
            }
            //采用switch,break退出的是switch
            switch(function_no){
                case '1': manager.add_goods();break;
                case '2': manager.del_goods();break;
                case '3': manager.update_goods();break;
                case '4':
                    System.out.println(manager.findAll());break;
                case '5':
                    System.out.println(manager.findByNo());break;
                case '6':
                    System.out.println(manager.findByName());break;
                case '7':
                    System.out.println(manager.findByPrice());break;
//                default:continue;
            }
        }

    }
}

2.查询界面 MyMain1

import java.util.Scanner;

public class MyMain1 {
    public static void main(String[] args) {
        GoodsManagerImpl goodsManager = new GoodsManagerImpl();
        //一次添加
        goodsManager.add_goods();
        System.out.println(goodsManager.findAll());
        //按名字查
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入查询的商品名称");
        String name=scanner.next();
        System.out.println(goodsManager.findByName());
    }
}

3.MyMain2界面

import java.util.Scanner;

public class MyMain2 {
    public static void main(String[] args) {
        GoodsManagerImpl goodsManager = new GoodsManagerImpl();
        //两次添加
        goodsManager.add_goods();
        System.out.println(goodsManager.findAll());
//        goodsManager.add_goods();
//        System.out.println(goodsManager.findAll());
        //删除
//        Scanner scanner=new Scanner(System.in);
//        System.out.println("输入需要删除的商品编号");
//        String no=scanner.next();
//        goodsManager.del_goods();
//        System.out.println(goodsManager.findAll());
//        //一次更新
//        goodsManager.update_goods();
//        System.out.println(goodsManager.findAll());
    }
}

 4.商品属性界面Goods

/*
java bean
这个类只是描述商品,哪些属性可以访问,哪些属性不开放访问。
描述商品的一个java bean
 */
public class Goods {
    //封装,所有的属性私有化
    //no商品编号
    private String no;
    //name商品名称
    private String name;
    //price商品价格
    private double price;
    //shop商家名称
    private String shop;
    //商品分类 type
    private String type;
    //封装构造函数,全参,无参

    public Goods() {
    }

    public Goods(String no, String name, double price, String shop, String type) {
        this.no = no;
        this.name = name;
        this.price = price;
        this.shop = shop;
        this.type = type;
    }
    //这些商品都需要getter,和setter方法

    public String getNo() {
        return no;
    }

    public void setNo(String no) {
        this.no = no;
    }

    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 getShop() {
        return shop;
    }

    public void setShop(String shop) {
        this.shop = shop;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
    //打印对象显示的地址,显示的本类中所有的属性的值,重写toString

    @Override
    public String toString() {
        return "Goods{" +
                "no='" + no + '\'' +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", shop='" + shop + '\'' +
                ", type='" + type + '\'' +
                '}';
    }
}

 5.查询界面2

import java.util.*;

public class GoodsManagerImpl implements GoodsManager{
    //设置一个总管家,HashMap,满足封装,需要私有,Map类型需要键(key) 就是no,是String,value是对象,是Goods
    private  Map<String,Goods> goods_list=new HashMap<>();
    //根据字符串源码中的处理方法,一个char[]定义一个size,到底有多个数。
    private   int size=0;
    //最开始完成,添加一个商品,注意里面goods是执行过程中用户输入的,这里的goods就不需要传参
    @Override
    public  void add_goods() {
        //需要输入商品的名称,商品的价格,店铺的名称,商品的分类
        Scanner scanner=new Scanner(System.in);
        //接收商品名称
        System.out.println("请输入添加商品的名称");
        String name=scanner.next();
        //接收商品的价格
        System.out.println("请输入添加商品的价格");
        //初始化没有定义的价格
        double price=9999;
        try {
            price = scanner.nextDouble();
        }catch(Exception e){

        }
        //接收商品的商家
        System.out.println("商家名称");
        String shop=scanner.next();
        //接收商品的分类
        System.out.println("商品的分类");
        String type=scanner.next();
        //产生一个no,no让系统随机产生,产生后加上一个索引size,理解当前商品的索引值
        //UUID,一串随机,随机类型是UUID类型,如果用+号,在这里有一个StringBuilder对象,只有一个size,这里使用concat,
        String no=UUID.randomUUID().toString().concat(size+"");
        //初始化,商品参数结束,直接实例化
        Goods goods=new Goods(no,name,price,shop,type);
        //放在HashMap中就已经去重
        goods_list.put(no,goods);
        size++;
    }

    @Override
    public void del_goods() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入删除的商品编号");
        String no=scanner.next();
        System.out.println("你确定要删除该商品吗?(y/n)");
        String ans=scanner.next();
        if(ans.toLowerCase().equals("y")){
            goods_list.remove(no);
        }else{
            System.out.println("删除取消,你可以选择其它操作");
        }
    }

    @Override
    public void update_goods() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入修改商品的商品编号:");
        //需要用户输入编号
        String no=scanner.next();
        //必须按商品的编号,告诉商品原来名称,需要改成,先把商品取出
        Goods goods=goods_list.get(no);
        //要求输入需要修改的商品名称内容
        System.out.println("商品名称的原来内容:");
        System.out.println(goods.getName());
        //输出需要修改的商品名称内容
        System.out.println("请输入修改后的名称");
        String name=scanner.next();
        // 要求输入需要修改的商品价格内容
        System.out.println("商品名称的原来价格:");
        System.out.println(goods.getPrice());
        //输出需要修改的商品价格
        System.out.println("请输入修改后的价格");
        double price=goods.getPrice();
        try{
            price=scanner.nextDouble();
        }catch(Exception e){

        }
        // 要求输入需要修改的商品店铺名称内容
        System.out.println("商品名称的店铺名称:");
        System.out.println(goods.getShop());
        //输出需要修改的商品店铺名称
        System.out.println("请输入修改后的店铺名称");
        String shop=scanner.next();
        // 要求输入需要修改的商品类别内容
        System.out.println("商品名称的商品类别:");
        System.out.println(goods.getType());
        //输出需要修改的商品类别
        System.out.println("请输入修改后的商品类别");
        String type=scanner.next();
        //修改商品的属性值,可以利用HashMap中key值覆盖的道理,产生一个新的商品
        goods=new Goods(goods.getNo(),name,price,shop,type);
        goods_list.put(goods.getNo(),goods);
    }

    @Override
    public Goods findByNo() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入查询的商品编号:");
        String no=scanner.next();
        return goods_list.get(no);
    }

    @Override
    public Collection<Goods> findAll() {
        //显示所有,就是遍历HashMap,遍历HashMap中的值就可以,不需要遍历key,因为key的目的是去重
        //直接使用values显示所有的值
        return goods_list.values();
    }

    @Override
    public List<Goods> findByName() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入需要查询的商品名称:");
        String name=scanner.next();
        //构造结果
        List<Goods> myresult=new ArrayList<>();
        Collection<Goods> mygoods=goods_list.values();
        //这里迭代器写
        Iterator<Goods> myiter=mygoods.iterator();
        while(myiter.hasNext()){
            Goods goods=myiter.next();
            if(goods.getName().indexOf(name)>-1){
                myresult.add(goods);
            }
        }
        return myresult;
    }

    @Override
    public List<Goods> findByPrice() {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入查询商品价格的开始区间:");
        double start=0;
        double end=0;
        try {
            start=scanner.nextDouble();
        }catch(Exception e){

        }
        System.out.println("请输入查询商品价格的结束区间:");
        try {
            end=scanner.nextDouble();
        }catch(Exception e){

        }
        //构造结果
        List<Goods> myresult=new ArrayList<>();
        Collection<Goods> mygoods=goods_list.values();
        //这里迭代器写
        Iterator<Goods> myiter=mygoods.iterator();
        while(myiter.hasNext()){
            Goods goods=myiter.next();
            if(goods.getPrice()>=start && goods.getPrice()<=end){
                myresult.add(goods);
            }
        }
        return myresult;
    }
}

6.整合界面

import java.util.Collection;
import java.util.List;

/*
这是一个接口,专门管理商品的java bean
 */
public interface GoodsManager {
    //添加方法,一般初始化,返回值为空,这里参数在逻辑实现直接在方法中输入商品的相关参数
    public  void add_goods();
    //删除方法,传入索引,这里传入编号,因为这里的删除有ArrayList还有HashMap,HashMap高效率地做了商品编号去重
    public void del_goods();
    //更新方法,需要更新商品的所有内容,按商品的编号来更新
    public void update_goods();
    //查询,必须返回用户结果,一定要有返回,返回内容多个
    //按编号查,一个编号对应一个商品,返回值只有一个商品
    public Goods findByNo();
    //查询所有,出来是一个动态的集合,不能是数组,不需要去重,使用ArrayList,返回是一个ArrayList,里面是Goods
    public Collection<Goods> findAll();
    //按商品名称查,返回一堆商品
    public List<Goods> findByName();
    //按商品价格查,返回一堆商品
    public List<Goods> findByPrice();
}

 7.运行截图

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值