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

📄 employer.java

📁 模拟银行的ATM自动取款机
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**-------此类为Employer类,提供银行的取款,存款,开帐,挂失,取消挂失------------
 ---------转帐,修改客户卡密码,注销帐号,显示所有客户的基本信息---------
 ----------显示所有欠帐客户的基本信息,显示所有被冻结帐号的客户的基本信息-----
 ----------------显示某一帐户的使用情况记录等各种功能----------------------
 ---------------------使用时,先构造该类的对象-----------------------------
 ----------该类的构造函数有参数(String operaterID),即操作员的职员号---------------
 -----在完成除开帐功能以外的其它功能时,均要先使用IsAccountExsit(String cardNo)函数---
 -----------它判断卡号为cardNo的帐号是否存在,其返回值为int型------------
 --------返回0表示该卡号不存在,1表示该卡号可用,2表示该卡号已被冻结------------
 -----------在其后操作的各功能都是对卡号为cardNo的帐号进行的------------------
 ---------若要对其它卡号进行操作,再用一次函数IsAccountExsit(String cardNo2)即可-----
 */
import java.util.*;
import java.sql.*;
import java.io.*;
import java.lang.String;
public class Employer extends Account{
private String operaterID;
/** --------------Employer类的构造函数-----------------------
  ----------该类的构造函数有参数(String operaterID),即操作员的职员号-------
  ------------------实现对operaterID的赋值----------------------
 */ 
public Employer(String ID){operaterID=new String(ID);}
/**-------------write()函数实现对帐号日志的写入,已用在了相应的函数中-----------
  --------------------用户可以不去吊用它------------------------------
  ------它有6个参数,cardNo表示用户帐号,cID表示用户身份证号-------------
  ------表示oID操作员职员号,money表示存取或转帐的钱数,time表示操作时间-----
*/
public void write(String cardNo,String cID,String oID,float money,
String operate,String time){
connectData();
try{
stmt.executeUpdate("insert into AccountRecord values('"+cardNo+"','"
     +cID+"','"+oID+"','"+money+"','"+operate+"','"+time+"')");
breakConnect();     
}catch(SQLException e1){
System.out.println("SQLException:"+e1.getMessage());
breakConnect();
}
}
public int bankDraw(float money){
setTime();
int d=super.bankDraw(money);
if(money==1){
write(customerCardNo,customerID,operaterID,money,"取款"+money+"元",time);
}
return d;
}
 /** -------以下draw()函数完成客户取款功能,以取款钱数money为参数---------
    -------------------------返回值为int型-----------------------
    -------------返回0表示一次取款超标(3000元),取款失败----------
    --------------------返回1表示取款成功------------------------
    --------------------返回2表示卡内钱数不够---------------------
    ----------返回3表示一天连续取款超标(5000元),取款失败--------
 */   
public int ATMDraw(float money){
if(money>3000) return 0;     //-----------一次取款金额过大	
float drawedMoney=0;
connectData();
try{
setTime();
ResultSet re=stmt.executeQuery("select * from AccountRecord where cardNo='"
                 +customerCardNo+"'");
while(re.next()){
String s=new String(re.getString(6));
String s2=new String(re.getString(5));
if(s!=null&&s2.equals("取款")&&time.regionMatches(0,s,0,8))
drawedMoney+=Float.parseFloat(re.getString(4));
}
breakConnect();
}catch(SQLException e1){
System.out.println("SQLException:"+e1.getMessage());
breakConnect();
}
if(money+drawedMoney>5000)return 3;//-------------一天连续取款不得超过5000元
int draw=super.bankDraw(money);
if(draw!=1)
return draw; 
write(customerCardNo,customerID,operaterID,money,"取款"+money+"元",time);
return 1;        //--------------取款成功
}
/** -------以下save()函数完成客户存款功能,以存款钱数(float)为参数---------
     ----------------------返回值为boolean型-----------------------
     --------------------返回true表示存款成功------------------------
     ---------返回false表示存款失败(系统原因)------------------------
*/
public boolean save(float money){
setTime();
if(super.save(money)){
write(customerCardNo,customerID,operaterID,money,"存款"+money+"元",time);
return true;
}
else return false;
}
/** -------以下createNewAccount()函数完成客户开帐功能-----------
    -----有5个参数:身份证号(String ID),姓名(String name)--------
    ------电话号码(String tel)  ,开帐存入钱数(float money)------        
    ----------------开卡类型(int cardType)------------------
    -------------------------返回值为int型-----------------------
    -------返回0表示一个身份证号只能办理一张信用卡,开帐失败---------
    --------------------返回1表示开帐成功------------------------
    --------------------返回2表示开帐钱数不够---------------------
    ----------返回-1表示开帐失败(系统原因)--------
 */   
public int createNewAccount(String ID,String name,String tel,
               float money,int cardType){
setTime();
int qw=super.createNewAccount(ID,name,tel,money,cardType);
if(qw==1){
write(customerCardNo,ID,operaterID,money-100,"开帐",time);
}
return qw;
}
/**--以下setCardDisable()函数完成客户挂失功能,以客户身份证号(String)为参数---
     ----------------------返回值为boolean型-----------------------
     --------------------返回true表示挂失成功------------------------
     ---------返回false表示挂失失败(身份证号不对或卡已被冻结)-------
*/
public boolean setCardDisable(String ID){
if(ID.equals(customerID)&&cardState==1){
setTime();
if(super.changeCardState()){
write(customerCardNo,ID,operaterID,0,"挂失,使帐号冻结",time);
return true;
}
}
return false;
}
/**---以下setCardAble()函数完成客户取消挂失功能,以客户身份证号(String)为参数---
     ----------------------返回值为boolean型-----------------------
     --------------------返回true表示取消挂失成功------------------------
     ---------返回false表示取消挂失失败(身份证号不对或卡已可用)-------
*/
public boolean setCardAble(String ID){
if(ID.equals(customerID)&&cardState==0){
setTime();
if(super.changeCardState()){
write(customerCardNo,customerID,operaterID,0,"使冻结帐号重新可用",time);
return true;
}
}
return false;
}
/** ---以下moveMoney()函数完成客户转帐功能,以转帐钱数money,转入卡号cardNumber为参数---------
    -------------------------返回值为int型-----------------------
    -------------返回0表示卡内钱数不够,转帐失败----------
    --------------------返回1表示转帐成功------------------------
    -------------返回2表示输入的帐号为本身,转帐失败---------------------
    ------------返回3表示输入的帐号不存在,转帐失败--------------
 */   
public int moveMoney(String cardNumber,float money){
setTime();
int moveMoney=super.moveMoney(cardNumber,money);
System.out.print(moveMoney);
if(moveMoney==1)
write(customerCardNo,customerID,operaterID,money,"转帐到卡号:"+cardNumber,time);
return moveMoney;
}
/**-------以下changePassWord()函数完成客户修改密码功能,以新密码(String)为参数---------
     ----------------------返回值为boolean型-----------------------
     --------------------返回true表示修改密码成功------------------------
     ---------返回false表示修改密码失败(系统原因)------------------------
*/
public boolean changePassWordCustomer(String passWord){
setTime();
if(super.changePassWordCustomer(passWord)){
write(customerCardNo,customerID,operaterID,0,"客户修改密码",time);
return true;
}
return false;
}
/**--------------以下delCard()函数完成注销帐号功能,无参数------------
     ----------------------返回值为boolean型-----------------------
     --------------------返回true表示注销成功------------------------
     -------------返回false表示注销失败(系统原因)------------------------
*/
public boolean delCard(){
setTime();
if(super.delCard()){
write(customerCardNo,customerID,operaterID,0,"操作员注销此帐号",time);
return true;
}
return false;
}
/**-------以下showAllAccounts()函数输出银行内所有客户的基本信息,无参数----
   ------------返回值s为String类型,s记录了所有信息---------------------
*/
public String showAllAccounts(){
connectData();
String s=new String("以下输出所有客户的基本信息:"+"\n");
String cardState,cardType;
try{
ResultSet sd=stmt.executeQuery("select * from AccountTab");
int i=1;
while(sd.next()){
if(sd.getInt(7)==1) cardState="可用";
else cardState="冻结";
if(sd.getInt(9)==1) cardType="信用卡";
else cardType="存储卡";
s+="第"+i+"个客户  卡号:"+sd.getString(1)+" ,卡内余额:"+sd.getFloat(3)+"\n"
  +"       身份证号:"+sd.getString(4)+" ,姓名:"+sd.getString(5)+" ,电话:"+sd.getString(6)+"\n"
  +"       卡的状态:"+cardState+" ,开帐时间:"+sd.getString(8)+ " ,卡的种类:"+cardType+"\n";
i++;
}
}catch(SQLException e1){
System.out.println("SQLException:"+e1.getMessage());
}finally{
breakConnect();
return s+"显示完毕";
}
}
/**-----以下showAllAccountsInDelt()函数输出银行内所有欠帐客户的基本信息,无参数----
   ------------返回值s为String类型,s记录了所有信息---------------------
*/
public String showAllAccountsInDelt(){
connectData();
String s=new String("以下输出所有欠帐客户的基本信息:"+"\n");
String cardState,cardType=new String("信用卡");
try{
ResultSet sd=stmt.executeQuery("select * from AccountTab where cardMoney<1");
int i=1;

⌨️ 快捷键说明

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