Goods(商品类):
package cn.hp.demo.demo2;
/**
* 用来描述商品信息的实体类
*/
public class Goods {
//属性
private int id;// 商品编号
private String goodsName;// 商品名称
private double price;// 商品价格
private String desc;// 商品描述
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public Goods(int id, String goodsName, double price, String desc) {
this.id = id;
this.goodsName = goodsName;
this.price = price;
this.desc = desc;
}
@Override
public String toString() {
return "Goods{" +
"id=" + id +
", goodsName='" + goodsName + '\'' +
", price=" + price +
", desc='" + desc + '\'' +
'}';
}
}
Counter(柜台类);
package cn.hp.demo.demo2;
import java.util.Scanner;
/*
* 柜台类
* 柜台类里面放商品(属性:商品数组)
* */
public class Counter {
private Goods[] goodses = new Goods[10];//柜台
private int num = 0;//柜台商品数量
//无惨构造器初始化2个商品
public Counter(){
this.goodses[0]=new Goods(1,"巧克力",25,"美味可口,恋爱必备!");
this.goodses[1]=new Goods(2,"卫龙辣条",1,"隔壁小孩馋哭了!");
num=2;//相当于两个商品
}
//展示柜台所有的商品(不能输出null)
public void show(){
System.out.println("------------------------");
if (this.num==0){
System.out.println("警告:柜台没有商品..");
return;
}
for (int i = 0; i < goodses.length; i++) {
if (goodses[i] != null){
System.out.println(this.goodses[i]);
}
}
System.out.println("------------------------");
}
//菜单方法(柜台都有功能选择)
public void main() {
while (true) {
System.out.println("---------------------");
System.out.println("----1.展示商品 2.上架商品------");
System.out.println("------3.下架商品 4.调整价格------");
System.out.println("-------0.退出---------");
//选择功能,控制台输入
System.out.println("-->请输入功能编号:");
int key = InputiUtils.getGoodsId();
switch (key) {
case 1:
show();
break;
case 2:
add();
break;
case 3:
delete();
break;
case 4:
update();
break;
case 0:
System.exit(0);
break;//退出JVM
}
}
}
/**
* 上架商品
*/
private void update() {
System.out.println("-->请输入需要修改的商品id");
int goodsId=InputiUtils.getGoodsId();
if (goodsId>10 && goodsId<1){
System.out.println("-->商品不存在");
return;
}else {
System.out.println("-->请输入新的商品名称:");
String name = new Scanner(System.in).next();
System.out.println("-->请输入新的商品价格:");
double price = InputiUtils.getPrice();
System.out.println("-->请输入新的商品描述:");
String desc = new Scanner(System.in).next();
//吧输入的信息装载到goodes对象
Goods newGoods = new Goods(goodsId,name,price,desc);
for (int i = 0; i < this.goodses.length; i++) {
if (i==goodsId-1){
this.goodses[i]=newGoods;
System.out.println("修改对象");
return;
}
}
}
}
/**
* 下架商品
*/
private void delete() {
System.out.println("-->请输入要下架的商品编号");
int goodsId = InputiUtils.getGoodsId();
//第一件事 找到这个对应商品的ID的商品对象
for (int i = 0; i < this.goodses.length; i++) {
//查找对应ID的商品
if(this.goodses[i] != null & this.goodses[i].getId()==goodsId){
//找到以后,删除
this.goodses[i] = null;
System.out.println("-->提示:下架成功!当前商品数量" +this.num);
//商品数量减一
this.num--;
System.out.println("-->展示:下架成功!!当前商品数量"+this.num);
//还需不需要继续循环
return;//递归方法(只有找到商品才执行)
}
}
//如果没找到商品,就会执行在这里
System.out.println("-->警告:未找到商品!");
}
/**
* 调整价格
*/
private void add() {
//判断是否有空余位置
if (this.num==this.goodses.length){
System.out.println("-->警告:柜台已满,不能在添加商品了");
return;
}
System.out.println("-->请输入商品id:");
int goodsId = InputiUtils.getGoodsId();
//丰富:id不能重复
for (int i = 0; i < this.goodses.length; i++) {
if (this.goodses[i] != null && this.goodses[i].getId()==goodsId){
System.out.println("-->警告:当前编号已存在!请从新输入");
add();
return;//由于重复了,代码不运行
}
}
//程序走到这里,说明id没有重复
System.out.println("-->提示:商品id可以使用!!");
System.out.println("-->请输入商品名称:");
String name = new Scanner(System.in).next();
System.out.println("-->请输入商品价格:");
double price = InputiUtils.getPrice();
System.out.println("-->请输入商品描述:");
String desc = new Scanner(System.in).next();
//把输入的信息装载到goods对象
Goods newGoods = new Goods(goodsId,name,price,desc);
//把商品对象保存柜台数组中为null的位置
for (int i = 0; i < this.goodses.length; i++) {
//如果这个下标没有Goods商品对象,null,就把商品放进去
if (this.goodses[i] ==null){
this.goodses[i]=newGoods;
this.num++;//商品数量加一
System.out.println("-->提示:商品上架成功!!柜台商品数量"+this.num);
return;
}
}
}
}
CounterText(测试类):
package cn.hp.demo.demo2;
public class CounterText {
public static void main(String[] args) {
//创建柜台对象
Counter c = new Counter();
//开启菜单
c.main();
}
}
InputiUtils(输入工具类):
package cn.hp.demo.demo2;
import java.util.Scanner;
/*
* 提供一些输入的方法
* */
public class InputiUtils {
/*
* 获取我们的功能序号
* @return
* */
public static int getNum() {
int n = 0;
try {
n = new Scanner(System.in).nextInt();
} catch (Exception e) {
//e.printStackTrace();
//如果输入非数字,就会抛出异常,被Cath警告,在这里处理异常
System.out.println("-->警告,输入非法数字!!,请重新输入");
n = getNum();//递归
}
//必须是0-4
if(n<0||n>4){
System.out.println("--警告:非法命令!!请重新输入");
n = getNum();//递归
}
return n;//返回输入的数字
}
/**
* 获取输入的商品编号
* @return
*/
public static int getGoodsId() {
int n = 0;
try {
n = new Scanner(System.in).nextInt();
} catch (Exception e) {
//e.printStackTrace();
//如果输入非数字,就会抛出异常,被Cath警告,在这里处理异常
System.out.println("-->警告,输入非法数字!!,请重新输入");
n = getNum();//递归
}
return n ;//返回输入的数字
}
/**
* 获取输入的商品编号
* @return
*/
public static double getPrice() {
double n = 0;
try {
n = new Scanner(System.in).nextDouble();
} catch (Exception e) {
//e.printStackTrace();
//如果输入非数字,就会抛出异常,被Cath警告,在这里处理异常
System.out.println("-->警告,输入非法数字!!,请重新输入");
n = getNum();//递归
}
return n;//返回输入的数字
}
}
运行结果: