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

java jdbc 项目实战 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. 立即下载

优快云话题挑战赛第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. 🥇 的✔博客主页✔
您的点赞,收藏以及关注是对作者最大的鼓励喔 ~~

在这里插入图片描述

RK3588 EVB开发板原理图讲解【六】 该原理图展示了eMMC Flash与主控芯片之间的连接关系,以及相关的电源、信号线路和去耦电容等。 阅读详情

相关推荐

保姆级教程:用Anaconda+PyCharm搞定YOLOv8本地部署(附避坑指南)

本文提供了一份详细的YOLOv8本地部署指南,涵盖Anaconda环境配置、PyCharm集成到模型部署的全过程。特别针对国内开发者需求,整合了镜像加速和常见报错解决方案,帮助快速完成目标检测模型的本地部署与实战应用。

weixin_42528090的博客 432

jdbc经典教程+项目案例

1、本课程讲解了JDBC技术的基本技术以及statement、preparedstatement、对存储过程的调用、事物控制、批处理、处理结果、数据库连接池、代码生成器、元数据以及项目实战等经典案例; 2、本课程提供所有代码笔记素材以及其他相关资料

多普勒效应及多普勒频移的简单推导

多普勒频移的简单推导

m0_47867419的博客 3万+

#java项目#《水果库存系统1.0》(java(jdbc)+mysql)

mysql+jdbc+java初级练手项目

学习笔记,相关教程 分享 4552

使用OpenTK展示3D点云图像(C#)

图中存在一个空的点,可通过阈值分割过滤掉,然后如何保证某个点必然存在后面两个和它构成三角形的点,用一个2x2的结构元腐蚀阈值分割出的区域,得到剩下所有的点必然每个点可以构成三角形,这种得到三角形的算法效率会非常高。然后还有光照,无光照和有光照效果差异很大,处理光照核心在于得到每个点的法向量,用上面的三角形的两条边构成的向量叉乘,及得到这个点的法向量,输入给着色器处理得到光照的渲染效果,如下面两张图对比。我们需要把点连成面,有很多算法可以实现,但我拿到的图为一张tif格式16位的深度图,如下图。

海盗Isaac 2283

一体化伺服电机与施耐德PLC TM241CEC24T在Canopen协议下的应用

一.硬件组成 软件组成:施耐德SoMachineV4.3二.○1.打开SoMachineV4.3,点击“新建项目”○2.点击“空白项目”○3.项目命名○4.点击“创建项目” 三. 点击“Logic Builder” 四. ○1.右击项目”PMM_CANOPEN_ST”添加设备○2.点击”LogicController”选择PLC型号TM241CEC24T/U○3.点击“添加设备” 五. ○1.右击CAN_1,添加设备○2.选择“CANopen Perfomance”○3.点击“添加设备”

m0_46512607的博客 2520

【JDBC基础 + JDBC实现水果库存系统案例】

JavaWeb学习框架;JDBC对数据库进行增、删、改;JDBC对数据库进行查询操作;查询所有的库存;查询指定fid的库存记录;查询库存总数;获取自增列的值;获取自增列的值;JDBC实现水果库存系统;数据连接池基本操作。 5) 批处理 如果要执行批处理任务,URL中需要添加一个参数: psmt.addBatch(); psmt.executeBatch(); 清空批处理:clearBatch(); 优点:效率高 2 项目实战

独上高楼,望尽天涯路。 1986

环形平滑标签(Circular Smooth Label, CSL)技术详解

环形平滑标签(CSL)是一种优化算法,旨在解决旋转目标检测中角度预测的边界问题。通过将角度回归转化为分类任务,并利用窗口函数平滑标签分布,CSL有效处理了角度周期性的梯度突变问题。其核心原理包括角度离散化和平滑标签编码,通过高斯、矩形、三角等窗口函数生成概率分布。CSL在技术实现上涉及标签转换流程、模型结构调整和损失函数优化,显著提升了检测精度和稳定性。在DOTA数据集上的实验表明,CSL在mAP和角度误差方面优于传统方法。应用场景包括遥感图像分析、自动驾驶和工业质检,部署时需注意旋转NMS编译和ONNX导

