###15用户选择功能
* A: 用户选择功能
* a: 案例代码
import java.util.ArrayList;
import java.util.Scanner;

/*
* 超市管理系统主
* 实现:
* 1. 商品数据的初始化
* 2. 用户的菜单选择
* 3. 根据选择执行不同的功能
* 3.1 Read 查看商品
* 3.2 Create 添加商品
* 3.3 Delete 删除商品
* 3.4 Update 修改商品
*
*
* 所有功能 ,必须定义方法实现
* 主方法main 调用作用
*/
public class Shopp {

public static void main(String[] args) {
//创建ArrayList集合,存储商品类型,存储数据类型FruitItem类型
ArrayList<FruitItem> array = new ArrayList<FruitItem>();
//调用商品初始化方法,传递集合
init(array);
while(true){
//调用菜单方法
mainMenu();
//调用用户选择序号方法
int choose = chooseFunction();
switch (choose) {
case 1:
//调用1: 货物 清单
showFruitList(array);
break;

case 2:
//2: 添加货物
addFruit(array);
break;

case 3:
//3: 删除货物
deleteFruit(array);
break;

case 4:
//4: 修改货物
updateFruit(array);
break;

case 5:
return ;

default:
System.out.println("输入的序号没有");
break;
}
}
}
/*
* 定义方法,实现接受用户的键盘输入
* 返回编号
*/
public static int chooseFunction(){
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}

/*
* 定义方法,实现主菜单
* 提示用户哪些选择 让选择序号
* 返回值: 无
* 参数: 无
*/
public static void mainMenu(){
System.out.println();
System.out.println("============欢迎光临ItCast超市============");
System.out.println("1: 货物 清单 2: 添加货物 3: 删除货物 4: 修改货物 5: 退出");
System.out.println("请您输入要操作的功能序号");
}

/*
* 定义方法,实现商品数据的初始化
* 先将一部分数据,存储集合中
* 返回值: 无
* 参数 : 集合
* 方法名: init
*/
public static void init(ArrayList<FruitItem> array){
//创建出多个FruitItem类型,并且属性赋值
FruitItem f1 = new FruitItem();
f1.ID = 9527;
f1.name = "少林寺酥饼核桃";
f1.price = 12.7;

FruitItem f2 = new FruitItem();
f2.ID = 9008;
f2.name = "尚康杂粮牡丹饼";
f2.price = 5.6;

FruitItem f3 = new FruitItem();
f3.ID = 9879;
f3.name = "新疆原产哈密瓜";
f3.price = 599.6;

//创建的3个FruitItem类型变量,存储到集合中
array.add(f1);
array.add(f2);
array.add(f3);
}

}

###16商品的清单功能
* A: 商品的清单功能
* a: 案例代码(显示商品清单的showFruitList(ArrayList<FruitItem>)方法的代码如下)
/*
* 定义方法,实现显示货物清单功能
* 返回值: 无
* 参数: 集合
* 遍历集合,获取集合中的每个FruitItem变量,变量,调用属性
*/
public static void showFruitList(ArrayList<FruitItem> array){
System.out.println();
System.out.println("================商品库存清单================");
System.out.println("商品编号 商品名称 商品单价");
//遍历集合
for(int i = 0 ; i < array.size(); i++){
//集合get方法,获取出每个FruitItem变量,可以使用FruitItem接受get结果
FruitItem item = array.get(i);
//变量item调用类中属性
System.out.println(item.ID+" "+item.name+" "+item.price);
}
}
###17商品的添加功能
* A: 商品的添加功能
* a: 案例代码(商品添加功能的addFruit(ArrayList<FruitItem>)方法的代码如下)
/*
* 定义方法,实现商品的添加功能
* 返回值:无
* 参数: 集合
* 提示用户选择的是添加商品的功能
*
* 提示用户输入的是什么
*
* 创建FruitItem变量,变量调用的属性
* 将输入的每个商品属性进行赋值
*/
public static void addFruit(ArrayList<FruitItem> array){
System.out.println("选择的是添加商品功能");
//创建Scanner变量
Scanner sc = new Scanner(System.in);
System.out.print("请输入新商品的编号:");
//输入商品的编号
int ID = sc.nextInt();
//输入商品的名字
System.out.print("请输入新商品的名字:");
String name = sc.next();
//输入商品的单价
System.out.print("请输入新商品的单价:");
double price = sc.nextDouble();
//创建FruitItem变量
FruitItem item = new FruitItem();
//item.属性赋值
item.ID = ID;
item.name = name;
item.price = price;
array.add(item);
System.out.println("商品添加成功");
}
###18商品的删除功能
* A: 商品的删除功能(删除商品deleteFruit(ArrayList<FruitItem>)方法的代码如下)
* a: 案例代码
/*
* 定义方法,实现商品的删除功能
* 返回值: 无
* 参数: 集合
*
* 删除依靠的是商品的编号
* 提示用户选择的是删除功能
* 键盘输入商品的编号
* 遍历集合,获取集合中的每个FruitItem变量
* 变量调用属性 ID, 和用户的输入的编号,对比,相同就删除
*/
public static void deleteFruit(ArrayList<FruitItem> array){
System.out.println("选择的是删除功能");
System.out.print("请输入商品的编号:");
Scanner sc = new Scanner(System.in);

int ID = sc.nextInt();
//遍历集合
for(int i = 0 ; i < array.size(); i++){
//获取到每个FruitItem变量
FruitItem item = array.get(i);
//变量,调用属性ID,和用户输入的编号比较
if( item.ID == ID){
//移除集合中的元素
//集合的方法remove实现
array.remove(i);
System.out.println("删除成功");
return;
}
}
System.out.println("你输入的编号不存在");
}
###19商品的修改功能
* A: 商品的修改功能
* a: 案例代码(修改商品updateFruit(ArrayList<FruitItem>)方法的代码如下)
/*
* 定义方法,实现商品的修改功能
* 返回值: 无
* 参数: 集合
*
* 提示用户选择的是修改功能
* 提示用户输入需要修改的商品编号
* 遍历集合,获取每个FruitItem变量
* 变量调用ID属性,属性和用户输入的编号比较
* 如果相同:
* 修改调FruitItem中的属性值
* 键盘输入
*/
public static void updateFruit(ArrayList<FruitItem> array){
System.out.println("选择的是修改功能");
System.out.print("请输入您要修改的商品的编号:");

Scanner sc = new Scanner(System.in);
int ID = sc.nextInt();
//遍历集合,获取每个FruitItem变量
for(int i = 0 ; i < array.size(); i++){
FruitItem item = array.get(i);
//获取FruitItem的属性ID,和用户输入的ID比较
if(item.ID == ID){
System.out.print("输入新的商品编号:");
item.ID = sc.nextInt();

System.out.print("输入新的商品名字:");
item.name = sc.next();

System.out.print("输入新的商品价格:");
item.price = sc.nextDouble();
System.out.println("商品修改成功");
return ;
}
}
System.out.println("输入的编号不存在");
}

