一个简单的Java超市管理系统

一、两个类一个是商品实体类,一个是业务管理类(功能类)

1、实体类

public class Goods {
    private String Name;
    private String State;  //促销状态
    private double listPrice;  //原价
    private double promoPrice;  //促销价
    private int Inventory; //库存
    private int SV;  //销量

    //无参构造
    public Goods() {
    }

    //全参构造


    public Goods(String name, String state, double listPrice, double promoPrice, int inventory, int SV) {
        Name = name;
        State = state;
        this.listPrice = listPrice;
        this.promoPrice = promoPrice;
        Inventory = inventory;
        this.SV = SV;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getState() {
        return State;
    }

    public void setState(String state) {
        State = state;
    }

    public double getListPrice() {
        return listPrice;
    }

    public void setListPrice(double listPrice) {
        this.listPrice = listPrice;
    }

    public double getPromoPrice() {
        return promoPrice;
    }

    public void setPromoPrice(double promoPrice) {
        this.promoPrice = promoPrice;
    }

    public int getInventory() {
        return Inventory;
    }

    public void setInventory(int inventory) {
        Inventory = inventory;
    }

    public int getSV() {
        return SV;
    }

    public void setSV(int SV) {
        this.SV = SV;
    }

    @Override
    public String toString() {
        return "Goods{" +
                "Name='" + Name + '\'' +
                ", State='" + State + '\'' +
                ", listPrice='" + listPrice + '\'' +
                ", promoPrice='" + promoPrice + '\'' +
                ", Inventory=" + Inventory +
                ", SV=" + SV +
                '}';
    }
}

2、业务管理类

import java.util.Arrays;
import java.util.Scanner;

public class GoodsManager {
    //全局静态变量
    static Goods[] goods;  //商品数组
    static Scanner scanner = new Scanner(System.in);

    //静态代码块:初始化商品数据
    static {
        goods = new Goods[4];

        goods[0]=new Goods("苹果","促销",5,2,20,10);
        goods[1]=new Goods("方便面","未促销",4,3.5,30,20);
        goods[2]=new Goods("矿泉水","促销",2,1.5,40,30);
        goods[3]=new Goods("火腿肠","未促销",1.5,1,50,40);

    }

    //展示商品列表
    static void disPlay(){
        System.out.println("-------商品列表-------");
        for (int i = 0; i < goods.length; i++) {
            if(goods[i]!=null){
                System.out.println(goods[i].toString());
            }
        }
    }

    //添加商品
    static void addGoods(){
        System.out.println("********添加商品********");
        //添加前的扩容工作
        if(goods[goods.length-1]!=null){  //判断商品数组最后一个位置是否为空,不为空则满,需要扩容
            goods = Arrays.copyOf(goods,goods.length+5);  //扩容
        }

        //创建一个新的商品对象
        Goods good = new Goods();
        //录入商品信息
        System.out.println("输入商品名称:");
        good.setName(scanner.next());
        System.out.println("输入商品状态:");
        good.setState(scanner.next());
        System.out.println("输入商品原价:");
        good.setListPrice(scanner.nextDouble());
        System.out.println("输入商品促销价:");
        good.setPromoPrice(scanner.nextDouble());
        System.out.println("输入商品库存:");
        good.setInventory(scanner.nextInt());
        System.out.println("输入商品销量:");
        good.setSV(scanner.nextInt());

        //遍历商品数组寻找空位置插入商品
        for (int i = 0; i < goods.length; i++) {
            if(goods[i]==null){
                goods[i]=good;
                break;
            }
        }
        System.out.println("商品添加成功!");
    }

    //删除商品
    static void removeGoods(){
        System.out.println("*********删除商品*********");
        disPlay(); //展示商品列表

        //接收待删除商品的名称
        System.out.println("请输入待删除的商品名称");
        String name = scanner.next();

        //定义存放待删除商品的下标
        int removeIndex = -1;

        //先在数组中寻找这个商品
        for (int i = 0; i < goods.length; i++) {
            if(goods[i].getName().equals(name)){  //找到这个商品
                removeIndex = i;
                break;
            }
        }

        if(removeIndex == -1 ){  //没找到这个商品
            System.out.println("该商品不存在!");
            return;
        }else {  //商品存在,开始执行删除操作,并且将其之后的元素前移一位
            if(removeIndex == goods.length - 1 ){  //判断待删除元素是不是数组的最后一位
                goods[goods.length-1] = null ;  //是的话直接置空即可
            }else{  //不在数组的最后一位,执行前移操作
                for (int i = removeIndex; i < goods.length-1; i++) {
                    if(goods[i]==null){ //前移到为空为止
                        break;
                    }
                    goods[i]=goods[i+1];  //前移操作
                }
                goods[goods.length-1]=null;  //当数组为满情况删除非最后一位元素时,后移完需要将最后一个元素置空,否则会重复
            }

        }
        System.out.println("删除成功!");
        disPlay();
    }

