当前位置:   article > 正文

Java桌面应用(2)---注册以及随机账号生成_随机生成帐号

随机生成帐号

一、工具介绍

1、Random

Java中的Random类是一个用于生成随机数的辅助类。它可以用来生成伪随机数序列,通过不同的种子值可以生成不同的随机数序列。

Random类提供了多个方法来生成随机数,如nextInt()用于生成一个int类型的随机数,nextLong()用于生成一个long类型的随机数,nextDouble()用于生成一个double类型的随机数等等。

在使用Random类时,需要创建一个Random对象,并给它一个种子值。种子值可以是任意的long类型整数,如果不指定种子值,则使用系统当前时间作为默认种子值。通过相同的种子值创建的Random对象将生成相同的随机数序列。

代码中的应用

  1. Random rand = new Random();
  2. int num1 = rand.nextInt(10000)+202400000;
  3. String num=Integer.toString(num1);

2、JDBC

JDBC(Java Database Connectivity)是一种用于在Java程序中连接和操作数据库的API(Application Programming Interface)。

JDBC允许Java应用程序通过数据库驱动程序与各种数据库进行交互。它提供了一组用于执行SQL查询、更新数据和管理数据库连接的类和接口。

JDBC的主要功能包括:

1. 连接数据库:JDBC允许应用程序与数据库建立连接,通过提供数据库的URL、用户名和密码等信息来连接数据库。

2. 执行SQL查询:JDBC提供了执行SQL查询语句的方法,应用程序可以通过执行查询语句来获取数据库中的数据。

3. 更新数据:JDBC允许应用程序执行SQL更新语句,如插入、更新和删除数据。

4. 管理数据库连接:JDBC提供了管理数据库连接的方法,包括打开和关闭数据库连接、事务管理和连接池等功能。

通过JDBC,Java程序可以与各种数据库进行交互,如MySQL、Oracle、SQL Server等。开发人员可以使用标准的JDBC API来编写数据库相关的代码,无需关注具体数据库的实现细节。

总的来说,JDBC提供了一种方便、可靠的方式来连接和操作数据库,使Java应用程序能够有效地与数据库进行交互。

代码中的应用

 1.连接数据库

