ATM升级版

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();
		}
	}
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值