Java:控制台输入车辆信息,将信息保存至数据库中

程序功能:控制台输入车辆信息,将信息保存至数据库中 

程序代码如下:

BaseDao.java

 

package DAO_dome.kehozuoye;

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
private String driver = "com.mysql.jdbc.Driver";//数据库驱动字符串
private String url = "jdbc:mysql://localhost:3306/zoology?useUnicode=true&characterEncoding=utf8";
private String user = "root";//数据库用户名
private String password = "duanqibo919";//数据库密码
//打开数据库方法
Connection con = null;
public Connection getConnection() {
//加载驱动
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//连接数据库
try {
con = DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
//关闭资源方法
public void CloseAll(Connection con,PreparedStatement pre,ResultSet result) {
if(result!=null) {
try {
result.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pre!=null) {
try {
pre.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//增删改查通用方法
public int executeUpdate(String sql,Object[] param) {
int num = 0;//影响行数
con = this.getConnection();
PreparedStatement pre = null;
try {
pre = con.prepareStatement(sql);
//为参数赋值
if(param!=null) {
for(int i=0;i<param.length;i++) {
pre.setObject(i+1, param[i]);
}
}
//执行sql语句
num = pre.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
this.CloseAll(con, pre, null);
}
return num;
}

 

}

 

Test.java

 

package DAO_dome.kehozuoye;

 

import java.util.Scanner;
import DAO_dome.kehozuoye.VehicleDao;
import DAO_dome.kehozuoye.VehicleDaoMysql;
public class Test {
public static void main(String[] args) {
VehicleDao vehicleDao = new VehicleDaoMysql();
Vehicle vehicle = new Vehicle();
String identity = "";//车主身份证号码
String heading = "";//车辆识别码
double emissions = 0;//车辆排量
double price = 0.0;//官方指导价
double invoice = 0.0;//发票价格
double purchase = 0.0;//缴纳车辆购税价
double purchasePrice = 0.0;//计税价格
Scanner scanner = new Scanner(System.in);
System.out.println("记录车辆购置税,请按提示录入相关信息:");
System.out.println("请输入车主身份证号码(18位):");
identity = scanner.next();
while(identity.length()!=18) {
System.out.println("输入错误!请重新输入:");
identity = scanner.next();
}
System.out.println("请输入车辆识别码(17位):");
heading = scanner.next();
while(heading.length()!=17) {
System.out.println("输入错误!请重新输入:");
heading = scanner.next();
}
System.out.println("请输入车辆排量:");
emissions = scanner.nextDouble();
System.out.println("请输入官方指导价:");
price = scanner.nextDouble();
System.out.println("请输入发票价格:");
invoice = scanner.nextDouble();
purchasePrice = invoice/(1+0.17);
if(emissions>1.6) {
purchase = purchasePrice*0.1;
}else {
purchase = purchasePrice*0.075;
}
vehicle.setIdentity(identity);
vehicle.setHeading(heading);
vehicle.setEmissions(emissions);
vehicle.setPrice(price);
vehicle.setInvoice(invoice);
vehicle.setPurchase(purchase);
vehicleDao.save(vehicle);
System.out.println("数据保存成功,车辆购置税为"+purchase);

scanner.close();
}

 

}

 

Vehicle.java

 

package DAO_dome.kehozuoye;

 

 

 

public class Vehicle {

 

/*

 

* 汽车实体类

 

*/

 

private String identity;//车主身份证号码

 

private String heading;//车辆识别码

 

private double emissions;//车辆排量

 

private double price;//官方指导价

 

private double invoice;//发票价格

 

private double purchase;//缴纳车辆购税价

 

public String getIdentity() {

 

return identity;

 

}

 

public void setIdentity(String identity) {

 

this.identity = identity;

 

}

 

public String getHeading() {

 

return heading;

 

}

 

public void setHeading(String heading) {

 

this.heading = heading;

 

}

 

public double getEmissions() {

 

return emissions;

 

}

 

public void setEmissions(double emissions) {

 

this.emissions = emissions;

 

}

 

public double getPrice() {

 

return price;

 

}

 

public void setPrice(double price) {

 

this.price = price;

 

}

 

public double getInvoice() {

 

return invoice;

 

}

 

public void setInvoice(double invoice) {

 

this.invoice = invoice;

 

}

 

public double getPurchase() {

 

return purchase;

 

}

 

public void setPurchase(double purchase) {

 

this.purchase = purchase;

 

}

 

}

 

VehicleDao.java     //声明各种接口

 

package DAO_dome.kehozuoye;

 

import java.util.List;
import DAO_dome.kehozuoye.Vehicle;

 


public interface VehicleDao {
/*
* 汽车接口
*/
/**
* 保存汽车
* @param vehicie
* @return
*/
int save(Vehicle vehicle);
/**
* 删除信息
* @param vehicie
* @return
*/
int del(Vehicle vehicle);
/**
* 更新汽车
* @param vehicie
* @return
*/
int Update(Vehicle vehicle);
/**
* 获取汽车识别代码列表,模糊查找
* @param heading
* @return
*/
Vehicle getByName(String heading);
/**
* 获取汽车识别代码列表,精确查找
* @param heading
* @return
*/
List<Vehicle> findByName(String heading);

 

}

 

 

 

 

VehicleDaoMysql.java   //上述接口的实现

 

package DAO_dome.kehozuoye;

 

import java.util.List;
import DAO_dome.kehozuoye.BaseDao;
import DAO_dome.kehozuoye.VehicleDao;
import DAO_dome.kehozuoye.Vehicle;
public class VehicleDaoMysql extends BaseDao implements VehicleDao{

@Override
public int save(Vehicle vehicle) {
// TODO Auto-generated method stub
String sql = "insert into vehicle(identity,heading,emissions,price,invoice,purchase) "
+ "values(?,?,?,?,?,?)";
Object[] param = {vehicle.getIdentity(),vehicle.getHeading(),vehicle.getEmissions(),
vehicle.getPrice(),vehicle.getInvoice(),vehicle.getPurchase()};
int result = this.executeUpdate(sql, param);
return result;
}

 

@Override
public int del(Vehicle vehicle) {
// TODO Auto-generated method stub
return 0;
}

 

@Override
public int Update(Vehicle vehicle) {
// TODO Auto-generated method stub
return 0;
}

 

@Override
public Vehicle getByName(String heading) {
// TODO Auto-generated method stub
return null;
}

 

@Override
public List<Vehicle> findByName(String heading) {
// TODO Auto-generated method stub


System.out.println();
return null;
}

}

 

转载于:https://www.cnblogs.com/duanqibo/p/11103413.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echars 3D地图为区域自定义颜色

echars 3D地图为区域自定义颜色问题延伸解决问题问题 根据项目需求&#xff0c;我们要将下面省级地图中的个别市进行高亮&#xff08;不同颜色&#xff09;展示 延伸 首先跟大家介绍这个地图的展示方式&#xff1a; 采用的是Vue框架中运用echarts地图采用的是geo3D和scatt…

linux每日命令(31):tar命令

阅读目录(Content) 一&#xff0e;命令格式二. 命令功能三. 命令参数必要参数选择参数四. 常见解压、压缩命令tar.gz.tar.gz 和 .tgz.bz2.tar.bz2.bz.tar.bz.Z.tar.Z.zip.rar五. 使用实例1&#xff1a;将文件全部打包成tar包2&#xff1a;查阅上述 tar包内有哪些文件3&#xff…

一文带你吃透BFC

文章目录面试高出场率什么是BFC触发BFC的条件BFC的约束规则BFC可以解决的问题面试高出场率 在前端的面试中&#xff0c;经常会遇到BFC的问题&#xff0c;比如&#xff1a;说说你对BFC的理解、你在项目中运用到的BFC、BFC是什么、BFC的作用是什么。。。。 很多同学很懵逼&…

基于Python语言使用RabbitMQ消息队列(一)

介绍 RabbitMQ 是一个消息中间人&#xff08;broker&#xff09;: 它接收并且发送消息. 你可以把它想象成一个邮局: 当你把想要寄出的信放到邮筒里时, 你可以确定邮递员会把信件送到收信人那里. 在这个比喻中, RabbitMQ 就是一个邮筒, 同时也是邮局和邮递员 . 和邮局的主要不同…

爆赞程序猿开发软件

VSCode 使用 IntelliSense 超越语法突出显示和自动完成&#xff0c;它提供基于变量类型、函数定义和导入模块的智能完成 直接从编辑器调试代码。启动或附加到您正在运行的应用程序并使用断点、调用堆栈和交互式控制台进行调试 与 Git 和其他 SCM 提供商合作从未如此简单。查…

如果你在北京失业了,别怕,记得去领这笔钱!最少2034元/月!

人在江湖飘&#xff0c;哪能不挨刀 公司倒闭&#xff0c;老板走人&#xff0c;公司裁人 …… 就要被迫失业了 别怕! 如果你在北京失业了 记得去领这笔钱——失业保险金 每月最多有2143元 虽然钱不多&#xff0c;但能解燃眉之急 帮助你度过困难日子 重点全程网上就能…

真实诠释程序员日常的二十四张图【你中了几个】

当你打开遗留代码时 扒下来项目后改了一行代码…… 程序员调试css样式的时候 当你的try catch 不起作用 产品经理对你说要兼容IE 没有ui给你提供大小设计的结果 没吃透需求直接开发的你 程序员修复bug的真实处境 当你开始使用库&#xff0c;但忘记阅读文档 产品经理告诉你这只是…

Git学习原版手稿

手稿诞生记 Git学习的时候难免会有遗忘然后往复学习查看的过程&#xff0c;所以就形成了这个学习的手稿&#xff0c;记录了Git使用过程中的大部分命令&#xff0c;今天在清理的时候偶然看到了这些记录&#xff0c;而且最近也在写Git的使用教程&#xff0c;大致的学习线路也是按…

程序员首选编程电脑【火爆来袭】

作为一名程序员肯定会常用到一些编程软件&#xff0c;所以需要设备的配置参数上不能太差&#xff0c;不仅是要以稳定强大输出为基本&#xff0c;内存、音响、续航等方面也不可或缺。 直奔主题 如果你手里资金到位&#xff0c;那必须整一步到位——MacBook 对于这款大佬型笔记本…

201671010456-张琼 实验十四 团队项目评审课程学习总结

博文简要信息表 项目内容这个作业属于哪个课程http://www.cnblogs.com/nwnu-daizh/这个作业的要求在哪里https://www.cnblogs.com/nwnu-daizh/p/11093584.html课程学习目标掌握软件项目评审会流程&#xff0c;反思总结课程学习内容。任务一 验收意见表GitHub仓库地址https://gi…

强大的APIClound云修复——告别繁琐的编译打包流程

小编接到一项目的二期开发任务&#xff0c;拉下代码开始熟悉大概的框架、技术、上线流程等前期工作&#xff0c;本app是通过vue技术进行开发&#xff0c;使用ui是 vant 库&#xff0c;打包上线则是使用的 APIClound 平台&#xff1b; 在我们的app上线后&#xff0c;如果我们改…

研究下贝塞尔曲线

今天研究了下贝塞尔曲线&#xff0c;感觉还是很有价值的。 这里贝塞尔曲线是几个用法&#xff1a; 1.模拟曲线拟合。将折线找一个平滑的方案获得曲线的效果。联想可以获知&#xff0c;可以作为工程设计的一种方式。 2.模拟抛物线和实际场景中的一些物理特性&#xff0c;即物理上…

你对ES6究竟了解多少?—— 有这一篇就够用了

1. ES6相关概念&#xff08;★★&#xff09; 1.1 什么是ES6 ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。ES6 是ES2015以后的泛称 1.2 为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善&#xff0c;功能的加强。JavaScrip…

科创板基础知识

交易制度 1、上市前5个交易日不设将跌幅限制&#xff1b;其后涨跌幅限制为 20%&#xff1b; 2、单笔申报不小于 200股。 参考资料&#xff1a; 科创板图文解读 科创板投教长图文系列&#xff08;四&#xff09;&#xff1a;详解科创板股票交易的特别规定 上交所投教&#xff1a…

0_0 保留字

引自《 JavaScript 权威指南》2.4 / P28 ~ 29 保留字 部分 保留字 JavaScript 把一些标识符拿出来用作自己的关键字。因此&#xff0c;就不能再在程序中把这些关键字用作标识符了&#xff1a; 保留字 Part1.txt123456breakdelete functionreturntypeofcasedoifswitchvarc…

JavaScript 高级——详谈面向对象

1.面向过程与面向对象 1.1面向过程 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次调用就可以了。 1.2面向对象 面向对象是把事务分解成为一个个对象&#xff0c;然后由对象之间分工与合作。…

UVa202Repeating Decimals (循环小数)

解答&#xff1a; 因为除数是固定的&#xff0c;所以只要判断被除数是否出现过即可。 #include<iostream> #include <cstdio> #include <cstring> using namespace std; int m,n,vis[5000],res[5000],temp[5000],num,t,x; int main() {while(scanf("%d%…

构造函数、原型、继承原来这么简单?来吧,深入浅出

构造函数 小编上篇博客中介绍到的通过关键字class方式定义类&#xff0c;然后根据类再创建对象的方式&#xff0c;是ES6中语法&#xff0c;现在很多浏览器对ES6的支持还不是很好&#xff0c;所以也要学习通过构造函数&#xff08;构建函数&#xff09;的方式创建对象 问&…

[网络流24题] 航空路线问题 (费用流)

洛谷传送门 LOJ传送门 这道题的图还挺好想的吧 反正都是无向边&#xff0c;起点走到终点再回到起点&#xff0c;就相当于从起点走$2$次到达终点&#xff0c;且这两次不经过相同的点&#xff0c;还要经过尽可能多的点 很经典的费用流建图 限制点通过次数->拆点连边&#xff0…

Go语言字符串和正则表达式

字符串相关方法 获取字符串长度 注意: Go语言编码方式是UTF-8,在UTF-8中一个汉字占3个字节package main import "fmt" func main() { str1 : "lnj" fmt.Println(len(str1)) // 3 str2 : "lnj" fmt.Println(len(str2)) // 12 } 如果字符串中包含中…