JAVA语言学习day16--7月22日的更多相关文章

  1. python学习 day16 (3月21日)----(正则)

    背景:(对程序的伤害) #__author : 'liuyang' #date : 2019/3/21 0021 上午 10:34 #模块和功能之间的关系 #先有的功能 #正则表达式 #time模块 ...

  2. Java语言学习day01--6月28日

    Java语言学习day01一:Java概述 1.Java语言发展史 任职于太阳微系统的 詹姆斯·高斯林 等人于1990年代初开发Java语言的雏形,最初被命名为 Oak ,目标设置在 家用电器等小型系 ...

  3. Java语言学习day02--6月29日

    Java语言学习day02###01常用的DOS命令 * A: 常用的DOS命令 * a: 打开Dos控制台 * win+r--cmd--回车 * b: 常用dos命令 * cd.. : 退回到上一级 ...

  4. 12月22日《奥威Power-BI财务报表数据填报》腾讯课堂开课啦

    一扇可以通向任何地方的“任意门”,是我们多少人幼时最梦寐以求的道具之一.即使到了现在,工作中的我们还会时不时有“世界那么大,我想去看看”的念头,或者在突然不想工作的时刻,幻想着自己的家门变成了“任意门 ...

  5. Java Calendar获取年、月、日、时间

    Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...

  6. 微软SQL Server认证最新信息(17年5月22日更新),感兴趣的进来看看哟

    之前一直有在关注微软认证的一些消息,由于最新的SQL Server认证加入了2016的相关内容,导致课程资料需要大部分更新,但是微软更新相对比较慢,并且经常改版,目前发现的最新的MCP Cert Pa ...

  7. Autodesk 最新开发技术研讨会 -8月22日-Autodesk北京办公室

    为了增进与广大中国地区Autodesk产品的二次开发人员的了解与互动,帮助中国地区的Autodesk产品二次开发人员了解Autodesk最新的二次开发技术动向,并获得Autodesk公司专业开发支持顾 ...

  8. 见见面、聊聊天 - 5月22日晚7点Meetup,三里屯绿树旁酒吧,畅谈云技术和应用

    总是邮件.QQ什么的线上聊,让我们见面吧,不怕见光死,呵呵.   我和同事会先抛砖引玉,给大家介绍一下Autodesk几款最新的云技术和解决方案,然后大家就可畅所欲言,自由交流.来自五湖四海的人,为了 ...

  9. 2016年12月22日 星期四 --出埃及记 Exodus 21:17

    2016年12月22日 星期四 --出埃及记 Exodus 21:17 "Anyone who curses his father or mother must be put to deat ...

  10. 转:[置顶] 从头到尾彻底理解KMP(2014年8月22日版)

    [置顶] 从头到尾彻底理解KMP(2014年8月22日版)

随机推荐

  1. Serialzers 序列化组件

    Serialzers 序列化组件 前言 当做前后端分离的项目时,JSON是一个轻量级的数据交互格式.所有我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到数据进行序列化 Django ...

  2. fastcgi未授权访问及任意命令执行

    1. 漏洞原理 服务端使用fastcgi协议并对外网开放9000端口,攻击者可以构造fastcgi协议包内容,实现未授权访问服务端.php文件以及执行任意命令. 2. 漏洞利用 第一步 搭建vulhu ...

  3. callbale 和runnable 区别

    Callable接口: 1 2 3 public interface Callable<V> {     V call() throws Exception; } Runnable接口: ...

  4. Xshell 连接虚拟机OS Linux 设置静态ip ,网络配置中无VmWare8 的解决办法

    前序:最近开始研究Hadoop平台的搭建,故在本机上安装了VMware workstation pro,并创建了Linux虚拟机(centos系统),为了方便本机和虚拟机间的切换,准备使用Xshell ...

  5. 什么是内部类?Static Nested Class和Inner Class的不同?

    内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中.在方法外部定义的内部类前面可以加上st ...

  6. xml文件使用DOM解析,报异常org.xml.sax.SAXParseException,"characterEncoding" 的引用必须以 ';' 分隔符结尾异常

    这个异常一般为xml文件对&的报错,只需要将&改为转义后的&amp即可解决

  7. select poll和epoll

    select poll epoll都是IO多路复用机制.这里的复用其实可以理解为复用的线程,即一个(或者较少的)线程完成多个IO的读写.这里总结下这三个函数的区别. 1 select 1.1 sele ...

  8. We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.

    今天遇到一个问题为 vue请求得到的响应为 We're sorry but demo3 doesn't work properly without JavaScript enabled. Please ...

  9. 区分构造函数注入和 setter 注入?

    构造函数注入 setter 注入 没有部分注入 有部分注入 不会覆盖 setter 属性 会覆盖 setter 属性 任意修改都会创建一个新实例 任意修改不会创建一个新实例 适用于设置很多属性 适用于 ...

  10. 【动态规划】洛谷P1802 5 倍经验日(01背包问题)

    一个洛谷普及-的题目,也是我刚刚入门学习动态规划的练习题. 下面发一下我的思路和代码题解: 我的思路及伪代码: 我的AC图: 接下来上代码: 1 //动态规划 洛谷P1802 五倍经验日 2 #inc ...