java课程设计银行存取款操作系统
时间: 2023-12-02 22:02:47 浏览: 235
以下是一个Java银行存取款操作系统的简单实现,包括用户注册、登录、修改密码、余额查询、充值、转账和取款等功能。该系统使用MySQL数据库存储用户信息和交易记录,并采用正则表达式对用户输入进行规范化处理。
```java
import java.sql.*;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class BankSystem {
private static final String DB_URL = "jdbc:mysql://localhost:3306/bank";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "123456";
private static Connection conn = null;
private static Statement stmt = null;
private static ResultSet rs = null;
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
System.out.println("欢迎使用银行存取款管理系统!");
while (true) {
System.out.println("请选择操作:");
System.out.println("1.用户注册 2.用户登录 3.退出系统");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
register();
break;
case 2:
login();
break;
case 3:
System.out.println("感谢使用银行存取款管理系统!");
System.exit(0);
default:
System.out.println("无效的选择,请重新输入!");
}
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private static void register() throws SQLException {
System.out.println("请输入用户名:");
String username = scanner.nextLine();
if (usernameExists(username)) {
System.out.println("该用户名已存在,请重新输入!");
return;
}
System.out.println("请输入密码:");
String password = scanner.nextLine();
if (!isValidPassword(password)) {
System.out.println("密码不符合规范,请重新输入!");
return;
}
System.out.println("请输入初始余额:");
double balance = scanner.nextDouble();
scanner.nextLine();
String sql = "INSERT INTO users (username, password, balance) VALUES ('" + username + "', '" + password + "', " + balance + ")";
stmt.executeUpdate(sql);
System.out.println("注册成功!");
}
private static void login() throws SQLException {
System.out.println("请输入用户名:");
String username = scanner.nextLine();
if (!usernameExists(username)) {
System.out.println("该用户名不存在,请重新输入!");
return;
}
System.out.println("请输入密码:");
String password = scanner.nextLine();
String sql = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'";
rs = stmt.executeQuery(sql);
if (rs.next()) {
System.out.println("登录成功!");
while (true) {
System.out.println("请选择操作:");
System.out.println("1.修改密码 2.余额查询 3.充值 4.转账 5.取款 6.返回上一级");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
changePassword(username);
break;
case 2:
checkBalance(username);
break;
case 3:
deposit(username);
break;
case 4:
transfer(username);
break;
case 5:
withdraw(username);
break;
case 6:
return;
default:
System.out.println("无效的选择,请重新输入!");
}
}
} else {
System.out.println("密码错误,请重新输入!");
}
}
private static void changePassword(String username) throws SQLException {
System.out.println("请输入旧密码:");
String oldPassword = scanner.nextLine();
String sql = "SELECT * FROM users WHERE username='" + username + "' AND password='" + oldPassword + "'";
rs = stmt.executeQuery(sql);
if (rs.next()) {
System.out.println("请输入新密码:");
String newPassword = scanner.nextLine();
if (!isValidPassword(newPassword)) {
System.out.println("密码不符合规范,请重新输入!");
return;
}
sql = "UPDATE users SET password='" + newPassword + "' WHERE username='" + username + "'";
stmt.executeUpdate(sql);
System.out.println("密码修改成功!");
} else {
System.out.println("旧密码错误,请重新输入!");
}
}
private static void checkBalance(String username) throws SQLException {
String sql = "SELECT balance FROM users WHERE username='" + username + "'";
rs = stmt.executeQuery(sql);
if (rs.next()) {
double balance = rs.getDouble("balance");
System.out.println("当前余额为:" + balance);
}
}
private static void deposit(String username) throws SQLException {
System.out.println("请输入充值金额:");
double amount = scanner.nextDouble();
scanner.nextLine();
String sql = "UPDATE users SET balance=balance+" + amount + " WHERE username='" + username + "'";
stmt.executeUpdate(sql);
sql = "INSERT INTO transactions (username, type, amount) VALUES ('" + username + "', '充值', " + amount + ")";
stmt.executeUpdate(sql);
System.out.println("充值成功!");
}
private static void transfer(String username) throws SQLException {
System.out.println("请输入对方用户名:");
String toUsername = scanner.nextLine();
if (!usernameExists(toUsername)) {
System.out.println("该用户名不存在,请重新输入!");
return;
}
System.out.println("请输入转账金额:");
double amount = scanner.nextDouble();
scanner.nextLine();
String sql = "SELECT balance FROM users WHERE username='" + username + "'";
rs = stmt.executeQuery(sql);
if (rs.next()) {
double balance = rs.getDouble("balance");
if (balance < amount) {
System.out.println("余额不足,转账失败!");
return;
}
sql = "UPDATE users SET balance=balance-" + amount + " WHERE username='" + username + "'";
stmt.executeUpdate(sql);
sql = "UPDATE users SET balance=balance+" + amount + " WHERE username='" + toUsername + "'";
stmt.executeUpdate(sql);
sql = "INSERT INTO transactions (username, type, amount) VALUES ('" + username + "', '转账', -" + amount + ")";
stmt.executeUpdate(sql);
sql = "INSERT INTO transactions (username, type, amount) VALUES ('" + toUsername + "', '转账', " + amount + ")";
stmt.executeUpdate(sql);
System.out.println("转账成功!");
}
}
private static void withdraw(String username) throws SQLException {
System.out.println("请输入取款金额:");
double amount = scanner.nextDouble();
scanner.nextLine();
String sql = "SELECT balance FROM users WHERE username='" + username + "'";
rs = stmt.executeQuery(sql);
if (rs.next()) {
double balance = rs.getDouble("balance");
if (balance < amount) {
System.out.println("余额不足,取款失败!");
return;
}
sql = "UPDATE users SET balance=balance-" + amount + " WHERE username='" + username + "'";
stmt.executeUpdate(sql);
sql = "INSERT INTO transactions (username, type, amount) VALUES ('" + username + "', '取款', -" + amount + ")";
stmt.executeUpdate(sql);
System.out.println("取款成功!");
}
}
private static boolean usernameExists(String username) throws SQLException {
String sql = "SELECT * FROM users WHERE username='" + username + "'";
rs = stmt.executeQuery(sql);
return rs.next();
}
private static boolean isValidPassword(String password) {
String regex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(password);
return matcher.matches();
}
}
```
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)