/*
* 下述代码中,对商品信息(编号,名称,单价)进行封装
* 这样做到好处在于以后只要找到这个商品,就能够知道该商品的每项信息
*/
public class FruitItem01 {
//商品的ID
int ID;
//商品的名称
String name;
//商品的单价
double price;
}
import java.util.ArrayList;
import java.util.Scanner;
/*
* 超市管理系统主程序:
* 实现步骤:
* 1.商品数据的初始化
* 2.用户的菜单选择
* 3.根据选择不同执行不同的功能
* 3.1 Read 查看商品
* 3.2 Create 添加商品
* 3.3 Delete 删除商品
* 3.4 Update 修改商品
*/
public class Shopp01 {
public static void main(String[] args) {
//1.创建ArrayList集合,存储商品类型,存储数据类型FruitItem类型
//让集合成为公共,方便下面方法进行参数传递
ArrayList<FruitItem01> array = new ArrayList<FruitItem01>();
//2.调用商品初始化方法,传递集合
init(array);
//打印集合中,三个地址,bingo
//[[email protected], [email protected], [email protected]]
//System.out.println(array);//可以用来测试成功初始化商品清单
//3.进入死循环,运行系统
while(true){
//3.1调用主菜单
mainMenu();
//3.2调用用户选择序号的方法
int choose = chooseFunction();
//3.3进入功能选择
switch (choose) {
case 1:
//4.1.调用1:货物清单
showFruitItem(array);
break;
case 2:
//4.2.调用2:添加货物
addFruitItem(array);
break;
case 3:
//4.3.调用3:删除货物
deleteFruitItem(array);
break;
case 4:
//4.4.调用4:修改货物
updateFruitItem(array);
break;
case 5:
//4.5.调用5.退出系统
System.out.println("退出超市系统");
return;
default:
System.out.println("没有此项功能");
break;
}
}
}
/*
* 定义方法,实现商品数据的初始化
* 先将一部分数据,存储在集合中
* 返回值:void
* 参数:共享的数据集合
*/
public static void init(ArrayList<FruitItem01> array) {
//创建多个FruitItem类型,并且属性赋值
FruitItem01 f1 = new FruitItem01();
f1.ID = 9527;
f1.name = "少林寺酥饼核桃";
f1.price = 12.7;
FruitItem01 f2 = new FruitItem01();
f2.ID = 9005;
f2.name = "少林寺酥饼核桃露";
f2.price = 122.7;
FruitItem01 f3 = new FruitItem01();
f3.ID = 9225;
f3.name = "嵩山大饼";
f3.price = 152.7;
//创建的三个FruitItem类型变量,存储到集合中
array.add(f1);
array.add(f2);
array.add(f3);
}
/*
* 定义方法,实现主菜单
* 提示用户哪些选择,让选择序号
* 返回值:void
* 参数:void
*/
public static void mainMenu() {
System.out.println();
System.out.println("==========欢迎光临ItCast超市==========");
System.out.println("1:货物清单 2:添加货物 3:删除货物 4:修改货物 5:退出");
System.out.println("请输入要操作的功能序号");
}
/*
* 定义方法,实现接受用户的键盘输入
* 返回值:int
* 参数:无
*/
public static int chooseFunction(){
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}
/*1:货物清单
* 定义方法,实现显示货物清单功能
* 返回值:void
* 参数:共享数据的集合
* 遍历集合,获取集合中的每个FruitItem变量,变量,调用属性
*/
public static void showFruitItem(ArrayList<FruitItem01> array){
System.out.println();
System.out.println("================商品库存清单================");
System.out.println("商品编号" + " " + "商品名称" + " " + "商品单价");
//遍历集合
for (int i = 0; i < array.size(); i++) {
//利用集合中get方法,获取出每个FruitItem变量,可以使用FruitItem变量获取相应的属性
FruitItem01 item = array.get(i);
//变量item调用类中属性
System.out.println(item.ID + "\t" + item.name + "\t" + item.price);
}
}
/*2:添加货物
* 定义方法,实现商品的添加功能
* 返回值:void
* 参数:共享数据的集合
* 提示用户选择的是添加商品的功能
*
* 创建FruitItem变量,变量调用的属性
* 将输入的每个商品属性进行赋值
*/
public static void addFruitItem(ArrayList<FruitItem01> array){
System.out.println("恭喜哦,选择的是添加商品的功能");
//创建Scanner变量
Scanner sc = new Scanner(System.in);
System.out.println("请输入商品的ID编号:");
//输入商品的ID编号
int ID = sc.nextInt();
//输入商品的名称
System.out.println("请输入商品的名称:");
String name = sc.next();
//输入商品的单价
System.out.println("请输入商品的单价:");
double price = sc.nextDouble();
//创建FruitItem变量
FruitItem01 item = new FruitItem01();
//item.属性赋值
item.ID = ID;
item.name = name;
item.price = price;
//将集合元素装配好,放入集合容器中
array.add(item);
System.out.println("添加商品成功哦!");
}
/*3.删除货物
* 定义方法,实现商品的删除功能
* 返回值:void
* 参数:共享的数据集合容器
*
* 删除靠的是商品的编号
* 提示用户选择的是删除功能
* 键盘输入商品的编号
* 遍历集合,获取集合中的每个FruitItem变量
* 变量调用属性ID,和用户输入的ID编号,对比相同,就删除
*/
public static void deleteFruitItem(ArrayList<FruitItem01> array){
System.out.println("选择的是删除功能");
System.out.println("请输入商品的ID编号:");
Scanner sc = new Scanner(System.in);
int ID = sc.nextInt();
//遍历集合
for (int i = 0; i < array.size(); i++) {
//获取到每个FruitItem变量
FruitItem01 item = array.get(i);
//变量,调用属性ID,和用户输入的ID编号进行匹配
if(item.ID == ID){
//移除集合中的元素
array.remove(i);
System.out.println("删除成功!");
//当遍历到需要删除的ID的时候,就不需要在往下遍历
//采用break,确实能结束这个循环,但是会继续执行for循环体后面的输出语句
//当时采用return,结束的就是这个方法,不会在执行for循环体后面的输出语句
return;
}
}
System.out.println("您输入的ID编号不存在!");
}
/*4.修改货物
* 定义方法,实现商品的修改功能
* 返回值:void
* 参数:共享数据的集合容器
*
* 提示用户选择的是修改功能
* 提示用户输入需要修改的商品编号
* 遍历集合,获取每个FruitItem变量
* 变量调用ID属性,属性和用户输入的ID编号进行比较
* 如果相同:
* 修改调FruitItem中的属性值
* 键盘输入
*
*/
public static void updateFruitItem(ArrayList<FruitItem01> array){
System.out.println("选择的是修改功能");
System.out.println("请输入您要修改的商品的ID编号:");
Scanner sc = new Scanner(System.in);
int ID = sc.nextInt();
//遍历集合,获取每个FruitItem变量
for (int i = 0; i < array.size(); i++) {
FruitItem01 item = array.get(i);
//获取FruitItem的属性ID,和用户输入的比较
if(item.ID == ID){
System.out.println("请输入新的ID编号:");
item.ID = sc.nextInt();
System.out.println("请输入新的商品名称");
item.name = sc.next();
System.out.println("请输入商品的单价");
item.price = sc.nextDouble();
System.out.println("修改成功");
//当遍历到需要修改的ID的时候,就不需要在往下遍历
//采用break,确实能结束这个循环,但是会继续执行for循环体后面的输出语句
//当时采用return,结束的就是这个方法,不会在执行for循环体后面的输出语句
return;
}
}
System.out.println("您输入需要修改的ID编号不存在!");
}
}





