机试
现在有一银行,要做一套取款系统,需要使用控制台操作。银行所提需求要求 必能够进行简单地新增用户、修改用户信息、存钱、取钱操作。
要求使用控制台操作scanner,同时使用JDBC数据库进行CURD的操作,数据库要求Mysql。
- 正确使用JDBC连接数据库(25)
- 正确书写控制逻辑(15)
- 新增用户。(15)
- 修改用户信息。(15)
- 给用户存钱。(15)
- 给用户取钱。(15)
create database test default character set utf8; use test; create table atm ( id int primary key auto_increment, name varchar(6), money varchar(11) ); insert atm values(null,"z","100"); select * from atm;创建实体类
public class Atm {
private int id;
private String name;
private String money;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
}
链接数据库
public class DButil {
public static Connection getConnection() {
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false","root","root");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
dao层 (实现功能)
public class BankDao{
public ArrayList getList() {
// 存储从数据库中取出来的数据
ArrayList ar = new ArrayList();
Connection conn = DButil.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
String sql = "select * from atm";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();// 执行数据库查询的方法,放到rs中
while (rs.next()) {
Atm bankm = new Atm();
bankm.setId(rs.getInt("id"));
bankm.setName(rs.getString("name"));
bankm.setMoney(rs.getString("money"));
ar.add(bankm);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 当数据库使用后必须关闭,如果没有关闭数据库的接口有限,下次就不能连接
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return ar;
}
//添加
public void inset(Atm Bankm) {
Connection conn = DButil.getConnection();
PreparedStatement ps = null;
String sql = "insert into atm values(null,?,?)";
try {
ps = conn.prepareStatement(sql);
// 这个方法用于改变数据库数据,a代表改变数据库的条数
ps.setString(1, Bankm.getName());
ps.setString(2, Bankm.getMoney());
int a = ps.executeUpdate();
if (a > 0) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
// 关闭
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
// 修改 jian
public void update(Atm Bankm){
Connection conn = DButil.getConnection();
PreparedStatement ps = null;
String sql = "update atm set name=?, money=? where id=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1,Bankm.getName());
ps.setString(2, Bankm.getMoney());
ps.setInt(3,Bankm.getId());
int a = ps.executeUpdate();
if (a > 0) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
//存钱
public void updatejia(Atm Bankm) {
Connection conn = DButil.getConnection();
PreparedStatement ps = null;
String sql = "update atm set money=money+? where id=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Bankm.getMoney());
ps.setInt(2, Bankm.getId());
int a = ps.executeUpdate();
if (a > 0) {
System.out.println("存入成功");
} else {
System.out.println("存入失败");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
// 取钱
public void updatejian(Atm Bankm) {
Connection conn = DButil.getConnection();
PreparedStatement ps = null;
String sql = "update atm set money=money-? where id=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Bankm.getMoney());
ps.setInt(2, Bankm.getId());
int a = ps.executeUpdate();
if (a > 0) {
System.out.println("取钱成功");
} else {
System.out.println("取钱失败");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
实现类
public class Test {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
BankDao bankd = new BankDao();
Atm bankm = new Atm();
while (true) {
System.out.println("*****************中国人民银行*******************");
System.out.print(" 1、所有信息");
System.out.println(" 2、新增用户");
System.out.print(" 3、修改用户信息");
System.out.println(" 4、存钱");
System.out.print(" 5、取钱");
System.out.println("*****************中国人民银行*******************");
System.out.println("请输入功能号:");
int a = sc.nextInt();
if (a == 1) {//查询w
ArrayList ar = new BankDao().getList();
for (Atm ne : ar) {
System.out.println("----编号:" + ne.getId() + "----用户名:" + ne.getName() + "----余额:" + ne.getMoney() + "----r");
}
} else if (a == 2) { //添加用户 --插入
System.out.println("请输入用户名");
bankm.setName(sc.next());
System.out.println("请输入预存款");
bankm.setMoney(sc.next());
bankd.inset(bankm);
} else if (a == 3) { //修改
System.out.println("请输入修改编号");
bankm.setId(sc.nextInt());
System.out.println("请输入用户名");
bankm.setName(sc.next());
System.out.println("请输入金额");
bankm.setMoney(sc.next());
bankd.update(bankm);
} else if (a == 4) {//存款-修改
System.out.println("请输入存款编号");
bankm.setId(sc.nextInt());
System.out.println("请输入存入金额");
bankm.setMoney(sc.next());
bankd.updatejia(bankm);
} else if (a == 5) { //取款-修改
System.out.println("请输入取款编号");
bankm.setId(sc.nextInt());
System.out.println("请输入取出金额");
bankm.setMoney(sc.next());
bankd.updatejian(bankm);
}
}
}
}
运行效果



