欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java简易登录注册小程序

程序员文章站 2024-03-11 21:49:07
登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象。本例中如果有注释不详细的地方,详见其它博客。 功能介绍:简单的登录注册系统,使用了数据库sqlser...

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

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

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