Java简易登录注册小程序_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();
  }
 } 

} 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 登录
注册
java简易注册登录程序、微信小程序 登录注册、微信小程序简易教程、简易教程 小程序、简易小程序,以便于您获取更多的相关知识。

时间: 2024-10-30 16:54:39

Java简易登录注册小程序_java的相关文章

登录注册小程序显示成功但是数据库表里面没有显示注册的数据

问题描述 namespace学生信息管理系统{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbtn1_Click(objectsender,EventArgse){stringtbx1=textBox1.Text.Trim();stringtbx2=textBox2.Text.Trim();using(SqlConnectionconn=newSqlConnection(@"DataSou

java-我用Java写了一个验证教师身份登录的小程序

问题描述 我用Java写了一个验证教师身份登录的小程序 如下 为什么输出的psw和gs1相等但是message的值改变不了? public boolean checkTeacherInfo(String teacherID,String psw){ message=false; sql="select top 1 * from TeacherTab where teacherID=?"; try{ con=dbcon.getConnect(); pst=con.prepareState

《微信小程序开发入门精要》——第1章,第1.3节注册小程序账号

1.3 注册小程序账号在开发小程序之前,需要注册一个小程序账号,并用与账号绑定的手机微信扫描开发工具的二维码才能登录开发小程序的IDE(将在1.4节介绍).首先进入如下地址的页面.https://mp.weixin.qq.com 如果已经用微信公众号登录,请注销.然后单击右上角"立即注册"链接,进入注册页面.该页面有如图1-1所示的4个注册选项,分别是订阅号.服务号.小程序和企业号. ▲图1-1 注册类型 也就是说,这4个注册类型需要使用4个不同的账号,如果读者已经有了订阅号或其他账号

java-关于Java含有数据库的小程序打包问题

问题描述 关于Java含有数据库的小程序打包问题 我想把我用MyEclipse写的一个含有sqlsever数据库的Java小程序打包成jar包,然后放在桌面上可以双击打开,就像其他应用一样,但是我下载了sqlsever的驱动包,不知道如何把驱动包和程序一起打包成jar包,求好心大神帮助! 解决方案 http://blog.csdn.net/ljz2009y/article/details/7707237

Java版的QQ小程序

这是一个简单的java版的QQ小程序. 包括一个简单的服务器和一个简单的客户端. 运行时,先运行服务器,然后在运行客户端,就可以进行聊天了. 默认的配置是localhost,端口4545,更改ip就可以在两天电脑上进行聊天了. 目前不支持内网和外网之间的访问,也不支持多人聊天. 因为这只是一个简单的例子,感兴趣的同学可以通过改进,实现多人聊天和内外网之间的访问. 效果图: 下载地址:http://download.csdn.net/source/2958843 源代码: QQServer.jav

Java完美实现2048小游戏_java

完美地模仿了2048游戏,是根据网友的一个2048改的. Block.java import javax.swing.*; import java.awt.*; public class Block extends JLabel { private int value; public Block() { value = 0;//初始化值为0 setFont(new Font("font", Font.PLAIN, 40));//设定字体 setBackground(Color.gray

java 音频播放-applet小程序已经启动了为什么音频播放不出来呢

问题描述 applet小程序已经启动了为什么音频播放不出来呢 是因为URL所指文件不能放在本地项目文件夹中吗在elise下拜托拜托,很急 解决方案 applet,,,老古董了 !

java源码-竞赛小程序,我不太会写,求大神教我

问题描述 竞赛小程序,我不太会写,求大神教我 这个题目不太会写,求大神教思路给源码?????????????????????????? 解决方案 http://blog.csdn.net/ocean20/article/details/5017538 解决方案二: 解决问题分步走: 1.判断是否为方阵,判断每行相邻数据是否有相等的,有即非方阵,判断行数据相等应该会不需提供代码: 2.判断是否标准反正,判断第一行相邻数据是否差值等于1,判断第一列相邻数据差值是否等于1,应该会不需提供代码.

java编写贪吃蛇小游戏_java

废话不多说,直接奉上代码: Frame.java package snake; import java.awt.Graphics; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import