Java簡易登入註冊小程式_java

來源:互聯網
上載者:User

登入註冊小代碼,將學過的一些小知識融合在一起進行了使用,加深印象。本例中如果有注釋不詳細的地方,詳見其它部落格。

功能介紹:簡單的登入註冊系統,使用了資料庫sqlserver、單例模式、Regex以及圖形化開發等知識。

1、在登入介面,可以登入或者註冊使用者。 註冊使用者介面,按照Regex規定的格式要求來輸入資訊,若有誤,則重新輸入。
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   用於註冊的頁面顯示。使用了Regex來規定輸入的內容。註冊時候,需要首先判斷使用者名稱是否存在,若存在,則給出提示,反之進行註冊。

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();   }  }           } 

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.