一、程序代码
package task_05;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
/*
* 库存管理系统模拟类:
选择“1.查看库存清单”功能,则控制台打印库存清单;
选择“2.修改商品库存数量”功能,则可对商品库存数进行更新;
选择“3.退出”功能,则退出库存管理,程序结束。
*/
public class Goods
{
//用于商品编号自增
static int goodspId = 0;
//商品编号
private int goodsId = 0;
//商品名称
private String goodsName = null;
//商品库存数量
private int goodsNum = 0;
//商品初始化构造方法
public Goods(String gsName,int gsNum) {
// 每次初始化对象时goodspId自增1,然后取其值作为商品编号
this.setGoodsId(++goodspId);
// 初始化对象时设置商品名称
this.setGoodsName(gsName);
// 初始化对象时设置库存数量
this.setGoodsNum(gsNum);
}
//相应的get、set方法
public String getGoodsName()
{
return goodsName;
}
public void setGoodsName(String goodsName)
{
this.goodsName = goodsName;
}
public int getGoodsNum()
{
return goodsNum;
}
public void setGoodsNum(int goodsNum)
{
if(goodsNum>=0)
this.goodsNum = goodsNum;
else
System.out.println("库存数量为"+goodsNum+"无效!");
}
public int getGoodsId()
{
return goodsId;
}
//由于商品编号默认由系统自增生成,故此set方法设为private,对外不可访问!
private void setGoodsId(int goodsId)
{
this.goodsId = goodsId;
}
// 系统操作提醒
static void sysWarn() {
System.out.println("\n输入“1”可查看库存清单;") ;
System.out.println("输入“2”可修改商品库存数量;");
System.out.println("输入“3”退出库存管理系统。");
}
// 初始化生成库存清单list
static ArrayList<Goods> initializeGoodsList() {
// 用可调整大小的动态泛型ArrayList<Goods>列表来存放商品对象
ArrayList<Goods> list = new ArrayList<Goods>();
Goods gs1 = new Goods("睡衣",1);
// 将商品添加到list中
list.add(gs1);
Goods gs2 = new Goods("T-shirt",1);
list.add(gs2);
Goods gs3 = new Goods("短裤",1);
list.add(gs3);
System.out.println("===========欢迎来到商品库存管理系统===========");
//调用“系统操作提醒”方法
sysWarn();
return list;
}
// 控制台打印库存清单的系统操作
static void getInventoryList(ArrayList<Goods> list) {
System.out.println("商品库存清单如下:");
// 利用迭代器遍历存放商品对象列表
Iterator<Goods> ir = list.iterator();
// 如果列表中有商品对象,则逐个遍历打印到控制台
while(ir.hasNext()) {
Goods gs = ir.next();
System.out.println("商品编号:"+gs.getGoodsId()+",商品名称:"+gs.getGoodsName()+",库存数量:"+gs.getGoodsNum());
}
//打印完库存清单,调用“系统操作提醒”方法,方便用户知道如何进行下一步系统操作
sysWarn();
}
// 修改具体商品库存数量的方法,形参中的list对象为存放商品对象的列表,
// gId为操作更新库存数量的商品编号,gNum是要更新的库存数量
static void updateGoodSNum(ArrayList<Goods> list,int gId,int gNum){
// 获取列表中相应的商品对象
Goods gs = list.get(gId-1);
// 对该商品的库存数量进行更新设置
gs.setGoodsNum(gNum);
// 在控制台打印库存数量更新成功信息
System.out.println("商品编号“"+gs.getGoodsId()+
"”,商品名称为“"+gs.getGoodsName()+"”的库存数量更新成功!"
+ "目前的库存数量为:"+gs.getGoodsNum());
//更新完库存数量后,调用“系统操作提醒”方法,方便用户知道如何进行下一步系统操作
sysWarn();
}
// 修改商品库存数量的系统操作
static void updateGoodsNumOperation(ArrayList<Goods> list,Scanner sc) {
// gId用于保存操作更新库存数量的商品编号,gNum用于保存要更新的库存数量
int gId = 0,gNum = 0;
System.out.print("请输入要更新的商品编号和库存数量(中间以空格隔开):");
// 如果用户成功输入数据并且列表不为空,则根据用户输入的的商品编号和更新的库存数量进行商品库存数量更新的系统操作
if(sc.hasNext()& list.size()>0) {
// 获取用户输入的商品编号
gId = sc.nextInt();
// 获取用户输入的要更新的库存数量
gNum = sc.nextInt();
switch(gId){
// 如果用户输入的商品编号为1,则对相应的商品库存进行更新
case 1:
updateGoodSNum(list,gId,gNum);
break;
// 如果用户输入的商品编号为2,则对相应的商品库存进行更新
case 2:
updateGoodSNum(list,gId,gNum);
break;
// 如果用户输入的商品编号为3,则对相应的商品库存进行更新
case 3:
updateGoodSNum(list,gId,gNum);
break;
}
}
}
// 退出的系统操作
static void exit() {
System.out.println("已退出库存管理系统!");
}
public static void main(String[] args)
{
//初始化生成库存清单list
ArrayList<Goods> list = initializeGoodsList();
Scanner sc = new Scanner(System.in);
//用于接收用户输入的操作类型
int chooseType = 0;
while(true) {
if(sc.hasNext()) {
chooseType = sc.nextInt();
// 如果用户输入1,则执行控制台打印库存清单的系统操作
if(chooseType==1)
getInventoryList(list);
// 如果用户输入2,则执行修改商品库存数量的系统操作
else if(chooseType==2)
updateGoodsNumOperation(list,sc);
// 如果用户输入2,则退出库存管理系统
else if(chooseType==3){
exit();
sc.close();
break;
}
}
}
}
}
二、程序运行结果(gif图片)