注册登录页面 (Java+MySQL)


   只用了5个类,包括  “连接数据库”,“注册页面”,“注册信息操作页面”,“登录页面”,“登录信息检查页面”。

注册和登录页面,我采用了BOX布局方式,因为我喜欢它的不随页面的大小改变而改变的特点,顺便通过这些练习,来检验一下自己最近的学习成果。

我发现我还是对MySQL的操作不熟,看来接下来得要有一段时间来研究MySQL数据库了。我坚持使用mysql数据库,是因为我之前对它还是了解一些的,只是没有真正上手操作,我认为数据库的操作原理应该都相似,先熟悉一门,那么别的自然是水到渠成;

行了,废话不多说了,我来分享一下我的代码,激励一下自己,如果能帮到其他和我一样的初学者,那就更好了;


(1)conn_db类

  1. package 注册信息;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.SQLException;  
  6. import java.sql.Statement;  
  7.   
  8. public class conn_db{  
  9.     Connection con;  
  10.     String url = null;  
  11.     //Statement stmt;  
  12.       
  13.     public void connection() throws ClassNotFoundException{  
  14.         url = "jdbc:mysql://localhost:3306/wang?"  
  15.                 + "user=root & password=883883 & useUnicode=true & characterEnunicode=UTF8";  
  16.         try{  
  17.             Class.forName("com.mysql.jdbc.Driver");  
  18.             con = DriverManager.getConnection(url);  
  19.             System.out.println("连接成功");  
  20.             //stmt = con.createStatement();  
  21.         }  
  22.         catch(SQLException e){  
  23.             e.printStackTrace();  
  24.         }  
  25.     }  
  26.       
  27.       
  28. //  public static void main(String[] args) throws ClassNotFoundException {  
  29. //      conn_db conn = new conn_db();  
  30. //      conn.connection();  
  31. //        
  32. //  }  
  33. }  