浩瀚之水的专栏 640

基于JDBC的简单水果商城系统开发

基于JDBC实现的水果商城系统,完整代码。一个辛勤搬运小白

qq_60320555的博客 2696

AMDGPU IH(Interrupt Handler)实现分析

AMDGPU IH环形缓冲区机制是显卡驱动中高效处理GPU硬件中断的核心架构。该机制通过环形缓冲区存储中断事件,利用读写指针(wptr/rptr)同步硬件与驱动间的数据交互。硬件写入事件后驱动遍历处理,通过指针掩码实现环形循环,并具备溢出检测和虚拟化环境下的重置保护。其优势在于批量处理降低中断开销,指针同步确保可靠性,支持多队列扩展和SR-IOV虚拟化场景,为GPU中断管理提供了高性能基础架构。

图形/计算GPU的驱动与虚拟化技术分享园地 1629

【stata基础代码大全 】 可独立完成一篇实证

用stata打开,直接替换自己需要的变量就行,小白友好❗️❗️❗️。八、八.中介效应检验:路径分析(三种方法)第二种方法即Sobel-Goodman检验。*(7)Winsor处理,剔除异常值。六、内生性问题解决方法(附具体模型)其三,工具变量:两阶段最小二乘。第三种方法即Bootstrap检验。二、Stata中数据的基本处理。*(5)生成行业、年度虚拟变量。PSM1————近邻匹配。七、调节效应检验:机制分析。*(2)剔除数据中的样本。*(4)给变量添加标签。*(3)生成新的变量。*(6)基本数据匹配。

J_Giser的博客 8023

水果超市管理系统

水果超市管理系统运用的IDE是eclipse,在这里的话借助了mysql数据库. 任务描述 结合JDBC技术改写水果超市管理系统本任务做了图形化界面,讲水果超市管理系统结合JDBC技术,连接mysql数据库管理水果信息的形式。 ...

qq_57218752的博客 4644

推荐11个顶级的Claude Code Skills

ClaudeCode的Skills系统为程序员提供了11个强大的AI辅助工具,包括代码审查、重构建议、单元测试生成、API文档自动生成、性能分析、安全扫描、数据库迁移脚本生成、CI/CD配置、依赖管理、ER图生成和日志分析等功能。这些"技能包"可大幅提升开发效率,从代码质量到协作沟通全方位优化工作流程。用户可根据需求选择2-3个核心功能开始尝试,熟练后还可自定义Skills。该系统需要配合Anthropic的API使用,建议先在小型项目测试再应用于核心业务。

分享AI、区块链技术及应用,未来已来 1846

【JDBC实战】 水果库存系统[功能实现②] 功能完善+使用效果

在上一篇文章中,我们实现了FruitDAO接口,在接口实现类中完成了五个单精度方法的功能代码实现。实际上,实现类中的方法很大程度上是在为接下来要介绍的Menu类做准备的,我们将在Menu类中完整地实现水果库存系统功能。显示主菜单显示库存信息添加水果库存显示指定水果库存信息水果下架退出单单看方法的名称,感觉跟之前实现的单精度方法没有什么区别,但实际功能上却差别巨大,可以说是在复杂程度上有所提升。那么进入正题,代码开敲…

ebb29bbe的博客 2284

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【JDBC实战】水果库存系统 [代码优化]

在上一篇文章中,我们完成了水果库存系统的功能实现,大家应该能明显感觉到,代码还是有些过于重复了,不少方法中都会用到相同的代码,造成了代码冗余的情况。那么接下来,在这篇文章中,我们将把相对冗余的代码提取出来,包装成单独的方法,那么对应的代码只需要写一份,就能被多次使用,提升代码的复用性,同时通用方法的包装还能提升系统的可拓展性。注意:文章中的通用方法都会被放置在一个单独的BaseDAO类中,需要调用通用方法,就需要继承BaseDAO类到这里,我们的代码优化就完成啦…可能大家会问,虽然接口实现类。

ebb29bbe的博客 1303

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【JDBC实战】水果库存系统 [功能实现](接口实现类FruitDAOImpl的功能实现)万字长文

