English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Javaの簡単なログイン/登録アプリ

小さなコードのログイン登録で、学んだ知識を統合して使用し、印象を深めました。この例で詳細なコメントがない場合には、他のブログを参照してください。

機能紹介:シンプルなログイン登録システムで、SQLserver、シングルトンパターン、正規表現、グラフィカル開発などを使用しています。

1、ログインインターフェースでは、ログインまたはユーザー登録ができます。ユーザー登録インターフェースでは、正規表現で指定された形式に従って情報を入力し、誤りがある場合には再入力します。
2、登録をクリックすると、まずSQLserverデータベースに接続します。接続が成功すると、そのユーザー名が既存しているかどうかを判断し、既存している場合にはアラートを出します、そうでない場合には登録を行います。
3、ログインインターフェースでログインボタンをクリックすると、まずデータベースと接続します。ユーザー名とパスワードでデータベースに検索し、存在する場合にはログイン成功、そうでない場合にはアラートを出します。
4、シングルトンパターンを使用して、SQLserverの1つのオブジェクトのみを作成し、メモリコストを大幅に削減しました。
プログラムの完全なコードは以下の通りです: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="\\d{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(); 
  =new JLabel("学号を入力してください:");1=new JLabel("ユーザー名を入力してください:"); 
  jtf1.setToolTipText("学生番号は10); 
  jtf1.setToolTipText("ユーザー名は3-6=new JLabel("名前を入力してください:"); 
  =new JLabel("学号を入力してください:");2.setToolTipText("パスワードは 
  jtf2.setToolTipText("学生番号は10); 
  jtf2桁のアルファベット_または数字でなければなりません6=new JLabel("名前を入力してください:"); 
  =new JLabel("学号を入力してください:");3.setToolTipText("名前は漢字でなければなりません 
  jtf3.setToolTipText("学生番号は10); 
  jtf3位でなければなりません2-4jl 
  =new JLabel("学号を入力してください:");4=new JTextField( 
  jtf4.setToolTipText("学生番号は10); 
  jtf4桁の数字でなければなりません3-6=new JButton("戻る"); 
  jb1jb 
  jb1.setToolTipText("クリックしてログイン画面に戻ります"); 
  jb2=new JButton("登録"); 
  jb1.addActionListener(this); 
  jb2.addActionListener(this); 
  jp.setLayout(new GridLayout(5="\\d{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() 
 { 
  個字1="\\w{3="\\d{6, //ユーザー名は3-6学号必须是 
  桁1boolean flag1=jtf1); 
  個字2="\\w{6, //パスワードは6学号必须是 
  桁2boolean flag2=jtf2); 
  個字3="[\\u4e00-\\u9fa5]{2="\\d{4, //名前は漢字でなければなりません2-4个字 
  桁3boolean flag3=jtf3); 
  個字4String regex3="\\d{6, //";3-6学号必须是 
  桁4boolean flag4=jtf4); 
//  .getText().matches(regex1.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-生成されたcatchブロック 
   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-生成されたcatchブロック 
   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("データベースからパスワードとユーザー名を成功して取得しました"); 
    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(); 
  } 
 } 
} 

これで本文のすべての内容が終わりました。皆様の学習に役立てば幸いです。また、呐喊教程を多くの皆様にサポートしていただけると嬉しいです。

声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、本サイトは所有権を有しておらず、編集も行われていません。著作権侵害が疑われる内容を見つけた場合は、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メールを送信する際、#を@に置き換えてください。通報を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害疑いのコンテンツを削除します。)

おすすめ