您的位置:首页 > 编程语言 > Java开发

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

2017-11-23 07:41 302 查看
话说

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

目标:

实现一个最最基本的库存管理。

用时:

快速:30min

中速:1H

慢速:1.5H

具体要求:

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


开发环境:Eclipse

前期用的是IDEA,这次也是换换口味,提示不够多也是好事。

目录

1、运行结果

2、实体类

3、核心代码

4、double类型保留指定位数

1、运行结果[/b]



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.csdn.net/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();

}

}


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

下期再会!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: