不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。

文章目录

  • 一、知识储备
  • 二、系统设计
    • 1、系统介绍
    • 2、系统结构
  • 三、效果展示
  • 四、功能详解
    • 1.实体类
    • 2、业务逻辑类
    • 3、程序主入口类
  • 五、写在最后

一、知识储备

本系统涉及的主要技术点有如下:

  1. 控制流程语句
  2. 面向对象(比如封装、多态、接口)
  3. Java类库的使用(如Scanner 扫描器)
  4. 集合(如List)
  5. 多线程的基本方法

如果您已经掌握了这些知识点,但是又不太会运用,那么这个系统就很适合观摩观摩。


二、系统设计

1、系统介绍

本系统名叫水果库存,相当于一个存放水果的仓库。功能实现了简单的新增、查询、修改、删除、退出。

2、系统结构

本系统结构清晰明了,一共三个模块。第一个是存放水果的类(或者叫实体类),第二个仓库的操作(或者叫业务逻辑层),第三个是主程序入口模块。如图:

三、效果展示

  1. 系统主菜单

  2. 新增功能

  3. 查询功能

  4. 修改功能

  5. 删除功能

  6. 退出系统

四、功能详解

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;}
}

【分析】这个类为水果类,字段有编号,名称,价格和描述,使用了参数构造方法,这样方便创建对象的时候直接赋值。后面的代码就是setter、getter方法了,由于该类实现了面向对象的封装,所有必须使用这两种方式暴露出去。toString方法方便了打印信息。

2、业务逻辑类

  1. 库存接口
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);
}

【分析】这步操作就是定义了几个规范,每个规范都有注释。

  1. 库存接口实现类
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感兴趣的小伙伴,可以在本系统的基础上增添色彩。最后如果本篇文章对您有所帮助,请给作者点个赞。

水果库存系统(基础版)相关推荐

  1. Javaweb——水果系统基础版

    水果系统基础版-多Servlet版本 现在我们需要给页面添加几个功能: 点击水果的名字能查看水果的详情,然后可以修改水果的信息. 点击 添加新库存记录时可以添加新纪录. 点击x操作时,可以将响应水果的 ...

  2. java 模拟 电话本系统 (基础版)

    java 模拟 电话本系统 (基础版) 需求:注意的是,联系人的id是自增长的 实现的功能: java综合编程练习:基本的增删改查,对于逻辑数据的过滤,这块做了简单的处理,暂不优化 ContactPe ...

  3. 毕设-基于STM32/C51刷卡的门禁系统(基础版)

    简介 厂房弄完了,开始学习关于刷卡的门禁系统.这东西说简单也简单,说难搞也有点难搞啊! 器件选型 一般的常用RFID模块就是RC522(淘宝店铺MFRC-522 RC522 RFID射频 IC卡感应模 ...

  4. 【Web实战-Tomcat-Servlet-Thymeleaf -JDBC-MySQL】浏览器页面显示数据库数据(水果库存系统)

  5. java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))

    java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件)) Fruit类 package com.zr.fruitSupermarket;/*** 水果* @author ZR* ...

  6. Qt大屏电子看板系统源码基础版

    Qt大屏电子看板系统源码基础版 整体总共分三界面,一级界面是整体布局,二级界面是单个功能模块,三界面是单个控件. 子控件包括饼图+圆环图+曲线图+柱状图+柱状分组图+横向柱状图+横向柱状分组图+合格率 ...

  7. 微软官方自己精简的XP系统--WIN XP基础版WinFLPCs

    微软官方自己精简的XP系统--WIN XP基础版WinFLPCs Windows Fundamentals For Legacy PCs 未来发展方向 前言 XP 基础版",以下简称:Win ...

  8. 鸿蒙os下载到电脑上,鸿蒙系统pc版下载2.0

    鸿蒙系统pc版2.0是华为最新打造的系统,采用分布式操作系统,可以在华为各种设备上使用.华为鸿蒙2.0系统pc版可以适应全新的芯片,打造个性化的操作习惯,可以让用户使用更舒适,功能更强大.它是一个面向 ...

  9. 【JAVA小游戏+水果售卖系统】基于GUI界面编程的水果“人生”模拟系统

    [JAVA]基于GUI界面编程的水果"人生"模拟系统 一.系统主要功能及简介 二.系统体系结构 三.系统设计技术 四.编码说明 五.效果展示 一.系统主要功能及简介 该系统以JAV ...

最新文章

  1. java连接pg_postgresql 入门(含java、scala连接代码)
  2. 悟空 CRM(9.0版本)V9.0_20190416 更新日志
  3. BZOJ3992:[SDOI2015]序列统计——题解
  4. 【Spark Summit EU 2016】在在线学习中使用Structured Streaming流数据处理引擎
  5. pi数据库系统中国服务器,基于PI数据库的服务器实时监控系统研究与开发
  6. 设备选购需要注意的几个方面
  7. ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识
  8. pdf从结构新建书签_强力推荐一款PDF神器
  9. 后端程序员必备:索引失效的十大杂症
  10. [猜你喜欢]冠军 yes,boy! 分享 | 推荐系统也可以很简单 做个记录 以后方便学习
  11. 判断 Map 中是否包含指定的 key 和 value
  12. java把abcedf字符串进行排序_字符串合并处理 - 一贱书生的个人空间 - OSCHINA - 中文开源技术交流社区...
  13. eclipse项目build时,提示错误.
  14. 将pdm换成mysql表结构 报错_MySQL随机生成百万级别数据
  15. Linux下出现command not found的解决办法
  16. CentOS安装并设置MariaDB
  17. Power Query之二 可视化数据处理
  18. python中compile函数
  19. 2019 年第 33 周 DApp 影响力排行榜 | TokenInsight
  20. 暑假训练 The Triangle Game (OpenJ_Bailian - 1574)

热门文章

  1. SuperMap iClient3D for WebGL教程(影像篇)-Mapbox
  2. 读书笔记--青年文摘摘抄
  3. 《电工学》课程教学大纲- -
  4. Shell中的IFS解惑
  5. UserAgent 解析, 在线api
  6. 卷积神经网络之目标检测总结
  7. 轩辕实验室 | 车载以太网CNN入侵检测算法
  8. 股票中如何数浪(数细浪)转自http://frend1.bokee.com/viewdiary.41172456.html
  9. 什么是以太网?为什么要叫做“以太”网?
  10. 基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据