⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm.java.bak

📁 1、查询余额 2、ATM取款:每次取款金额为50的倍数
💻 BAK
字号:
/* ATM柜员机模拟程序
要求:当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行(规则可以按照实际系统做需求):
1、查询余额:初始余额为10000元
2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
3、ATM存款:不能出现负存款。
4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码*/
import java.sql.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
//CardID:数据库中用户ID UseID:暂时用来保存输入ID Usepwd:保存输入密码 UseSQL:数据库实例  UserMoney:用户余额 
class dataSQL 
{   
	
	 private Connection conn;
     private Statement stmt; 

 /*--------------链接数据库-------------------*/

   
   public dataSQL() //构造函数设置连接数据库
   {

	  try
	  {

		  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		  String dburl ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=data\\Atminfo.mdb";
		  conn=DriverManager.getConnection(dburl);
		  stmt=conn.createStatement();  
	  }
	  catch(Exception e1)
	  {
	  	System.out.println(e1.toString());
	  }    
	
   }


/*-----------------用于返回某一特定数据集------------------*/


  public ResultSet getData(String sqlstr)//返回查询的数据集
  {
	  try
	  {
	  	ResultSet rs=this.stmt.executeQuery(sqlstr);
	  	return rs;
	  }
	  catch(Exception e)
	  {
	  	System.out.println(e.toString());
	  	return null;
	  }
  }


/*-----------------用于返回某一特定数据集的行数-----------------*/
  public int getRowcount(String sqlstr)
  {
  	int i=0;
  	try
  	{
	  	ResultSet rs=this.getData(sqlstr);
	  	while(rs.next()) i++;
  	}
		catch(Exception e)
		{
			System.out.println(e.toString());
		}
		finally
		{
			return i;
		}  	
  }
/*-----------------用于执行某一特定的无返回SQl语句-----------------*/


  public boolean exeSql(String sqlstr)//执行无返回的SQL语句
  {
  	try
  	{
  		stmt.execute(sqlstr);
  		return true;  		
  	}
  	catch(Exception e)
  	{  		
  		System.out.println(e.toString());
  		return false;
  	}
  }
/*-----------------用于延时-----------------*/

  public void sleep(int second)
  {
  	try
  	{
  		Thread th=new Thread();
  		th.sleep(second*1000);
  	}
  	catch(Exception e)
  	{
  		System.out.println(e.toString());
  	}
  }
  
  protected void finalize()//析构函数
	{
		try
		{
			if(stmt!=null) stmt.close();
			if(conn!=null) conn.close();
		
		}
		catch(Exception e)
		{}
	} 

   
}
class readCard 
{	
	public void exitCard()//退卡(退出系统)
	{
		System.exit(0);
	}
	
	public String getCardID(String cardID)//读卡号
	{
		return cardID;
	}
}
class moneyMachine 
{

   public String printBill(float money,String CardID,float leftmoney)//打印取款清单和余额查询 
   {
			String msg;
			msg="帐号: "+CardID+"    ";
			msg+="操作类型: 取款"+"    ";
			msg+="操作金额: "+money+"    ";
			msg+="帐号余额: "+leftmoney+"    ";
			return msg;
   }
}
class PutmoneyMachine 
{

   public String printBill(float money,String CardID,float leftmoney)//打印存款清单和余额查询 
   {
			String msg;
			msg="帐号: "+CardID+"    ";
			msg+="操作类型: 存款"+"    ";
			msg+="操作金额: "+money+"    ";
			msg+="帐号余额: "+leftmoney+"    ";
			return msg;
   }
}
class Account 
{
	MD5 md=new MD5();
	dataSQL UseSQL=new dataSQL();
/*-----------------------修改密码---------------------------------------*/

