1. 程式人生 > >Java圖形介面開發—簡易登入註冊小程式

Java圖形介面開發—簡易登入註冊小程式

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

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


1、在登入介面,可以登入或者註冊使用者。 註冊使用者介面,按照正則表示式規定的格式要求來輸入資訊,若有誤,則重新輸入。 

2、點選註冊,首先連線SQLserver資料庫,連線成功則會判斷該使用者名稱是否已經存在,若存在,則給出提示。反之則進行註冊。 

3、登入介面,點選登入按鈕時,首先與資料庫建立連線。按照使用者名稱和密碼來向資料庫中查詢,若有,則登入成功。反之給出提示。

4、利用單例模式,實現了只建立類SQLserver的一個物件,大大節省了記憶體開銷 。

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   用於註冊的頁面顯示。使用了正則表示式來規定輸入的內容。註冊時候,需要首先判斷使用者名稱是否存在,若存在,則給出提示,反之進行註冊。

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

相關推薦

Java圖形介面開發簡易登入註冊程式

登入註冊小程式碼,將學過的一些小知識融合在一起進行了使用,加深印象。本例中如果有註釋不詳細的地方,詳見其它部落格。功能介紹:簡單的登入註冊系統,使用了資料庫sqlserver、單例模式、正則表示式以及圖形化開發等知識。1、在登入介面,可以登入或者註冊使用者。 註冊使用者介面,

Java 圖形介面開發--圖文並茂建立學生管理系統

           圖形使用者介面(Graphics User Interface,GUI)是使用者與程式互動的視窗,比命令列的介面更加直觀並且更好操作。      這是本人在學習java圖形介面開發階段一步一步實現的超級簡易的學生管理系統。雖然說不入大神法眼,但這確實是費

從前端介面開發談微信程式體驗

本文由雲+社群發表 這段時間有幸加入了一個關於微信小程式的專案開發組,從無到有的根據文件自行學習了小程式的開發過程,前面已經有幾位前輩的文章珠玉在前,我這裡就先從前端介面的開發方面談一談小程式以及我所遇到的問題吧。 在結構和樣式方面,小程式提供了一些常用的標籤與控制元件,比如: view,小程

Android開發登入註冊介面中如何新增視訊背景,親測可用

此篇文章屬個人查閱資料整理所著,希望能對您有所幫助,歡迎各位留言指正,抱拳了 一、 首先在res資料夾下新增raw資料夾並將要新增的背景視訊放進去; 二、在MyViewpager.java(此為要顯示的活動檔案)中的onCreate()中新增視訊的程式碼 //設定視訊背景

java圖形介面視覺化開發3大GUI外掛

上大學那會兒比較主流的Java圖形開發外掛是:Visual Editor 和 SWT Designer, 不久又出了個Jigloo, 但去官網看了下發現這個東西也很久沒有更新了,不過據說短小精悍,五臟俱全。SWT Designer不久前也被Google收購後重新整合進自己

微信程式直播開發註冊程式並開通相關介面

註冊小程式並開通相關介面 出於政策和合規的考慮,微信暫時沒有放開所有小程式對 <live-pusher> 和 <live-player> 標籤的支援: 個人賬號和企業賬號的小程式暫時只開放如下表格中的類目: 主類目 子類目

Java Swing 圖形介面開發簡介

1. Swing簡介 Swing 是 Java 為圖形介面應用開發提供的一組工具包,是 Java 基礎類的一部分。 Swing 包含了構建圖形介面(GUI)的各種元件,如: 視窗、標籤、按鈕、文字框等。 Swing 提供了許多比 AWT 更好的螢幕顯示元素,

Eclipse中安裝Java Swing圖形介面開發外掛windowbuilder

今天給大家講解一下,如何在eclipse中安裝swing 外掛windowbuilder,首先點選開啟windowbuilder的官網下載地址,http://www.eclipse.org/windowbuilder/download.php ,開啟後會看到有個eclips

Java Web專案開發簡易流程

未整合任何框架開發流程 1、設計資料庫、資料表 2、建立動態Web工程(生成web.xml) 3、建立包model A、根據表建立實體類->hibernate.cfg.xml 4、建立dao A、根據系統功能,設計方法 6、建立dao.impl B、實現對應的da

java圖形介面程式設計換面板

前言 總所周知,java圖形介面效果不是特別理想,於是在網上找了一些非常好看的面板 面板地址:面板地址 使用 下載了一款名為weblaf的面板,使用也很簡單,匯入jar包後,在main方法中,JFrame定義之前呼叫install();方法即可。 public

Linux下,Java圖形介面程式中文顯示不正常(顯示為方格)問題解決

RedHat或其它Linux系統下中文顯示為方格,原因是JRE環境中中文字型設定異常。 1.首先找到JRE所在的目錄,如在RedHat Enterprise 6中的目錄為:/usr/lib/jvm/java-1.6.0/jre 2.將windows中文字型simsun.ttf或simsun.ttc拷

java圖形介面設定求商 求差

/* 2 編寫一個Java Application圖形介面的程式,實現兩數相減、相除的功能 (1) 在兩個文字框裡分別輸入兩個數字,單擊“求差”、“求商”按鈕,則在第三個文字框裡顯示運算結果; (2) 當輸入的不是數字或者除數為0時,要求用訊息對話方塊向用戶報錯; (3) 單擊視窗右上角的“X”按鈕

JS使用WebSocket實現與Java圖形介面(swing)進行通訊

背景:做專案的時候有過這樣的一個需求,在訪問某個網頁的時候進行登入,需要瀏覽器獲取電腦的硬體資源,但是通過瀏覽器直接讀取的方式有些不便,所以想到使用Java開發一個圖形應用介面的程式讀取電腦程式通過socket通訊傳輸給html頁面用於驗證。 寫在前面:在Java伺服器這端

MVP簡易登入註冊+PullTo展示資料

所需依賴 ************切記不要忘記新增app 注意導Libraryku******************* implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.2.5' implementation files('l

經典案例:利用表單(models.Model)寫一個登入註冊例項

1、models.py檔案: from django.db import models class User(models.Model): username = models.CharField(max_length=100) password = mode

介面回撥登入註冊

實現下圖效果,點選註冊,跳轉到註冊頁面,註冊成功跳轉回登入頁面 登入成功,跳轉到個人中心 圖一的程式碼 package com.example.xxx.day10_login_zhuce; public class MainActivity extends

Java圖形介面的基本設計

一、圖形介面的基本設計思路: 1,建立一個窗體,利用窗體類 2,向窗體中新增標籤,標籤類 3,向窗體中新增按鈕,按鈕類 二、詳細程式碼  注意:1,在建立的這個介面類中需要繼承監聽介面來實現相應的增大字型的功能。       &nb

Java圖形介面-JComboBox

JComboBox的事件處理亦可分為兩種,一種是取得使用者選取的專案;另一種是使用者在JComboBox上自行輸入完畢後按下[Enter]鍵, 運作相對應的工作。對於第一種事件的處理,我們使用ItemListener.對於第二種事件的處理,我們使用ActionListen

java 實現簡單的銀行登入註冊退出功能(未儲存資料)

RegisterAndLogin.java:package bao1;import java.util.Scanner;import java.util.regex.Pattern;import  bao1.Login;public class RegisterAndLogi

Java圖形介面事件監聽處理

                              Java圖形介面事件監聽處理 文章開始把我喜歡的這句話送個大家:這個世界上還有什麼比自己