要求:
在控制台实现一个用户管理系统,包含3个功能:
1.用户登录 2.注册 3.用户查询。
启动程序后,进入主菜单选项:
输出:“请选择您要操作的功能:1.用户登录 2.新用户注册 3所有用户查询: ”
功能说明:
1.用户登录:
请用户输入用户名和密码,接收后,去数据库的users表中查询是否存在该用户名。并输出合理的提示,例如:登录成功! 用户名不存在! 密码错误!
不论登录是否成功,都返回主菜单界面。
2.新用户注册 :
请用户输入用户名和密码,接收后,去数据库的users表中执行新增操作。并输出合理的提示,例如:注册成功! 用户名已存在!
3.所有用户查询:
该功能必须在用户登录后方可查看,如果用户已经登录成功,即可在控制台查看所有用户的所有信息。如果没有登录,提示:您还没有登录呢,无权查看用户信息!
先创建数据库
-- 这里用的数据库是mysql
CREATE TABLE users(
id INT PRIMARY KEY AUTO_INCREMENT,-- 给id添加主键和自增长
userName VARCHAR(20) UNIQUE,-- 给userName唯一
PASSWORD VARCHAR(20)
);
INSERT INTO users VALUES(NULL,'张三','aaa111'),(NULL,'李四','bbb222'),(NULL,'王五','ccc333')
代码:
jdbc.properties文件:
url=jdbc:mysql://localhost:3306/db1?characterEncoding=utf8
//这里写自己的账号密码
user=root
password=123456
//mysql5.0以后可以不用写驱动
driver=com.mysql.cj.jdbc.Driver
JDBCUtils代码:
import java.io.FileReader;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
static {
//读取资源文件,获取值
try {
//1.创建Properties集合类
Properties pro = new Properties();
//获取src路径下的文件方式-->ClassLoader
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("com/Db/jdbc.properties");
String path = res.getPath();
//2.加载文件
pro.load(new FileReader(path));
//3.获取数据,赋值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//4.测试驱动
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//获取连接 return 连接对象
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
//释放资源
public static void close(Statement stmt, Connection conn){
close(null,stmt,conn);
}
/**
* 释放资源
* @param stmt
* @param conn
*/
public static void close(ResultSet rs, Statement stmt, Connection conn){
if( rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
登录注册查询代码:
import com.Db.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class Crm {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
//是否登录的标志
boolean state = false;
do {
System.out.println("请选择您要操作的功能:1.登录 2.新用户注册 3.所有用户的查询:");
int select = sc.nextInt();
switch (select){
case 1:
System.out.println("请输入用户名:");
String userName = sc.next();
System.out.println("请输入密码:");
String password = sc.next();
//调用登录
if (login(userName,password)){
System.out.println("登陆成功!");
state=true;
}else {
System.out.println("用户名或密码输入错误!");
}
break;
case 2:
System.out.println("请输入用户名:");
String addName = sc.next();
System.out.println("请输入密码:");
String addPassword = sc.next();
//调用注册
if (register(addName,addPassword)==1){
System.out.println("注册成功!");
}
break;
case 3:
//调用查询
if (state){
query();
}else {
System.out.println("您还没登录呢,无权查看用户信息!");
}
break;
default:
System.err.println("请输入正确的数字!");
}
}while (true);
}
//登录
public static boolean login(String userName,String password){
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//获取连接对象
conn = JDBCUtils.getConnection();
//定义sql
String sql="select * from users where userName=? and password=?";
//获取连接sql对象
pstmt = conn.prepareStatement(sql);
//给占位符赋值
pstmt.setString(1,userName);
pstmt.setString(2,password);
//执行查询,不需要传递sql
rs = pstmt.executeQuery();
//判断,如果有下一行,则返回true
return rs.next();
} catch (Exception e) {
e.printStackTrace();
}finally {
//释放资源
JDBCUtils.close(rs,pstmt,conn);
}
return false;
}
//注册
public static int register(String addName,String addPassword){
Connection conn=null;
PreparedStatement pstmt=null;
try {
//获取连接对象
conn = JDBCUtils.getConnection();
//定义sql
String sql="insert into users values (null,?,?)";
//获取连接sql对象
pstmt = conn.prepareStatement(sql);
//给占位符赋值
pstmt.setString(1,addName);
pstmt.setString(2,addPassword);
//执行查询,不需要传递sql
int i = pstmt.executeUpdate();
//判断,成功为1,失败为0,因为数据库里userName添加了唯一属性,所以我们不用自己判断
return i;
} catch (Exception e) {
System.out.println("用户名已存在!");
}finally {
//释放资源
JDBCUtils.close(pstmt,conn);
}
return 0;
}
//查询
public static void query(){
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//获取连接对象
conn = JDBCUtils.getConnection();
//定义sql
String sql = "select * from users";
//获取连接sql对象
pstmt=conn.prepareStatement(sql);
//执行查询,不需要传递sql
rs = pstmt.executeQuery();
//循环遍历
while (rs.next()){
System.out.println(rs.getInt("id")+"--"+rs.getString("userName")+"--"+rs.getString("password"));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//释放资源
JDBCUtils.close(rs,pstmt,conn);
}
}
}
运行结果图片


本文将指导你如何在控制台上实现一个简单的用户管理系统,包括用户登录验证、新用户注册和查询功能,使用MySQL数据库进行交互,并通过JDBC进行连接操作。
472





