📄 employer.java
字号:
/**-------此类为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 + -