package 注册信息;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class conn_db{
	Connection con;
	String url = null;
	//Statement stmt;
	
	public void connection() throws ClassNotFoundException{
		url = "jdbc:mysql://localhost:3306/wang?"
				+ "user=root & password=883883 & useUnicode=true & characterEnunicode=UTF8";
		try{
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection(url);
			System.out.println("连接成功");
			//stmt = con.createStatement();
		}
		catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	
//	public static void main(String[] args) throws ClassNotFoundException {
//		conn_db conn = new conn_db();
//		conn.connection();
//		
//	}
}


(2)login类

  1. package 注册信息;  
  2.   
  3. import java.awt.FlowLayout;  
  4. import java.awt.event.ActionListener;  
  5.   
  6. import javax.swing.JFrame;  
  7. import javax.swing.*;  
  8.   
  9. public class login extends JFrame{  
  10.     //JLabel accountL,nameL;  
  11.     JTextField accountT,nameT;  
  12.     JButton okB,registB;  
  13.     Box baseB1,baseB2,box1,box2,box3;       //此登录页面采用Box布局方式;  
  14.     login_db log;  
  15.       
  16.     login(){  
  17.         init();  
  18.     }  
  19.     void init(){  
  20.         log = new login_db();  
  21.           
  22.         accountT = new JTextField(10);  
  23.         nameT = new JTextField(20);  
  24.         okB = new JButton("登录");  
  25.         registB = new JButton("注册");  
  26.           
  27.         box1 = Box.createVerticalBox();  
  28.         box1.add(new JLabel("账号:"));  
  29.         box1.add(Box.createVerticalStrut(8));  
  30.         box1.add(new JLabel("姓名"));  
  31.           
  32.         box2 = Box.createVerticalBox();  
  33.         box2.add(accountT);  
  34.         box2.add(Box.createVerticalStrut(8));  
  35.         box2.add(nameT);  
  36.           
  37.         box3 = Box.createHorizontalBox();  
  38.         box3.add(okB);  
  39.         box3.add(Box.createHorizontalStrut(20));  
  40.         box3.add(registB);  
  41.           
  42.         baseB1 = Box.createHorizontalBox();  
  43.         baseB1.add(box1);  
  44.         baseB1.add(Box.createHorizontalStrut(8));  
  45.         baseB1.add(box2);  
  46.           
  47.         baseB2 = Box.createVerticalBox();  
  48.         baseB2.add(baseB1);  
  49.         baseB2.add(Box.createVerticalStrut(10));  
  50.         baseB2.add(box3);  
  51.           
  52.         okB.addActionListener(log);  
  53.         registB.addActionListener(log);  
  54.           
  55.         log.setaccountT(accountT);  
  56.         log.setnameT(nameT);  
  57.         log.setButton(okB,registB);  
  58.           
  59.         add(baseB2);  
  60.         setLayout(new FlowLayout());  
  61.         setBounds(200,150,400,300);  
  62.         setVisible(true);  
  63.         setTitle("用户登录界面");  
  64.         setDefaultCloseOperation(DISPOSE_ON_CLOSE);  
  65.     }  
  66.       
  67.     public static void main(String[] args) {  
  68.         login lo = new login();  
  69.     }  
  70. }  
package 注册信息;

import java.awt.FlowLayout;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.*;

public class login extends JFrame{
	//JLabel accountL,nameL;
	JTextField accountT,nameT;
	JButton okB,registB;
	Box baseB1,baseB2,box1,box2,box3;		//此登录页面采用Box布局方式;
	login_db log;
	
	login(){
		init();
	}
	void init(){
		log = new login_db();
		
		accountT = new JTextField(10);
		nameT = new JTextField(20);
		okB = new JButton("登录");
		registB = new JButton("注册");
		
		box1 = Box.createVerticalBox();
		box1.add(new JLabel("账号:"));
		box1.add(Box.createVerticalStrut(8));
		box1.add(new JLabel("姓名"));
		
		box2 = Box.createVerticalBox();
		box2.add(accountT);
		box2.add(Box.createVerticalStrut(8));
		box2.add(nameT);
		
		box3 = Box.createHorizontalBox();
		box3.add(okB);
		box3.add(Box.createHorizontalStrut(20));
		box3.add(registB);
		
		baseB1 = Box.createHorizontalBox();
		baseB1.add(box1);
		baseB1.add(Box.createHorizontalStrut(8));
		baseB1.add(box2);
		
		baseB2 = Box.createVerticalBox();
		baseB2.add(baseB1);
		baseB2.add(Box.createVerticalStrut(10));
		baseB2.add(box3);
		
		okB.addActionListener(log);
		registB.addActionListener(log);
		
		log.setaccountT(accountT);
		log.setnameT(nameT);
		log.setButton(okB,registB);
		
		add(baseB2);
		setLayout(new FlowLayout());
		setBounds(200,150,400,300);
		setVisible(true);
		setTitle("用户登录界面");
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		login lo = new login();
	}
}

3)login_db类

  1. package 注册信息;  
  2.   
  3. import java.awt.event.ActionEvent;  
  4. import java.awt.event.ActionListener;  
  5. import java.sql.Connection;  
  6. import java.sql.ResultSet;  
  7. import java.sql.Statement;  
  8.   
  9. import javax.swing.*;  
  10.   
  11. public class login_db extends conn_db implements ActionListener {  
  12.     JTextField accT,nameT;  
  13.     JButton okB,registB;  
  14.     register re;  
  15.     ResultSet rs;  
  16.       
  17.     public void setaccountT(JTextField a){  
  18.         accT = a;  
  19.     }  
  20.     public void setnameT(JTextField n){  
  21.         nameT = n;  
  22.     }  
  23.     public void setButton(JButton b1,JButton b2){  
  24.         okB = b1;  
  25.         registB = b2;  
  26.     }  
  27.       
  28.     public void actionPerformed(ActionEvent e){  
  29.         if(e.getSource() == okB){  
  30.             if(accT.getText().equals(""))           //判断用户输入是否为空;  
  31.                 JOptionPane.showMessageDialog(null"请填写账号!");  
  32.             else if(nameT.getText().equals(""))  
  33.                 JOptionPane.showMessageDialog(null"请输入姓名");  
  34.             else{  
  35.                 String accountT = accT.getText();  
  36.                 String namesT = nameT.getText();  
  37.                 try {  
  38.                     connection();       //加载conn_db类,连接数据库;  
  39.                     boolean com = compareWithSql(accountT,namesT);  
  40.                     if(com)  
  41.                         JOptionPane.showMessageDialog(null"登录成功");  
  42.                     else{  
  43.                         JOptionPane.showMessageDialog(null"账号或姓名不正确,请重新输入");  
  44.                         accT.setText("");  
  45.                         nameT.setText("");  
  46.                     }  
  47.                 }   
  48.                 catch (Exception e1) {  
  49.                     e1.printStackTrace();  
  50.                 }  
  51.             }  
  52.         }  
  53.         else if(e.getSource() == registB){  
  54.             new JFrame().dispose();  
  55.             re = new register();  
  56.         }  
  57.     }  
  58.       
  59.     //用户输入检查  
  60.     boolean compareWithSql(String accountT,String namesT) throws Exception{  
  61.         String sql;       
  62.         Connection con = super.con;  
  63.         Statement stmt = con.createStatement();  
  64.         sql = "select * from my";  
  65. //      System.out.println(sql);  
  66.         rs = stmt.executeQuery(sql);  
  67.         while(rs.next()){               //用户输入的信息和数据库中的信息做比较,判断输入是否正确;  
  68.             String acc = rs.getString(1);  
  69.             String names = rs.getString(2);  
  70.             if(acc.equals(accountT) && names.equals(namesT)){  
  71.                 //break;  
  72.                 return true;  
  73.             }  
  74. //          System.out.println(acc + "   " + names);  
  75. //          System.out.println(accountT + "   " + namesT);  
  76.               
  77.         }  
  78. //      System.out.println("hahahaha");  
  79.         return false;  
  80.           
  81.     }  
  82.       
  83. }  
