首页 > 编程 > Java > 正文

Java简易登录注册小程序

2019-11-26 13:38:54
字体:
来源:转载
供稿:网友

登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象。本例中如果有注释不详细的地方,详见其它博客。

功能介绍:简单的登录注册系统,使用了数据库sqlserver、单例模式、正则表达式以及图形化开发等知识。

1、在登录界面,可以登录或者注册用户。 注册用户界面,按照正则表达式规定的格式要求来输入信息,若有误,则重新输入。
2、点击注册,首先连接SQLserver数据库,连接成功则会判断该用户名是否已经存在,若存在,则给出提示。反之则进行注册。
3、登录界面,点击登录按钮时,首先与数据库建立连接。按照用户名和密码来向数据库中查找,若有,则登录成功。反之给出提示。
4、利用单例模式,实现了只创建类SQLserver的一个对象,大大节省了内存开销 。
程序完整代码见:https://github.com/chaohuangtianjie994/A-login-register-System
5、基于此,可以进行大量的拓展功能。 

代码如下:

UserRegister.java  登录界面。

package package1; /*  * 功能:登录界面带着注册功能,弹出注册界面。  * 将注册的信息保存在数据库中,并且可以进行登录操作。  * author:ywq  */ import javax.swing.*;  import java.awt.*; import java.awt.event.*; import java.sql.*;  public class UserRegister extends JFrame implements ActionListener{    //定义登录界面的组件   JButton jb1,jb2,jb3=null;   JRadioButton jrb1,jrb2=null;   JPanel jp1,jp2,jp3=null;   JTextField jtf=null;   JLabel jlb1,jlb2=null;   JPasswordField jpf=null;        public static void main(String[] args)  {   UserRegister ur=new UserRegister();  }    public UserRegister()  {   //创建组件    //创建组件   jb1=new JButton("登录");   jb2=new JButton("注册");   jb3=new JButton("退出");   //设置监听   jb1.addActionListener(this);   jb2.addActionListener(this);   jb3.addActionListener(this);      jlb1=new JLabel("用户名:");   jlb2=new JLabel("密 码:");      jtf=new JTextField(10);   jpf=new JPasswordField(10);      jp1=new JPanel();   jp2=new JPanel();   jp3=new JPanel();      jp1.add(jlb1);   jp1.add(jtf);      jp2.add(jlb2);   jp2.add(jpf);      jp3.add(jb1);   jp3.add(jb2);   jp3.add(jb3);   this.add(jp1);   this.add(jp2);   this.add(jp3);      this.setVisible(true);   this.setResizable(false);   this.setTitle("注册登录界面");   this.setLayout(new GridLayout(3,1));   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   this.setBounds(300, 200, 300, 180);        }   @Override  public void actionPerformed(ActionEvent e) {      //监听各个按钮   if(e.getActionCommand()=="退出")   {    System.exit(0);   }else if(e.getActionCommand()=="登录")   {    //调用登录方法    this.login();   }else if(e.getActionCommand()=="注册")   {    //调用注册方法    this.Regis();   }     }    //注册方法   public void Regis() {          this.dispose(); //关闭当前界面    new UI(); //打开新界面           }   //登录方法  public void login() {      SQLserver s=new SQLserver();   s.ConnectSQL();   s.SQLverify(jtf.getText(), jpf.getText());      this.jtf.setText("");   this.jpf.setText("");     }  } 

UI.java   用于注册的页面显示。使用了正则表达式来规定输入的内容。注册时候,需要首先判断用户名是否存在,若存在,则给出提示,反之进行注册。

package package1;  import java.awt.event.*; import java.awt.*;  import javax.swing.*;  /*  * 注册界面。  */ class UI extends JFrame implements ActionListener{   //定义组件  JFrame jf;  JPanel jp;  JLabel jl1,jl2,jl3,jl4;  JTextField jtf1,jtf2,jtf3,jtf4;  JButton jb1,jb2;    public UI()  {   //初始化组件   jf=new JFrame();   jp=new JPanel();   jl1=new JLabel("请输入用户名:");   jtf1=new JTextField(10);   jtf1.setToolTipText("用户名必须为3-6位字母_或者数字");   jl2=new JLabel("请输入密码:");   jtf2=new JTextField(10);   jtf2.setToolTipText("密码必须为6位字母_或者数字");   jl3=new JLabel("请输入姓名:");   jtf3=new JTextField(10);   jtf3.setToolTipText("姓名必须汉字2-4位");   jl4=new JLabel("请输入学号:");   jtf4=new JTextField(10);   jtf4.setToolTipText("学号必须为3-6位数字");      jb1=new JButton("返回");   jb1.setToolTipText("点我返回登录界面哦");   jb2=new JButton("注册");   jb1.addActionListener(this);   jb2.addActionListener(this);      jp.setLayout(new GridLayout(5,2));      jp.add(jl1);   jp.add(jtf1);      jp.add(jl2);   jp.add(jtf2);      jp.add(jl3);   jp.add(jtf3);      jp.add(jl4);   jp.add(jtf4);      jp.add(jb1);   jp.add(jb2);      this.add(jp);   this.setTitle("注册界面");   this.setBounds(200, 100, 250, 150);   this.setVisible(true);   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //  this.setResizable(false);           }           public void actionPerformed(ActionEvent e) {     if(e.getActionCommand()=="返回")   {    this.dispose();    new UserRegister(); //   System.out.println("-------");       }else if(e.getActionCommand()=="注册")   {     //调用注册方法    this.zhuce();       }     }  public void zhuce()  {   String regex1="//w{3,6}"; //用户名必须是3-6位   boolean flag1=jtf1.getText().matches(regex1);      String regex2="//w{6}"; //密码必须是6位   boolean flag2=jtf2.getText().matches(regex2);      String regex3="[//u4e00-//u9fa5]{2,4}"; //姓名必须是汉字2-4个字   boolean flag3=jtf3.getText().matches(regex3);      String regex4="//d{3,6}"; //学号必须是3-6位   boolean flag4=jtf4.getText().matches(regex4);    //  if(jtf1.getText()==null||jtf2.getText()==null||jtf3.getText()==null||jtf4.getText()==null)   if(flag1==false)   {    JOptionPane.showMessageDialog(null, "用户名填写错误,必须为3-6位字母_或者数字", "提示信息", JOptionPane.WARNING_MESSAGE);    jtf1.setText("");   }else if(flag2==false)   {    JOptionPane.showMessageDialog(null, "密码填写错误,必须为6位字母_或者数字", "提示信息", JOptionPane.WARNING_MESSAGE);    jtf2.setText("");   }else if(flag3==false)   {    JOptionPane.showMessageDialog(null, "姓名填写错误,必须汉字2-4位", "提示信息", JOptionPane.WARNING_MESSAGE);    jtf3.setText("");   }else if(flag4==false)   {    JOptionPane.showMessageDialog(null, "学号填写错误,必须为3-6位数字", "提示信息", JOptionPane.WARNING_MESSAGE);    jtf4.setText("");   }else   {       //调用注册方法/先检查要注册的用户名是否存在     SQLserver ss=new SQLserver();     ss.ConnectSQL();     ss.ZhuceVerify(jtf1.getText());     //   ss.UserRegis(jtf1.getText(),jtf2.getText(),jtf3.getText(), jtf4.getText());    this.jtf1.setText("");    this.jtf2.setText("");    this.jtf3.setText("");    this.jtf4.setText("");       }  }   } 

SQLserver.java实现了与数据库的连接以及查询验证等各个功能。

package package1;  import java.sql.*;  import javax.swing.JOptionPane; /*  * 与数据库相关的操作,单独封装成类  */  class SQLserver {   Connection ct;  PreparedStatement ps;  ResultSet rs;  String user,pwd;    //将连接数据库的方法封装为一个方法  public void ConnectSQL()  {   try {    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动        ct=DriverManager.getConnection("jdbc:odbc:ywq"); //得到连接        System.out.println("已成功连接数据库...");       } catch (Exception e) {    // TODO Auto-generated catch block    e.printStackTrace();   }  }    //注册用户的方法  public void UserRegis(String a,String b,String c,String d)  {   //创建火箭车   try {    ps=ct.prepareStatement("insert into users values(?,?,?,?)");    ps.setString(1,a);    ps.setString(2,b);    ps.setString(3,c);    ps.setString(4,d);        //执行    int i=ps.executeUpdate();    if(i==1)    {     JOptionPane.showMessageDialog(null, "注册成功","提示消息",JOptionPane.WARNING_MESSAGE);         }else    {     JOptionPane.showMessageDialog(null, "注册失败","提示消息",JOptionPane.ERROR_MESSAGE);    }           } catch (SQLException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }  }   // 登录验证方法  public void SQLverify(String a,String b)  {   try {    ps=ct.prepareStatement("select * from users where 用户名=? and 密码=? ");    ps.setString(1, a);    ps.setString(2, b);        // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集    rs = ps.executeQuery();        if(rs.next())    {     user = rs.getString(1);     pwd = rs.getString(2);     JOptionPane.showMessageDialog(null, "登录成功!!!", "提示消息", JOptionPane.WARNING_MESSAGE);     System.out.println("成功获取到密码和用户名from数据库");     System.out.println(user + "/t" + pwd + "/t");    }else    {     JOptionPane.showMessageDialog(null, "用户名或者密码错误,请重新输入!", "提示消息", JOptionPane.ERROR_MESSAGE);         }       } catch (SQLException e) {        e.printStackTrace();   }  }    //注册验证方法,判断用户名是否已经存在  public void ZhuceVerify(String a)  {   try {    ps=ct.prepareStatement("select * from users where 用户名=?"); //   System.out.println(ps);    ps.setString(1, a);        rs=ps.executeQuery();    if(rs.next())    {     JOptionPane.showMessageDialog(null, "该用户名已经存在", "提示信息", JOptionPane.WARNING_MESSAGE);    }else    { //    进行注册     UI ui=new UI();     this.UserRegis(ui.jtf1.getText(),ui.jtf2.getText(),ui.jtf3.getText(),ui.jtf4.getText());    }       } catch (SQLException e) {        e.printStackTrace();   }  }           } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表