public class ATM {
public static void main(String[] args) {
// 开立帐号
Account account = new Account();
// 在 account 中存 10,000 元
account.setBalance(10000);
// 检查 account 中的存款
System.out.println("帐户原始金额 : " + account.getBalance() + " 元");
// 小明, 小华与小英一起对 account 进行提款的动作
s1.start();
}
//帐户
class Account {
private int balance; // 帐户馀额
public int getBalance() { // 取得帐户馀额
return balance;
public void setBalance(int money) { // 设定帐户馀额
balance = money;
// 提款方法
public void withDraw(Account account, int withdrawMoney) {
String tName = Thread.currentThread().getName(); // tName=提款人
System.out.println(tName + " 开始提款 ... ");
boolean withDrawStatus; // 提款状态 说明:false=提款失败, true=提款成功
synchronized(ATM.class) {
int tmpBalabce = account.getBalance(); // 取得最新帐户馀额
//用 for-loop 模拟提款时系统所花的时间
// ... 提款进行中 ...
tmpBalabce = tmpBalabce - withdrawMoney; // 最新帐户馀额 - 欲提款金额 (用来判断是否馀额足够的依据)
if (tmpBalabce 0) { // 判断是否馀额足够
withDrawStatus = false;
System.out.println("....................");
System.out.println(" 帐户馀额不足!");
} else {
withDrawStatus = true;
account.setBalance(tmpBalabce); // 回存account最後剩馀金额
System.out.println(tName + "的交易单:");
System.out.println("\t欲提款金额:" + withdrawMoney + "元");
System.out.println("\t帐户馀额:" + account.getBalance());
if(withDrawStatus == true){
System.out.println(tName + " 完成提款 ... ");
System.out.println(tName + " 提款失败 ... ");
System.out.println("-------------------------------");
// 提款类别
class WithDraw extends Thread {
private Account account; // 帐号
private int withdrawMoney; // 欲提款的金额
// tName:执行绪名称, account:Account物件名称, withdrawMoney:欲提款金额
public WithDraw(String tName, Account account, int withdrawMoney) {
setName(tName);
this.account = account;
this.withdrawMoney= withdrawMoney;
public void run() {
// 执行提款动作(account:帐号, withdrawMoney 欲提款金额)
account.withDraw(account, withdrawMoney); // 执行提款动作
package pack.money.persistent;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;import pack.money.entity.Client;
import pack.money.entity.ClientMessage;
public class ClientPersistent {
//private static int a=0;
private static String t,b;//t是password b是clinetname
private static ClientPersistent sp;
public static ClientPersistent getClientPersistent() {
if (sp == null) {
sp = new ClientPersistent();
return sp;
private ClientMessage getClientMessage(ResultSet rs) throws Exception{
ClientMessage student=new ClientMessage();
student.setMoney(rs.getFloat("money"));
student.setType(rs.getString("type"));
student.setClientName(rs.getString("ClientName"));
student.setTransactionID(rs.getInt("TransactionID"));
return student;
public Client login(Connection con,String ClientName,String password) throws Exception{
String sql="select balance,password,ClientName from Client where ClientName=? and password=?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1, ClientName);
ResultSet rs=ps.executeQuery();
t=password;
b=ClientName;
System.out.println(t);
System.out.println(b);
if(rs.next()){
Client client=new Client();
client.setClientName(rs.getString("ClientName"));
client.setPassword(rs.getString("password"));
return client; }
throw new Exception("Can not login, the accountID or password has error. ");
} public void save(Connection con ,String money)throws Exception
{ // a++;
String s="save";
float g=Float.parseFloat(money);
String sql="update Client set balance=balance+? where ClientName=?";
String sql1="insert into ATMTransaction(ClientName,Type,money) values(?,?,?) ";
PreparedStatement ps1=con.prepareStatement(sql1);
ps.setFloat(1, g);
//ps1.setInt(1,a);
ps1.setString(1,b);
ps.executeUpdate();
ps1.executeUpdate();
public void withDraw (Connection con ,String money)throws Exception
{ //a++;
String s="WithDraw";
float x=Float.parseFloat(money);
String sql="update Client set balance=balance-? where ClientName=?";
String sql1="insert into ATMTransaction(ClientName,Type,money) values(?,?,?)";
ps.setFloat(1, x);
throws Exception
{
if(t.equals(OldPassWord))
String sql="update Client set password=? where ClientName=?";
ps.setString(1, newPassWord1);
String j="dsfasdf";
return j;
else
{System.out.print("确认密码错误!");br return null;}
{ return null;
public ArrayListClientMessage disPlayAll(Connection con ) throws Exception
String sql="select * from ATMTransaction where ClientName=? ";
ps.setString(1,b);
System.out.println(b+"****b****");
ArrayListClientMessage message=new ArrayListClientMessage();
while(rs.next()){
message.add(this.getClientMessage(rs));
return message;
public float showBalance(Connection con ) throws Exception
String sql="select balance from Client where ClientName=?";
ps.setString(1, b);
if(rs.next())
float s;
s=rs.getFloat("balance");
return s;
else return 0 ;
import java.util.Scanner;
public class ZH {
private String zh;//账户
private String password;//密码
private String openTime;//开户时间
private String sfz;//身份证号
private double je;//存款金额
public String getZh() {
return zh;
public void setZh(String zh) {
this.zh = zh;
public String getPassword() {
return password;
public void setPassword(String password) {
this.password = password;
public String getOpenTime() {
return openTime;
public void setOpenTime(String openTime) {
this.openTime = openTime;
public String getSfz() {
return sfz;
public void setSfz(String sfz) {
this.sfz = sfz;
public double getJe() {
return je;
public void setJe(double je) {
this.je = je;
//存款方法
public void ck(double je){
this.je=this.je+je;//存入的金额加上原有的金额
//取款方法
public void qk(double je){
if(jethis.je){//取款金额大于余额
System.out.println("存款余额不足");
}else{
this.je=this.je-je;//原有的金额减去取出的金额
ZH zh = new ZH();//初始化一个账户信息
zh.setJe(10000.0);//向zh账户添加余额
zh.setZh("zhangsan");//向zh账户添加账号
System.out.println("欢迎光临模拟银行");
Scanner scan = new Scanner(System.in);
int count=0;//记录输入错误的次数
while(1==1){//循环
System.out.println("请输入账号");
String zhm=scan.next();
System.out.println("请输入密码");
String mm=scan.next();
if(zhm.equals(zh.getZh()) mm.equals(zh.getPassword())){//输入的信息与zh账户信息的密码和账号一致
while(1==1){
String cz=scan.next();
switch (Integer.parseInt(cz)) {
case 1:
System.out.println("请输入存款金额(输入小数)");
double ckje=scan.nextDouble();
zh.ck(ckje);
System.out.println("实施存款:"+ckje+"元,当前余额为"+zh.getJe()+"元");
break;
System.out.println("请输入取款金额(输入小数)");
double qkje=scan.nextDouble();
zh.qk(qkje);
System.out.println("实施取款:"+qkje+"元,当前余额为"+zh.getJe()+"元");
default:
System.out.println("退出操作");
System.out.println("已输入错误三次,账号被锁");
break;//结束循环
System.out.println("账号或密码错误,请重新输入");
count++;//错误一次count+1
continue;//进入下次循环
public?class?Account?{
protected?String?accId;
protected?String?name;
protected?double?money;
public?Account?(String?accId,String?name){
this(accId,name,0);
public?Account?(String?accId,String?name,double?money){
this.accId?=?accId;
this.name?=?name;
this.money?=?money;
public?void?saveMoney(double?money){
if(money?=?0){
System.out.println("存款金额必须大于0");
this.money?+=?money;
System.out.println("存款成功");
public?double?getMoney(double?money){
System.out.println("取款金额必须大于0");
return?0;
if(this.money?=?money){
System.out.println("余额不足,无法取款");
this.money?-=?money;
System.out.println("取款成功");
return?money;
public?double?getBalance(){
return?this.money;
protected?double?getOverdraft(){
//?实现了equals方法,list比较时才能正确
public?boolean?equals(Object?obj)?{
if(obj?==?null){
return?false;
if(this?==?obj){
return?true;
if(obj?instanceof?Account){
return?this.accId.equals(((Account)obj).accId);
public?String?toString()?{
return?"账户="?+?accId?+?",名字="?+?name?+?",余额="?+?money;
public?class?Bank?{
//?Account实现了equals方法,list查找时才能正确
private?ListAccount?usersAccounts;
public?Bank()?{
usersAccounts?=?new?ArrayListAccount();
public?void?addAccount(Account?account)?{
if?(usersAccounts.contains(account))?{
System.out.println("添加失败,不能添加同样的账户");
return;
usersAccounts.add(account);
public?boolean?delAccount(Account?account)?{
return?usersAccounts.remove(account);
public?boolean?delAccount(String?accId)?{
return?delAccount(new?Account(accId,?null));
public?boolean?existAccount(Account?account)?{
return?usersAccounts.contains(account);
public?boolean?existAccount(String?accId)?{
return?existAccount(new?Account(accId,?null));
public?Account?getAccount(String?accId){
return?usersAccounts.get(usersAccounts.indexOf(new?Account(accId,?null)));
public?double?getAllMoney()?{
//?不考虑是否溢出,只是把所有用户余额相加
double?result?=?0;
for?(Account?account?:?usersAccounts)?{
result?+=?account.getBalance();
return?result;
public?double?getAllOverdraft()?{
//?不考虑是否溢出
result?+=?account.getOverdraft();
public?int?getAccountNum()?{
return?usersAccounts.size();
public?int?getCreditAccountNum()?{
int?num?=?0;
//?instanceof?性能没有简单的方法快.
if?(account?instanceof?CreditAccount)?{
num++;
return?num;
public?int?getSavingAccountNum()?{
if?(account?instanceof?SavingAccount)?{
public?ListAccount?getAllAccount()?{
return?usersAccounts;
public?class?CreditAccount?extends?Account{
private?double?overdraft;
public?CreditAccount(String?accId,String?name){
super(accId,?name);
this.overdraft?=?1000;
public?CreditAccount(String?accId,String?name,double?money){
this(accId,?name,money,1000);
public?CreditAccount(String?accId,String?name,double?money,double?overdraft){
super(accId,?name,money);
this.overdraft?=?overdraft;
public?double?getMoney(double?money)?{
if(this.money?+?overdraft?=?money){
public?double?getOverdraft(){
return?overdraft;
return?"账户="?+?accId?+?",名字="?+?name?+?",余额="?+?money?+?",透支="?+?overdraft;
public?class?SavingAccount?extends?Account?{
public?SavingAccount(String?accId,?String?name)?{
public?SavingAccount(String?accId,?String?name,?double?money)?{
super(accId,?name,?money);
return?super.getMoney(money);
public?double?getOverdraft()?{
return?super.getOverdraft();
public?class?Test?{
private?static?Bank?bank?=?new?Bank();
public?static?void?main(String[]?args)?{
Test.genAccount();
//?开户
bank.addAccount(a1);
showNowAccount();
//?销户
bank.delAccount("1");
//?存款
acc.saveMoney(100);
//?取款
System.out.println("余额="?+?acc.getBalance());
acc.getMoney(100);
acc.getMoney(1000);
acc.getMoney(10000);
System.out.println(bank.getAccountNum());
System.out.println(bank.getAllMoney());
System.out.println(bank.getAllOverdraft());
System.out.println(bank.getCreditAccountNum());
System.out.println(bank.getSavingAccountNum());
public?static?void?genAccount(){
String?s?=?"1000?0000?0000?000";
Account?a?=?null;
for(int?i?=?1;?i?11;?i?++){
a?=?new?CreditAccount(s?+?String.valueOf(i),?"账户"?+?String.valueOf(i));
}?else?{
a?=?new?SavingAccount(s?+?String.valueOf(i),?"账户"?+?String.valueOf(i));
bank.addAccount(a);
public?static?void?showNowAccount(){
for(Account?account?:?bank.getAllAccount()){
System.out.println(account);
import java.util.Scanner; public class bank
{ int number,id; int year,month,day; float money; String name; void set(int y,int m,int d)
{ year=y; month=m; day=d; } public String toString()
{ return year+"年"+month+"月"+day+"日"; } public float money1(int n)
{ if(moneyx) return 0; money=money-x; return money; } public static void main(String args[])
以上就是土嘎嘎小编为大家整理的银行开户销户java代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!