水果库存系统(基础版)
Posted Guarding and trust
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水果库存系统(基础版)相关的知识,希望对你有一定的参考价值。
不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。
文章目录
一、知识储备
本系统涉及的主要技术点有如下:
- 控制流程语句
- 面向对象(比如封装、多态、接口)
- 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方法 方便打印数据*/
@Override
public String toString()
return "编号:" + id + ", 名称:" + name + ", 价格:" + price + ", 描述:" + described;
【分析】这个类为水果类,字段有编号,名称,价格和描述,使用了参数构造方法,这样方便创建对象的时候直接赋值。后面的代码就是setter、getter方法了,由于该类实现了面向对象的封装,所有必须使用这两种方式暴露出去。toString方法方便了打印信息。
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>();
/**
* 新增库存
*/
@Override
public 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("新增成功");
/**
* 查询库存
*/
@Override
public 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;
/**
* 根据水果编号查询对应的水果库存
*/
@Override
public int selectById(Integer id)
//遍历查询
for(Fruit fruit : fruitList)
//获取水果编号
Integer fid = fruit.getId();
//判断编号是否一致
if(id.equals(fid))
return 200;
return -1;
/**
* 根据水果编号修改对应库存信息
*/
@Override
public 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;
/**
* 根据水果编号删除对应的库存
*/
@Override
public 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感兴趣的小伙伴,可以在本系统的基础上增添色彩。最后如果本篇文章对您有所帮助,请给作者点个赞。
以上是关于水果库存系统(基础版)的主要内容,如果未能解决你的问题,请参考以下文章
Web实战-Tomcat-Servlet-Thymeleaf -JDBC-MySQL浏览器页面显示数据库数据(水果库存系统)