javafx实现界面设计:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.scene.paint.*;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.text.TextBuilder;
import javafx.stage.Stage;
import java.util.ArrayList;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
GridPane pane = new GridPane();
pane.setAlignment(Pos.CENTER);
pane.setVgap(15);
pane.setHgap(10);
Scene scene = new Scene(pane, 400, 400);
primaryStage.setScene(scene);
primaryStage.setTitle("ATM");
Text text = TextBuilder.create().text("ATM机模拟").
font(Font.font("Tahoma", 30)).build();
text.setFill(new LinearGradient(0, 0, 1, 2, true, CycleMethod.REPEAT, new
Stop[]{new Stop(0, Color.AQUA), new Stop(0.5f, Color.RED)}));
text.setStrokeWidth(1);
text.setStroke(Color.BLACK);
pane.add(text, 0, 0, 2, 1);
primaryStage.show();
Button qu = new Button("模拟取/存款/转账");
Button tui = new Button("退出");
pane.add(qu, 1, 3);
pane.add(tui, 1, 4);
primaryStage.setOpacity(0.85);
//事件驱动
//取款
qu.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
YingLian yin1 = new withDraw();
card card1 = new card("6217000010041315709", "88888888");
card card2 = new card("6217000010041315715", "88888888");
card card3 = new card("6217000010041315718", "88888888");
account account1 = new account();
account1.count.add(card1);
account1.count.add(card2);
account1.zhanghu = "3217000010041315709";
account account2 = new account();
account2.count.add(card3);
account2.zhanghu = "3217000010041315715";
user use1 = new user();
use1.user.add(account1);
use1.user.add(account2);
use1.name = "杨过";
bank bank1 = new bank();
bank1.name = "中国建设银行";
bank1.atmJi.add(1);
bank1.atmJi.add(2);
bank1.atmJi.add(3);
bank1.atmJi.add(4);
bank1.ren.add(use1);
bank1.rate = 0.02;
yin1.ying.add(bank1);
card card4 = new card("621700001005132007", "88888888");
account account3 = new account();
account3.count.add(card4);
account3.zhanghu = "3217000010051320007";
user use2 = new user();
use2.user.add(account3);
use2.name = "郭靖";
bank1.ren.add(use2);
bank bank2 = new bank();
bank2.name = "中国工商银行";
bank2.rate = 0.03;
yin1.ying.add(bank2);
bank2.atmJi.add(5);
bank2.atmJi.add(6);
card card5 = new card("6222081502001312389", "88888888");
card card6 = new card("6222081502001312390", "88888888");
card card7 = new card("6222081502001312399", "88888888");
card card8 = new card("6222081502001312400", "88888888");
account account4 = new account();
account4.zhanghu = "3222081502001312389";
account4.count.add(card5);
// account4.money=10000;
account account5 = new account();
// account5.money=10000;
account5.zhanghu = "3222081502001312390";
account5.count.add(card6);
account account6 = new account();
// account6.money=10000;
account6.zhanghu = "3222081502001312399";
account6.count.add(card7);
account6.count.add(card8);
user user3 = new user();
user3.name = "张无忌";
user3.user.add(account4);
user3.user.add(account5);
user3.user.add(account6);
bank2.ren.add(user3);
yin1.ying.add(bank2);
//张无忌的账户
card card9 = new card("6222081502051320785", "88888888");
card card10 = new card("6222081502051320786", "88888888");
account account7 = new account();
// account7.money=10000;
account7.zhanghu = "3222081502051320785";
account7.count.add(card9);
account account8 = new account();
// account8.money=10000;
account8.zhanghu = "3222081502051320786";
account8.count.add(card10);
user user4 = new user();
user4.name = "韦小宝";
user4.user.add(account7);
user4.user.add(account8);
bank2.ren.add(user4);
bank2.ren.add(user4);
//韦小宝的账户
card ka1 = new card("6640000010045442002", "88888888");
card ka2 = new card("6640000010045442003", "88888888");
account zhang1 = new account();
zhang1.zhanghu = "3640000010045442002";
zhang1.count.add(ka1);
zhang1.count.add(ka2);
zhang1.type = "贷款";
user user5 = new user();
user5.name = "张三丰";
user5.user.add(zhang1);
bank1.ren.add(user5);
//张三丰的账户
card ka3 = new card("6640000010045441009", "88888888");
card ka4 = new card("6630000010033431001", "88888888");
account zhang2 = new account();
account zhang3 = new account();
zhang2.type = "贷款";
zhang3.type = "贷款";
zhang2.zhanghu = "3640000010045441009";
zhang3.zhanghu = "3630000010033431001";
zhang2.count.add(ka3);
zhang3.count.add(ka4);
user user6 = new user();
user6.name = "令狐冲";
user user7 = new user();
user7.name = "乔峰";
user6.user.add(zhang2);
user7.user.add(zhang3);
bank2.ren.add(user6);
bank bank3 = new bank();
bank3.name = "中国农业银行";
yin1.ying.add(bank3);
bank3.ren.add(user7);
bank3.rate = 0.04;
bank3.atmJi.add(7);
bank3.atmJi.add(8);
bank3.atmJi.add(9);
bank3.atmJi.add(10);
bank3.atmJi.add(11);
//令狐冲 乔峰的账户
card ka5 = new card("6630000010033431008", "88888888");
account zhang4 = new account();
zhang4.count.add(ka5);
zhang4.zhanghu = "3630000010033431008";
zhang4.type = "贷款";
user user8 = new user();
user8.name = "洪七公";
user8.user.add(zhang4);
bank3.ren.add(user8);
///
GridPane pane1 = new GridPane();
pane1.setPadding(new Insets(80, 15, 15, 15));
pane1.setHgap(15);
pane1.setVgap(15);
// pane1.setBackground(new Background(new BackgroundFill(new ImagePattern(new Image)));
Scene scene1 = new Scene(pane1, 400, 480);
primaryStage.setTitle("存取款/转账");
primaryStage.setScene(scene1);
//BorderPane shang=new BorderPane();
Text text1 = TextBuilder.create().text("银行:").
font(Font.font("Tahoma", 20)).build();
text1.setFill(new LinearGradient(0, 0, 1, 2, true, CycleMethod.REPEAT, new
Stop[]{new Stop(0, Color.AQUA), new Stop(0.5f, Color.RED)}));
text1.setStrokeWidth(1);
text1.setStroke(Color.BLACK);
Text text2 = new Text("卡号:");
text2.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
pane1.add(text1, 0, 0);
String[] choices = {
"中国建设银行",
"中国工商银行",
"中国农业银行",
};
ComboBox<String> xuanze = new ComboBox<>();
xuanze.setPrefWidth(300);
xuanze.setValue("支持的银行列表如下:");
ObservableList<String> item = FXCollections.observableArrayList(choices);
xuanze.getItems().addAll(choices);
pane1.add(xuanze, 1, 0);
pane1.add(text2, 0, 1);
TextField kahao = new TextField();
TextField mima = new TextField();
TextField atm = new TextField();
TextField jin = new TextField();
kahao.setPromptText("输入卡号");
mima.setPromptText("输入密码");
atm.setPromptText("输入ATM机编号");
jin.setPromptText("输入金额");
pane1.add(kahao, 1, 1);
Text text3 = new Text("密码:");
text3.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
Text text4 = new Text("ATM机编号:");
text4.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
Text text5 = new Text("金额:");
text5.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
pane1.add(text3, 0, 2);
pane1.add(text4, 0, 3);
pane1.add(text5, 0, 4);
pane1.add(mima, 1, 2);
pane1.add(atm, 1, 3);
pane1.add(jin, 1, 4);
Button button = new Button("确定");
BackgroundFill backgroundFill = new BackgroundFill(Paint.valueOf("#8FBC8F"), new CornerRadii(20), Insets.EMPTY);
Background background = new Background(backgroundFill);
button.setBackground(background);
Button button1 = new Button("重新输入");
Button button2 = new Button("退出");
Button button3 = new Button("查询功能");
Button button4=new Button("转账功能");
button4.setBackground(background);
button3.setBackground(background);
button3.setOnAction(e -> {
GridPane pane2 = new GridPane();
pane2.setPadding(new Insets(100, 20, 20, 20));
pane2.setHgap(30);
pane2.setVgap(20);
pane2.setAlignment(Pos.CENTER);
Scene scene2 = new Scene(pane2, 440, 300);
primaryStage.setScene(scene2);
Text tex = new Text("卡号:");
text2.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
TextField chaxun = new TextField();
chaxun.setPromptText("输入卡号:");
pane2.add(tex, 0, 0);
pane2.add(chaxun, 1, 0);
Button que = new Button("确定");
que.setBackground(background);
Button clear = new Button("clear");
Button chu = new Button("退出");
chu.setBackground(background);
clear.setBackground(background);
pane2.add(que, 0, 1);
pane2.add(clear, 1, 1);
pane2.add(chu, 2, 1);
que.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
yin1.jianca(chaxun.getText());
yin1.Getbalance(chaxun.getText());
}
});
clear.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
chaxun.clear();
}
});
chu.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.exit(0);
}
});
});
button4.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
GridPane pane1 = new GridPane();
pane1.setPadding(new Insets(80, 15, 15, 15));
pane1.setHgap(15);
pane1.setVgap(15);
// pane1.setBackground(new Background(new BackgroundFill(new ImagePattern(new Image)));
Scene scene1 = new Scene(pane1, 400, 450);
primaryStage.setTitle("存取款/转账");
primaryStage.setScene(scene1);
//BorderPane shang=new BorderPane();
Text text2 = new Text("卡号:");
text2.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
pane1.add(text2, 0, 1);
TextField kahao = new TextField();
TextField mima = new TextField();
TextField atm = new TextField();
TextField jin = new TextField();
kahao.setPromptText("输入自己的卡号");
mima.setPromptText("输入密码");
atm.setPromptText("输入ATM机编号");
jin.setPromptText("输入金额");
pane1.add(kahao, 1, 1);
Text text3 = new Text("密码:");
text3.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
Text text4 = new Text("ATM机编号:");
text4.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
Text text5 = new Text("金额:");
text5.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
pane1.add(text3, 0, 2);
pane1.add(text4, 0, 3);
pane1.add(text5, 0, 4);
pane1.add(mima, 1, 2);
pane1.add(atm, 1, 3);
pane1.add(jin, 1, 4);
Button button = new Button("确定");
BackgroundFill backgroundFill = new BackgroundFill(Paint.valueOf("#8FBC8F"), new CornerRadii(20), Insets.EMPTY);
Background background = new Background(backgroundFill);
button.setBackground(background);
Button a=new Button("确定");
Text text = new Text("对方的卡号:");
text.setFont(Font.font("黑体", FontWeight.EXTRA_BOLD, 20));
TextField zhuan=new TextField();
zhuan.setPromptText("对方的卡号");
pane1.add(zhuan,1,5);
pane1.add(text,0,5);
pane1.add(a,0,6);
Button b=new Button("clear");
pane1.add(b,1,6);
b.setOnAction(e->{
kahao.clear();
mima.clear();
atm.clear();
jin.clear();
zhuan.clear();
});
a.setOnAction(e->{
yin1.jianca(kahao.getText());
yin1.jianca(zhuan.getText());
yin1.jiancamima(mima.getText());
yin1.jianAtm(kahao.getText(), Integer.parseInt(atm.getText()));
yin1.zhuangzhang(kahao.getText(), Integer.parseInt(atm.getText()), Double.parseDouble(jin.getText()), zhuan.getText());
yin1.Getbalance(kahao.getText());
});
}
});
button2.setBackground(background);
button1.setBackground(background);
button1.setOnAction(e -> {
kahao.clear();
mima.clear();
atm.clear();
jin.clear();
});
pane1.add(button, 0, 6);
pane1.add(button1, 1, 6);
pane1.add(button2, 0, 7);
pane1.add(button3, 1, 7);
pane1.add(button4,0,8);
///开始存取款操作
button2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.exit(0);
}
});
button.setOnAction(e -> {
yin1.jianca(kahao.getText());
yin1.jiancamima(mima.getText());
yin1.jianAtm(kahao.getText(), Integer.parseInt(atm.getText()));
yin1.jianjin(kahao.getText(), Integer.parseInt(atm.getText()), Double.parseDouble(jin.getText()));
yin1.showresult(kahao.getText(), Integer.parseInt(atm.getText()), Double.parseDouble(jin.getText()));
yin1.caozuo(kahao.getText(), Integer.parseInt(atm.getText()), Double.parseDouble(jin.getText()));
});
primaryStage.setOpacity(0.9);
primaryStage.show();
}
});
//
tui.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("已安全退出");
System.exit(0);
}
});
}
}
class card {
String num;
String MiMa;
public card(String num, String miMa) {
this.num = num;
MiMa = miMa;
}
}
class account {
ArrayList<card> count = new ArrayList<>();
String type = "wu";
String zhanghu;
double money = 10000;
}
class user {
ArrayList<account> user = new ArrayList<>();
String name;
}
class bank {
ArrayList<user> ren = new ArrayList<>();
ArrayList<Integer> atmJi = new ArrayList<>();
double rate = 0.0;
String name;
}
class YingLian {
ArrayList<bank> ying = new ArrayList<>();
void jianca(String num) {
}
void jianAtm(String num1, int tam) {
}
void jiancamima(String num) {
}
void jianjin(String num1, int num2, double num) {
}
void caozuo(String num1, int num2, double num) {
}
void Getbalance(String num1) {
}
void showresult(String num1, int num2, double num3) {
}
void zhuangzhang(String num1, int num2, double num3, String num4) {
}
}
class withDraw extends YingLian {
void jianca(String num1) {
int tem = 0;
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1))
tem = 1;
}
}
}
}
if (tem == 0) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,this card does not exist.");
alert.showAndWait();
System.exit(0);
}
}
void jianAtm(String num1, int num) {
if (!(num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6 || num == 7 || num == 8 || num == 9 || num == 10 || num == 11)) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,the ATM's id is wrong.");
alert.showAndWait();
System.exit(0);
}
}
void jiancamima(String num) {
if (!(num.equals("88888888"))) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,your password is wrong.");
alert.showAndWait();
System.exit(0);
}
}
void jianjin(String num1, int num2, double num) {
int temp = 0;
double rate = 0.0;
if (num2 == 1 || num2 == 2 || num2 == 3 || num2 == 4)
rate = 0.02;
else if (num2 == 5 || num2 == 6)
rate = 0.03;
else
rate = 0.04;
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
if (super.ying.get(i).ren.get(j).user.get(k).type.equals("贷款")) {
if (num > super.ying.get(i).ren.get(j).user.get(k).money) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m))
temp = 1;
}
if (temp == 0) { //跨行检查余额
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
if ((super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * (rate + 0.05) - super.ying.get(i).ren.get(j).user.get(k).money * rate) <= -50000) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,your account balance is insufficient.");
alert.showAndWait();
System.exit(0);
}
} else if (super.ying.get(i).ren.get(j).user.get(k).money <= 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - num * (rate + 0.05) < -50000) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,your account balance is insufficient.");
alert.showAndWait();
System.exit(0);
}
}
} else if (temp == 1) {
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * 0.05 <= -50000) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,your account balance is insufficient.");
alert.showAndWait();
System.exit(0);
}
} else {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - num * 0.05 <= -50000) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,your account balance is insufficient.");
alert.showAndWait();
System.exit(0);
}
}
}
}
} else if (super.ying.get(i).ren.get(j).user.get(k).type.equals("wu")) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m))
temp = 1;
}
if (temp == 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - num * rate < 0) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,your account balance is insufficient.");
alert.showAndWait();
System.exit(0);
}
} else if (temp == 1) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num < 0) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("出错");
alert.setContentText("Sorry,your account balance is insufficient.");
alert.showAndWait();
System.exit(0);
}
}
}
}
}
}
}
}
}
void caozuo(String num1, int num2, double num) {
int temp = 0;
double rate = 0.0;
if (num2 == 1 || num2 == 2 || num2 == 3 || num2 == 4)
rate = 0.02;
else if (num2 == 5 || num2 == 6)
rate = 0.03;
else if (num2 == 7 || num2 == 8 || num2 == 9 || num2 == 10 || num2 == 11)
rate = 0.04;
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
//取款情况很复杂
if (super.ying.get(i).ren.get(j).user.get(k).type.equals("贷款")) {
if (num > super.ying.get(i).ren.get(j).user.get(k).money) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m)) {
temp = 1;
break;
}
}
if (temp == 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
super.ying.get(i).ren.get(j).user.get(k).money = (super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * (rate + 0.05) - super.ying.get(i).ren.get(j).user.get(k).money * rate);
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
} else if (super.ying.get(i).ren.get(j).user.get(k).money <= 0) {
super.ying.get(i).ren.get(j).user.get(k).money = (super.ying.get(i).ren.get(j).user.get(k).money - num - num * (rate + 0.05));
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
}
} else if (temp == 1) {
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * 0.05;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
} else {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num - num * 0.05;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
}
}
}
//卡余额不足,用的贷款,利率增加0.05
else if (num <= super.ying.get(i).ren.get(j).user.get(k).money) { //卡余额足够,只是跨行
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m)) {
temp = 1;
break;
}
}
if (temp == 0) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num - num * rate;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
} else if (temp == 1) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
}
}
} else if (super.ying.get(i).ren.get(j).user.get(k).type.equals("wu")) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m)) {
temp = 1;
break;
}
}
if (temp == 0) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num - num * rate;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
} else if (temp == 1) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("当前余额为:¥" + str);
alert.showAndWait();
return;
}
}
}
}
}
}
}
}
void Getbalance(String num1) {
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("查询结果");
String str = String.format("%.2f", super.ying.get(i).ren.get(j).user.get(k).money);
alert.setContentText("业务 查询金额:¥" + str);
alert.showAndWait();
return;
}
}
}
}
}
}
void showresult(String num1, int num2, double num3) {
String name1 = null;
if (num2 == 1 || num2 == 2 || num2 == 3 || num2 == 4)
name1 = "中国建设银行";
else if (num2 == 5 || num2 == 6)
name1 = "中国工商银行";
else
name1 = "中国农业银行";
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
if (num2 <= 9) {
if (num3 > 0) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("操作结果");
String ming = String.format(super.ying.get(i).ren.get(j).name);
String yinming = String.format(name1);
String nummm = String.format("%d", num2);
String str = String.format("%.2f", num3);
alert.setContentText("业务:取款:" + ming + "在" + yinming + "的0" + nummm + "号ATM机上取款¥" + str);
alert.showAndWait();
return;
} else if (num3 <= 0) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("操作结果");
String ming = String.format(super.ying.get(i).ren.get(j).name);
String yinming = String.format(name1);
String nummm = String.format("%d", num2);
String str = String.format("%.2f", num3);
alert.setContentText("业务:存款:" + ming + "在" + yinming + "的0" + nummm + "号ATM机上取款¥" + str);
alert.showAndWait();
return;
}
} else if (num2 > 9) {
if (num3 > 0) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("操作结果");
String ming = String.format(super.ying.get(i).ren.get(j).name);
String yinming = String.format(name1);
String nummm = String.format("%d", num2);
String str = String.format("%.2f", num3);
alert.setContentText("业务:取款:" + ming + "在" + yinming + "的" + nummm + "号ATM机上取款¥" + str);
alert.showAndWait();
return;
} else if (num3 <= 0) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("操作结果");
String ming = String.format(super.ying.get(i).ren.get(j).name);
String yinming = String.format(name1);
String nummm = String.format("%d", num2);
String str = String.format("%.2f", num3);
alert.setContentText("业务:存款:" + ming + "在" + yinming + "的" + nummm + "号ATM机上取款¥" + str);
alert.showAndWait();
return;
}
}
}
}
}
}
}
}
void zhuangzhang(String num1, int num2, double num3, String num4) {
String name1 = null;
if (num2 == 1 || num2 == 2 || num2 == 3 || num2 == 4)
name1 = "中国建设银行";
else if (num2 == 5 || num2 == 6)
name1 = "中国工商银行";
else
name1 = "中国农业银行";
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
jianjin(num1, num2, num3);
super.ying.get(i).ren.get(j).user.get(k).money -= num3;
for (int a = 0; a < super.ying.size(); a++) {
for (int b = 0; b < super.ying.get(a).ren.size(); b++) {
for (int c = 0; c < super.ying.get(a).ren.get(b).user.size(); c++) {
for (int d = 0; d < super.ying.get(a).ren.get(b).user.get(c).count.size(); d++) {
if (super.ying.get(a).ren.get(b).user.get(c).count.get(d).num.equals(num4)) {
super.ying.get(a).ren.get(b).user.get(c).money+=num3;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("转账结果");
String ming = String.format(super.ying.get(i).ren.get(j).name);
String yinming = String.format(name1);
String nummm = String.format("%d", num2);
String str = String.format("%.2f", num3);
String str2=String.format(super.ying.get(a).ren.get(b).name);
String str3=String.format(super.ying.get(a).ren.get(b).user.get(c).zhanghu);
alert.setContentText("业务:转账:" + ming + "在" + yinming + "的" + nummm + "号ATM机上向" +str2+"的"+str3+"转账¥"+str);
alert.showAndWait();
return;
}
}
}
}
}
}
}
}
}
}
}
}
下面是无界面设计的代码实现,自行取舍:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
YingLian yin1 = new withDraw();
card card1 = new card("6217000010041315709", "88888888");
card card2 = new card("6217000010041315715", "88888888");
card card3 = new card("6217000010041315718", "88888888");
account account1 = new account();
account1.count.add(card1);
account1.count.add(card2);
account1.zhanghu = "3217000010041315709";
account account2 = new account();
account2.count.add(card3);
account2.zhanghu = "3217000010041315715";
user use1 = new user();
use1.user.add(account1);
use1.user.add(account2);
use1.name = "杨过";
bank bank1 = new bank();
bank1.name = "中国建设银行";
bank1.atmJi.add(1);
bank1.atmJi.add(2);
bank1.atmJi.add(3);
bank1.atmJi.add(4);
bank1.ren.add(use1);
bank1.rate = 0.02;
yin1.ying.add(bank1);
card card4 = new card("621700001005132007", "88888888");
account account3 = new account();
account3.count.add(card4);
account3.zhanghu = "3217000010051320007";
user use2 = new user();
use2.user.add(account3);
use2.name = "郭靖";
bank1.ren.add(use2);
bank bank2 = new bank();
bank2.name = "中国工商银行";
bank2.rate = 0.03;
yin1.ying.add(bank2);
bank2.atmJi.add(5);
bank2.atmJi.add(6);
card card5 = new card("6222081502001312389", "88888888");
card card6 = new card("6222081502001312390", "88888888");
card card7 = new card("6222081502001312399", "88888888");
card card8 = new card("6222081502001312400", "88888888");
account account4 = new account();
account4.zhanghu = "3222081502001312389";
account4.count.add(card5);
// account4.money=10000;
account account5 = new account();
// account5.money=10000;
account5.zhanghu = "3222081502001312390";
account5.count.add(card6);
account account6 = new account();
// account6.money=10000;
account6.zhanghu = "3222081502001312399";
account6.count.add(card7);
account6.count.add(card8);
user user3 = new user();
user3.name = "张无忌";
user3.user.add(account4);
user3.user.add(account5);
user3.user.add(account6);
bank2.ren.add(user3);
yin1.ying.add(bank2);
//张无忌的账户
card card9 = new card("6222081502051320785", "88888888");
card card10 = new card("6222081502051320786", "88888888");
account account7 = new account();
// account7.money=10000;
account7.zhanghu = "3222081502051320785";
account7.count.add(card9);
account account8 = new account();
// account8.money=10000;
account8.zhanghu = "3222081502051320786";
account8.count.add(card10);
user user4 = new user();
user4.name = "韦小宝";
user4.user.add(account7);
user4.user.add(account8);
bank2.ren.add(user4);
bank2.ren.add(user4);
//韦小宝的账户
card ka1 = new card("6640000010045442002", "88888888");
card ka2 = new card("6640000010045442003", "88888888");
account zhang1 = new account();
zhang1.zhanghu = "3640000010045442002";
zhang1.count.add(ka1);
zhang1.count.add(ka2);
zhang1.type = "贷款";
user user5 = new user();
user5.name = "张三丰";
user5.user.add(zhang1);
bank1.ren.add(user5);
//张三丰的账户
card ka3 = new card("6640000010045441009", "88888888");
card ka4 = new card("6630000010033431001", "88888888");
account zhang2 = new account();
account zhang3 = new account();
zhang2.type = "贷款";
zhang3.type = "贷款";
zhang2.zhanghu = "3640000010045441009";
zhang3.zhanghu = "3630000010033431001";
zhang2.count.add(ka3);
zhang3.count.add(ka4);
user user6 = new user();
user6.name = "令狐冲";
user user7 = new user();
user7.name = "乔峰";
user6.user.add(zhang2);
user7.user.add(zhang3);
bank2.ren.add(user6);
bank bank3 = new bank();
bank3.name = "中国农业银行";
yin1.ying.add(bank3);
bank3.ren.add(user7);
bank3.rate = 0.04;
bank3.atmJi.add(7);
bank3.atmJi.add(8);
bank3.atmJi.add(9);
bank3.atmJi.add(10);
bank3.atmJi.add(11);
//令狐冲 乔峰的账户
card ka5 = new card("6630000010033431008", "88888888");
account zhang4 = new account();
zhang4.count.add(ka5);
zhang4.zhanghu = "3630000010033431008";
zhang4.type = "贷款";
user user8 = new user();
user8.name = "洪七公";
user8.user.add(zhang4);
bank3.ren.add(user8);
//洪七公的账户
//System.out.println(bank3.ren.get(1).user.get(0).money);
String in = input.nextLine();
while (!(in.equals("#"))) {
String[] arr = in.split("\\s+");
if (arr.length == 1) {
yin1.jianca(arr[0]);
yin1.Getbalance(arr[0]);
} else {
yin1.jianca(arr[0]);
yin1.jiancamima(arr[1]);
yin1.jianAtm(arr[0], Integer.parseInt(arr[2]));
yin1.jianjin(arr[0], Integer.parseInt(arr[1]), Double.parseDouble(arr[3]));
yin1.showresult(arr[0], Integer.parseInt(arr[2]), Double.parseDouble(arr[3]));
yin1.caozuo(arr[0], Integer.parseInt(arr[2]), Double.parseDouble(arr[3]));
}
in = input.nextLine();
}
System.exit(0);
}
}
class card {
String num;
String MiMa;
public card(String num, String miMa) {
this.num = num;
MiMa = miMa;
}
}
class account {
ArrayList<card> count = new ArrayList<>();
String type = "wu";
String zhanghu;
double money = 10000;
}
class user {
ArrayList<account> user = new ArrayList<>();
String name;
}
class bank {
ArrayList<user> ren = new ArrayList<>();
ArrayList<Integer> atmJi = new ArrayList<>();
double rate = 0.0;
String name;
}
class YingLian {
ArrayList<bank> ying = new ArrayList<>();
void jianca(String num) {
}
void jianAtm(String num1, int tam) {
}
void jiancamima(String num) {
}
void jianjin(String num1, int num2, double num) {
}
void jiancakuahang(String num1, int num) {
}
void caozuo(String num1, int num2, double num) {
}
void Getbalance(String num1) {
}
void showresult(String num1, int num2, double num3) {
}
}
class withDraw extends YingLian {
void jianca(String num1) {
int tem = 0;
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1))
tem = 1;
}
}
}
}
if (tem == 0) {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
}
void jianAtm(String num1, int num) {
if (!(num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6 || num == 7 || num == 8 || num == 9 || num == 10 || num == 11)) {
System.out.println("Sorry,the ATM's id is wrong.");
System.exit(0);
}
}
void jiancamima(String num) {
if (!(num.equals("88888888"))) {
System.out.println("Sorry,your password is wrong.");
System.exit(0);
}
}
void jianjin(String num1, int num2, double num) {
int temp = 0;
double rate = 0.0;
if (num2 == 1 || num2 == 2 || num2 == 3 || num2 == 4)
rate = 0.02;
else if (num2 == 5 || num2 == 6)
rate = 0.03;
else
rate = 0.04;
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
if (super.ying.get(i).ren.get(j).user.get(k).type.equals("贷款")) {
if (num > super.ying.get(i).ren.get(j).user.get(k).money) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m))
temp = 1;
}
if (temp == 0) { //跨行检查余额
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
if ((super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * (rate + 0.05) - super.ying.get(i).ren.get(j).user.get(k).money * rate) <= -50000) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
} else if (super.ying.get(i).ren.get(j).user.get(k).money <= 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - num * (rate + 0.05) < -50000) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
}
} else if (temp == 1) {
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * 0.05 <= -50000) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
} else {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - num * 0.05 <= -50000) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
}
}
}
} else if (super.ying.get(i).ren.get(j).user.get(k).type.equals("wu")) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m))
temp = 1;
}
if (temp == 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num - num * rate < 0) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
} else if (temp == 1) {
if (super.ying.get(i).ren.get(j).user.get(k).money - num < 0) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
}
}
}
}
}
}
}
}
void caozuo(String num1, int num2, double num) {
int temp = 0;
double rate = 0.0;
if (num2 == 1 || num2 == 2 || num2 == 3 || num2 == 4)
rate = 0.02;
else if (num2 == 5 || num2 == 6)
rate = 0.03;
else if (num2 == 7 || num2 == 8 || num2 == 9 || num2 == 10 || num2 == 11)
rate = 0.04;
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
//取款情况很复杂
if (super.ying.get(i).ren.get(j).user.get(k).type.equals("贷款")) {
if (num > super.ying.get(i).ren.get(j).user.get(k).money) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m)) {
temp = 1;
break;
}
}
if (temp == 0) {
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
super.ying.get(i).ren.get(j).user.get(k).money = (super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * (rate + 0.05) - super.ying.get(i).ren.get(j).user.get(k).money * rate);
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
} else if (super.ying.get(i).ren.get(j).user.get(k).money <= 0) {
super.ying.get(i).ren.get(j).user.get(k).money = (super.ying.get(i).ren.get(j).user.get(k).money - num - num * (rate + 0.05));
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
}
} else if (temp == 1) {
if (super.ying.get(i).ren.get(j).user.get(k).money > 0) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num - (num - super.ying.get(i).ren.get(j).user.get(k).money) * 0.05;
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
}
else
{
super.ying.get(i).ren.get(j).user.get(k).money=super.ying.get(i).ren.get(j).user.get(k).money - num-num*0.05;
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
}
}
}
//卡余额不足,用的贷款,利率增加0.05
else if (num <= super.ying.get(i).ren.get(j).user.get(k).money) { //卡余额足够,只是跨行
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m)) {
temp = 1;
break;
}
}
if (temp == 0) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num - num * rate;
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
} else if (temp == 1) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num;
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
}
}
} else if (super.ying.get(i).ren.get(j).user.get(k).type.equals("wu")) {
for (int m = 0; m < super.ying.get(i).atmJi.size(); m++) {
if (num2 == super.ying.get(i).atmJi.get(m)) {
temp = 1;
break;
}
}
if (temp == 0) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num - num * rate;
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
} else if (temp == 1) {
super.ying.get(i).ren.get(j).user.get(k).money = super.ying.get(i).ren.get(j).user.get(k).money - num;
System.out.printf("当前余额为¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
}
}
}
}
}
}
}
}
void Getbalance(String num1) {
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
System.out.printf("业务:查询余额 ¥%.2f\n", super.ying.get(i).ren.get(j).user.get(k).money);
return;
}
}
}
}
}
}
void showresult(String num1, int num2, double num3) {
String name1 = null;
if (num2 == 1 || num2 == 2 || num2 == 3 || num2 == 4)
name1 = "中国建设银行";
else if (num2 == 5 || num2 == 6)
name1 = "中国工商银行";
else
name1 = "中国农业银行";
for (int i = 0; i < super.ying.size(); i++) {
for (int j = 0; j < super.ying.get(i).ren.size(); j++) {
for (int k = 0; k < super.ying.get(i).ren.get(j).user.size(); k++) {
for (int l = 0; l < super.ying.get(i).ren.get(j).user.get(k).count.size(); l++) {
if (super.ying.get(i).ren.get(j).user.get(k).count.get(l).num.equals(num1)) {
if (num2 <= 9) {
if (num3 > 0) {
System.out.println("业务:取款 " + super.ying.get(i).ren.get(j).name + "在" + name1 + "的0" + num2 + "号ATM机上取款¥" + String.format("%.2f", num3));
return;
} else if (num3 <= 0) {
System.out.println("业务:存款 " + super.ying.get(i).ren.get(j).name + "在" + name1 + "的0" + num2 + "号ATM机上存款¥" + String.format("%.2f", -1 * num3));
return;
}
} else if (num2 > 9) {
if (num3 > 0) {
System.out.println("业务:取款 " + super.ying.get(i).ren.get(j).name + "在" + name1 + "的" + num2 + "号ATM机上取款¥" + String.format("%.2f", num3));
return;
} else if (num3 <= 0) {
System.out.println("业务:存款 " + super.ying.get(i).ren.get(j).name + "在" + name1 + "的" + num2 + "号ATM机上存款¥" + String.format("%.2f", -1 * num3));
return;
}
}
}
}
}
}
}
}
}