person.java
package JDBC;
public class person {
private int id;
private int money;
private int password;
private String name;
public person()
{
super();
}
public person(int id,String name,int password,int money)
{
this.id=id;
this.name=name;
this.password=password;
this.money=money;
}
//以下方法用来返回ATM中的查找数据
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
personDAO.java
package JDBC;
//import java.sql.Connection;
//import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//import java.sql.SQLException;
public class personDAO extends factoryDAO{
private PreparedStatement ps = null;
private ResultSet rs = null;
public personDAO() {
super();
}
/**
* 登录功能(先不做)
*/
public int login(int password)
{
try
{
String sql="select *from person where password =?";
ps = getConn().prepareStatement(sql);
ps.setInt(1, password);
rs = ps.executeQuery();
if(rs.next()){
return rs.getInt("id");
}
}
catch (Exception e)
{
e.printStackTrace();
}
return -1;
}
/*
* 查询
*/
public person queryById(int id) {
person per = null;
try {
String sql = "select * from person where id = ?";
ps = getConn().prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
if(rs.next()){
per = new person();//若person的构造中不写super会报the condcutor is undefined.
per.setId(rs.getInt("id"));
per.setName(rs.getString("name"));
per.setPassword(rs.getInt("password"));
per.setMoney(rs.getInt("money"));
}
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
close(rs,ps,null);
}
return per;
}
/**
* 存款功能
* @param id
* @param money
*/
public void update_save(int id,int money) {
String sql = "update person set money = money + ? where id = ?";
try {
ps = getConn().prepareStatement(sql);
ps.setInt(1, money);
ps.setInt(2, id);
ps.executeUpdate();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
close(null,ps,null);
}
}
/**
* 取款功能
* @param id
* @param money
*/
public void update_get(int id,int money) {
String sql = "update person set money = money - ? where id = ?";
try {
ps = getConn().prepareStatement(sql);
ps.setInt(1, money);
ps.setInt(2, id);
ps.executeUpdate();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
close(null,ps,null);
}
}
/**
* 转账功能
* @param id
* @param inid
* @param inMoney
*/
public void change(int id,int inid,int inMoney) {
update_get(id, inMoney);
update_save(inid, inMoney);
}
}
factoryDAO.java
package JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class factoryDAO {
private Connection conn =null;
public factoryDAO()
{
try {
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/first","root","");
}catch(Exception e)
{
e.printStackTrace();
}
}
public void close(ResultSet rs,PreparedStatement ps,Connection conn)
{
try {
if(rs != null) {
rs.close();
}
if(ps != null) {
ps.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConn()
{
return conn;
}
}
ATM.java
package JDBC;
//import java.sql.Connection;
//import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.util.ArrayList;
import java.util.Scanner;
public class ATM {
personDAO dao = new personDAO();
Scanner input = new Scanner(System.in);
private int id; //当前登录成功的用户卡号
public ATM() {
super();
}
//1,查询
public void query() {
person per = dao.queryById(id);//在业务层调用DAO中的方法,让DAO访问数据库
//这是一个顾客对象
System.out.println("**********************");
System.out.println("卡号:"+per.getId());
System.out.println("储户姓名:"+per.getName());
System.out.println("余额:"+per.getMoney());
System.out.println("**********************");
}
//2
public void save() {
System.out.println("请输入您要存入的金额:");
int saveMoney = input.nextInt();
//dao.存款功能()
dao.update_save(id, saveMoney); //调用dao层的方法,让其更新数据库
System.out.println("存款成功!");
}
//3
public void get() {
System.out.println("请输入您要取出的金额:");
int getMoney = input.nextInt();
dao.update_get(id, getMoney); //调用dao层的方法,让其更新数据库
System.out.println("取款成功!");
}
//4
public void change() {
System.out.println("请输入您要转入的账号:");
int inid = input.nextInt();
System.out.println("请输入您要转账的金额:");
int inMoney = input.nextInt();
dao.change(id,inid,inMoney); //调用dao层的方法,让其更新数据库
System.out.println("转账成功!");
}
//登录成功
// public boolean login() {
// System.out.println("请输入密码:");
// int password = input.nextInt();
// id = dao.login(password); //调用dao层的方法,把参数mypwd给他,让其访问数据库
// if(id != -1) {
// return true;
// }
// return false;
// }
public boolean login() {
System.out.println("1,注册\t2,登陆");
int num = input.nextInt();
if(num == 2)
{//登陆操作
System.out.println("请输入用户名");
String name=input.next();
System.out.println("请输入密码");
int password = input.nextInt();
String sql = "select * from person where name = ? and password = ? ";
PreparedStatement ps = conn.prepareStatement(sql); //无法识别conn
ps.setString(1,name);
ps.setInt(2, password);
ResultSet rs = ps.executeQuery();
if(rs.next()) {
System.out.println("登陆成功");
}
else
{
System.out.println("登陆失败");
}
}
else
{//注册操作
System.out.println("请输入用户名:");
String name = input.next();
System.out.println("请输入密码:");
int password = input.nextInt();
//System.out.println("请输入金额:");
//int money = input.nextInt();
String sql = "insert into person (name,password) values(?,?)";//可以不包含表中所有字段,?用来传参数。
PreparedStatement ps = conn.prepareStatement(sql);//预编译,不执行
ps.setString(1, name);//快递员将第一个?与name参数绑定。
ps.setInt(2, password);
//ps.setInt(3, money);
//ResultSet rs = ps.executeQuery();//可以不带SQL;
int count = ps.executeUpdate();
if(count>0)
System.out.println("注册成功");
else
System.out.println("注册失败");
}
}
public void begin() {
if(login()) {
System.out.println("欢迎使用东软ATM自动提款机");
//显示功能菜单
int num = 0;
while(num != 5) {
System.out.println("请选择以下功能:1.查询信息2.用户存款3.用户取款4.实时转账5.退卡");
num = input.nextInt();
switch (num) {
case 1:
query();
break;
case 2:
save();
break;
case 3:
get();
break;
case 4:
change();
break;
case 5:
System.out.println("谢谢使用东软ATM");
break;
default:
break;
}
}
}else {
//登录失败
System.out.println("卡号、密码错误,登录失败!");
}
}
}
test.java
package JDBC;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ATM atm = new ATM();
while(true) {
atm.begin();
}
}
}
ATM升级版
最新推荐文章于 2024-07-15 20:11:15 发布