有报错则添加serverTimezone=UTC,无报错可省略,本意为设置时区

  1. package conn;
  2. import java.sql.*;
  3. public class DataBase {
  4. // 数据库连接获取方法
  5. public static Connection getConn() {
  6. Connection conn = null;
  7. try {
  8. Class.forName("com.mysql.cj.jdbc.Driver");
  9. conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/[自己的数据库名]?&serverTimezone=UTC", "root", "root");
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. return conn;
  14. }
  15. }

2.操作数据库

  1. package Dao;
  2. import conn.DataBase;
  3. import java.sql.Connection;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. public class SelectDao {
  7. // 用于查询的数据库操作方法
  8. public static ResultSet look(String sql){
  9. ResultSet rs = null;
  10. Connection conn;
  11. Statement stm;
  12. try {
  13. conn= DataBase.getConn();
  14. stm=conn.createStatement();
  15. rs=stm.executeQuery(sql);
  16. }catch (Exception e){
  17. e.printStackTrace();
  18. }
  19. return rs;
  20. }
  21. }

二、方法构思

  1. 第一步,在首页点击注册按钮时,即可生成随机账号
  2. 第二步,在数据库中进行查询,查询条件为生成的随机账号
  3. 第三步,若无重复,返回值到UI界面进行插入

三、代码

1、UI代码

这里布局使用了setBounds进行固定的布局

  1. package UI;
  2. import Dao.UpdateDao;
  3. import service.UserGet;
  4. import service.MyMessage;
  5. import javax.swing.*;
  6. import java.awt.*;
  7. public class Reg extends JFrame {
  8. public Reg(){
  9. JFrame rf = new JFrame("个人通讯录");
  10. rf.setLayout(null);
  11. rf.setResizable(false);
  12. JLabel lb1=new JLabel("您的账号是:");
  13. lb1.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  14. JLabel lb2=new JLabel("请设置密码:");
  15. lb2.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  16. JTextField t1= new JTextField();
  17. t1.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  18. JPasswordField t2=new JPasswordField();
  19. t2.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  20. JLabel lb3 = new JLabel("设密保问题:");
  21. lb3.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  22. JTextField t3=new JTextField();
  23. t3.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  24. JLabel lb4=new JLabel("密保的答案:");
  25. lb4.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  26. JTextField t4=new JTextField();
  27. t4.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  28. JButton btn = new JButton("确认");
  29. btn.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  30. JButton btn1 = new JButton("清空");
  31. btn1.setFont(new Font("楷体",Font.CENTER_BASELINE,24));
  32. rf.setSize(800,600);
  33. t2.setEchoChar('*');
  34. lb1.setBounds(190,100,160,40);
  35. t1.setBounds(370,100,200,40);
  36. lb2.setBounds(190,150,160,40);
  37. t2.setBounds(370,150,200,40);
  38. lb3.setBounds(190,200,160,40);
  39. t3.setBounds(370,200,200,40);
  40. lb4.setBounds(190,250,160,40);
  41. t4.setBounds(370,250,200,40);
  42. btn.setBounds(245,300,100,40);
  43. btn1.setBounds(415,300,100,40);
  44. rf.add(lb1);
  45. rf.add(t1);
  46. rf.add(lb2);
  47. rf.add(t2);
  48. rf.add(lb3);
  49. rf.add(t3);
  50. rf.add(lb4);
  51. rf.add(t4);
  52. rf.add(btn);
  53. rf.add(btn1);
  54. rf.setLocationRelativeTo(null);
  55. rf.setVisible(true);
  56. rf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  57. String temp=UserGet.temp();//在此调用工具类
  58. t1.setText(temp);
  59. btn1.addActionListener(e -> {
  60. t2.setText("");
  61. t3.setText("");
  62. t4.setText("");
  63. });
  64. btn.addActionListener(e -> {
  65. String pwd = new String(t2.getPassword());
  66. String who = t3.getText();
  67. String it = t4.getText();
  68. String sql="insert into user values('"+temp+"','"+pwd+"','"+who+"','"+it+"')";
  69. if(UpdateDao.upData(sql)>0){
  70. new MyMessage("创建账户成功!您的账号为 "+temp+" 请牢记!");
  71. rf.dispose();
  72. new LoginIn();
  73. }else {
  74. new MyMessage("创建账户失败!");
  75. }
  76. });
  77. }
  78. }

2、生成账号代码

  1. package service;
  2. import Dao.SelectDao;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.util.Random;
  6. public class UserGet {
  7. // 创建用户的工具类,用户名是不同的随机生成的,此类就是一个随机生成用户名及查重的类,用户名以2024开头
  8. public static String temp(){
  9. String sql = "select username from user";
  10. ResultSet rs = SelectDao.look(sql);//在此调用查询语句
  11. Random rand = new Random();
  12. int num1 = rand.nextInt(10000)+202400000;//在此可以控制开头数字
  13. String num=Integer.toString(num1);
  14. int flag=0;
  15. try {
  16. while (rs.next()){
  17. if (num.equals(rs.getString("username"))){
  18. flag+=1;
  19. break;
  20. }
  21. }
  22. if (flag>0){
  23. temp();
  24. }else {
  25. return num;
  26. }
  27. }catch (Exception e1){
  28. e1.printStackTrace();
  29. }finally {
  30. try {
  31. rs.close();
  32. } catch (SQLException throwables) {
  33. throwables.printStackTrace();
  34. }
  35. }
  36. return "";
  37. }
  38. }

3、数据库查询操作代码

  1. package Dao;
  2. import conn.DataBase;
  3. import java.sql.Connection;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. public class SelectDao {
  7. // 用于查询的数据库操作方法
  8. public static ResultSet look(String sql){
  9. ResultSet rs = null;
  10. Connection conn;
  11. Statement stm;
  12. try {
  13. conn= DataBase.getConn();
  14. stm=conn.createStatement();
  15. rs=stm.executeQuery(sql);
  16. }catch (Exception e){
  17. e.printStackTrace();
  18. }
  19. return rs;
  20. }
  21. }

四、效果图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/897113
推荐阅读
相关标签
  

闽ICP备14008679号