package 注册信息;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.*;

public class login_db extends conn_db implements ActionListener {
	JTextField accT,nameT;
	JButton okB,registB;
	register re;
	ResultSet rs;
	
	public void setaccountT(JTextField a){
		accT = a;
	}
	public void setnameT(JTextField n){
		nameT = n;
	}
	public void setButton(JButton b1,JButton b2){
		okB = b1;
		registB = b2;
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource() == okB){
			if(accT.getText().equals(""))			//判断用户输入是否为空;
				JOptionPane.showMessageDialog(null, "请填写账号!");
			else if(nameT.getText().equals(""))
				JOptionPane.showMessageDialog(null, "请输入姓名");
			else{
				String accountT = accT.getText();
				String namesT = nameT.getText();
				try {
					connection(); 		//加载conn_db类,连接数据库;
					boolean com = compareWithSql(accountT,namesT);
					if(com)
						JOptionPane.showMessageDialog(null, "登录成功");
					else{
						JOptionPane.showMessageDialog(null, "账号或姓名不正确,请重新输入");
						accT.setText("");
						nameT.setText("");
					}
				} 
				catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		}
		else if(e.getSource() == registB){
			new JFrame().dispose();
			re = new register();
		}
	}
	
	//用户输入检查
	boolean compareWithSql(String accountT,String namesT) throws Exception{
		String sql;		
		Connection con = super.con;
		Statement stmt = con.createStatement();
		sql = "select * from my";
//		System.out.println(sql);
		rs = stmt.executeQuery(sql);
		while(rs.next()){				//用户输入的信息和数据库中的信息做比较,判断输入是否正确;
			String acc = rs.getString(1);
			String names = rs.getString(2);
			if(acc.equals(accountT) && names.equals(namesT)){
				//break;
				return true;
			}
//			System.out.println(acc + "   " + names);
//			System.out.println(accountT + "   " + namesT);
			
		}
//		System.out.println("hahahaha");
		return false;
		
	}
	
}

