Java案例:超市库存管理系统
案例介绍:
模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现,见下图

案例需求分析:
根据案例介绍,我们进行分析,首先需要一个功能菜单,然后输入功能序号后,调用序号对应的功能方法,实现想要的操作。分析步骤如下
1.完成超市商品初始化。创建商品,将商品添加到集合
2.显示来到超市能做的操作,也就是显示主菜单
3.根据接收到的功能选项,执行对应的功能
3.1.库存货物查询
3.2.添加新货物
3.3.删除货物
3.4.修改货物
3.5.退出系统,结束main方法的运行
4.循环,回到 2.显示主菜单
实现代码步骤:
每种库存商品都拥有多项商品信息,为了方便管理每种商品的信息,我们对商品信息进行封装,编写FruitItem.java文件
public class FruitItem {
int ID; //商品编号
String name; //商品名称
double price; //商品单价
}
上述代码中,对商品信息(编号、名称、单价、数量、金额)进行了封装。这样做的好处在于以后只要找到这个商品,就能够知道该商品的每项信息了。
编写FruitStore.java,完成如下功能:
//编写main主方法
public static void main(String[] args) {
//定义数组,记录每个商品信息
ArrayList<FruitItem> list = new ArrayList<FruitItem>();
/*
* 1.超市商品初始化
*/
init(list);
while(true){
/*
* 2.显示主菜单
*/
mainMenu();
/*
* 3.根据接收到的功能选项,执行对应的功能
*/
chooseFunction(list);
}
}
上述代码中,通过while(true)循环,完成用户调用不同功能。实现重复功能选择操作。
1.超市商品初始化,创建商品,将商品添加到集合
public static void init(ArrayList<FruitItem> list) {
FruitItem item = new FruitItem();
item.name = "少林寺酥饼核桃";
item.ID = 9001;
item.price = 120.0;
FruitItem item2 = new FruitItem();
item2.name = "尚康杂粮牡丹饼";
item2.ID = 9002;
item2.price = 20.0;
FruitItem item3 = new FruitItem();
item3.name = "新疆原产哈密瓜";
item3.ID = 9003;
item3.price = 7.0;
list.add(item);
list.add(item2);
list.add(item3);
}
上述代码中,完成商品集合的初始化操作,添加了3件商品。
2.显示来到超市能做的操作,也就是显示主菜单
public static void mainMenu() {
System.out.println("=========================欢迎光临itcast超市=========================");
System.out.println("1:查询货物 2:添加新货物 3:删除货物 4:修改货物");
System.out.println("5:退出系统");
}
上述代码,用来完成用户操作界面的显示。
3.根据接收到的功能选项,执行对应的功能
public static void chooseFunction(ArrayList<FruitItem> list) {
System.out.println("请您输入要操作的功能序号:");
Scanner sc = new Scanner(System.in);//键盘输入对象
String choose = sc.next();
//根据接收到的选择,执行对应的功能
switch (choose) {
case "1": //3.1.库存货物查询
showFruitList(list);
break;
case "2": //3.2.添加新货物
addFruitItem(list);
break;
case "3": //3.3.删除货物
delFruitItem(list);
break;
case "4": //3.4.修改货物
updateFruitItem(list);
break;
case "5": //3.5.退出系统,退出JVM
System.out.println("退出系统");
return;
default:
System.out.println("对不起,没有您输入的功能,请重新选择");
break;
}
}
上述代码中,参数list为库存商品集合。当键盘输入功能序号后,通过switch语句匹配后,调用对应的方法完成对应功能的实现。
3.1.库存货物查询
public static void showFruitList(ArrayList<FruitItem> list) {
System.out.println("=======================商品库存清单=======================");
System.out.println("商品编号\t商品名称\t\t商品单价");
//查询每种库存商品信息
for (int i = 0; i < list.size(); i++) {
FruitItem item = list.get(i);
System.out.println(item.ID + "\t" + item.name + "\t" + item.price);
}
}
上述代码中,用来查询所有库存商品信息。
3.2.添加新货物
public static void addFruitItem(ArrayList<FruitItem> list) {
//创建新获取对象
FruitItem newItem = new FruitItem();
Scanner sc = new Scanner(System.in);//键盘输入对象
//提示输入信息
System.out.print("请输入新水果的名称:");
newItem.name = sc.next();
System.out.print("请输入新水果的编号:");
newItem.ID = sc.nextInt();
System.out.print("请输入新水果单价:");
newItem.price = sc.nextDouble();
//向货物集合中添加新的物品项
list.add(newItem);
}
上述代码中,通过键盘录入,将录入的商品信息存储到库存商品集合中。
3.3.删除货物
public static void delFruitItem(ArrayList<FruitItem> list) {
System.out.print("请输入您要删除的水果编号:");
Scanner sc = new Scanner(System.in);//键盘输入对象
int fruitID = sc.nextInt();
//删除集合元素
for (int i = 0; i < list.size(); i++) {
FruitItem thisItem = list.get(i);
if(thisItem.ID == fruitID) {
list.remove(thisItem);
System.out.println("水果信息删除完毕!");
return;
}
}
System.out.println("对不起,没有这个编号的水果!");
}
上述代码中,通过键盘录入,在库存集合中查找对应的商品编号,如果找到该商品,将该商品删除,否则,提示没有这个编号的商品。
3.4.修改货物
public static void updateFruitItem(ArrayList<FruitItem> list) {
System.out.println();
System.out.print("请输入您要修改信息的水果编号:");
Scanner sc = new Scanner(System.in);//键盘输入对象
int fruitID = sc.nextInt();
//更新集合元素
for (int i = 0; i < list.size(); i++) {
FruitItem thisItem = list.get(i);
if(thisItem.ID == fruitID) {
System.out.print("请输入新的水果ID:");
thisItem.ID = sc.nextInt();
System.out.print("请输入新的水果名称:");
thisItem.name = sc.next();
System.out.print("请输入新的水果单价:");
thisItem.price = sc.nextDouble();
System.out.println("水果信息更新完毕!");
return;
}
}
System.out.println("对不起,没有这个编号的水果!");
}
上述代码中,通过键盘录入,在库存集合中查找对应的商品编号,如果找到该商品,则键盘录入修改商品信息,否则,提示没有这个编号的商品。
Java案例:超市库存管理系统的更多相关文章
- Java学习笔记7(简易的超市库存管理系统示例)
用以前学过的知识,可以简单地做一个超市库存管理系统: 定义一个商品类: public class FruitItem { int ID; String name; double price; int ...
- java全栈day07---Eclipse开发工具 超市库存管理系统
前六天我们都是用Notepad++来编写java程序,通过DOS命令来运行,我们发现这样比较繁琐,那么我们今天就用一个工具Eclipse来开发java Eclipse的下载安装 * A: Eclips ...
- java超市购物管理系统
一.概述 1.鹏哥前面有写过java项目超市管理系统项目,传送门 2.收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思想练习,但是没有涉及到java如 ...
- Java初学者作业——为某超市设计管理系统,需要在控制台展示系统菜单,菜单之间可以完成跳转。
返回本章节 返回作业目录 需求说明: 为某超市设计管理系统,需要在控制台展示系统菜单,菜单之间可以完成跳转. 实现思路: 定义mainMenu方法,用于显示主菜单. 主菜单主要负责显示4个选项,分别是 ...
- 第82节:Java中的学生管理系统
第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...
- JavaSE库存管理系统项目实战
需求分析 企业库房用于存放成品.半成品.原材料.工具等物资,一般情况下,这些物资统称为物料.库存管理常见业务包括物资的入库.出库.盘点.退货.报废以及财务核算等,业务逻辑比较复杂,库房信息系统项目开发 ...
- 项目一:ssm超市订单管理系统
声明:项目参考于课程教材,学习使用,仅在此记录 项目介绍 ssm超市订单管理系统,功能模块有订单管理,供应商管理,用户管理,密码修改,退出系统,管理模块中包括基本的增删改查 集成工具使用idea,基于 ...
- SSM整合案例:图书管理系统
目录 SSM整合案例:图书管理系统 1.搭建数据库环境 2.基本环境搭建 2.1.新建一个Maven项目,起名为:ssmbuild,添加web的支持 2.2.导入pom的相关依赖 2.3.Maven静 ...
- 面向对象案例-学生信息管理系统V0.6
更新版本 面向对象案例 - 学生信息管理系统V1.0 项目要求: 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的方法 1. ...
随机推荐
- HTML DOM 事件对象
HTML DOM 事件对象 由 youj 创建,小路依依 最后一次修改 2016-08-04 HTML DOM 事件 HTML DOM 事件 HTML DOM 事件允许Javascript在HTML文 ...
- c++ opencv 3.2 +Mfc VS2015窗体显示图片方法
本文仅涉及一些核心步骤,具体 OpenCV 的配置以及其他的细节问题,请参考 VS2010 / MFC + OpenCV 2.4.1打开图片. 1. 新建 MFC 对话框项目 基于对话框,不使用Uni ...
- string+和stringbuffer的速度比较
public class Main{ public static void main(String[] args){ /* 1 */ String string = "a" + & ...
- C++中 左值和右值的区别
总结: C++11中所有的值属于左值,右值两者之一. 左值引用:指的是可以放在赋值表达式左边的事物——在堆上或者栈上分配的命名对象或者其他对象成员——有明确的内存地址. 对左值的const引用创建临时 ...
- Spring Boot 2.0(一):Spring Boot 2.0尝鲜-动态 Banner
Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner,今天我们就先拿这个来尝尝鲜 Spring Boot 更换 Banner 我们先来回顾一下在 Spring Bo ...
- 转录组分析---Hisat2+StringTie+Ballgown使用
转录组分析---Hisat2+StringTie+Ballgown使用 (2016-10-10 08:14:45) 转载▼ 标签: 生物信息学 转录组 1.Hisat2建立基因组索引: First ...
- RNA测序相对基因表达芯片有什么优势?
RNA测序相对基因表达芯片有什么优势? RNA-Seq和基因表达芯片相比,哪种方法更有优势?关键看适用不适用.那么RNA-Seq适用哪些研究方向?是否您的研究?来跟随本文了解一下RNA测序相对基因表达 ...
- js、css、img等浏览器缓存问题的2种解决方案
转:http://www.jb51.net/article/42339.htm 浏览器缓存的意义在于提高了执行效率,但是也随之而来带来了一些问题,导致服务端修改了js.css,客户端不能更新,下面有几 ...
- [规则原则定理]规则原则定理章3Java命名规范
JAVA命名规范 驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰 ...
- 清华大学 TUNA 协会
https://tuna.moe/ 技术,实力,优越感,环境..,镜像