• 【JDBC实战】水果库存系统 [设计阶段]


    CSDN话题挑战赛第2期
    参赛话题:学习笔记

    在这里插入图片描述
    在这里插入图片描述

    JDBC专栏

    更多文章,进入专栏阅读:(点击进入专栏)
    【1】idea添加mysql-jar包
    【2】使用IDEA连接数据库,执行增删改操作。
    【3】IDEA连接数据库,执行查询操作,返回结果集并输出。
    【4】JDBC实战 水果库存系统 [设计阶段]
    【5】水果库存系统 [功能实现](接口实现类FruitDAOImpl的功能实现)



    前言

    JDBC专栏,我们在前面的文章中学习了mysql-jar包的导入,使用JDBC规范连接数据库,以及JDBC对数据库进行等常规操作。
    接下来,就到检验学习成果的时刻了,我们将运用JDBC一系列常规操作,实现一个水果库存系统,将之前学到的知识融会贯通在一起…


    一、水果库存系统介绍

    水果库存系统的需求是实现以下几个功能:

    • 查看水果库存列表;
    • 添加水果库存信息;
    • 查看特定水果库存信息;
    • 水果下架;
    • 退出;

    只要是更新或者是查看信息的功能,都需要我们去使用JDBC规范连接数据库来实现。
    在一开始,我们先不考虑代码是否冗余的问题,第一目标是 实现需求,基本功能实现之后再对代码进行优化


    二、结构设计:

    1).Fruit类

    在项目工程中,我们需要创建一个Fruit类,用于存放库存系统中每一种水果的信息;
    每种水果都包含以下属性

    1. 编号;
    2. 水果名称;
    3. 水果单价;
    4. 库存数量;
    5. 备注;

    因此,在Fruit类中,我们需要为其设置对应的属性构造方法Get()Set()方法,以及重写toString()方法从而方便在需要查看水果库存信息时输出…

    Fruit类的代码:

    /**
     * @author .29.
     * @create 2022-09-22 22:15
     */
    public class Fruit {
        //属性
        private Integer fid;   //水果编号
        private String fname;  //水果名称
        private Integer price; //水果单价
        private Integer fcount;//库存数量
        private String remark; //备注
        
        //构造方法
        public Fruit() {
        }
    
        public Fruit(int fid, String fname, int price, int fcount, String remark) {
            this.fid = fid;
            this.fname = fname;
            this.price = price;
            this.fcount = fcount;
            this.remark = remark;
        }
    
        //对象get、set方法
        public Integer getFid() {
            return fid;
        }
    
        public void setFid(Integer fid) {
            this.fid = fid;
        }
    
        public String getFname() {
            return fname;
        }
    
        public void setFname(String fname) {
            this.fname = fname;
        }
    
        public Integer getPrice() {
            return price;
        }
    
        public void setPrice(Integer price) {
            this.price = price;
        }
    
        public Integer getFcount() {
            return fcount;
        }
    
        public void setFcount(Integer fcount) {
            this.fcount = fcount;
        }
    
        public String getRemark() {
            return remark;
        }
    
        public void setRemark(String remark) {
            this.remark = remark;
        }
        
        //重写toString方法
        @Override
        public String toString() {
            return fid +"\t\t\t"+ fname +"\t\t\t"+ price +"\t\t\t"+ fcount +"\t\t\t"+ remark;
        }
    }
    
    


    2).Menu类

    准备好Fruit类之后,我们还需要准备一个菜单类Menu,在菜单类中,需要显示菜单的方法,还有需求实现的方法。
    有了这些方法,才能实现水果库存系统的功能:

    • 菜单显示:showMainMenu()
    • 查看水果库存信息:showFruitList()
    • 添加水果库存信息:addFruit()
    • 查看指定水果库存信息:showFruitInfo()
    • 水果下架:delFruit()
    • 退出:exit()

    在设计阶段,我们先准备好需要的结构,具体的功能代码实现可以放在下一阶段进行。

    Menu类初版的代码(未实现功能):

    /**
     * @author .29.
     * @create 2022-09-22 22:19
     *
     */
    
    //菜单类
    public class Menu {
        //显示主菜单
        public int showMainMenu(){
            System.out.println("==================水果库存界面=================");
            System.out.println("1.查看水果库存列表");
            System.out.println("2.添加水果库存信息");
            System.out.println("3.查看特定水果库存信息");
            System.out.println("4.水果下架");
            System.out.println("5.退出");
            System.out.println("==============================================");
            System.out.print("请选择:");
    
            int input = scan.nextInt();
            return input;    
        }
    
        //查看水果库存列表
        public void showFruitList(){
            return;
        }
    
        //添加水果库存信息--- 业务方法:添加库存记录
        public void addFruit(){
           return;
        }
    
        //查看指定水果库存信息
        public void showFruitInfo(){
           return;
        }
    
        //水果下架
        public void delFruit(){
           return;
        }
    
        //退出方法
        public boolean exit(){
            return true;
        }
        
    }
    
    


    3).Client类

    水果库存系统的使用,是需要客户通过选择菜单功能选项,系统再运行客户需要使用的功能。所以我们还需要一个客户类Client,实现先选择再运行:

    Client类设计代码:

    import com.haojin.fruit.controller.Menu;//导入项目工程中设计的Menu类
    
    /**
     * @author .29.
     * @create 2022-09-22 22:21
     */
    public class Client {
        public static void main(String[] args) {
            Menu m = new Menu();   //创建Menu类的对象
    
            boolean flag = true;
            while(flag){
                //显示主菜单
                int slt = m.showMainMenu();
                switch(slt){
                    case 1:
                        //查看列表
                        m.showFruitList();
                        break;
                    case 2:
                        //添加
                        m.addFruit();
                        break;
                    case 3:
                        //查看指定信息
                        m.showFruitInfo();
                        break;
                    case 4:
                        //下架
                        m.delFruit();
                        break;
                    case 5:
                        //退出
                        flag = m.exit();
                        break;
                    default:
                        System.out.println("系统没有此项功能,请重新选择吧...");
                        break;
                }
            }
            
            System.out.println("感谢使用");
    
        }
    }
    
    


    4).DAO设计理念

    DAO(Data Access Object)是一个为数据库或其他持久化机制提供抽象接口的对象,在不暴露底层持久化实现细节的前提下提供各种数据访问操作

    具体来说,就是设计一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且创建接口实现类

    ①提供抽象接口FruitDAO

    在接口中,我们需要准备抽象方法,对应了JDBC对数据库的不同操作:

    • 查询库存列表:getFruitList();
    • 新增库存:addFruit(Fruit fruit);
    • 修改库存:UpdateFruit(Fruit fruit);
    • 查询指定库存:getFruitByFname(String fname);
    • 删除库存:DelFruit(String fname);
    import com.haojin.fruit.pojo.Fruit;
    import java.util.List;
    
    /**
     * @author .29.
     * @create 2022-09-23 17:38
     */
    public interface FruitDAO {
    
        //查询库存列表
        List<Fruit> getFruitList();
    
        //新增库存
        boolean addFruit(Fruit fruit);
    
        //修改库存
        boolean UpdateFruit(Fruit fruit);
    
        //删除库存
        boolean DelFruit(String fname);
    
        //查询指定库存
        Fruit getFruitByFname(String fname);
    }
    
    

    ②接口实现类FruitDAOImpl

    实现接口FruitDAO,重写接口中的抽象方法,重写方法中包含了底层持久化实现细节,这里,实现类方法都是单精度方法,方法的颗粒密度不能再被划分了。

    上文设计的Menu类中的方法实现中,需要引用这里的实现类方法,使用当中JDBC连接,操作数据库的功能。

    FruitDAOImpl实现类代码(不包含实现代码):

    
    import com.haojin.fruit.dao.FruitDAO;
    import com.haojin.fruit.pojo.Fruit;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author .29.
     * @create 2022-09-23 17:56
     */
    public class FruitDAOImpl implements FruitDAO {
    
        @Override
        public List<Fruit> getFruitList() {
            return null;
        }
    
        @Override
        public boolean addFruit(Fruit fruit) throws SQLException {
            return false;
        }
    
        @Override
        public boolean UpdateFruit(Fruit fruit) {
            return false;
        }
    
        @Override
        public boolean DelFruit(String fname) {
            return false;
        }
    
        @Override
        public Fruit getFruitByFname(String fname) {
            return null;
        }
    }
    

    至此,水果库存系统的 结构 就设计完成啦,接下来就是功能代码的实现。

    求关注⚽ 作者🥇 .29. 🥇 的✔博客主页✔
    您的点赞收藏以及关注是对作者最大的鼓励喔 ~~

    在这里插入图片描述

  • 相关阅读:
    windows英伟达nvidia显卡驱动安装教程
    AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现
    冥想第五百五十九天
    Unity | 模型动态效果插件总结
    【英语:发音基础】A2.单词、句子、意群发音
    单元测试框架-Pytest(简单学习)
    VFP技巧
    【Java】从源码分析fail-fast和fail-safe是如何产生的
    【Linux】文件描述符
    Java动态代理Proxy.newProxyInstance
  • 原文地址:https://blog.csdn.net/ebb29bbe/article/details/127037585