[Java练习]简单的登录系统

来源:互联网 发布:excel 筛选重复的数据 编辑:程序博客网 时间:2024/05/21 13:56

main

package com.company;import java.sql.SQLException;public class Main{    public static void main(String[] args) throws SQLException    {        mainInterface();    }    public static void mainInterface() throws SQLException    {        System.out.println("欢迎使用用户管理系统!");        System.out.println("=========================");        System.out.println("用户登录--------------------1");        System.out.println("用户注册--------------------2");        System.out.println("退出程序--------------------3");        int input = Io.inputn();        switch (input)        {            case 1:                login();                break;            case 2:                register();                break;            case 3:                return;            default:                System.out.println("输入错误,请重新输入!");                mainInterface();        }    }    public static void login() throws SQLException    {        Users u1 = new Users();        System.out.println("请输入您的用户名:");        u1.setUsername(Io.input());        System.out.println("请输入您的密码:");        u1.setPassword(Io.input());        if (Dbutil.query(u1))        {            System.out.println("登录成功!");            System.out.println(u1.getUsername() + "您好:\t\t\t您的权限是:\t" + u1.getPer());            UserInterface ui =new UserInterface();            if (u1.getPermissions() == 0) ui.useri(u1);            else ui.admini();        } else        {            System.out.println("用户名或密码不正确!请重新输入!");            login();        }    }    public static void register() throws SQLException    {        Users u1 = new Users();        System.out.println("请输入您的用户名:");        u1.setUsername(Io.input());        System.out.println("请输入您的密码:");        u1.setPassword(Io.input());        System.out.println("请输入您的E-mail:");        u1.setEmail(Io.input());        Dbutil.insert(u1);        System.out.println("注册成功!");        mainInterface();    }}

UserInterface 

package com.company;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;/** * Created by ttc on 16-10-31. */public class UserInterface{    public static void useri(Users u) throws SQLException    {        System.out.println("1.修改自己的信息");        System.out.println("2.查询自己的信息");        System.out.println("3.退出");        int i = Io.inputn();        switch (i)        {            case 1:                System.out.println("您当前的信息是:");                Io.output(u);                System.out.println("请输入要修改的姓名:");                u.setUsername(Io.input());                System.out.println("请输入要修改的密码:");                u.setPassword(Io.input());                System.out.println("请输入要修改的邮箱:");                u.setEmail(Io.input());                Dbutil.update(u);                System.out.println("修改成功!");                useri(u);                break;            case 2:                System.out.println("您当前的信息是:");                Io.output(u);                useri(u);                break;            case 3:                break;            default:                System.out.println("输入错误!请重新输入!");                useri(u);        }    }    public static void admini() throws SQLException    {        System.out.println("1.添加用户");        System.out.println("2.删除用户");        System.out.println("3.修改用户");        System.out.println("4.查询用户");        System.out.println("5.程序退出");        int i = Io.inputn();        switch (i)        {            case 1:                Users u1 = new Users();                System.out.println("请输入用户名:");                u1.setUsername(Io.input());                System.out.println("请输入密码:");                u1.setPassword(Io.input());                System.out.println("请输入E-mail:");                u1.setEmail(Io.input());                u1.setPermissions(1);                Dbutil.insert(u1);                System.out.println("添加用户成功!");                admini();                break;            case 2:                System.out.println("请输入要删除的用户ID:");                Dbutil.delete(Io.inputn());                admini();                break;            case 3:                System.out.println("请输入要修改的用户ID:");                Users u3 = new Users();                u3.setId(Io.inputn());                System.out.println("请输入要修改的用户名:");                u3.setUsername(Io.input());                System.out.println("请输入要修改的用户密码:");                u3.setPassword(Io.input());                System.out.println("请输入要修改的用户邮箱:");                u3.setEmail(Io.input());                System.out.println("权限:");                u3.setPermissions(Io.inputn());                Dbutil.update(u3);                System.out.println("修改成功!");                admini();                break;            case 4:                adminquery();                break;            case 5:                break;            default:                System.out.println("输入错误!请重新输入!");                admini();        }    }    private static void adminquery() throws SQLException    {        System.out.println("1.查询全部用户");        System.out.println("2.根据ID查询用户");        System.out.println("3.根据姓名查询用户");        System.out.println("请输入要做的操作:");        int i = Io.inputn();        switch (i)        {            case 1:                List<Users> l = new ArrayList<>();                Dbutil.query(l);                for (Users u : l)                {                    Io.output(u);                    System.out.println("==================================================================");                }                admini();                break;            case 2:                System.out.println("请输入要查询的ID:");                Users u2 = new Users();                u2.setId(Io.inputn());                Dbutil.query(u2.getId(),u2);                Io.output(u2);                System.out.println("==================================================================");                admini();                break;            case 3:                System.out.println("请输入要查询的用户名(支持模糊查询):");                List<Users> l3 = new ArrayList<>();                Dbutil.query(Io.input(), l3);                for (Users u : l3)                {                    Io.output(u);                    System.out.println("==================================================================");                }                admini();                break;        }    }}


