因为项目要连接数据库,所以需要在数据库中创建表格来存储用户信息。如下为我创建的表格

java信用卡业务场景有哪些 java银行新用户业务办理_java


这里我建了四个数据.user为用户名,password为密码,name为姓名,money则为金钱余额

使用了以下命令建表

create table Bank_account(
			user varchar(128),
			password varchar(128) not null,
			name varchar(32) not null,
			money int(20) default 0,
			constraint Bank_account_userrules primary key(user)
		);

因为用户名不可以重复且不能为空,所以使用了主键
密码可以重复但是不能为空,所以加了not null;
姓名也可以重名,但是不能为空,也加了not null;
定义主类,这里我只留了一个while循环来让菜单不停止

package BankSystem;

import java.util.Scanner;

public class BankSystem {
	static Welcome welcome = new Welcome();
	static Scanner shuru = new Scanner(System.in);
	public static void main(String[] args) {
		while(true) {
			welcome.first();
	}
}
}

定义欢迎及选择界面,我将菜单分为开户及登录菜单以及登录后个人账户菜单
表格的话因为java和博客上效果不同,所以简略调整了一下
因为在选择选项时,scanner输入的类型是int,而如果不慎输入字符串会报异常,所以我用了一个while循环和trycatch解决
个人账户查询时,我先使用了查询命令,然后使用查询类返回的余额数进行增删,解决了遇到的存钱完后再接着取钱金额不对问题。

package BankSystem;

import java.util.Scanner;

public class Welcome {
	static Scanner shuru3 = new Scanner(System.in);
	static openaccount op = new openaccount();
	static loginaccount lo = new loginaccount();
	static Checkmoney um = new Checkmoney();
	static Updatemoney ud = new Updatemoney();
	static String login_user = null;
	static int money;
	public void first() {
		if(login_user==null) {
		System.out.println("-----------欢迎来到本银行-----------");
		System.out.println("***********************************");
		System.out.println("|          银行管理系统              |");
		System.out.println("|         *************             |");
		System.out.println("|1.开户                             |");
		System.out.println("|2.登录                             |");
		System.out.println("|3.退出                             |");
		System.out.println("***********************************");
		System.out.println("请输入你要进行的选项");
		while(true) {
		try {
			loginpd(shuru3.nextInt());
			break;
		} catch (Exception e) {
			System.out.println("输入选项错误,请重新输入");
			shuru3 = new Scanner(System.in);
		}
		}
		}else {
			second();
		}
	}
	public static void second() {
		System.out.println("-----------欢迎来到本银行-----------");
		System.out.println("***********************************");
		System.out.println("|          银行管理系统              |");
		System.out.println("|         *************             |");
		System.out.println("|1.存钱                             |");
		System.out.println("|2.取钱                             |");
		System.out.println("|3.查询                             |");
		System.out.println("|4.退出                             |");
		System.out.println("***********************************");
		System.out.println("请输入你要进行的选项");
		while(true) {
		try {
			accountcz(shuru3.nextInt());	
			break;
		} catch (Exception e) {
			System.out.println("输入选项错误,请重新输入");
			shuru3 = new Scanner(System.in);
		}
		}
	}
	
	public static void loginpd(int number) {
		switch (number) {
		case 1:
			op.openaccounts();
			break;
		case 2:
			loginaccount.login();
			login_user = loginaccount.login_username;
			break;
		case 3:
			System.out.println("成功退出本系统");
			shuru3.close();
			System.exit(0);
			break;
		default:
			System.out.println("输入的数字有误,请重新输入");
		}
	}
	public static void accountcz(int number) {
		switch (number) {
		case 1:
			um.modifymoney(login_user);
			ud.savemoney(login_user,um.returnmoney());
			break;
		case 2:
			um.modifymoney(login_user);
			ud.takemoney(login_user,um.returnmoney());
			break;
		case 3:
			um.modifymoney(login_user);
			money = um.returnmoney();
			System.out.println("账户余额为"+money+"元");
			break;
		case 4:
			System.out.println("成功退出本系统");
			login_user = null;
			break;
		default:
			System.out.println("输入的数字有误,请重新输入");
		}
	}
}

下面是开户类

