JavaCore-OOP-1-最最基础的商品管理

本文介绍了一个简单的库存管理系统的设计与实现过程,系统支持查看库存清单、修改商品库存数量及退出功能。通过面向对象的方法,实现了库存管理的基本需求。

话说

前面一系列框架,也许读者累了。其实,是笔者累了,换换口味吧。这段时间,重新体会一下OOP,回忆一下当年“初识”的感觉。

目标:
实现一个最最基本的库存管理。
用时:
快速:30min
中速:1H
慢速:1.5H

具体要求:

* 管理员能够进行的操作有3项(查看、修改、退出)
     *  -------------库存管理------------
     * 1.查看库存清单 
     * 2.修改商品库存数量 
     * 3.退出 请输入要执行的操作序号: 每一项功能操作, 采用方法进行封装,这样,可使程序的可读性增强。
     * 选择:
     * 1. “查看库存清单”功能,则控制台打印库存清单 
     * 2.选择“修改商品库存数量”功能, 则对每种商品库存数进行更新
     * 3.选择“退出”功能,则退出库存管理,程序结束

开发环境:Eclipse
前期用的是IDEA,这次也是换换口味,提示不够多也是好事。

目录


1、运行结果
2、实体类
3、核心代码
4、double类型保留指定位数


1、运行结果

这里写图片描述

2、实体类Goods

package com.hmc.yijian02;
/**
*
*2017年11月22日
*User:Meice
*下午5:25:36
*/
public class Goods {
    private String goods_name;
    private double goods_size;
    private double goods_price;
    private int goods_count;
    public Goods() {}




    public Goods(String goods_name, double goods_size, double goods_price, int goods_count) {
        super();
        this.goods_name = goods_name;
        this.goods_size = goods_size;
        this.goods_price = goods_price;
        this.goods_count = goods_count;
    }




    public void setGoods_name(String goods_name) {
        this.goods_name = goods_name;
    }

    public String getGoods_name() {
        return goods_name;
    }




    public void setGoods_size(double goods_size) {
        this.goods_size = goods_size;
    }

    public double getGoods_size() {
        return goods_size;
    }



    public void setGoods_price(double goods_price ) {
        this.goods_price = goods_price;
    }
    public double getGoods_price() {
        return goods_price;
    }


    public void setGoods_count(int goods_count) {
        this.goods_count = goods_count;
    }


    public int getGoods_count() {
        return goods_count;
    }

}

3、核心代码
GoodsManagement

package com.hmc.yijian02;
import org.junit.Test;
import java.text.DecimalFormat;
import java.util.Scanner;
/**
*
*2017年11月22日
*User:Meice
*下午5:24:59
*/
public class GoodsManagement {
    /**
     * 管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。
     *  -------------库存管理------------
     * 1.查看库存清单 
     * 2.修改商品库存数量 
     * 3.退出 请输入要执行的操作序号: 每一项功能操作,
     * 采用方法进行封装,这样,可使程序的可读性增强。
     * 选择“1.查看库存清单”功能,则控制台打印库存清单 选择“
     * 2.修改商品库存数量”功能,
     * 则对每种商品库存数进行更新
     * 选择“3.退出”功能,则退出库存管理,程序结束
     */


    /**
     * 定义方法:1.查看库存清单
     */
    Goods goods_1 = new Goods("Lenovo",13.2,6999.99,0);
    Goods goods_2 = new Goods("Apple",14.0,8788.09,0);
    //GoodsManagement gm = new GoodsManagement();

    @Test
    public void getStorgeList() {

        /*goods_1.setGoods_name("Lenovo");
        goods_1.setGoods_size(13.2);
        goods_1.setGoods_price(6999.99);
        goods_1.setGoods_count(0);


        goods_2.setGoods_name("Apple");
        goods_2.setGoods_size(14.0);
        goods_2.setGoods_price(8788.09);
        goods_2.setGoods_count(0);*/

        System.out.println("=======================商品清单=======================");
        System.out.println("品名"+"\t"+"尺寸/寸"+"\t"+"价格/元"+"\t\t"+"库存/台");
        System.out.println(goods_1.getGoods_name()+"\t"+goods_1.getGoods_size()+"\t"+goods_1.getGoods_price()+"\t\t"+goods_1.getGoods_count());
        System.out.println(goods_2.getGoods_name()+"\t"+goods_2.getGoods_size()+"\t"+goods_2.getGoods_price()+"\t\t"+goods_2.getGoods_count());
        System.out.println("库存总量为:"+(goods_1.getGoods_count()+goods_2.getGoods_count())+"台");
        double totalPrice = ((goods_1.getGoods_count()*goods_1.getGoods_price())+(goods_2.getGoods_count()*goods_2.getGoods_price()));
        /**
         * 保留2位小数
         */
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println("库存总价为:"+df.format(totalPrice) +"元");
    }



