English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
로그인 가입 소량 코드는 배운 것들을 통합하여 사용하여 기억에 남게 만들었습니다. 이 예제에서 주석이 부족한 부분은 다른 블로그를 참조하세요.
기능 소개:간단한 로그인 가입 시스템은 데이터베이스 sqlserver, 단일 인스턴스 패턴, 정규 표현식 및 그래픽화 개발 등의 지식을 사용했습니다.
1로그인 인터페이스에서 로그인이나 가입할 수 있습니다. 가입 인터페이스에서는 정규 표현식에 따른 형식을 요구하여 정보를 입력하면, 오류가 있으면 다시 입력합니다.
2가입을 클릭하면, 먼저 SQLserver 데이터베이스와 연결됩니다. 연결이 성공하면 사용자 이름이 이미 존재하는지 확인합니다. 존재하면 알림을 제공합니다. 그렇지 않으면 가입을 수행합니다.
3로그인 인터페이스에서 로그인 버튼을 클릭할 때, 먼저 데이터베이스와 연결됩니다. 사용자 이름과 비밀번호를 사용하여 데이터베이스에서 검색하면, 있으면 로그인 성공, 아니면 알림을 제공합니다.
4단일 인스턴스 패턴을 사용하여 SQLserver의 하나의 객체만 생성하여 메모리 소비를 크게 절약했습니다.
프로그램 전체 코드는 다음과 같습니다:https://github.com/chaohuangtianjie994/A-login-register-System
5이에 따라 많은 확장 기능을 수행할 수 있습니다.
아래는 코드입니다:
UserRegister.java 로그인 인터페이스
package package1; /* * 기능: 로그인 인터페이스에 가입 기능이 있으며, 가입 인터페이스가 표시됩니다. * 가입 정보를 데이터베이스에 저장하고 로그인 작업을 수행할 수 있습니다. * 저자: 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("데이터베이스에서 비밀번호와 사용자 이름을 성공적으로 가져왔습니다."); 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#w로 보내 주시기 바랍니다.3codebox.com(메일을 보내는 경우,#을 @으로 변경하십시오. 신고를 해 주시고 관련 증거를 제공하십시오. 일단 확인되면, 이 사이트는 즉시 위반된 내용을 삭제합니다.)