iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >java如何实现自动售货机
  • 160
分享到

java如何实现自动售货机

2023-06-28 23:06:52 160人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关java如何实现自动售货机,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。要求:简易售货机流程:【投币】—>【显示货物清单】&

本篇文章给大家分享的是有关java如何实现自动售货机,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

要求:

简易售货机

流程:

【投币】—>【显示货物清单】—>【选择一个商品编号购买】—>【提示出货】—>【找钱】

功能要求:

使用mysql数据库,将所有货物存储在数据库中(货物应至少具有编号、名称、数量、价格等基本信息,可自行增加其他属性以完善程序)。
2. 要有友好的客户提示,例如:请输入购买商品的编号。
3. 清单要求包含每种商品的剩余数量。
4. 出货后,可以选择【找钱】,也可以选择【继续购买】,而不直接找钱

以下为解题思路及答案(略过数据库建表操作):

首先要先将JDBC链接包加入路径,这一步在之前的博客中已经讲过,这里就直接略过了。然后就是在代码中将驱动器打开:

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DBUtil {    //定义JDBC包导入路径    private String dbDriver = "com.Mysql.jdbc.Driver";    //连接要操作的数据库    private String url = "jdbc:mysql://localhost:3306/database";    //数据库用户名    private String user = "root";    //数据库密码    private String passWord = "123456";        public Connection getDBConn() throws Exception{        try {            Class.forName(dbDriver);            return DriverManager.getConnection(url, user, password);        } catch (ClassNotFoundException e) {            throw new ClassNotFoundException("数据库驱动不存在!!");        } catch (SQLException e) {            throw new SQLException("数据库连接异常!");        }    }        public void close(Connection conn){        try {            if(conn != null){                conn.close();            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }        public void close(Statement stat){        try {            if(stat != null){                stat.close();            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }        public void close(ResultSet rs){        try {            if(rs != null){                rs.close();            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

操作完JDBC之后,新建一个类,用来定义自动售货机具有的各个属性及方法:

import java.sql.Connection;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.Scanner;public class SimpleVendingMachine {    //实例化JDBC连接和输入方法    DBUtil dbu = new DBUtil();    Scanner scanner = new Scanner(System.in);    //定义Connection,Statement和ResultSet    Connection conn = null;    Statement stat = null;    ResultSet rs = null;    //定义投入的金币和余额    private double money;    private static double balance = 0;      //投入金钱    public void slot(double money){        this.money = money;    }    //显示当前商品的信息    public void displayAllGoods(){        //结果集封装        ArrayList<String[]> rsList = new ArrayList<String[]>();         String[] strTemp = null;        //sql显示操作        String sql = "SELECT `Code`, `Name`, Number, Price FROM goods";        try {            //驱动器加载            conn = dbu.getDBConn();            stat = conn.createStatement();            rs = stat.executeQuery(sql);            ResultSetMetaData rsmd = rs.getMetaData();            int columnCount = rsmd.getColumnCount();            String[] columnNames = new String[columnCount];            for(int i = 0 ; i < columnNames.length ; i++){                columnNames[i] = rsmd.getColumnName(i + 1);            }            rsList.add(columnNames);            //遍历赋值            while(rs.next()){                strTemp = new String[columnCount];                for(int i = 0 ; i < columnNames.length ; i ++){                    strTemp[i] = rs.getString(columnNames[i]);                }                rsList.add(strTemp);                }            //遍历输出            for(String[] datas : rsList){                for(String data : datas){                    System.out.print(data + "\t");                }                System.out.println();            }        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            //关闭连接            dbu.close(rs);            dbu.close(stat);            dbu.close(conn);        }    }    //进行购买    public void buyByCode(){        System.out.println("请输入您想购买的商品编号:");        int code = scanner.nextInt();        //如果购买成功,则商品数量减一,该商品销售所得金额增加自身价格        String sql = "update Goods set Number = Number - 1, Gain = Gain + Price where Code = " + code;        try {            //驱动器加载            conn = dbu.getDBConn();            //手动提交            //conn.setAutoCommit(false);            stat = conn.createStatement();            //操作影响行数            int affectedRows = stat.executeUpdate(sql);            //检查余额是否足够            if(checkMoney(code, stat, this.money)){                if(affectedRows > 0){                    System.out.println("购买成功!");                    //操作成功则手动提交                    //conn.commit();                    //后续操作:找零或继续购买                    this.proceed();                }            }else{                System.out.println("金额不足!");                //回到驱动器加载的位置                //conn.rollback();            }        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            dbu.close(rs);            dbu.close(stat);            dbu.close(conn);        }    }    //检查投入金额是否足够购买商品    public boolean checkMoney(int code, Statement stat, double money){        ResultSet rs = null;        try {            rs = stat.executeQuery("select Price from goods where Code  = " + code);            while(rs.next()){                //对余额进行更改                SimpleVendingMachine.balance = money - rs.getDouble("Price");                if(SimpleVendingMachine.balance >= 0){                    return true;                }else{                    return false;                 }            }        } catch (SQLException e) {            e.printStackTrace();        }        return false;    }    //定义后续操作    public void proceed(){        System.out.println("请选择找零(0)或继续购买(1):");        int n = scanner.nextInt();        switch(n){            case 0:                System.out.println("剩余零钱:" + SimpleVendingMachine.balance + "已退回!");                break;            case 1:                this.money = SimpleVendingMachine.balance;                buyByCode();                break;        }    }}

3 . 之后定义售货机服务菜单,让用户进行投币、购买及后续操作:

import java.util.Scanner;public class SVMService {    SimpleVendingMachine svm = new SimpleVendingMachine();    Scanner scanner = new Scanner(System.in);    public void service(){        //显示所有商品        svm.displayAllGoods();        System.out.println("---------------------------");        //投入金额准备购买商品        System.out.println("请输入您要投入的金额:");        svm.slot(scanner.nextDouble());        svm.buyByCode();    }}

最后就是在主方法中将SVMService 实例化并进行调用:

public class Demo {    public static void main(String[] args) {        SVMService svms = new SVMService();        svms.service();    }}

Java的优点是什么

1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。

以上就是java如何实现自动售货机,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: java如何实现自动售货机

本文链接: https://www.lsjlt.com/news/321220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java如何实现自动售货机
    本篇文章给大家分享的是有关java如何实现自动售货机,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。要求:简易售货机流程:【投币】&mdash;>【显示货物清单】&...
    99+
    2023-06-28
  • java实现自动售货机
    JAVA基础练手项目—自动售货机,供大家参考,具体内容如下 要求: 简易售货机 流程: 【投币】—>【显示货物清单】—>【选择一个商品...
    99+
    2024-04-02
  • python实现自动售货机
    本文实例为大家分享了python实现自动售货机的具体代码,供大家参考,具体内容如下 自动售货机代码 while True:  n=input('请选择操作:')  if n=='r'...
    99+
    2024-04-02
  • C语言实现自动售货机
    本文实例为大家分享了C语言实现自动售货机的具体代码,供大家参考,具体内容如下 如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一...
    99+
    2024-04-02
  • java实现饮料自助售货机
    本文实例为大家分享了java实现饮料自助售货机的具体代码,供大家参考,具体内容如下 ①用户类 import java.util.Scanner; //用户类 public clas...
    99+
    2024-04-02
  • 用C语言实现自动售货机
    自动售货机 如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号,分别为1-10。同时标有价格与名称,- 一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商...
    99+
    2024-04-02
  • 如何使用C语言实现自动售货机
    这篇文章将为大家详细讲解有关如何使用C语言实现自动售货机,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有...
    99+
    2023-06-28
  • C语言实现最全自动售货机
    拥有所有功能自动售货机C语言 主要功能:欢迎页面、通过文本文件读入货物信息、上货、卖货(包含找零,付款不足等多种情况)、增加新品种、按单价从高到低排序、按序号排序、退出前将所有货物信...
    99+
    2024-04-02
  • 如何使用PHP实现商城的自动售货机功能
    随着电子商务的不断发展,在线商城的销售已经成为人们日常生活中必不可少的一部分。许多商家为了提高自己的销售量,开始使用销售自动化技术来增强用户的体验和购物的便捷性。在这篇文章中,我们将探讨如何使用PHP实现商城的自动售货机功能,帮助商家更加高...
    99+
    2023-05-22
    PHP 商城 自动售货机
  • 【Python】python自动售货机销售数据分析
    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化...
    99+
    2023-10-24
    python 数据分析 网络
  • Python数据挖掘实用案例——自动售货机销售数据分析与应用
    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专...
    99+
    2023-10-20
    数据挖掘 python 数据分析
  • 【Python数据挖掘】Python自动售货机销售数据分析与应用
    python 01案例背景02分析目标03 分析过程04 数据预处理4.1. 清洗数据4.1.1 合并订单表并处理缺失值4.1.2 增加“市”属性4.1.3 处理订单表中的“商品详情”属性4....
    99+
    2023-10-20
    数据挖掘 python 数据分析
  • 自动售货机小程序开发需要注意什么问题
    本文小编为大家详细介绍“自动售货机小程序开发需要注意什么问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“自动售货机小程序开发需要注意什么问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。  自动售货机小程序开...
    99+
    2023-06-26
  • 开发智能自动售货机小程序有什么基本功能
    小编给大家分享一下开发智能自动售货机小程序有什么基本功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、智能售货机小程序的开发能解决哪些消费者痛点?无纸币购买方...
    99+
    2023-06-27
  • JS如何实现自动打字机动效
    这篇文章主要讲解了“JS如何实现自动打字机动效”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS如何实现自动打字机动效”吧!1、实现思路 首先这个需求的目的是实现自动打字机效果,意...
    99+
    2023-07-05
  • 如何让computer实现自动开机
    如何让computer实现自动开机,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。按照通常主板最常见的BIOS界面,在开机时连续按多次“Del”键进入BIOS,然后在左边的列...
    99+
    2023-06-14
  • Java自动释放锁如何实现
    本篇内容介绍了“Java自动释放锁如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言Python 提供了 try-with-lock...
    99+
    2023-06-30
  • Java数据结构之AC自动机算法如何实现
    本篇内容主要讲解“Java数据结构之AC自动机算法如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java数据结构之AC自动机算法如何实现”吧!1 概念和原理一般的字符串匹配算法都是匹配一...
    99+
    2023-07-04
  • emule如何实现自动关机脚本
    小编给大家分享一下emule如何实现自动关机脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!dir="E:\Temp" Set&n...
    99+
    2023-06-08
  • java web如何实现自动登录功能
    这篇文章主要介绍java web如何实现自动登录功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下主要思路就是:当用户访问网站的首页时,浏览器端会先检擦浏览器中存在的cookie中是否又登录的用户的用户名...
    99+
    2023-05-31
    java web
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作