题目:开发一个程序,用于记录车辆购置税
要求:1、由控制台录入数据,提交后保存到MySQL数据库。 2、 需要保存的信息:车主身份证号码(18位)、车辆识别代码(17位)、车辆排量、官方指导价、发票价格、缴纳车辆购置税金额 3、目前车辆购置税征收办法如下:
- 车辆购置税征收额根据计税价格计算,计税价格格式:计税价格=购车发票价格/(1+1.7%)
- 排量在1.6L及以下车型的计算公式如下:车辆购置税=计税价格*7.5%
- 排量在1.6L以上的车型计算公式如下:车辆购置税=计税价格*10%
效果图如下:
创建工具类
public class ToolUtils {
Connection conns = null;// 数据连接对象
public static Connection open(){
Properties pro=new Properties();
InputStream is=ToolUtils.class.getClassLoader().getResourceAsStream("db.properties");
Connection conn=null;
try{
pro.load(is);
Class.forName(pro.getProperty("driver"));
conn= DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("username"),pro.getProperty("password"));
}catch (Exception e){
e.printStackTrace();
}
return conn;
}
public static void close(ResultSet rs, PreparedStatement stm, Connection conn){
try{
if(null!=rs)rs.close();
}catch (Exception e){
e.printStackTrace();
}
try{
if(null!=stm)stm.close();
}catch (Exception e){
e.printStackTrace();
}
try{
if(null!=conn)conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
实体类
//车辆实体类
public class Vehicle {
private String card; //身份证
private String VIN; //车辆识别代码
private double displacement; //车辆排量'
private double price; // 官方指定价格
private double invoice; // 发票价格
private double money; //车辆购置税价格
public String getCard() {
return card;
}
public void setCard(String card) {
this.card = card;
}
public String getVIN() {
return VIN;
}
public void setVIN(String VIN) {
this.VIN = VIN;
}
public double getDisplacement() {
return displacement;
}
public void setDisplacement(double displacement) {
this.displacement = displacement;
}
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 getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
车辆接口
//车辆接口
public interface VehicleDao {
//添加车辆信息
boolean save(Vehicle vehicle);
}
实现接口方法
//实现接口
public class VehicleDaoMySQLImpl implements VehicleDao {
@Override
public boolean save(Vehicle vehicle) {
//连接数据库
Connection conn=null;
conn= ToolUtils.open();
PreparedStatement ps=null;
//sql语句
String sql = "insert into vehicle(card,VIN,displacement,Price,invoice,money) values(?,?,?,?,?,?)";
try{
//添加数据到到数据库
ps=conn.prepareStatement(sql);
ps.setObject(1,vehicle.getCard());
ps.setObject(2,vehicle.getVIN());
ps.setObject(3,vehicle.getDisplacement());
ps.setObject(4,vehicle.getPrice());
ps.setObject(5,vehicle.getInvoice());
ps.setObject(6,vehicle.getMoney());
//如果大于0则返回true
return ps.executeUpdate()>0;
}catch( Exception e){
e.printStackTrace();
}finally {
//关闭连接
ToolUtils.close(null,ps,conn);
}
return false;
}
}
测试类
public class ThisChapter1 {
public static void main(String[] args) {
Vehicle vehicle=new Vehicle();//调用实体类
VehicleDao vd = new VehicleDaoMySQLImpl();//调用实现接口
Scanner input = new Scanner(System.in);//键盘输入
System.out.println("记录车辆购置税,请按提示录入相关信息:");
System.out.println("请输入车主身份证号码(18位):");
String Card=input.next();
while (Card.length()!=18){
System.out.println("对不起!输入有误,请重新输入:");
Card=input.next();
}
System.out.println("请输入车辆识别码(17位):");
String VIN=input.next();
while (VIN.length()!=17){
System.out.println("对不起!输入有误,请重新输入:");
VIN=input.next();
}
System.out.println("请输入车辆排量:");
double displacement=input.nextDouble();
System.out.println("请输入官方指导价:");
double Price=input.nextDouble();
System.out.println("请输入发票价格:");
double invoice=input.nextDouble();
double taxable =0; //计税价格
double money = 0; //车辆购置税
taxable= invoice/(1+0.17); //计算计税价格
if(displacement<=1.6){
money = taxable*0.075; //排量在1.6L及以下车型的车辆购置税
}else{
money = taxable*0.1;//排量在1.6L以上车型的车辆购置税
}
//传参
vehicle.setCard(Card); // 身份证号码
vehicle.setVIN(VIN); // 识别代码
vehicle.setDisplacement(displacement); // 车辆排量
vehicle.setPrice(Price); // 指导价格
vehicle.setInvoice(invoice); // 发票价格
vehicle.setMoney(money); // 计税金额
//保存数据到数据库
vd.save(vehicle);
System.out.println("数据保存成功,车辆购置税为"+money);
}
}