Dbutil

package com.company;import java.sql.*;import java.util.List;/** * Created by ttc on 16-10-31. */public class Dbutil{    private static String strUrl = "jdbc:oracle:thin:@localhost:1521:orcl1";    static    {        try        {            Class.forName("oracle.jdbc.driver.OracleDriver");        } catch (ClassNotFoundException e)        {            e.printStackTrace();        }    }    private static Connection connect() throws SQLException    {        Connection con = DriverManager.getConnection(strUrl, "scott", "a123");        return con;    }    private static void close(PreparedStatement ps, Connection con, ResultSet rs) throws SQLException    {        rs.close();        ps.close();        con.close();    }    private static void close(PreparedStatement ps, Connection con) throws SQLException    {        ps.close();        con.close();    }    public static void insert(Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("INSERT INTO USERS VALUES (ID_seq.nextval,?,?,?,?)");        ps.setString(1, u.getUsername());        ps.setString(2, u.getPassword());        ps.setString(3, u.getEmail());        ps.setInt(4, u.getPermissions());        ps.executeUpdate();        close(ps, con);    }    public static boolean query(Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE username = ? and password = ?");        ps.setString(1, u.getUsername());        ps.setString(2, u.getPassword());        ResultSet rs = ps.executeQuery();        boolean flag = rs.next();        if (flag)        {            u.setId(rs.getInt("id"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));        }        close(ps,con,rs);        return flag;    }    public static void query(List<Users> l) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users ");        ResultSet rs = ps.executeQuery();        while (rs.next())        {            Users u = new Users();            u.setId(rs.getInt("id"));            u.setUsername(rs.getString("username"));            u.setPassword(rs.getString("password"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));            l.add(u);        }        close(ps,con,rs);    }    public static boolean query(int id,Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE id = ? ");        ps.setInt(1, id);        ResultSet rs = ps.executeQuery();        boolean flag = rs.next();        if (flag)        {            u.setId(rs.getInt("id"));            u.setUsername(rs.getString("username"));            u.setPassword(rs.getString("password"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));        }        close(ps,con,rs);        return flag;    }    public static void query(String un, List<Users> l) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users where username like ?");        ps.setString(1, "%"+un+"%");        ResultSet rs = ps.executeQuery();        while (rs.next())        {            Users u = new Users();            u.setId(rs.getInt("id"));            u.setUsername(rs.getString("username"));            u.setPassword(rs.getString("password"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));            l.add(u);            rs.next();        }        close(ps,con,rs);    }    public static void update(Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement                ("UPDATE users SET username = ?, password = ?, email = ? where id = ?");        ps.setString(1, u.getUsername());        ps.setString(2, u.getPassword());        ps.setString(3, u.getEmail());        ps.setInt(4, u.getId());        ps.executeUpdate();        close(ps,con);    }    public static void delete(int id) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("DELETE FROM users WHERE id = ?");        ps.setInt(1,id);        ps.executeUpdate();        close(ps,con);    }}


Users