4)register类

  1. package 注册信息;  
  2.   
  3. import javax.swing.JFrame;  
  4.   
  5. import java.awt.FlowLayout;  
  6. import javax.swing.*;  
  7.   
  8. public class register extends JFrame{  
  9.     JLabel accountLabel,nameLabel;  
  10.     JButton okButton,resetButton;  
  11.     JTextField accountText,nameText;  
  12.     Box baseBox1,baseBox2, box1,box2,box3;       //此注册页面采用Box布局方式;  
  13.     //JPanel pane1,pane2;  
  14.       
  15.     register_db regist;  
  16.       
  17.     register(){  
  18.         init();  
  19.     }  
  20.       
  21.       
  22.     void init(){  
  23.         setLayout(new FlowLayout());  
  24.         accountLabel = new JLabel("账号");  
  25.         nameLabel= new JLabel("姓名");  
  26.         accountText = new JTextField(10);  
  27.         nameText = new JTextField(20);  
  28.         okButton = new JButton("确定");  
  29.         resetButton = new JButton("重置");  
  30.           
  31.         regist = new register_db();  
  32.           
  33. //      lab = new JLabel("用户注册页面");  
  34.           
  35.         box1 = Box.createVerticalBox();  
  36.         box1.add(accountLabel);  
  37.         box1.add(Box.createVerticalStrut(8));  
  38.         box1.add(nameLabel);  
  39.         box2 = Box.createVerticalBox();  
  40.         box2.add(accountText);  
  41.         box2.add(Box.createVerticalStrut(8));  
  42.         box2.add(nameText);  
  43.         box3 = Box.createHorizontalBox();  
  44.         box3.add(okButton);  
  45.         box3.add(Box.createHorizontalStrut(15));  
  46.         box3.add(resetButton);  
  47.         baseBox1 = Box.createHorizontalBox();  
  48.         baseBox1.add(box1);  
  49.         baseBox1.add(Box.createHorizontalStrut(8));  
  50.         baseBox1.add(box2);  
  51.         baseBox2 = Box.createVerticalBox();  
  52.         baseBox2.add(baseBox1);  
  53.         baseBox2.add(Box.createVerticalStrut(10));  
  54.         baseBox2.add(box3);  
  55.         add(baseBox2);  
  56.           
  57.         okButton.addActionListener(regist);  
  58.         resetButton.addActionListener(regist);  
  59.           
  60.           
  61.         regist.setaccountField(accountText);  
  62.         regist.setnameField(nameText);  
  63.         regist.setokButton(okButton);  
  64.         regist.setresetButton(resetButton);  
  65.           
  66.         setBounds(200,200,400,300);  
  67.         setVisible(true);  
  68.         setDefaultCloseOperation(DISPOSE_ON_CLOSE);  
  69.         setTitle("用户注册界面");  
  70.     }  
  71.       
  72. //  void registAction(){  
  73. //        
  74. //  }  
  75.       
  76.       
  77. //  public static void main(String[] args) {  
  78. //      register re = new register();  
  79. //  }  
  80.       
  81. }  
package 注册信息;

import javax.swing.JFrame;

import java.awt.FlowLayout;
import javax.swing.*;

public class register extends JFrame{
	JLabel accountLabel,nameLabel;
	JButton okButton,resetButton;
	JTextField accountText,nameText;
	Box baseBox1,baseBox2, box1,box2,box3;		 //此注册页面采用Box布局方式;
	//JPanel pane1,pane2;
	
	register_db regist;
	
	register(){
		init();
	}
	
	
	void init(){
		setLayout(new FlowLayout());
		accountLabel = new JLabel("账号");
		nameLabel= new JLabel("姓名");
		accountText = new JTextField(10);
		nameText = new JTextField(20);
		okButton = new JButton("确定");
		resetButton = new JButton("重置");
		
		regist = new register_db();
		
//		lab = new JLabel("用户注册页面");
		
		box1 = Box.createVerticalBox();
		box1.add(accountLabel);
		box1.add(Box.createVerticalStrut(8));
		box1.add(nameLabel);
		box2 = Box.createVerticalBox();
		box2.add(accountText);
		box2.add(Box.createVerticalStrut(8));
		box2.add(nameText);
		box3 = Box.createHorizontalBox();
		box3.add(okButton);
		box3.add(Box.createHorizontalStrut(15));
		box3.add(resetButton);
		baseBox1 = Box.createHorizontalBox();
		baseBox1.add(box1);
		baseBox1.add(Box.createHorizontalStrut(8));
		baseBox1.add(box2);
		baseBox2 = Box.createVerticalBox();
		baseBox2.add(baseBox1);
		baseBox2.add(Box.createVerticalStrut(10));
		baseBox2.add(box3);
		add(baseBox2);
		
		okButton.addActionListener(regist);
		resetButton.addActionListener(regist);
		
		
		regist.setaccountField(accountText);
		regist.setnameField(nameText);
		regist.setokButton(okButton);
		regist.setresetButton(resetButton);
		
		setBounds(200,200,400,300);
		setVisible(true);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setTitle("用户注册界面");
	}
	
//	void registAction(){
//		
//	}
	
	
//	public static void main(String[] args) {
//		register re = new register();
//	}
	
}


