java程序设计大作业_2019Java程序设计期末考核(王珏老师大作业)

首先连接数据库操作,我将数据库连接和释放封装成了一个类;

package example;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

//数据库连接打包成一个类,用此类创建对象,在构造函数中传入Connection对象,即完成对数据库的连接

public class connectMyData{

private static String JDBC_DRIVER = "com.mysql.jdbc.Driver";

private static String DB_URL = "jdbc:mysql://localhost:3306/javaobject";

private static String USER = "sa"; //sa用户是我自己创建的

private static String PASS = "123456";

public static Connection getConection() {

Connection conn = null;

try {

Class.forName(JDBC_DRIVER);

conn = DriverManager.getConnection(DB_URL, USER, PASS);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

public static void close(Connection conn) {

try {

if (conn != null)

conn.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

2.这里很明显要用到多态的知识,于是再创建了一个计算体积的类,同时在里面实现多态求的底面积。

package example;

//实现多态,在computerV方法中传入的参数是哪个子类型就会调用哪个子类的底面计算体积。

public class computer {

double gao;

computer(double gao){

this.gao = gao;

}

double computerV(Inter dimian){

return dimian.bottom()*gao;

}

}

3.创建对象,将对象信息存到数据库,再取出信息对对象进行属性进行赋值(信息重建),最后通过去取出的信息构建好对象之后计算体积:

package example;

import java.sql.*;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class use {

//主函数入口

public static void main(String[] args) {

// TODO Auto-generated method stub

yuanzhu yz = new yuanzhu(3); //创建一个圆柱底面对象

sanlengzhu slz = new sanlengzhu(1,2,3);//创建一个三棱柱底面对象,很明显两边之和不大于第三边,下面体积答案会是0.

zhisilengzhu zslz = new zhisilengzhu(1,2);//创建一个直四棱柱底面对象

yuanzhu yz_2 = null; //创建三个需要从数据库获取信息对其进行插入数据的底面对象

sanlengzhu slz_2 =null;

zhisilengzhu zslz_2 =null;

//连接数据库需要创建的三个接口对象

Connection conn = null;

PreparedStatement preStmt = null;

ResultSet rs = null;

//下面是数据库操作,包含连接数据库,插入对象数据,获取对象数据

try {

//连接数据库对象

conn = connectMyData.getConection();

// 执行向数据库插入圆柱底面对象yz

String insertYuanZhu_yz = "insert into yuanzhu(objectname,bian) values(?,?)";

preStmt = conn.prepareStatement(insertYuanZhu_yz);

preStmt.setString(1, "yz");

preStmt.setDouble(2, yz.bian);

int result1 = preStmt.executeUpdate();

if(result1 > 0)

System.out.println("数据库插入圆柱柱底面对象yz成功!!!");

else

System.out.println("插入数据库失败");

//执行向数据库插入三棱柱底面对象slz

String insertSanLengZhu_slz ="insert into sanlengzhu(objectname,a,b,c) values(?,?,?,?)";

preStmt = conn.prepareStatement(insertSanLengZhu_slz);

preStmt.setString(1, "slz");

preStmt.setDouble(2, slz.a);

preStmt.setDouble(3, slz.b);

preStmt.setDouble(4, slz.c);

int result2 = preStmt.executeUpdate();

if(result2 > 0)

System.out.println("数据库插入三棱柱底面对象slz成功!!!");

//执行向数据库插入直四棱柱底面对象zslz

String insertZhiSiLengZhu_zslz ="insert into zhisilengzhu(objectname,a,b) values(?,?,?)";

preStmt = conn.prepareStatement(insertZhiSiLengZhu_zslz);

preStmt.setString(1, "zslz");

preStmt.setDouble(2, slz.a);

preStmt.setDouble(3, slz.b);

int result3 = preStmt.executeUpdate();

if(result3 > 0)

System.out.println("数据库插入直四棱柱底面对象zslz成功!!!!");

else

System.out.println("插入失败");

//执行向数据库查询获取曾经叫yz的圆柱底面对象信息

String selectYuanZhu1 = "select bian from yuanzhu where objectname='yz'";

preStmt = conn.prepareStatement(selectYuanZhu1);

rs = preStmt.executeQuery();

// 展开结果集数据库,用取出三棱柱对象slz的信息对slz_2对象属性赋值

//System.out.println(rs.getRow());判断数据指针到哪一条,从0开始

while(rs.next()){

// 通过字段检索

double bian = rs.getDouble("bian");

// 赋值

yz_2 = new yuanzhu(bian);

System.out.println("输出一下yz_2的边:"+yz_2.bian);

}

//执行向数据库查询曾经叫slz的底面对象信息

String selectSanLengZhu1 = "select a,b,c from sanlengzhu where objectname='slz'";

preStmt = conn.prepareStatement(selectSanLengZhu1);

rs = preStmt.executeQuery(selectSanLengZhu1);

while(rs.next()) {

double a = rs.getDouble("a");

double b = rs.getDouble("b");

double c = rs.getDouble("c");

slz_2 = new sanlengzhu(a,b,c);

System.out.println("输出一下slz_2的边a:"+slz.a);

}

//执行向数据库查询并获取曾经叫zslz的底面对象信息

String selectZhiSiLengZhu1 = "select a,b from zhisilengzhu where objectname='zslz'";

preStmt =conn.prepareStatement(selectZhiSiLengZhu1);

rs = preStmt.executeQuery(selectZhiSiLengZhu1);

while(rs.next()) {

double a = rs.getDouble("a");

double b = rs.getDouble("b");

zslz_2 = new zhisilengzhu(a,b);

System.out.println("输出一下zslz_2的边a:" + zslz_2.a);

}

// 完成后关闭数据库连接

rs.close();

preStmt.close();

conn.close();

}catch(SQLException se){

// 处理 JDBC 错误

se.printStackTrace();

}catch(Exception e){

// 处理 Class.forName 错误

e.printStackTrace(); //这些都是异常处理不用管

}finally{

// 关闭资源

try{

if(preStmt!=null) preStmt.close();

}catch(SQLException se2){

}// 什么都不做

try{

if(conn!=null) conn.close();

}catch(SQLException se){

se.printStackTrace();

}

}

//开始用获取的数据库对象yz_2,slz_2,zslz_2来通过computer类计算三种类型柱体的体积了。

computer graphV =new computer(1);//假设柱体的高都为1

System.out.println("此圆柱的体积为:"+graphV.computerV(yz_2));

System.out.println("此三棱柱的体积为:"+graphV.computerV(slz_2));

System.out.println("此直四棱柱的体积为:"+graphV.computerV(zslz_2));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值