package BankSystem;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class openaccount {
	public void openaccounts() {
		Scanner shuru1  = new Scanner(System.in);
		Connection conn = null;
		PreparedStatement ps = null;
		int count = 0;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			 String url = "jdbc:mysql://localhost:3306/BankSystem?useSSL=false&serverTimezone=UTC";
			 String user = "root";
			 String password = "123456";
			 String name = null;
			 conn = DriverManager.getConnection(url,user,password);
			 String sql_ins = "insert into bank_account(user,password,name,money) values(?,?,?,?)";
			 ps = conn.prepareStatement(sql_ins);
			 System.out.println("请输入账号名");
			 ps.setString(1,shuru1.nextLine());
			 System.out.println("请输入密码");
			 ps.setString(2,shuru1.nextLine());
			 System.out.println("请输入开户者姓名");
			 name = shuru1.nextLine();
			 ps.setString(3,name);
			 System.out.println("请输入存取金额");
			 int openmoney = shuru1.nextInt();
			 int temp;
			 if(openmoney >=10) {
				 temp  = openmoney - 10;
			 }else {
				 temp = 10- openmoney;
				 while(true) {
				 System.out.println("开户最低需要10元金额,您支付了"+openmoney+"元,还需要支付"+temp+"元,请继续支付");
				 openmoney = shuru1.nextInt()+openmoney;
				 if(openmoney >=10) {
					 temp  = openmoney - 10;
					 break;
				 }else {
					temp = 10-openmoney;
				}
				 }
			 }
			 ps.setInt(4,temp);
			 count = ps.executeUpdate();
			 System.out.println(name+"开户成功,账户余额为"+temp+"元");
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(ps != null) {
				try {
					ps.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
	}
	}
}

登录类,我以登录账户名为判断是否成功登录的标准,如果为Null,则说明此处没有登录成功,如果不是Null则说明登录成功

package BankSystem;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class loginaccount {
	static String login_username = null;
	public static void login(){
				Connection conn = null;
				ResultSet rs = null;
				PreparedStatement ps = null;
				boolean flag =false;
				boolean empty = false;
				Scanner shuru2 = new Scanner(System.in);
				System.out.println("请输入用户名");
				login_username = shuru2.nextLine();
				System.out.println("请输入密码");
				String login_password = shuru2.nextLine();
				try {
					Class.forName("com.mysql.cj.jdbc.Driver");
					conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/BankSystem?useSSL=false&serverTimezone=UTC","root","123456");
					String sql = "select user from bank_account where user = ? and password = ?";
					ps = conn.prepareStatement(sql);
					ps.setString(1,login_username);
					ps.setString(2,login_password);
					rs = ps.executeQuery();
					if(rs.next()) {
						flag = true;
					}
				} catch (Exception e) {
					e.printStackTrace();
				}finally {
					if(rs != null) {
						try {
							rs.close();
					}catch (Exception e) {
					e.printStackTrace();
				}
					}
					if(ps != null) {
						try {
							ps.close();
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
					if(conn != null) {
						try {
							conn.close();
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
			}
				if(flag==true) {
					System.out.println("登陆成功");
					
				}else {
					System.out.println("账户和密码错误或者账户不存在,请重新输入");
					login_username = null;
				}
	}
	public loginaccount(String login_username) {
		this.login_username = login_username;
	}
	public loginaccount() {
		
	}
}

查询金额类,这里添加了返回当前余额类,便于存钱与取钱

package BankSystem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class Checkmoney {
	static String login_user;
	static int money;
	static String sql;
	static Scanner shuru4 = new Scanner(System.in);
	public static int returnmoney() {
		return money;
	}
	public static void modifymoney(String login_user) {
		Connection conn = null;
		ResultSet rs = null;
		PreparedStatement ps = null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/BankSystem?useSSL=false&serverTimezone=UTC","root","123456");
			sql = "select money from bank_account where user = ?";
			ps = conn.prepareStatement(sql);
			ps.setString(1,login_user);
			rs = ps.executeQuery();
			while(rs.next()) {
				money = rs.getInt("money");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(rs != null) {
				try {
					rs.close();
			}catch (SQLException e) {
			e.printStackTrace();
		}
			}
			if(ps != null) {
				try {
					ps.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
	}
	}
}

存钱、取钱类
这里我加入了synchronized

package BankSystem;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Updatemoney {
	static int changemoney;
	static int money;
	static Scanner shuru5 = new Scanner(System.in);
	static String login_user;
	public static void updatemoney(String login_user,int money) {
		Connection conn = null;
		PreparedStatement ps = null;
		int count = 0;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/BankSystem?useSSL=false&serverTimezone=UTC","root","123456");
			String sql = "update bank_account set money = ?  where user = ?";
			ps = conn.prepareStatement(sql);
			ps.setInt(1,money);
			ps.setString(2,login_user);
			count = ps.executeUpdate();
		} catch (Exception e) {
				e.printStackTrace();
		}finally {
			if(ps != null) {
				try {
					ps.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
	}
	}
	public static synchronized void savemoney(String login_user,int money) {
		System.out.println("请输入要存入账户的金额");
		changemoney = shuru5.nextInt();
		if(changemoney>=0) {
			money = money + changemoney;
			updatemoney(login_user,money);
			System.out.println("成功存入"+changemoney+"元,账户余额为"+money+"元");
		}else {
			System.out.println("存入金额不正确,请重新输入");
		}
	}
	public static synchronized void takemoney(String login_user,int money) {
		System.out.println("请输入要取出的金额数");
		changemoney = shuru5.nextInt();
		if(money-changemoney>=0&&changemoney>=0) {
			money = money - changemoney;
			updatemoney(login_user,money);
			System.out.println("成功取出"+changemoney+"元,账户余额为"+money+"元");
		}else {
			int temp = changemoney -money;
			System.out.println("账户余额为"+money+"元,无法取出"+changemoney+"元,请重新输入");
		}
	}
	public Updatemoney() {
	}
}

最后附上代码实现图

1.

java信用卡业务场景有哪些 java银行新用户业务办理_System_02


2.

java信用卡业务场景有哪些 java银行新用户业务办理_java信用卡业务场景有哪些_03


3.

java信用卡业务场景有哪些 java银行新用户业务办理_java信用卡业务场景有哪些_04


4.

java信用卡业务场景有哪些 java银行新用户业务办理_java_05


5.

java信用卡业务场景有哪些 java银行新用户业务办理_sql_06


以上就是个人写的银行管理系统,有许多bug以及不妥之处,欢迎大佬帮我指出,不喜勿喷,谢谢!