5)register_db类

  1. package 注册信息;  
  2.   
  3. import java.awt.event.ActionEvent;  
  4. import java.awt.event.ActionListener;  
  5. import java.sql.Connection;  
  6. import java.sql.ResultSet;  
  7. import java.sql.Statement;  
  8.   
  9. import javax.swing.*;  
  10.   
  11. public class register_db extends conn_db implements ActionListener{  
  12.   
  13.     JTextField textacc,textname;  
  14.     JButton okButton,resetButton;  
  15.     Statement stmt;  
  16.     ResultSet rs;  
  17. //  double acc;  
  18. //  String name;  
  19. //  Connection con = null;  
  20.       
  21.     public void setaccountField(JTextField a){  
  22.         textacc = a;  
  23.     }  
  24.     public void setnameField(JTextField n){  
  25.         textname = n;  
  26.     }  
  27.     public void setokButton(JButton b1){  
  28.         okButton = b1;  
  29.     }  
  30.     public void setresetButton(JButton b2){  
  31.         resetButton = b2;  
  32.     }  
  33.       
  34.     public void actionPerformed(ActionEvent e){  
  35.         if(e.getSource() == okButton){  
  36.             if(textacc.getText().equals(""))            //判断用户输入是否为空;  
  37.                 JOptionPane.showMessageDialog(null"请输入账号","警告对话框",JOptionPane.WARNING_MESSAGE);  
  38.             else if(textname.getText().equals(""))  
  39.                 JOptionPane.showMessageDialog(null,"请输入姓名","警告对话框",JOptionPane.WARNING_MESSAGE);  
  40.             else{  
  41.                 String acc = textacc.getText();  
  42.                 String name = textname.getText();  
  43.                 try {  
  44.                     connection();  
  45.                     writeInSql(acc,name);  
  46.                 } catch (Exception e1) {  
  47.                     System.out.println("插入失败");  
  48.                     e1.printStackTrace();  
  49.                 }  
  50.             }  
  51.         }  
  52.         else if(e.getSource() == resetButton){  
  53.             textacc.setText("");  
  54.             textname.setText("");  
  55.         }  
  56.     }  
  57.       
  58.     void writeInSql(String acc,String name) throws Exception{  
  59.         String sql;  
  60.           
  61.         Connection con = super.con;  
  62.         Statement stmt = con.createStatement();  
  63.           
  64.         //创建并检查数据库表,若没有"my"表,则创建表并执行插入操作,若表已存在,则直接执行操作,插入数据  
  65.         sql = "create table if not exists my(account varchar(10),name varchar(20))";  
  66.           
  67.         stmt.executeUpdate(sql);  
  68. //      System.out.println(sql);        //查错;  
  69.         System.out.println("创建表成功");      
  70.           
  71.         //插入存文本框中获取的数据;  
  72.         sql = "insert into my(account,name) values('"+acc+"','"+name+"')";  
  73.         int rw = stmt.executeUpdate(sql);  
  74. //      System.out.println(sql);  
  75.         if(rw <= 0){             //判断数据是否插入成功  
  76.             JOptionPane.showMessageDialog(null,"注册失败");  
  77.         }  
  78.         else{  
  79.             JOptionPane.showMessageDialog(null"注册成功");  
  80.         }  
  81.     }  
  82. }  

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值