English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
小さなコードのログイン登録で、学んだ知識を統合して使用し、印象を深めました。この例で詳細なコメントがない場合には、他のブログを参照してください。
機能紹介:シンプルなログイン登録システムで、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(メールを送信する際、#を@に置き換えてください。通報を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害疑いのコンテンツを削除します。)