    //购买商品
    static void buyGoods(){
        System.out.println("********购买商品*********");
        disPlay();
        double rental = 0.0;  //应付款金额

        //接收购买的商品名
        System.out.println("输入购买的商品的名称:");
        String name = scanner.next();
        boolean exit = false; //判断是否找到的标志

        //接收购买的数量
        System.out.println("请输入你需要购买该商品的数量:");
        int buyStock = scanner.nextInt();

        //判断数量是否合法
        while(buyStock<0){
            System.out.println("购买数量不合法,请从新输入一个大于0的整数:");
            buyStock = scanner.nextInt();
        }

        //判断商品是否存在
        for (int i = 0; i < goods.length; i++) {
            if(goods[i]==null){
                break;
            }
            if(goods[i].getName().equals(name)){ //找到该商品
                exit = true;


                //判断库存是否足够
                while(goods[i].getInventory() < buyStock){
                    System.out.println("购买数量超过库存!请重新购买");
                    buyStock = scanner.nextInt();

                    while(buyStock<0){
                        System.out.println("购买数量不合法,请从新输入一个大于0的整数:");
                        buyStock = scanner.nextInt();
                    }
                }
                goods[i].setSV(goods[i].getSV()+buyStock);
                goods[i].setInventory(goods[i].getInventory() - buyStock);

                disPlay();
                //打印小票
                if(goods[i].getState().equals("促销")){
                    rental = buyStock * goods[i].getPromoPrice(); //促销价
                    System.out.println("您购买了"+buyStock+"个"+name+"促销单价为:"+goods[i].getPromoPrice()+"需要支付:"+rental);
                }
                if(goods[i].getState().equals("未促销")){
                    rental = buyStock * goods[i].getListPrice(); //原价
                    System.out.println("您购买了"+buyStock+"个"+name+"原价为:"+goods[i].getListPrice()+"需要支付:"+rental);
                }

                System.out.println("请输入您的支付金额");
                double pay = scanner.nextDouble();

                while (pay<rental){
                    System.out.println("您支付的金额小于总租金,请重新输入");
                    pay = scanner.nextDouble();
                }

                System.out.println("********购物小票********");
                System.out.println("购买商品:" + name);
                if(goods[i].getState().equals("促销")){
                    System.out.println("购买商品单价为:" + goods[i].getPromoPrice());
                }else
                {
                    System.out.println("购买商品单价为:" + goods[i].getListPrice());

                }
                System.out.println("购买数量为:"+buyStock);
                System.out.println("需支付:" + rental);
                System.out.println("实际支付"+ pay);
                System.out.println("找零:" + (pay-rental));
                System.out.println("**********欢迎下次光临*********");
                }
            }
        if(!exit){
            System.out.println("没找到该商品!");
        }
    }


    //修改商品促销状态
    static void updateState(){
        System.out.println("********修改商品的促销状态*********");
        disPlay();

        //接收待修改商品名
        System.out.println("输入需要修改商品的名称:");
        String name = scanner.next();
        boolean b2 = false; //判断是否找到的标志

        //接收新的状态
        System.out.println("请输入该商品的状态(促销 & 未促销):");
        String state = scanner.next();
        //判断状态是否合法
        boolean s1 = true;
        while(s1){
            if(state.equals("促销") || state.equals("未促销")){
                break;
            }
            System.out.println("状态不合法,请从新输入:");
            state = scanner.next();
        }

        //判断是否存在
        for (int i = 0; i < goods.length; i++) {
            if(goods[i]==null){
                break;
            }
            if(goods[i].getName().equals(name)){ //找到该元素并进行修改
                b2 = true;
                goods[i].setState(state);
                System.out.println("修改成功!");
                disPlay();
            }
        }
        if(!b2){
            System.out.println("没找到该商品!");
        }
    }

    //补充库存函数
    static void restock(){
        System.out.println("********补充商品的库存*********");
        disPlay();

        //接收待补充商品名
        System.out.println("输入需要补充库存的商品的名称:");
        String name = scanner.next();
        boolean b2 = false; //判断是否找到的标志

        //接收需要增加的量
        System.out.println("请输入你需要补充该商品的数量:");
        int addStock = scanner.nextInt();
        //判断数量是否合法
        boolean s1 = true;
        while(s1){
            if(addStock>=0){
                break;
            }
            System.out.println("数量不合法,请从新输入:");
            addStock = scanner.nextInt();
        }

        //判断是否存在
        for (int i = 0; i < goods.length; i++) {
            if(goods[i]==null){
                break;
            }
            if(goods[i].getName().equals(name)){ //找到该元素并进行修改
                b2 = true;
                goods[i].setInventory(goods[i].getInventory()+addStock);
                System.out.println("增加成功!");
                disPlay();
            }
        }
        if(!b2){
            System.out.println("没找到该商品!");
        }
    }

    //打印菜单函数
    static void printMenu(){
        boolean exit = false;
        do{
            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("/请选择菜单编号进行选择/:");

            int c = scanner.nextInt();
            switch (c){
                case 1 :
                    disPlay();
                    break;
                case  2 :
                    addGoods();
                    break;
                case 3 :
                    removeGoods();
                    break;
                case 4 :
                    buyGoods();
                    break;
                case 5 :
                    updateState();
                    break;
                case 6 :
                    restock();
                    break;
                case 7 :
                    exit = true ;
                    break;
                default:
                    System.out.println("输入的菜单编号错误!请重新输入");
                    break;
            }

        }while (!exit);
        System.out.println("!Bye!");
    }



    public static void main(String[] args) {
        //removeGoods();
        //updateState();
        printMenu();
    }

}

3、运行业务类结果

具体功能不在演示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值