package com.company;import java.sql.*;import java.util.List;/** * Created by ttc on 16-10-31. */public class Dbutil{    private static String strUrl = "jdbc:oracle:thin:@localhost:1521:orcl1";    static    {        try        {            Class.forName("oracle.jdbc.driver.OracleDriver");        } catch (ClassNotFoundException e)        {            e.printStackTrace();        }    }    private static Connection connect() throws SQLException    {        Connection con = DriverManager.getConnection(strUrl, "scott", "a123");        return con;    }    private static void close(PreparedStatement ps, Connection con, ResultSet rs) throws SQLException    {        rs.close();        ps.close();        con.close();    }    private static void close(PreparedStatement ps, Connection con) throws SQLException    {        ps.close();        con.close();    }    public static void insert(Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("INSERT INTO USERS VALUES (ID_seq.nextval,?,?,?,?)");        ps.setString(1, u.getUsername());        ps.setString(2, u.getPassword());        ps.setString(3, u.getEmail());        ps.setInt(4, u.getPermissions());        ps.executeUpdate();        close(ps, con);    }    public static boolean query(Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE username = ? and password = ?");        ps.setString(1, u.getUsername());        ps.setString(2, u.getPassword());        ResultSet rs = ps.executeQuery();        boolean flag = rs.next();        if (flag)        {            u.setId(rs.getInt("id"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));        }        close(ps,con,rs);        return flag;    }    public static void query(List<Users> l) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users ");        ResultSet rs = ps.executeQuery();        while (rs.next())        {            Users u = new Users();            u.setId(rs.getInt("id"));            u.setUsername(rs.getString("username"));            u.setPassword(rs.getString("password"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));            l.add(u);        }        close(ps,con,rs);    }    public static boolean query(int id,Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE id = ? ");        ps.setInt(1, id);        ResultSet rs = ps.executeQuery();        boolean flag = rs.next();        if (flag)        {            u.setId(rs.getInt("id"));            u.setUsername(rs.getString("username"));            u.setPassword(rs.getString("password"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));        }        close(ps,con,rs);        return flag;    }    public static void query(String un, List<Users> l) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("SELECT * FROM users where username like '%?%'");        ps.setString(1, un);        ResultSet rs = ps.executeQuery();        while (rs.next())        {            Users u = new Users();            u.setId(rs.getInt("id"));            u.setUsername(rs.getString("username"));            u.setPassword(rs.getString("password"));            u.setEmail(rs.getString("email"));            u.setPermissions(rs.getInt("permissions"));            l.add(u);            rs.next();        }        close(ps,con,rs);    }    public static void update(Users u) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement                ("UPDATE users SET username = ?, password = ?, email = ? where id = ?");        ps.setString(1, u.getUsername());        ps.setString(2, u.getPassword());        ps.setString(3, u.getEmail());        ps.setInt(4, u.getId());        ps.executeUpdate();        close(ps,con);    }    public static void delete(int id) throws SQLException    {        Connection con = connect();        PreparedStatement ps = con.prepareStatement("DELETE FROM users WHERE id = ?");        ps.setInt(1,id);        ps.executeUpdate();        close(ps,con);    }}

Io

package com.company;import java.sql.SQLException;import java.util.Scanner;import java.util.regex.Pattern;/** * Created by ttc on 16-11-1. */public class Io{    public static String input()    {        Scanner sc = new Scanner(System.in);        return sc.nextLine();    }    public static int inputn() throws SQLException    {        Scanner sc = new Scanner(System.in);        String str = sc.nextLine();        if(isNum(str))  return Integer.decode(str);        else        {            System.out.println("请输入数字!");            Main.mainInterface();        }        return -1;    }    public static void output(Users u)    {        System.out.println(u);    }    private static boolean isNum(String str)    {        String reg = "^\\d+$";        return Pattern.compile(reg).matcher(str).find();    }}

SQL语句:

CREATE TABLE USERS (ID NUMBER(10) PRIMARY KEY,username VARCHAR2(20) NOT NULL,PASSWORD VARCHAR2(20)  NOT NULL,email VARCHAR2(30)  NOT NULL,permissions NUMBER(1) DEFAULT 0,CONSTRAINT users_un_uk UNIQUE(username));CREATE SEQUENCE id_seq INCREMENT BY 1 START WITH 1;INSERT INTO USERS VALUES (id_seq.nextval,'ADMIN','123456','a@a.a',1);COMMIT;



0 0