jdbc登录与注册

package com.homework;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import com.util.JDBCUtil;

import java.sql.Connection;

/*
 * */
public class Login2 {
    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        welcome();
    }

    public static void welcome() {

        System.out.println("1  登录");
        System.out.println("2  注册");
        System.out.println("请选择:");
        String number = scanner.nextLine();
        switch (Integer.parseInt(number)) {
        case 1:
            login();
            break;
        case 2:
            register();
            break;
        default:
            System.out.println("输入有误!");
            welcome();
            break;
        }
    }

    public static void login() {
        System.out.println("*****用户登录*******");
        System.out.println("请输入用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入密码:");
        String password = scanner.nextLine();
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select * from t_user where username=? and password=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.setString(2, password);
            rs = stat.executeQuery();
            // 创建表时指定了用户名唯一性约束
            if (rs.next()) {
                System.out.println("登录成功");
                int money = getMoney(username);
                System.out.println("你的账户余额是" + money + "元");
                while (true) {
                    loginWelcome(username);
                }
            } else {
                System.out.println("用户名或密码错误");
                login();
            }
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    private static void loginWelcome(String username) {
        System.out.println("1  修改密码");
        System.out.println("2  添加账户");
        System.out.println("3  查看账户余额");
        System.out.println("4  删除用户及账户");
        System.out.println("请选择:");
        String number = scanner.nextLine();
        switch (Integer.parseInt(number)) {
        case 1:
            updatePwd(username);
            break;
        case 2:
            addAccount2(getId(username));
            break;
        case 3:
            System.out.println("你的账户余额是" + getMoney(username)+ "元");
            break;
        case 4:
            deleteAccount(username);
            deleteUser(username);
            System.exit(0);
            break;
        default:
            System.out.println("输入有误!");
            loginWelcome(username);
            break;
        }
    }

    public static void register() {
        System.out.println("*****用户注册*******");
        System.out.println("请输入要注册的用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入要注册的密码:");
        String password = scanner.nextLine();
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "insert into t_user(username,password) values(?,?)";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.setString(2, password);
            int count = stat.executeUpdate();
            if(count>0) {
                System.out.println("注册成功!");
                addAccount(getId(username));
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("注册失败,用户名已存在");
            register();
        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 获取用户的id
    public static int getId(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        int id = 0;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select id from t_user where username=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            rs = stat.executeQuery();
            if (rs.next()) {
                id = rs.getInt("id");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return id;
        }
    }

    // 添加账户余额
    public static void addAccount(int id) {
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "insert into t_account values(null,10000,?)";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, id);
            int count = stat.executeUpdate();
            if(count>0) {
                System.out.println("添加账户余额成功!");
                login();
            }
            else {
                System.out.println("添加账户余额失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("添加账户余额失败");
        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 添加账户余额
    public static void addAccount2(int id) {
        System.out.println("输入金额");
        int money = Integer.parseInt(scanner.nextLine());
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "insert into t_account values(null,?,?)";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, money);
            stat.setInt(2, id);
            int count = stat.executeUpdate();
            if(count>0) {
                System.out.println("添加账户余额成功!");
            }
            else {
                System.out.println("添加账户余额失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 查询总余额
    public static int getMoney(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        int id = getId(username);
        int money = 0;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select sum(money) from t_account where u_id=?";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, id);
            rs = stat.executeQuery();
            if(rs.next()) {
                money= rs.getInt(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeConnect(rs, stat, conn);
            return money;
        }
    }

    // 修改密码
    public static void updatePwd(String username) {
        System.out.println("请输入旧密码");
        String oldpwd = scanner.nextLine();
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select * from t_user where username=? and password=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.setString(2, oldpwd);
            rs = stat.executeQuery();
            // 创建表时指定了用户名唯一性约束
            if (rs.next()) {
                JDBCUtil.closeConnect(rs, stat, conn);
                System.out.println("请输入新密码");
                String pwd = scanner.nextLine();
                Connection conn2 = null;
                PreparedStatement stat2 = null;
                ResultSet rs2 = null;
                try {
                    conn2 = JDBCUtil.getConnect();
                    String sql2 = "update t_user set password=? where username=?";
                    stat2 = conn2.prepareStatement(sql2);
                    stat2.setString(1, pwd);
                    stat2.setString(2, username);
                    int count2 = stat2.executeUpdate();
                    if(count2>0) {
                        System.out.println("密码修改成功!");
                    }
                    else {
                        System.out.println("密码修改失败");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    try {
                        JDBCUtil.closeConnect(rs2, stat2, conn2);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            } else {
                System.out.println("密码错误");
            }
        } catch (Exception e) {
            e.printStackTrace();

        }

    }

    // 删除账户
    public static void deleteAccount(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        int id = getId(username);
        try {
            conn = JDBCUtil.getConnect();
            String sql = "delete from t_account where u_id=?";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, id);
            int count=stat.executeUpdate();
            if(count>0) {
                System.out.println("删除账户成功!");
            }
            else {
                System.out.println("删除账户失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeConnect(null, stat, conn);
        }
    }

    // 删除用户
    public static void deleteUser(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "delete from t_user where username=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.executeUpdate();
            System.out.println("删除用户成功");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeConnect(null, stat, conn);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/zys2019/p/11211578.html
今日推荐