上一篇文章中,我们对水果库存系统的需求进行了介绍,同时对系统需要的结构进行了设计,接下来,就到了实际上手,实现功能的阶段了。在这篇文章中,我们将对实现类中的单精度方法进行代码实现。

ebb29bbe的博客 1085

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

在JDBC专栏中,我们完成了水果库存系统功能的设计,实现以及优化,但总得来看,整个项目都是后端的代码,系统的页面也不过是通过控制台模拟而来的,而非真正的前端页面。而在这篇文章开始,我们会对水果库存系统的客户端页面功能进行设计与实现,让库存系统可以在网页中使用。项目中我们主要依赖Tomcat部署,使用Servlet组件,过程中通过JDBC连接MySQL数据库获取数据,将数据在浏览器页面中展现出来。

ebb29bbe的博客 6028

【javaweb学习笔记】JDBC

JDBC1.JDBC常规操作:1).JDBC连接MYSQL数据库2).JDBC对数据库进行增、删、改3).JDBC对数据库进行查询操作4).添加操作时获取自增列主键值5).批处理2.项目实战-水果库存系统2.1 需求介绍2.2 显示主菜单2.3 退出2.4 DAO的概念以及DAO的设计2.5 实现DAO接口2.6 添加库存记录2.7 显示库存列表2.8 查看指定水果库存信息2.9 水果下架2.8 CLient3.JDBC优化3.1 抽取连接及释放资源的方法3.2 BaseDAO抽取增删改通用方法3.3 抽取

prague6695的博客 1267

水果库存系统(进阶版)

水果库存系统的进阶版,使用AOP思想实现解耦和使用MySQL数据库达到数据持久化。

weixin_54679968的博客 569

JDBC常规操作及数据常用语句

排序select*from表名orderby字段[desc]----(降序desc,升序asc)删除deletefrom表名where范围------(egfid=1,表示删除id为1的行)求和selectsum(值)assumvaluefrom表名。平均selectavg(值)asavgvaluefrom表名。最大selectmax(值)asmaxvaluefrom表名。...

qq2844509367的博客 640

【JavaWeb】循序渐进做项目——水果库存系统04(完)

myssm文件夹(通用代码,实现了一个简易的框架):继承ViewBaseServlet,执行总体的调度控制。接收请求根据业务逻辑处理请求(请求FruitController类中的具体方法,其实就是FruitService方法。)分发页面(转发、重定向)filters:为了防止乱码——先在过滤器中设置编码。:由于Service层一般会涉及到多个DAO,为了进行事务管理,多个DAO之间应该使用同一个Connection。...

weixin_62633072的博客 2890

JDBC学习笔记

JDBC、Druid数据库连接池相关学习笔记

.G();的博客 1140

使用 jdbc 技术升级水果库存系统

使用 jdbc 技术升级水果库存系统

小丁的博客 131

使用 jdbc 技术升级水果库存系统(优化版本)

抽取执行更新方法 抽取查询方法 —— ResultSetMetaData ResultSetMetaData rsmd = rs.getMetaData();//元数据,结果集的结构数据 抽取查询方法 —— 解析结果集封装成实体对象 提取 获取连接 和 释放资源 的方法 将数据库配置信息转移到配置文件

小丁的博客 327

【JDBC】连接数据库,执行批处理操作。

批处理操作,也就是采用JAVA的批量更新机制,使用批量更新机制可以将多条语句一次性提交给数据库进行批量处理,而不用逐条提交。

ebb29bbe的博客 1582

JDBC实现水果库存管理(非WEB)4-主菜单功能实现

主菜单功能实现:主要用到了Scanner输入,while循环,switch case

qq_44624665的博客 268
上一篇: 【Day12】力扣LeetCode刷题[788.旋转数字][200.岛屿数量][509. 斐波那契数]
下一篇: 【Day13】LeetCode力扣刷题[面试题 17.19. 消失的两个数字][70.爬楼梯][746. 使用最小花费爬楼梯]
.29.
.29. 2022 社区之星年度评选TOP 30 2022 社区之星年度评选TOP 30
博客等级 码龄5年 1万+粉丝 203原创
评论 30
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.29.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值