1.1 案例介绍
现在,我们将原有的库存管理案例,进行业务逻辑的封装。
将对下列功能进行方法封装:
l 打印库存清单功能
l 库存商品数量修改功能
l 退出程序功能
1.2 案例需求分析
管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。
-------------库存管理------------
1.查看库存清单
2.修改商品库存数量
3.退出
请输入要执行的操作序号:
每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。
选择“1.查看库存清单”功能,则控制台打印库存清单
选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新
选择“3.退出”功能,则退出库存管理,程序结束
package com.oracle.demo01; public class Goods { int gid; String name; double price; }
package com.oracle.demo01;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<Goods> arr=new ArrayList<Goods>();
save(arr);
while(true){
//展示菜单
show();
//让用户输入选择
int choose=sc.nextInt();
switch(choose){
case 1:
getGoods(arr);
break;
case 2:
addGoods(arr);
break;
case 3:
updateGoods(arr);
break;
case 4:
remove(arr);
break;
case 5://退出
return;
default:
System.out.println("输入错误,请重新输入选择");
break;
}
}
}
//商品展示页面
public static void show(){
System.out.println("---欢迎光临Oracle超市-----");
System.out.println("1.货物清单");
System.out.println("2.添加货物");
System.out.println("3.修改货物");
System.out.println("4.删除货物");
System.out.println("5.退出");
System.out.println("请输入您的选择:");
}
//存商品
public static void save(ArrayList<Goods> arr){
Goods g1=new Goods();
g1.gid=9001;
g1.name="少林寺酥饼核桃";
g1.price=120;
Goods g2=new Goods();
g2.gid=9002;
g2.name="上炕杂粮牡丹饼";
g2.price=20;
Goods g3=new Goods();
g3.gid=9003;
g3.name="新疆哈密瓜";
g3.price=7;
arr.add(g1);
arr.add(g2);
arr.add(g3);
}
//1.展示
public static void getGoods(ArrayList<Goods> arr){
System.out.println("-----商品清单-----");
System.out.println("商品编号 商品名称 商品价格");
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i).gid+" "+arr.get(i).name+" "+arr.get(i).price);
}
}
//2.添加数据
public static void addGoods(ArrayList<Goods> arr){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要新增的商品编号:");
int id=sc.nextInt();
System.out.println("请输入你要新增的商品名称:");
String name=sc.next();
System.out.println("请输入你要新增的商品价格:");
double price=sc.nextDouble();
Goods goods=new Goods();
goods.gid=id;
goods.name=name;
goods.price=price;
arr.add(goods);
}
//3.修改
public static void updateGoods(ArrayList<Goods> arr){
Scanner sc=new Scanner(System.in);
System.out .println("请输入你要修改的商品编号(退出返回首页输入0):");
int ab=0;
aa:while(true){
int id=sc.nextInt();
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).gid==id){
ab=id;
break aa;
}else if(id==0){
return;
}
}
System.out .println("请重新输入你要修改的商品编号(退出返回首页输入0):");
}
System.out.println("请输入你要修改后的商品名称:");
String name=sc.next();
System.out.println("请输入你要修改后的商品价格:");
double price=sc.nextDouble();
Goods goods=new Goods();
goods.gid=ab;
goods.name=name;
goods.price=price;
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).gid==ab){
// arr.get(i).name=name;
// arr.get(i).price=price;
arr.set(i, goods);
}
}
}
//4.删除
public static void remove(ArrayList<Goods> arr){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要删除的商品编号(退出返回首页输入0):");
int ab=0;
aa:while(true){
int id=sc.nextInt();
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).gid==id){
ab=id;
break aa;
}else if(id==0){
return;
}
}
System.out .println("请重新输入你要删除的商品编号(退出返回首页输入0):");
}
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).gid==ab){
arr.remove(i);
}
}
}
}