水果库存系统(基础版)
不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。
文章目录
- 一、知识储备
- 二、系统设计
- 1、系统介绍
- 2、系统结构
- 三、效果展示
- 四、功能详解
- 1.实体类
- 2、业务逻辑类
- 3、程序主入口类
- 五、写在最后
一、知识储备
本系统涉及的主要技术点有如下:
- 控制流程语句
- 面向对象(比如封装、多态、接口)
- Java类库的使用(如Scanner 扫描器)
- 集合(如List)
- 多线程的基本方法
如果您已经掌握了这些知识点,但是又不太会运用,那么这个系统就很适合观摩观摩。
二、系统设计
1、系统介绍
本系统名叫水果库存,相当于一个存放水果的仓库。功能实现了简单的新增、查询、修改、删除、退出。
2、系统结构
本系统结构清晰明了,一共三个模块。第一个是存放水果的类(或者叫实体类),第二个仓库的操作(或者叫业务逻辑层),第三个是主程序入口模块。如图:
三、效果展示
系统主菜单
新增功能
查询功能
修改功能
删除功能
退出系统
四、功能详解
1.实体类
package com.nan.opjo;/*** 水果实体类*/
public class Fruit {private Integer id; //水果编号private String name; //水果名称private double price; //水果价格private String described; //描述/*构造方法*/public Fruit(Integer id, String name, double price, String described) {this.id = id;this.name = name;this.price = price;this.described = described;}public Fruit() {}/*get、set方法*/public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getDescribed() {return described;}public void setDescribed(String described) {this.described = described;}/*toString方法 方便打印数据*/@Overridepublic String toString() {return "编号:" + id + ", 名称:" + name + ", 价格:" + price + ", 描述:" + described;}
}
2、业务逻辑类
- 库存接口
package com.nan.service;import com.nan.opjo.Fruit;/*** 水果库存接口*/
public interface FruitImpl {/*新增库存*/void addFruit(Fruit fruit);/*查询库存*/void selectFruit();/*根据水果编号查询库存*/int selectById(Integer id);/*修改库存*/void updateFruit(Fruit newFruit);/*删除库存*/void deleteFruit(Integer id);
}
【分析】这步操作就是定义了几个规范,每个规范都有注释。
- 库存接口实现类
package com.nan.service;import java.util.ArrayList;
import java.util.List;import com.nan.opjo.Fruit;/*** 水果库存逻辑类*/
public class FruitService implements FruitImpl {//定义一个仓库private List<Fruit> fruitList = new ArrayList<Fruit>();/*** 新增库存*/@Overridepublic void addFruit(Fruit fruit) {//获取水果信息Integer id = fruit.getId();//调用校验编号是否唯一if(!number(id)) {System.out.println("该编号已存在");return;}String name = fruit.getName();double price = fruit.getPrice();String described = fruit.getDescribed();//创建一个水果类并生产水果信息Fruit fruit1 = new Fruit(id,name,price,described);//把水果放入仓库fruitList.add(fruit1);System.out.println("新增成功");}/*** 查询库存*/@Overridepublic void selectFruit() {if(fruitList.size() == 0 || fruitList == null) {System.out.println("库存空空如也~~~");return;}//遍历查询for(Fruit fruit : fruitList) {//直接打印System.out.println(fruit.toString());}}/*** 设置水果编号唯一性 false:不唯一,true:唯一*/public boolean number(Integer id) {if(fruitList.size() >0 || fruitList != null) {//遍历查询for(Fruit fid : fruitList) {Integer number = fid.getId();if(number.equals(id)) {System.out.println();return false;}}}return true;}/*** 根据水果编号查询对应的水果库存*/@Overridepublic int selectById(Integer id) {//遍历查询for(Fruit fruit : fruitList) {//获取水果编号Integer fid = fruit.getId();//判断编号是否一致if(id.equals(fid)) {return 200;}}return -1;}/*** 根据水果编号修改对应库存信息*/@Overridepublic void updateFruit(Fruit newFruit) {//遍历查询for(Fruit fruit : fruitList) {//获取水果编号Integer fid = fruit.getId();//获取传进来的水果编号Integer newId = newFruit.getId();//判断编号是否一致if(newId.equals(fid)) {//修改水果库存信息fruit.setName(newFruit.getName());fruit.setPrice(newFruit.getPrice());fruit.setDescribed(newFruit.getDescribed());System.out.println("修改成功");return;}}}/*** 根据水果编号删除对应的库存*/@Overridepublic void deleteFruit(Integer id) {//遍历查询for(Fruit fruit : fruitList) {//获取水果编号Integer fid = fruit.getId();//判断编号是否一致if(fid.equals(id)) {//删除水果库存fruitList.remove(fruit);System.out.println("删除成功");return;}}}
}
【分析】这步操作是这个系统的核心,基本的逻辑操作就在这里,比如新增、查询、修改和查询都是在这个类中。这里需要说明的是本系统存入的所有水果都是放在 一个集合fruitList中的,由此保证了仓库的唯一性。
3、程序主入口类
package com.nan.main;import java.util.Scanner;import com.nan.opjo.Fruit;
import com.nan.service.FruitService;/*** 水果库存的主菜单*/
public class Main {//创建水果库存逻辑类private static FruitService fruitService = new FruitService();public static void main(String[] args) { //程序的主入口//循环使程序一直执行while(true) {// 设置菜单项System.out.println("<=====欢迎使用水果库存系统======>");System.out.println("本系统菜单功能如下:");System.out.println("【1】新增库存");System.out.println("【2】查询库存");System.out.println("【3】修改库存");System.out.println("【4】删除库存");System.out.println("【5】退出系统");//使用扫描器 获取用户输入的信息Scanner sc = new Scanner(System.in);System.out.println("请输入您要选择的操作:");String inputUser = sc.next();//判断用户输入的信息进行不同场景的设计switch(inputUser) {case "1": //新增库存System.out.println("请您根据下面的指示进行操作:");System.out.print("请输入水果编号:");Integer id = sc.nextInt();//校验编号是否唯一if(!fruitService.number(id)) {System.out.println("该编号已存在");break;}System.out.print("请输入水果名称:");String name = sc.next();System.out.print("请输入水果价格:");double price = sc.nextDouble();System.out.print("请输入水果描述:");String desbriced = sc.next();//存储水果的对象并把水果信息存入其中Fruit fruit = new Fruit(id, name, price, desbriced);//调用逻辑类添加库存fruitService.addFruit(fruit);break;case "2": //查询库存System.out.println("正在查询...");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("<===============水果库存列表===============>");fruitService.selectFruit();System.out.println("<================库存列表=================>");System.out.println(""); //换行break;case "3": //修改库存System.out.println("请输入您要修改的水果编号:");Integer uId = sc.nextInt();//在仓库里查询一边是否存在int msg = fruitService.selectById(uId);if(msg == 200) {//存在,可以修改System.out.println("请您根据下面的指示进行操作:");System.out.print("请输入水果名称:");String uname = sc.next();System.out.print("请输入水果价格:");double uprice = sc.nextDouble();System.out.print("请输入水果描述:");String udesbriced = sc.next();//存储水果的对象并把水果信息存入其中Fruit uFruit = new Fruit(uId,uname, uprice, udesbriced);//调用逻辑类添加库存fruitService.updateFruit(uFruit);}else {System.out.println("您输入的水果编号不存在");}break;case "4": //删除库存System.out.println("请输入您要删除的水果编号:");Integer fid = sc.nextInt();//调用逻辑类fruitService.deleteFruit(fid);break;case "5": //退出系统System.out.println("系统已退出");System.exit(0);default: //其他不存在操作System.out.println("您输入的操作不存在!");break; }} }
}
【分析】这个类是程序的主入口,就是运行程序的地方了。这一步就是设计界面,使用分支语句根据用户输入的信息进行对应场景的业务逻辑操作。
五、写在最后
以上就是本系统的全部功能,但是本系统还有些潜在bug,而且有些地方也是可以再优化一下的,还有如果有对GUI感兴趣的小伙伴,可以在本系统的基础上增添色彩。最后如果本篇文章对您有所帮助,请给作者点个赞。
水果库存系统(基础版)相关推荐
- Javaweb——水果系统基础版
水果系统基础版-多Servlet版本 现在我们需要给页面添加几个功能: 点击水果的名字能查看水果的详情,然后可以修改水果的信息. 点击 添加新库存记录时可以添加新纪录. 点击x操作时,可以将响应水果的 ...
- java 模拟 电话本系统 (基础版)
java 模拟 电话本系统 (基础版) 需求:注意的是,联系人的id是自增长的 实现的功能: java综合编程练习:基本的增删改查,对于逻辑数据的过滤,这块做了简单的处理,暂不优化 ContactPe ...
- 毕设-基于STM32/C51刷卡的门禁系统(基础版)
简介 厂房弄完了,开始学习关于刷卡的门禁系统.这东西说简单也简单,说难搞也有点难搞啊! 器件选型 一般的常用RFID模块就是RC522(淘宝店铺MFRC-522 RC522 RFID射频 IC卡感应模 ...
- 【Web实战-Tomcat-Servlet-Thymeleaf -JDBC-MySQL】浏览器页面显示数据库数据(水果库存系统)
- java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))
java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件)) Fruit类 package com.zr.fruitSupermarket;/*** 水果* @author ZR* ...
- Qt大屏电子看板系统源码基础版
Qt大屏电子看板系统源码基础版 整体总共分三界面,一级界面是整体布局,二级界面是单个功能模块,三界面是单个控件. 子控件包括饼图+圆环图+曲线图+柱状图+柱状分组图+横向柱状图+横向柱状分组图+合格率 ...
- 微软官方自己精简的XP系统--WIN XP基础版WinFLPCs
微软官方自己精简的XP系统--WIN XP基础版WinFLPCs Windows Fundamentals For Legacy PCs 未来发展方向 前言 XP 基础版",以下简称:Win ...
- 鸿蒙os下载到电脑上,鸿蒙系统pc版下载2.0
鸿蒙系统pc版2.0是华为最新打造的系统,采用分布式操作系统,可以在华为各种设备上使用.华为鸿蒙2.0系统pc版可以适应全新的芯片,打造个性化的操作习惯,可以让用户使用更舒适,功能更强大.它是一个面向 ...
- 【JAVA小游戏+水果售卖系统】基于GUI界面编程的水果“人生”模拟系统
[JAVA]基于GUI界面编程的水果"人生"模拟系统 一.系统主要功能及简介 二.系统体系结构 三.系统设计技术 四.编码说明 五.效果展示 一.系统主要功能及简介 该系统以JAV ...
最新文章
- java连接pg_postgresql 入门(含java、scala连接代码)
- 悟空 CRM(9.0版本)V9.0_20190416 更新日志
- BZOJ3992:[SDOI2015]序列统计——题解
- 【Spark Summit EU 2016】在在线学习中使用Structured Streaming流数据处理引擎
- pi数据库系统中国服务器,基于PI数据库的服务器实时监控系统研究与开发
- 设备选购需要注意的几个方面
- ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识
- pdf从结构新建书签_强力推荐一款PDF神器
- 后端程序员必备:索引失效的十大杂症
- [猜你喜欢]冠军 yes,boy! 分享 | 推荐系统也可以很简单 做个记录 以后方便学习
- 判断 Map 中是否包含指定的 key 和 value
- java把abcedf字符串进行排序_字符串合并处理 - 一贱书生的个人空间 - OSCHINA - 中文开源技术交流社区...
- eclipse项目build时,提示错误.
- 将pdm换成mysql表结构 报错_MySQL随机生成百万级别数据
- Linux下出现command not found的解决办法
- CentOS安装并设置MariaDB
- Power Query之二 可视化数据处理
- python中compile函数
- 2019 年第 33 周 DApp 影响力排行榜 | TokenInsight
- 暑假训练 The Triangle Game (OpenJ_Bailian - 1574)
热门文章
- SuperMap iClient3D for WebGL教程(影像篇)-Mapbox
- 读书笔记--青年文摘摘抄
- 《电工学》课程教学大纲- -
- Shell中的IFS解惑
- UserAgent 解析, 在线api
- 卷积神经网络之目标检测总结
- 轩辕实验室 | 车载以太网CNN入侵检测算法
- 股票中如何数浪(数细浪)转自http://frend1.bokee.com/viewdiary.41172456.html
- 什么是以太网?为什么要叫做“以太”网?
- 基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据