Java简易登录注册小程序

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

功能介绍:简单的登录注册系统,使用了数据库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();
  }
 } 

} 

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

(0)

相关推荐

  • JAVA实现简单系统登陆注册模块

    前期准备 首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足.技术方面的进步大都都需要从实践中出来的. 功能:用户注册功能+系统登录功能+生成验证码 知识:窗体设计.数据库设计.JavaBean封装属性.JDBC实现对数据库的连接.验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息.随机获得字符串.对文本可用字符数的控制等 设计的模块预览图: 彩色验证码预览图: 所用数据库:MySQL 数据库设计

  • java中servlet实现登录验证的方法

    login.java: 复制代码 代码如下: package com.ncu;import java.io.PrintWriter; import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class login extends HttpServlet{ public void do

  • Java+mysql用户注册登录功能

    最近刚刚开始学习mysql,所以就写了这个很基本的用户注册登录的功能来练练手.虽然这个很简单,但是我还是看到了自己学习的进步,很开心.哈哈哈. 这里要注意数据表的建立: 直接上代码吧,里面注释很详细了. package client; import java.sql.*; import java.util.*; public class Client { /** * 用以实现用户的注册和登录 */ private static String username;//用户登录注册的姓名 privat

  • java模拟post请求登录猫扑示例分享

    复制代码 代码如下: import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;im

  • java(jsp)整合discuz同步登录功能详解

    最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块,正好在开源中国上看到了一个利用discuz的UCenter功能实现同步登录的开源项目(https://code.google.com/p/discuz-ucenter-api-for-java/),不禁大喜,于是花了几个小时照着教程操作了一遍,居然很轻松的成功了,特写此文以做纪念.. Uenter是Comsenz旗下各个产品之间信息直接传递的一个桥梁,通过UCenter站长可以无缝整合Comsenz系列产品,实现用户的一站

  • 注册验证java代码[针对上篇文章]

    http://www.jb51.net/article/19801.htm 复制代码 代码如下: <%@ page contentType="text/html; charset=gb2312" language="java"%> <%@ page import="java.sql.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/

  • JAVA简单链接Oracle数据库 注册和登陆功能的实现代码

    复制代码 代码如下: //User 用户的基本信息,也是USERINFO表中的3个列package 登陆判断; public class User { private String name;  private String loginname;  private String loginpsw;  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;

  • Servlet+JavaBean+JSP打造Java Web注册与登录功能

    采用Java Web所实现的MVC结构图如下,其中控制器部分采用Servlet来实现,模型部分采用JavaBean来实现,而大部分的视图采用Jsp页面来实现. 思想基础 JSP+JavaBean两层结构工作原理应该是比较熟悉的,也比较好理解. 但是有一点必须要清楚就是用户通过浏览器来发送网页的请求,此请求到达服务器后在服务器端查找对应的网页,如果是首次请求(第二次就不用解释执行了),对于JSP来说要生成Servlet,然后通过Servlet引擎来执行 Servlet,把调用JavaBean的结果

  • java中使用Filter控制用户登录权限具体实例

    学jsp这么长时间,做的项目也有七八个了,可所有的项目都是用户登录就直接跳转到其拥有权限的页面,或者显示可访问页面的链接.使用这种方式来幼稚地控制访问权限.从来没有想过如果我没有登录,直接输入地址也可以直接访问用户的页面的. 在jsp中权限的控制是通过Filter过滤器来实现的,所有的开发框架中都集成有Filter,如果不适用开发框架则有如下实现方法: LoginFilter.java 复制代码 代码如下: public class LoginFilter implements Filter {

  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

随机推荐