JDBC练习题,用户信息管理,登录注册

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class UserTest {

	static Scanner s= new Scanner(System.in);
	static int id;//用户id不可更改
	public static void main(String[] args) throws Exception {
		
		System.out.println("#欢迎进入我的页面#\n输入功能对应的数字进行相应操作\n1:登录\t2:注册\t3:退出");
		int k=s.nextInt();
			if(k==1) {
				UserUtil.logIn();
			}
			if(k==2) {
				UserUtil.register();
			}
			if(k==3) {
				System.out.println("成功退出,程序终止");
				System.exit(0);
			}
		s.close();
	
	}	
	private static Connection getConnection() {
		
		try {
			//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//获得连接
			Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/java1710","root","0325");
			
			return con;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	/**
	 * 用户工具包,具有登录,注册,修改,查询,删除功能
	 */
	public static class UserUtil{
		static Connection con=getConnection();
		//查询数据中是否包含输入的用户名
		private static boolean checkName(String name) {
			try(PreparedStatement ps=con.prepareStatement("select username from t_user where username=?");
					){
				ps.setString(1, name);
				ResultSet rs=ps.executeQuery();
				if(rs.next()) {
					rs.close();
					return true;
				}
			}catch(Exception e) {
				e.printStackTrace();
			}
			return false;
		}
		/**
		 * 查询密码是否正确
		 * @param pwd
		 * @return
		 */
		private static boolean checkPwd(String pwd) {
			try(PreparedStatement ps = con.prepareStatement("SELECT PWD FROM T_USER WHERE pwd=? AND id=?");){
				ps.setString(1, pwd);
				ps.setInt(2, id);
				ResultSet rs=ps.executeQuery();
				if(rs.next()) {
					rs.close();
					return true;
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//如果该用户名不存在,返回false
			return false;
		}
		/**
		 * 检查用户名和密码信息
		 * @param name
		 * @param pwd
		 * @return
		 */
		private static boolean checkInfo(String name,String pwd) {
			try(PreparedStatement ps = con.prepareStatement("SELECT * FROM T_USER WHERE USERNAME=? AND PWD=? ");){
				ps.setString(1, name);
				ps.setString(2, pwd);
				ResultSet rs=ps.executeQuery();
				if(rs.next()) {
					id=rs.getInt("id");
					rs.close();
					return true;
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//如果该用户名不存在,返回false
			return false;
		}
		/**
		 * 登录,查询数据
		 */
		public static void logIn() {
			System.out.println("请输入用户名");
			String name=s.next();
			System.out.println("请输入密码");
			String pwd=s.next();
			if(checkInfo(name,pwd)) {
				System.out.println("登录成功,你可以使用以下功能");
				System.out.println("1:修改用户信息\t2:删除用户信息\t3:查询所有用户信息");
				int n=s.nextInt();
				if(n==1) {
					UserUtil.updateInfo();
				}
				if(n==2) {
					UserUtil.delete();
				}
				if(n==3) {
					UserUtil.select();
				}
				
			}else {
				System.out.println("密码或用户名输入错误,请重新登录");
				logIn();
			}
		}
		/**
		 * 注册(向数据库中插入数据)
		 */
		public static void register(){

			try(PreparedStatement ps=con.prepareStatement("insert into t_user values(null,?,?,?)")){
				//设置不自动提交
				con.setAutoCommit(false);
				System.out.println("请输入注册用户名");
				String name=s.next();
				//判断用户名是否已存在
				while(checkName(name)) {
					System.out.println("该用户名已被占用,请重新输入");
					name=s.next();
				}
				System.out.println("请输入注册密码");
				String pwd=s.next();
				System.out.println("请输入邮箱(选填)");
				String email=s.next();
				ps.setString(1, name);
				ps.setString(2, pwd);
				ps.setString(3, email);
				ps.execute();
				con.commit();//提交注册信息
				System.out.println("注册成功,即将为你跳转登录界面......");
				logIn();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		public static void updateInfo(){

			try(PreparedStatement ps=con.prepareStatement("UPDATE T_USER SET USERNAME=?,PWD=?,EMAIL=? WHERE ID=?")){
				//设置不自动提交
				con.setAutoCommit(false);
				System.out.println("请输入新的用户名");
				String name=null;;
				//判断用户名是否已存在
				while(checkName((name=s.next()))) {
					System.out.println("该用户名已被占用,请重新输入");
	
				}
				System.out.println("请输入新的密码");
				String pwd=null;
				while(checkPwd((pwd=s.next()))) {
					System.out.println("新密码不能与原密码相同,请重新输入");
				}
				System.out.println("请输入新的邮箱");
				String email=s.next();
				ps.setString(1, name);
				ps.setString(2, pwd);
				ps.setString(3, email);
				ps.setInt(4, id);
				ps.execute();
				con.commit();//提交修改信息
				System.out.println("修改成功,下次登录有效");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		/**
		 * 查询功能
		 */
		private static void selectInfo() {
			try(PreparedStatement ps=con.prepareStatement("SELECT * FROM T_USER")){
				ResultSet rs=ps.executeQuery();
				while(rs.next()) {
					System.out.println("用户ID:"+rs.getInt(1)+"\t用户名:"+rs.getString(2));
	
				}
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		private static void selectInfo(String name) {
			try(PreparedStatement ps=con.prepareStatement("SELECT * FROM T_USER WHERE username=?")){
				ps.setString(1, name);
				ResultSet rs=ps.executeQuery();
				if(!rs.next()) {
					System.out.println("查询的用户不存在");
				}
				while(rs.next()) {
					System.out.println("用户ID:"+rs.getInt(1)+"\t用户名:"+rs.getString(2));
				}
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		public static void select() {
			System.out.println("-=-=-=-查询功能-=-=-=-\n1:查询全部\t2:根据用户名查询");
			int m=s.nextInt();
			if(m==1) {
				UserUtil.selectInfo();
			}
			if(m==2) {
				System.out.println("请输入要查询的用户名");
				String name=s.next();
				UserUtil.selectInfo(name);
			}
		}
		/**
		 * 删除用户信息
		 */
		public static void delete() {
			String sql="delete from table where id=?";
			try(PreparedStatement ps=con.prepareStatement(sql)){
				ps.setInt(1, id);
				System.out.println("成功删除当前登录用户数据");
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
}

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值