第4章 库存管理案例(加入集合容器ArrayList)
第4章 库存管理案例
4.1 案例介绍
现在,我们将原有的库存管理案例,采用更好的集合方式实现。
将对下列功能进行方法封装:
打印库存清单功能
库存商品数量修改功能
退出程序功能
4.2 案例需求分析
管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。
-------------库存管理------------
1.查看库存清单
2.修改商品库存数量
3.退出
请输入要执行的操作序号:
每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。
选择“1.查看库存清单”功能,则控制台打印库存清单
选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新
选择“3.退出”功能,则退出库存管理,程序结束
/*
Scanner类使用步骤:
S1.导包:import java.util.Scanner
S2.创建对象实例:Scanner sc = new Scanner(System.in);
S3.调用方法:
int i = sc.nextInt();//用来接收控制台录入的数字
String s = sc.next();//用来接收控制台录入的字符串
创建出集合,集合应该是方法参数传递的--一直是一个集合
三个功能,共享的数据,集合容器
定义三个方法,必须参数传递集合
实现库存管理案例:
1.存储商品信息
存储商品类型变量
将商品类型的变量,存储到集合中
2.查看库存清单
将集合进行遍历,获取出集合中存储的Goods类型变量
输出每个Goods类型的属性
计算求和:总库存,总金额
3.修改商品的库存
集合遍历,获取出集合中存储的Goods类型变量
变量调用Goods类的属性count值,进行修改(键盘输入)
类的名字:首字母大写,第二个单词首字母大写 例如:BeiJngShiHaiDiangQuYiYuan
public class HelloWorld{
方法的名字:首字母小写,每个单词首字母大写 例如:addSchool
public static void main(String[] args){ //2.定义主方法
*/
//import java.util.*;===>把util里所有类导进来
//S1.导包:import java.util.Scanner
import java.util.Scanner;
//创建集合的常用格式在此说明一下:
//导包:import java.util.ArrayList;
import java.util.ArrayList;
public class Shopp_Goods_1{
public static void main(String[] args){
//创建ArrayList集合,存储Goods类型
//共享的数据-集合容器
ArrayList<Goods> array = new ArrayList<Goods>();
//1.调用添加商品信息的方法
addGoods(array);
//进入死循环(原因:只允许按到数字3退出系统,才结束整个系统,否则一直循环,由于不知道循环次数,一般采用while循环)
while(true){
//2.调用选择功能的方法,获取到用输入的功能序号
int chooseNumber = chooseFunction();
//3.对序号判断:1-进入查看库存功能 2-进入修改库存功能 3-结束
switch(chooseNumber){
case 1:
//3.1-进入查看库存,调用查看库存的方法,传递存储商品信息的集合
printStore(array);
break;
case 2:
//3.2-进入修改库存功能,调用查看库存的方法
updateStore(array);
break;
case 3:
//3-3-结束系统
return;
default:
//3-4-没有其他功能
System.out.println("功能还在完善中...");
break;
}
}
}
/*
3.2-进入修改库存功能,调用查看库存的方法
方法定义:键盘输入,将遍历集合获取到的Goods类型变量中的属性值count,进行修改
返回值?没有
参数?传递共享集合容器
*/
public static void updateStore(ArrayList<Goods> array){
//接受键盘输入
//S2:创建对象实例:Scanner sc = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
//遍历集合中每个元素,获取出集合中存储的Goods类型变量
for(int i = 0; i < array.size(); i++){
//集合方法get()获取的是集合中的元素,元素类型Goods
Goods g = array.get(i);
System.out.println("请输入 " + g.brand + " 的库存数:");
//Goods属性,count进行修改
//S3.调用方法:int i = sc.nextInt();//用来接收控制台录入的数字
g.count = sc.nextInt();
}
}
/*
3.1-进入查看库存,调用查看库存的方法,传递存储商品信息的集合
定义方法,查看库存清单,遍历集合中每个元素(Goods类型变量),在利用拿到的每个元素获取相应的属性或者方法
返回值?没有
参数?传递共享集合容器
*/
public static void printStore(ArrayList<Goods> array){
//1.实现表头固定数据,打印输出语句
System.out.println("--------------------商城库存清单--------------------");
System.out.println("品牌型号 尺寸 价格 库存数");
//2.表尾部,一部分固定数据,一部分需要科学计算
//定义变量,保存总库存数和总金额
int totalCount = 0;
double totalPrice = 0;
//3.遍历集合
for(int i = 0;i < array.size();i++){
//get(索引)获取集合中的元素,存储的是Goods类,获取的也是Goods类型
//使用Gooos类型变量,接受get()获取出集合中存储的Goods类型变量
Goods g = array.get(i);
//利用获取到的Goods类型,去取到商品类的属性
System.out.println(g.brand + " " + g.size + " " + g.price + " " + g.count);
totalCount += g.count;
totalPrice += g.count * g.price;
}
//4.打印尾部数据
System.out.println("总库存数:" + totalCount + " 台");
System.out.println("库存商品总金额:" + totalPrice + " 元");
System.out.println("----------------------------------------------------");
}
/*
2.调用选择功能的方法,获取到用输入的功能序号
定义方法,键盘输入的数字-功能选择菜单 实现选择菜单,
返回值?键盘输入的数字(想要的功能对应数字)
参数?没有
*/
public static int chooseFunction(){
System.out.println("--------------------库存管理----------------------");
System.out.println("1.查看库存清单");
System.out.println("2.修改商品库存管理");
System.out.println("3.退出系统");
System.out.println("请输入要执行的操作序号:");
//接受键盘输入
//S2:创建对象实例:Scanner sc = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
//S3.调用方法:int i = sc.nextInt();//用来接收控制台录入的数字
return sc.nextInt();
}
/*
1.调用添加商品信息的方法
定义方法,将商品的初始化信息存储到集合中--集合是所有方法的共享数据,必须参数传递集合
返回值?没有
参数? 传递共享集合容器
*/
public static void addGoods(ArrayList<Goods> array){
//创建商品类型变量 Goods类型变量
Goods g1 = new Goods();
Goods g2 = new Goods();
g1.brand = "MacBook";
g1.size = 13.3;
g1.price = 9999.99;
g1.count = 3;
g2.brand = "Thinkpad";
g2.size = 15.6;
g2.price = 7999.99;
g2.count = 1;
//Goods类型的变量,存储到集合中
array.add(g1);
array.add(g2);
}
}