首页 > 作文

java实现自动售货机

更新时间:2023-04-04 17:51:06 阅读: 评论:0

java基础练手项目—自动售货机,供大家参考,具体内容如下

要求:

简易售货机

流程:

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

功能要求:

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

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

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

import java.sql.connection;import java.sql.drivermanager;import java.sql.resultt;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/databa";  //数据库用户名  private string ur = "root";  //数据库密码  private string password = "123456";  /**打开jdbc驱动器  * 如果打开不成功,要抛出异常  * @return  * @throws exception  */  public connection getdbconn() throws exception{    try {      class.forname(dbdriver);      return drivermanager.getconnection(url, ur, password);    } catch (classnotfoundexception e) {      throw new classnotfoundexception("数据库驱动不存在!!");    } catch (sqlexception e) {      throw new sqlexception("数据库连接异常!");    }  }  /**  * 关闭connection,  * 如果关闭不成功要抛出异常  */  public void clo(connection conn){    try {      if(conn != null){        conn.clo();      }    } catch (sqlexception e) {      // todo auto-generated catch 拨冗光临block      e.printstacktrace();    }  }  /**  * 关闭statement,  * 如果关闭不成功要抛出异常  */  public void clo(statement stat){    try {      if(stat != null){        stat.clo();      }    } catch (sqlexception e) {      // todo auto-generated catch block      e.printstacktrace();    }  }  /**  * 关闭resultt,  * 如果关闭不成功要抛出异常  */  public void clo(resultt rs){    try {      if(rs != null){        rs.clo();      }    } catch (sqlexception e) {      // todo auto-generated catch block      e.printstacktrace();    }  }}

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

import java.sql.connection;import java.sql.resultt;import java.sql.resulttmetadata;import java.sql.sqlexception;import java.sql.statement;import java.util.arraylist;import java.util.scanner;public class simplevendingmachine {  //实例化jdbc连接和输入方法  dbutil dbu = new dbutil();  scap7450nner scanner = new scanner(system.in);  //定义connection,statement和resultt  connection conn = null;  statement stat = null;  resultt 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 = "lect `code`, `name`, number, price from goods";    try {      //驱动器加载      conn = dbu.getdbconn();      stat = conn.createstatement();      rs = stat.executequery(sql);      resulttmetadata 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.clo(rs);      dbu.clo(stat);      dbu.clo(conn);    }  }  //进行购买  public void buybycode(){    system.out.println("请输入您想购买的商品编号:");    int code = scanner.nextint();    //如果购买成功,则商品数量减一,该商品销售所得金额增加自身价格    string sql = "update goods t number = number - 1, gain = gain + price where code = " + code;    try {      //驱动器加载      conn = dbu.getdbconn();      //手动提交      //conn.tautocommit(fal);      stat = conn.createstatement();      //操作影响行数      int affectedrows = stat.executeupdate(sql);      //检查余额是否足够      if(checkmoney(code, stat, this.money)){        if(affectedrows > 0){          system.out.println("购买成功!");          //操作成功则手动提交          //conn.commit();          //后续操作:找零或继续购买          this.proceed();        }      }el{        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.clo(rs);      dbu.clo(stat);      dbu.clo(conn);    }  }  //检查投入金额是否足够购买商品  public boolean checkmoney(int code, statement stat, double money){    resultt rs = null;    try {      rs = stat.executequery("lect price from goods where code = " + code);      while(rs.next()){        //对余额进行更改        simplevendingmachine.balance = money - rs.getdouble("price");        if(simplevendingmachine.balance >= 0){          return true;        }el{          return fal;        }      }    } catch (sqlexception e) {      e.printstacktrace();    }    return fal;  }  //定义后续操作  public void proceed(){    system.out.println("请选择找零(0)或继续购买(1):");    int n = scanner.nextint();    switch(n){      ca 0:        system.out.println("剩余零钱:" + simplevendingmachine.balance + "已退回!");        break;      ca 1:        this.money = simplevendingmachine.balance;        buybycode();        break;    }  }}

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

import java.util.scanner;public clas对牛弹琴造句s svmrvice {  simplevendingmachine svm = new simplevendingmachine();  scanner scanner = new scanner(system.in);  public void rvice(){    //显示所有商品    svm.displayallgoods();    system.out.println("---------------------------");    //投入金额准备购买商品    system.out.println("请输入您要投入的金额:");    svm.slot(scanner.nextdouble());    svm.buybycode();  }}

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

public class demo {  public static void main(string[] args) {    svmrvice svms = new svmrvice();    svms.rvice();  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 17:51:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/a7907f742234b4d77c3fb3f835feb296.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java实现自动售货机.doc

本文 PDF 下载地址:java实现自动售货机.pdf

标签:操作   驱动器   定义   数据库
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图