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;