    /**
     * 定义方法: 2.修改商品库存数量
     */
    public void updateGoodsCount() {
        System.out.println(goods_1.getGoods_name()+"原库存数量为:"+goods_1.getGoods_count()+";请输入要修改后的数量:");
        int count1 = new Scanner(System.in).nextInt();
        goods_1.setGoods_count(count1);
        System.out.println(goods_2.getGoods_name()+"原库存数量为:"+goods_2.getGoods_count()+";请输入要修改后的数量:");
        int count2 = new Scanner(System.in).nextInt();
        goods_2.setGoods_count(count2);
        System.out.println("恭喜您!修改成功!修改后清单如下:");
        getStorgeList();
    }

    /**
     * 定义方法:3、退出
     */

    public String exitGoodsManagement() {
        System.out.println("谢谢惠顾!后会有期~");
        return "谢谢惠顾!";
    }


    /**
     * 定义方法:用户名和密码权限:
     * 
     */

    public void qualifyCertain(String username,String password) {
        if("admin".equals(username) && "123".equals(password)) {
            updateGoodsCount();
        }else {
            System.out.println("哈哈,您权限不足,请重新输入:您还有2次机会");
                System.out.println("请重新输入用户名:");
                String username2 = new Scanner(System.in).next();
                System.out.println("请重新输入密码:");
                String password2 = new Scanner(System.in).next();
                if("admin".equals(username2) && "123".equals(password2)) {
                    updateGoodsCount();
                }else {
                    System.out.println("哈哈,您权限不足,请重新输入:您还有1次机会");
                    System.out.println("请重新输入用户名:");
                    String username3 = new Scanner(System.in).next();
                    System.out.println("请重新输入密码:");
                    String password3 = new Scanner(System.in).next();
                    if("admin".equals(username3) && "123".equals(password3)) {
                        updateGoodsCount();
                    }else {
                        System.out.println("Sorry!权限已用完,请24小时候在操作~");
                    }

                }

        }
    }


    public static void main(String[] args) {
        //这里测试

        boolean flag = true;
        GoodsManagement gm = new GoodsManagement();
        while(flag) {

            System.out.println("================欢迎进入库存管理系统======================");
            System.out.println(" 1.查看库存清单\n 2.修改商品库存数量\n 3.退出\n 查看功能,请输入对应序号:");
            int choose = new Scanner(System.in).nextInt();
            switch(choose) {
                case 1:
                    gm.getStorgeList();
                    break;
                case 2:
                    System.out.println("请输入用户名:");
                    String username = new Scanner(System.in).next();
                    System.out.println("请输入用户密码:");
                    String password = new Scanner(System.in).next();
                    gm.qualifyCertain(username, password);


                    //gm.updateGoodsCount();
                    break;
                case 3:
                    gm.exitGoodsManagement();
                    flag = false;
                    break;
                default:
                    System.out.println("输入有误,请重新输入奥:");
            }
        }
    }




    /**
     * 测试遇到问题:
     * 
     * 1、Exception in thread "main" java.lang.StackOverflowError
     * 原因是因为我要用不同对象,结果只new了一个对象。//GoodsManagement gm = new GoodsManagement();
     * 
     * 2、如何设置密码输入次数限制,不断判断,可否做成循环?
     * 
     * 3、修改后数量后,并没有真正保存,如何保证修改后的保存下来?
     * GoodsManagement gm = new GoodsManagement();要放在循环外面,否则,每一次都New一个对象,那么设置的数量就无法保存。
     * 
     * 4、double类型如何只保留指定位数?DecimalFormat
     * 
     */

}

4、double类型保留指定位数

这里面关于double类型保留指定位数,查了如下资料,自己敲了下,测试类如下:
感谢这位童鞋分享:http://blog.youkuaiyun.com/huaishuming/article/details/17752365

DoubleFormat

package com.hmc.yijian02;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.junit.Test;

/**
*
*2017年11月22日
*User:Meice
*下午9:18:16
*/
public class DoubleFormat {
    /**
     * 小数按照指定格式保留位数
     */


    double Pi = 3.1415926;


    /**
     * 法一:DecimalFormat 转换方便
     */
    public void testDoubleFormat01() {
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println(df.format(Pi));
    }


    /**
     * 法二:String.format
     */
    public void testDoubleFormat02() {
        System.out.println(String.format("%.2f",Pi));
    }


    /**
     * 法三:NumberFormat
     */
    public void testDoubleFormat03() {
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(2);
        System.out.println(nf.format(Pi));

    }


    /**
     * 法四:Java.Math
     * @param args
     */
    public void testDoubleFormat04() {
        BigDecimal bd = new BigDecimal(Pi);
        double Pi2 = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println(Pi2);
    }



    public static void main(String[] args) {
        DoubleFormat dFormat  = new DoubleFormat();
        dFormat.testDoubleFormat01();
        dFormat.testDoubleFormat02();
        dFormat.testDoubleFormat03();
        dFormat.testDoubleFormat04();


    }


}

第一种方式感觉好用;后续几种目前没遇到。好了,这篇是很基础,不过,温故知新。

下期再会!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值