   public int changePwd(String CardID,String pwd,String oldPwd,String newPwd,String newPwd2) 
   {    
	         String pwd1,pwd2;
			 if(newPwd.length()==0 || newPwd.trim().equals("")) return -3;//新密码不能为空
			 else if(newPwd.length()!=6) return -4;//密码不等于6位
			 else if(!isNumeric(newPwd)) return -5;//密码不全是数字
			 else if(iseq(newPwd))    return -6;
			 else if(oldPwd.equals(pwd))
			 {
				    pwd1=md.getMD5Instance().compute(newPwd);//MD5加密
					pwd2=md.getMD5Instance().compute(newPwd2);//MD5加密
			 		if(pwd1.equals(pwd2))
			 		{
			 			UseSQL.exeSql("update Atminfo set pwd='"+pwd1+"' where CardID='"+CardID+"'");
			 			return 1;//密码修改成功
			 		}
			 		else
			 		{
			 			return -2;//两次输入不同
			 		} 		
			 		
			 }
			 else
			 {
			 		return -1;//旧密码输入错误
			 }			 		 	
	 }
   

/*---------------------- 验证用户ID-----------------------------------*/
   public boolean checkAccount(String UseID) 
   {

	     
     String ssql;
	
     ssql="select * from Atminfo where CardID='"+UseID+"'";
	
	   if(UseSQL.getRowcount(ssql)>0)//合法ID
     {
		  return true;
     }
     else//非法ID
     {
		// System.out.println("OK");
     	 return false;
     }
   }
   /*---------------------- 设置帐号状态-----------------------------------*/
   public boolean checkCardID(String CardID,int num) 
   {

	     
     String ssql;
	
     ssql="update Atminfo set num='"+num+"'where CardID='"+CardID+"'";
	
	   if(UseSQL.exeSql(ssql))
     {
		  return true;
     }
     else//非法ID
     {
		// System.out.println("OK");
     	 return false;
     }
   }
   /*----------------------查询帐号状态-----------------------------------*/
	 public float queryCard(String CardID)
	 {
	 	 ResultSet rs;
	 	 String ssql="select * from Atminfo where CardID='"+CardID+"'";
	 	 float balance=0;
	 	 try
	 	 {
	 	 	 rs=UseSQL.getData(ssql);
	 	 	 rs.next();
	 	 	 balance=rs.getFloat("num");
	 	 }
	 	 catch(Exception e)
	 	 {
	 	 	 System.out.println(e.toString());
	 	 }
	 	 finally
	 	 {
	 	 	 return balance;
	 	 }
	 	 
	 }
/*---------------------- 验证是否为数字-----------------------------------*/
   public boolean isNumeric(String str)
{
       Pattern pattern = Pattern.compile("[0-9]*");
       Matcher isNum = pattern.matcher(str);
       if( !isNum.matches() ) {
          return false;
       }
       return true;
}
/*---------------------- 验证字符串是否全部重复-----------------------------------*/
    public boolean iseq(String newPwd)
	{
		byte[] newPwd1=newPwd.getBytes();
		byte pwd;
		int n=0;
		pwd=newPwd1[0];
		for(int i=1;i<newPwd1.length;i++) 
		{
		   if(pwd==newPwd1[i]) n++;
		  
		}
		if(n==5) return true;
		else return false;
    }
/*----------------------验证用户密码-----------------------------------*/

   public boolean checkPwd(String UseID,String Usepwd) 
   {
     String ssql,pwd;
     pwd=md.getMD5Instance().compute(Usepwd);//MD5加密
     ssql="select * from Atminfo where pwd='"+pwd+"' and CardID='"+UseID+"'";
     if(UseSQL.getRowcount(ssql)>0)//合法pwd
     {
     	 return true;
     }
     else//非法pwd
     {
     	 return false;
     }
   }

/*----------------------查询余额-----------------------------------*/
	 public float queryBalance(String CardID)
	 {
	 	 ResultSet rs;
	 	 String ssql="select * from Atminfo where CardID='"+CardID+"'";
	 	 float balance=0;
	 	 try
	 	 {
	 	 	 rs=UseSQL.getData(ssql);
	 	 	 rs.next();
	 	 	 balance=rs.getFloat("UserMoney");
	 	 }
	 	 catch(Exception e)
	 	 {
	 	 	 System.out.println(e.toString());
	 	 }
	 	 finally
	 	 {
	 	 	 return balance;
	 	 }
	 	 
	 }
/*----------------------查询当天交易额-----------------------------------*/
 public float queryBalancetoday(String CardID)
	 {
	 	 ResultSet rs;
	 	 String ssql="select * from Atminfo where CardID='"+CardID+"'";
	 	 float balance=0;
	 	 try
	 	 {
	 	 	 rs=UseSQL.getData(ssql);
	 	 	 rs.next();
	 	 	 balance=rs.getFloat("TodayMoney");
	 	 }
	 	 catch(Exception e)
	 	 {
	 	 	 System.out.println(e.toString());
	 	 }
	 	 finally
	 	 {
	 	 	 return balance;
	 	 }
	 	 
	 }
	 
/*----------------------扣除取款数-----------------------------------*/
   public boolean reduceMoney(String UseID,float money) 
   {
     String ssql;
     if(this.queryBalance(UseID)<money) return false;    //查看卡上余额是否大于要取金额 
     ssql="update Atminfo set UserMoney=UserMoney-"+money+" where CardID='"+UseID+"'";
     if(UseSQL.exeSql(ssql)) return true; //扣款成功			
   	 else return false; //扣款未成功    
   }
   /*----------------------增加当天交易额-----------------------------------*/
  public boolean addTodayMoney(String UseID,float money) 
   {
     String ssql;        
     ssql="update Atminfo set TodayMoney=TodayMoney+"+money+" where CardID='"+UseID+"'";
     if(UseSQL.exeSql(ssql)) return true; //记录成功			
   	 else return false; //记录未成功    
   }

/*----------------------增加存款-----------------------------------*/
    public boolean addMoney(String UseID,float money) 
   {
     String ssql;        
     ssql="update Atminfo set UserMoney=UserMoney+"+money+" where CardID='"+UseID+"'";
     if(UseSQL.exeSql(ssql)) return true; //存款成功			
   	 else return false; //存款未成功    
   }
   /*----------------------清空今日金额-----------------------------------*/
   public boolean clear(){
	String ssql;
	ssql="update Atminfo set TodayMoney=0";
	if(UseSQL.exeSql(ssql)) return true; //清空成功		
   	 else return false; 
	}

   protected void finalize()//析构函数
	{
		UseSQL.finalize();
	}   
}

public class Atm 
{	
	display dis=new display();//实例化ATM屏幕类
	MD5 md=new MD5();
	
	public void go()	
	{
		dis.mainFram();
	}
 
	
	public static void main(String[] args) //系统主方法,只负责调用
	{	
		Atm run=new Atm();
		run.go();
	}
}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -