1. 程式人生 > >Java 圖形介面開發--圖文並茂建立學生管理系統

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

           圖形使用者介面(Graphics User Interface,GUI)是使用者與程式互動的視窗,比命令列的介面更加直觀並且更好操作。

      這是本人在學習java圖形介面開發階段一步一步實現的超級簡易的學生管理系統。雖然說不入大神法眼,但這確實是費了自己不少心血。對於我這樣的菜鳥來說,考慮不周到,一不小心就Exception,然後就是自己調呀調。在此分享出來希望對和我一樣的菜鳥有幫助。

       該程式使用的資料庫為SQL server,如果不太懂怎麼使用java操作SQL server資料庫的可以看看我的這篇部落格,希望可以幫到大家。

程式完整程式碼下載地址見:

步驟一:靜態登入介面的實現。

程式碼如下:

/**
 * 功能:學生成績管理系統
 * 步驟1、登入介面的靜態實現
 * author:ywq
 */
import java.awt.*;
import javax.swing.*;
public class Login extends JFrame{
	//定義元件
	JPanel jp1,jp2,jp3;//面板
	JLabel jlb1,jlb2;//標籤
	JButton jb1,jb2;//按鈕
	JTextField jtf;//文字
	JPasswordField jpf;//密碼
	public static void main(String[] args) {
		Login win=new Login();
	}
	
	//建構函式
	public Login(){
		//建立面板
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		//建立標籤
		jlb1=new JLabel("使用者名稱");
		jlb2=new JLabel("密    碼");
		//建立按鈕
		jb1=new JButton("登入");
		jb2=new JButton("重置");
		//建立文字框
		jtf=new JTextField(10);
		//建立密碼框
		jpf=new JPasswordField(10);
		
		//設定佈局管理
		this.setLayout(new GridLayout(3, 1));//網格式佈局
		
		//加入各個元件
		jp1.add(jlb1);
		jp1.add(jtf);
		
		jp2.add(jlb2);
		jp2.add(jpf);
		
		jp3.add(jb1);
		jp3.add(jb2);
		
		//加入到JFrame
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);
		
		//設定窗體
		this.setTitle("使用者登入");//窗體標籤
		this.setSize(300, 150);//窗體大小
		this.setLocationRelativeTo(null);//在螢幕中間顯示(居中顯示)
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出關閉JFrame
		this.setVisible(true);//顯示窗體
		
		//鎖定窗體
		this.setResizable(false);
	}
}

執行介面如圖所示:

本靜態介面的實現,使用了網格佈局,3行1列,在每一行中放入了一個JPanel面板,每個面板上又分別放入所需的元件,整體構成了一個靜態的登入介面。

步驟二:新增監聽,並且進行驗證使用者名稱和密碼。

程式碼如下:

/*
 * 功能:學生成績管理系統
 * 步驟1:登入介面的靜態實現
 * 步驟2:新增對各個元件的監聽。
 * 步驟3:對使用者名稱和密碼進行驗證。
 * author:ywq
 */
package com.package_1;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Login extends JFrame implements ActionListener {

	//定義元件
	JButton jb1,jb2=null;
	JRadioButton jrb1,jrb2=null;
	JPanel jp1,jp2,jp3,jp4=null;
	JTextField jtf=null;
	JLabel jlb1,jlb2,jlb3=null;
	JPasswordField jpf=null;
	ButtonGroup bg=null;
		
	//設定使用者名稱和密碼
	final String stu_name="6";
	final String stu_pwd="1";
	final String tea_name="5";
	final String tea_pwd="1";
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Login  ms=new Login();
	}
	public Login()
	{
		 //建立元件
		jb1=new JButton("登入");
		jb2=new JButton("重置");
		//設定監聽
		jb1.addActionListener(this);
		jb2.addActionListener(this);
		
		jrb1=new JRadioButton("教師");
		jrb2=new JRadioButton("學生");
		bg=new ButtonGroup();
		bg.add(jrb1);
		bg.add(jrb2);
		jrb2.setSelected(true);
		
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		jp4=new JPanel();				
		
		jlb1=new JLabel("使用者名稱:");
		jlb2=new JLabel("密    碼:");
		jlb3=new JLabel("權    限:");
		
		jtf=new JTextField(10);
		jpf=new JPasswordField(10);
		//加入到JPanel中
		jp1.add(jlb1);
		jp1.add(jtf);
		
		jp2.add(jlb2);
		jp2.add(jpf);
		
		jp3.add(jlb3);
		jp3.add(jrb1);
		jp3.add(jrb2);
		
		jp4.add(jb1);
		jp4.add(jb2);
		
		//加入JFrame中
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);
		this.add(jp4);
		//設定佈局管理器
		this.setLayout(new GridLayout(4,1));
		//給視窗設定標題
		this.setTitle("學生成績管理系統");
		//設定窗體大小
		this.setSize(300,200);
		//設定窗體初始位置
		this.setLocation(200, 150);
		//設定當關閉視窗時,保證JVM也退出
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//顯示窗體
		this.setVisible(true);
		this.setResizable(true);
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		
		if(e.getActionCommand()=="登入")
		{
			//如果選中教師登入
			if(jrb1.isSelected())
			{
                  tealogin();
			}else if(jrb2.isSelected()) //學生在登入系統
			{
                  stulogin();
			}
			
		}else if(e.getActionCommand()=="重置")
		{
                  clear();
		}			
		
	}
	
	 //學生登入判斷方法
	public void stulogin()
	{
		if(stu_name.equals(jtf.getText())&&stu_pwd.equals(jpf.getText()))
		{
//			System.out.println("登入成功");
			JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
			clear();
		}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
		{
			JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
		}else if(jtf.getText().isEmpty())
		{
			JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
		}else if(jpf.getText().isEmpty())
		{
			JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
		}else
		{
			JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
		    //清空輸入框
			clear();
		}
	}
	//教師登入判斷方法
	public void tealogin()
	{
		if(tea_name.equals(jtf.getText())&&tea_pwd.equals(jpf.getText()))
		{
//			System.out.println("登入成功");
			 JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
			 clear();
		}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
		{
			JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
		}else if(jtf.getText().isEmpty())
		{
			JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
		}else if(jpf.getText().isEmpty())
		{
			JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
		}else
		{
			JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
		    //清空輸入框
			clear();
		}
	}
	//清空文字框和密碼框
	public	void clear()
	{
		jtf.setText("");
		jpf.setText("");
	}
		
}

執行介面如下所示:


本程式加入了對各個元件的監聽,首先implements  ActionListener介面,然後註冊監聽。在ActionPerformance方法中進行相應的處理事件。

當點選登入按鈕時,首先判斷是哪個許可權的使用者在進行登入,分別呼叫taelogin()和stulogin()方法來進行驗證。在驗證方法中,對文字框和密碼框的內容進行一個判斷,分別彈出不同的提示資訊。

步驟三:(1)程式連線資料庫來進行使用者名稱和密碼的驗證!!!

              (2)驗證成功後進行介面的切換!!!

程式碼如下:

/*
 * 功能:學生成績管理系統
 * 步驟1、登入介面的靜態實現
 * 步驟2:實現介面的切換
 * 步驟3:使用資料庫來驗證使用者名稱和密碼
 * author:ywq
 */
package com.package_2;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class login extends JFrame implements ActionListener {

	//定義登入介面的元件
	JButton jb1,jb2,jb3=null;
	JRadioButton jrb1,jrb2=null;
	JPanel jp1,jp2,jp3,jp4=null;
	JTextField jtf=null;
	JLabel jlb1,jlb2,jlb3=null;
	JPasswordField jpf=null;
	ButtonGroup bg=null;
		
	//設定使用者名稱和密碼
	static String userword;
	static String pwd;
	
	static Connection ct=null;
	PreparedStatement ps=null;
	ResultSet rs=null;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		login  ms=new login();
		
		
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			ct=DriverManager.getConnection("jdbc:odbc:ywq");
		} catch (Exception e) {
			
			e.printStackTrace();
		}
						
	}
	//建構函式
	public login()
	{
		 //建立元件
		jb1=new JButton("登入");
		jb2=new JButton("重置");
		jb3=new JButton("退出");
		//設定監聽
		jb1.addActionListener(this);
		jb2.addActionListener(this);
		jb3.addActionListener(this);
		//以上三個按鈕的監聽統一放在了actionPerformance()中
		//監聽也可以是下邊這種方式
//		jb3.addActionListener(new ActionListener()
//		{
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				// TODO Auto-generated method stub				
//				System.exit(0);
//			}
//			
//		});
		
		jrb1=new JRadioButton("教師");
		jrb2=new JRadioButton("學生");
		bg=new ButtonGroup();
		bg.add(jrb1);
		bg.add(jrb2);
		jrb2.setSelected(true);
		
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		jp4=new JPanel();				
		
		jlb1=new JLabel("使用者名稱:");
		jlb2=new JLabel("密    碼:");
		jlb3=new JLabel("權    限:");
		
		jtf=new JTextField(10);
		jpf=new JPasswordField(10);
		//加入到JPanel中
		jp1.add(jlb1);
		jp1.add(jtf);
		
		jp2.add(jlb2);
		jp2.add(jpf);
		
		jp3.add(jlb3);
		jp3.add(jrb1);
		jp3.add(jrb2);
		
		jp4.add(jb1);
		jp4.add(jb2);
		jp4.add(jb3);
		
		//加入JFrame中
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);
		this.add(jp4);
		//設定佈局管理器
		this.setLayout(new GridLayout(4,1));
		//給視窗設定標題
		this.setTitle("學生成績管理系統");
		//設定窗體大小
		this.setSize(300,200);
		//設定窗體初始位置
		this.setLocation(200, 150);
		//設定當關閉視窗時,保證JVM也退出
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//顯示窗體
		this.setVisible(true);
		this.setResizable(true);
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {

		if(e.getActionCommand()=="退出")
		{
			System.exit(0);
		}else if(e.getActionCommand()=="登入")
		{
			//如果選中教師登入
			if(jrb1.isSelected())
			{
				//建立火箭車
				try {
					ps=ct.prepareStatement("select * from info where 許可權=? ");
					//給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
					ps.setString(1, "教師");					
					//ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
					rs=ps.executeQuery();
					//迴圈取出
					while(rs.next()){
						//將教師的使用者名稱和密碼取出
						 userword=rs.getString(2);
						 pwd=rs.getString(3);
						System.out.println("成功獲取到密碼和使用者名稱from資料庫");
						System.out.println(userword+"\t"+pwd+"\t");	
					}
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				//從資料庫得到使用者名稱和密碼後呼叫登入方法,與輸入的使用者名稱和密碼作比較
				tealogin();
			}else if(jrb2.isSelected()) //學生在登入系統
			{
				//建立火箭車
				try {
					ps=ct.prepareStatement("select * from info where 許可權=? ");
					//給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
					ps.setString(1, "學生");
					//ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
					rs=ps.executeQuery();
					//迴圈取出
					while(rs.next()){
						//將學生的使用者名稱和密碼取出
						 userword=rs.getString(2);
						 pwd=rs.getString(3);
						System.out.println("成功獲取到密碼和使用者名稱from資料庫");
						System.out.println(userword+"\t"+pwd+"\t");	
					}
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				//從資料庫得到使用者名稱和密碼後呼叫登入方法,與輸入的使用者名稱和密碼作比較
			    stulogin();
			}
			
		}else if(e.getActionCommand()=="重置")
		{
			clear();
		}			
		
	}
		
	
//清空文字框和密碼框
	public	void clear()
		{
			jtf.setText("");
			jpf.setText("");
		}
//學生登入判斷方法
	public void stulogin()
		{
			if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
			{
//				System.out.println("登入成功");
				JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
				clear();
				//關閉當前介面
				 dispose();
				 //建立一個新介面
				 UI ui=new UI();
			}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
			 {
				JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
			 }else if(jtf.getText().isEmpty())
			{
				JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
			}else if(jpf.getText().isEmpty())
			{
				JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
			}else
			{
				JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
				 //清空輸入框
				clear();
				}
			}
			
	//教師登入判斷方法
	public void tealogin()
		{
			if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
			{
//				System.out.println("登入成功");
				 JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
				 clear();	
				//關閉當前介面
				 dispose();
				 //建立一個新介面,適用於教師來管理學生
				 UI ui=new UI();					 					
			}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
			{
				JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
			}else if(jtf.getText().isEmpty())
			{
				JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
			}else if(jpf.getText().isEmpty())
			{
				JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
			}else
			{
				JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
			    //清空輸入框
				clear();
			}
		}


		
}

首先建立相應的資料庫,如圖所示:


在程式中,首先是在主函式中(1)載入資料庫驅動 。(2)建立連線

在進行驗證時,通過建立“火箭車”將所需的SQL語句傳送到資料庫,並且查詢得到相應的資料。利用此資料和使用者輸入的使用者名稱和密碼進行驗證。當驗證成功時,即進行介面的跳轉。

頁面跳轉關鍵部分:

(1)呼叫dispose()方法關閉當前介面

(2)重新new一個新介面,比如本例中的new UI();其中,UI是另一個完整的介面。

如此實現了介面的切換。

UI介面的程式碼如下:

package com.package_2;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class UI extends JFrame implements ActionListener
{

	     //定義元件
		JButton jb1,jb2=null;
		JPanel jp1,jp2,jp3=null;
		JLabel jlb1,jlb2,jlb3,jlb4=null;
		
		public static void main(String[] args) {
			// TODO Auto-generated method stub
//			UI  ui=new UI();
		}
		
	    //建構函式
		public  UI()    //不能申明為void!!!!!否則彈不出新介面
		{
			//建立元件
			jb1=new JButton("課程管理");
			jb2=new JButton("成績查詢");
			
			jp1=new JPanel();
			jp2=new JPanel();
			jp3=new JPanel();
			
			jlb1=new JLabel("姓名");
			jlb2=new JLabel("學號");
			jlb3=new JLabel("最新公告:");
			jlb4=new JLabel("我校舉行六十週年校慶的通知");
			
			jp1.add(jlb1);
			jp1.add(jlb2);
			
			jp2.add(jb1);
			jp2.add(jlb3);
			
			jp3.add(jb2);
			jp3.add(jlb4);
			
			
			this.add(jp1);
			this.add(jp2);
			this.add(jp3);
			
			//設定佈局管理器
			this.setLayout(new GridLayout(3,3,50,50));
			this.setTitle("學生成績管理系統");
			this.setSize(400,300);
			this.setLocation(200, 200);		
			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.setVisible(true);

}
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			
		}
}

以上程式的執行結果如圖所示:

步驟4:(1)程式連線資料庫來進行使用者名稱和密碼的驗證!!!

              (2)驗證成功後進行介面的切換!!!【對步驟三的程式碼進行一定的優化】


程式碼如下:Login.java

/*
 * 功能:學生成績管理系統
 * 步驟1、登入介面的靜態實現
 * 步驟2:實現介面的切換
 * 步驟3:使用資料庫來驗證使用者名稱和密碼
 * 步驟4:對程式碼進行優化。增加專門用來與資料庫進行連線的類
 * author:ywq
 */
package com.package_5;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class Login extends JFrame implements ActionListener {

	//定義登入介面的元件
	JButton jb1,jb2,jb3=null;
	JRadioButton jrb1,jrb2=null;
	JPanel jp1,jp2,jp3,jp4=null;
	JTextField jtf=null;
	JLabel jlb1,jlb2,jlb3=null;
	JPasswordField jpf=null;
	ButtonGroup bg=null;	
	
	//選單項
	JMenuBar jmb=null;	
	JMenu jm=null;
	JMenuItem jmi1,jmi2=null;
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Login  ms=new Login();
		
						
	}
	//建構函式
	public Login()
	{
		 //建立元件
		jb1=new JButton("登入");
		jb2=new JButton("重置");
		jb3=new JButton("退出");
		//設定監聽
		jb1.addActionListener(this);
		jb2.addActionListener(this);
		jb3.addActionListener(this);
		
		jmb=new JMenuBar(); //JMenuBar指選單欄
		jm=new JMenu("選項"); //JMenu是選單欄中的選項欄
		jmi1=new JMenuItem("開始"); //JMenuItem指選項欄中的選項
		jmi2=new JMenuItem("退出系統");
		jm.add(jmi1);
		jm.add(jmi2);
		jmb.add(jm);
		
		
		jrb1=new JRadioButton("教師",true);
		jrb2=new JRadioButton("學生");
		bg=new ButtonGroup();
		bg.add(jrb1);
		bg.add(jrb2);
//		jrb2.setSelected(true);
		
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		jp4=new JPanel();				
		
		jlb1=new JLabel("使用者名稱:");
		jlb2=new JLabel("密    碼:");
		jlb3=new JLabel("權    限:");
		
		jtf=new JTextField(10);
		jpf=new JPasswordField(10);
		//加入到JPanel中
		jp1.add(jlb1);
		jp1.add(jtf);
		
		jp2.add(jlb2);
		jp2.add(jpf);
		
		jp3.add(jlb3);
		jp3.add(jrb1);
		jp3.add(jrb2);
		
		jp4.add(jb1);
		jp4.add(jb2);
		jp4.add(jb3);
		
		//加入JFrame中
		this.setJMenuBar(jmb);
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);
		this.add(jp4);
		//設定佈局管理器
		this.setLayout(new GridLayout(4,1));
		//給視窗設定標題
		this.setTitle("學生成績管理系統");
		//設定窗體大小
		this.setSize(300,250);
		//設定窗體初始位置
		this.setLocation(200, 150);
		//設定當關閉視窗時,保證JVM也退出
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//顯示窗體
		this.setVisible(true);
		this.setResizable(true);
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {

		if(e.getActionCommand()=="退出")
		{
			System.exit(0);
		}else if(e.getActionCommand()=="登入")
		{
			//當點選登入按鈕時,首先與資料庫建立連線
			GetSQL.ConnectSQL();
			//如果選中教師登入
			if(jrb1.isSelected())
			{
				GetSQL.sqlquery("教師");
				//從資料庫得到使用者名稱和密碼後呼叫登入方法,與輸入的使用者名稱和密碼作比較
				this.tealogin();
			}else if(jrb2.isSelected()) //學生在登入系統
			{
				GetSQL.sqlquery("學生");
				//從資料庫得到使用者名稱和密碼後呼叫登入方法,與輸入的使用者名稱和密碼作比較
			    this.stulogin();
			}
			
		}else if(e.getActionCommand()=="重置")
		{
			this.clear();
		}			
		
	}
				
		//清空文字框和密碼框
	public	void clear()
		{
			jtf.setText("");
			jpf.setText("");
		}
		    //學生登入判斷方法
			public void stulogin()
			{
				if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
				{
//					System.out.println("登入成功");
					JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
					this.clear();
					//關閉當前介面
					 dispose();
					 //建立一個新介面
					 Stu_UI ui=new Stu_UI();
				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jtf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else
				{
					JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
				    //清空輸入框
					this.clear();
				}
			}
			
			//教師登入判斷方法
			public void tealogin()
			{
				if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
				{
//					System.out.println("登入成功");
					 JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
					 this.clear();	
					//關閉當前介面
					 dispose();
					 //建立一個新介面,適用於教師來管理學生
					Teacher t=new Teacher();				 					
				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jtf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else
				{
					JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
				    //清空輸入框
					this.clear();
				}
			}
		
}

SQL.java 負責與資料庫建立連線,包括倆方法。一個是連線資料庫方法,一個是查詢方法。可進一步擴充套件。

package com.package_5;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

//寫一個類,用來與資料庫建立連線,並且查詢資料
class GetSQL
{
	//設定使用者名稱和密碼
		static String userword;
		static String pwd;
		
		static Connection ct=null;
		static PreparedStatement ps=null;
		static ResultSet rs=null;
	
	//用於連線資料庫的方法,可用於子類的繼承
	public static void ConnectSQL()
	{
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			ct=DriverManager.getConnection("jdbc:odbc:ywq");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	//用於向資料庫進行查詢的方法
	public static void sqlquery(String s)
	{
		//建立火箭車
		try {			
			ps=ct.prepareStatement("select * from info where 許可權=? ");
			//給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
			ps.setString(1, s);					
			//ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
			rs=ps.executeQuery();
			//迴圈取出
			while(rs.next()){
				//將教師的使用者名稱和密碼取出
				 userword=rs.getString(2);
				 pwd=rs.getString(3);
				System.out.println("成功獲取到密碼和使用者名稱from資料庫");
				System.out.println(userword+"\t"+pwd+"\t");	
			}
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
}

Stu_UI.java  學生登入成功後跳轉的介面

package com.package_5;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Stu_UI extends JFrame implements ActionListener
{

	     //定義元件
		JButton jb1,jb2=null;
		JPanel jp1,jp2,jp3=null;
		JLabel jlb1,jlb2,jlb3,jlb4=null;
		
//		public static void main(String[] args) {
//			// TODO Auto-generated method stub
//			Stu_UI  ui=new Stu_UI();
//		}	
	    //建構函式
		public  Stu_UI()    //不能申明為void!!!!!否則彈不出新介面
		{
			//建立元件
			jb1=new JButton("課程管理");
			jb2=new JButton("成績查詢");
			
			jp1=new JPanel();
			jp2=new JPanel();
			jp3=new JPanel();
			
			jlb1=new JLabel("姓名");
			jlb2=new JLabel("學號");
			jlb3=new JLabel("最新公告:");
			jlb4=new JLabel("我校舉行六十週年校慶的通知");
			
			jp1.add(jlb1);
			jp1.add(jlb2);
			
			jp2.add(jb1);
			jp2.add(jlb3);
			
			jp3.add(jb2);
			jp3.add(jlb4);
			
			
			this.add(jp1);
			this.add(jp2);
			this.add(jp3);
			
			//設定佈局管理器
			this.setLayout(new GridLayout(3,3,50,50));
			this.setTitle("學生成績管理系統");
			this.setSize(400,300);
			this.setLocation(200, 200);		
			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.setVisible(true);

}
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			
		}
}

Teacher.java 教師登入成功後跳轉的介面。
package com.package_5;

import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Teacher extends JFrame implements ActionListener{
     
	//定義元件
	JLabel jl2=null;
	JTextField jtf=null;
	JButton jb=null;
	JPanel jp1,jp2=null;
	JTable jtable=null;
	
	String name=null;
	String num=null;

	static Connection ct=null;
	PreparedStatement ps=null;
	ResultSet rs=null;
	
//	public static void main(String[] args) {
//		// TODO Auto-generated method stub
//		Teacher t=new Teacher();
//		
//		try {
//			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//			ct=DriverManager.getConnection("jdbc:odbc:ywq");
//		} catch (Exception e) {
//			
//			e.printStackTrace();
//		}
//		
//	}	
	
	
	//建構函式
	public Teacher()
	{
		//建立元件
		jl2=new JLabel("請輸入學號:");
		jtf=new JTextField(10);
		jb=new JButton("查詢");
		//設定監聽
		jb.addActionListener(this);
		//設定表格
		final Object[] columnNames = {"姓名","學號"};
		Object[][] rowData = {
				{"小明","2015110512"},
				{"小","2015110"},
				{"小紅","2015110511"}
		};
		jtable=new JTable(rowData, columnNames);		
		
		jp1=new JPanel();
		jp2=new JPanel();

		jp1.add(jl2);
		jp1.add(jtf);
		jp1.add(jb);
		jp2.add(jtable);
		
		this.add(jp1);
		this.add(jp2);
		
		this.setLayout(new GridLayout(2,3));
		this.setTitle("學生成績管理系統—教師");
		this.setSize(500,400);
		this.setLocation(200, 200);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
		
	}


	@Override
	public void actionPerformed(ActionEvent e) {
		
		if(e.getActionCommand()=="查詢")
		{
			//JOptionPane.showMessageDialog(null,"查詢成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
			//建立火箭車
			try {
				ps=ct.prepareStatement("select * from info where xuehao=? ");
				//給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
				ps.setString(1, jtf.getText());					
				//ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
				rs=ps.executeQuery();
				//迴圈取出
				if(rs.next())
				{
					 name=rs.getString(5);
					System.out.println("查詢成功from資料庫");
					System.out.println(name+"\t");	
					JOptionPane.showMessageDialog(null,"查詢成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else
				{
					System.out.println("查詢失敗");
					JOptionPane.showMessageDialog(null,"查詢失敗!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}
//				while(rs.next()){
//					//將教師的使用者名稱和密碼取出
////					 num=rs.getString(4);
//					 name=rs.getString(5);
//					System.out.println("查詢成功from資料庫");
//					System.out.println(name+"\t");	
//				}
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		
			
		}
		
	}	
}



步驟5:優化資料庫驗證條件,使用不同的表來進行查詢。

            教師介面增加查詢功能。

程式碼如下:Login6.java

/*
 * 功能:學生成績管理系統
 * 步驟1、登入介面的靜態實現
 * 步驟2:實現介面的切換
 * 步驟3:使用資料庫來驗證使用者名稱和密碼
 * 步驟4:對程式碼進行優化。增加專門用來與資料庫進行連線的類
 * 步驟5:優化程式碼,增加判斷條件。
 * 步驟6:使用資料庫進行查詢時,優化查詢方法和判斷條件。資料庫的表中可有多個數據。引入不同的表來查詢。
 * 步驟7:教師介面實現了查詢某個學生資訊和某教師資訊的功能。
 * author:ywq
 */
package com.package_7;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class Login6 extends JFrame implements ActionListener {

	//定義登入介面的元件
	JButton jb1,jb2,jb3=null;
	JRadioButton jrb1,jrb2=null;
	JPanel jp1,jp2,jp3,jp4=null;
    JTextField jtf=null;
	JLabel jlb1,jlb2,jlb3=null;
	JPasswordField jpf=null;
	ButtonGroup bg=null;	
	
	//選單項
	JMenuBar jmb=null;	
	JMenu jm=null;
	JMenuItem jmi1,jmi2=null;
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Login6  ms=new Login6();
		
						
	}
	//建構函式
	public Login6()
	{
		 //建立元件
		jb1=new JButton("登入");
		jb2=new JButton("重置");
		jb3=new JButton("退出");
		//設定監聽
		jb1.addActionListener(this);
		jb2.addActionListener(this);
		jb3.addActionListener(this);
		
		jmb=new JMenuBar(); //JMenuBar指選單欄
		jm=new JMenu("選項"); //JMenu是選單欄中的選項欄
		jmi1=new JMenuItem("開始"); //JMenuItem指選項欄中的選項
		jmi2=new JMenuItem("退出系統");
		jm.add(jmi1);
		jm.add(jmi2);
		jmb.add(jm);
		
		
		jrb1=new JRadioButton("教師",true);
		jrb2=new JRadioButton("學生");
		bg=new ButtonGroup();
		bg.add(jrb1);
		bg.add(jrb2);
//		jrb2.setSelected(true);
		
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		jp4=new JPanel();				
		
		jlb1=new JLabel("使用者名稱:");
		jlb2=new JLabel("密    碼:");
		jlb3=new JLabel("權    限:");
		
		jtf=new JTextField(10);
		jpf=new JPasswordField(10);
		//加入到JPanel中
		jp1.add(jlb1);
		jp1.add(jtf);
		
		jp2.add(jlb2);
		jp2.add(jpf);
		
		jp3.add(jlb3);
		jp3.add(jrb1);
		jp3.add(jrb2);
		
		jp4.add(jb1);
		jp4.add(jb2);
		jp4.add(jb3);
		
		//加入JFrame中
		this.setJMenuBar(jmb);
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);
		this.add(jp4);
		//設定佈局管理器
		this.setLayout(new GridLayout(4,1));
		//給視窗設定標題
		this.setTitle("學生成績管理系統");
		//設定窗體大小
		this.setSize(300,250);
		//設定窗體初始位置
		this.setLocation(200, 150);
		//設定當關閉視窗時,保證JVM也退出
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//顯示窗體
		this.setVisible(true);
		this.setResizable(true);
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {

		if(e.getActionCommand()=="退出")
		{
			System.exit(0);
		}else if(e.getActionCommand()=="登入")
		{
			if(!jtf.getText().isEmpty() && !jpf.getText().isEmpty())
			{
				//當點選登入按鈕時,首先與資料庫建立連線
				GetSQL.ConnectSQL();
				//如果選中教師登入
				if(jrb1.isSelected())
				{
					GetSQL.querytea("教師",jtf.getText());
					//首先判斷是否存在該使用者,即是否得到了密碼
					if(GetSQL.pwd ==null)
					{
                         this.clear();
					}else
					{
						//呼叫登入方法
						this.tealogin();
					}
				}else if(jrb2.isSelected()) //學生在登入系統
				{
					GetSQL.querystu("學生",jtf.getText());
					//首先判斷是否存在該使用者,即是否得到了密碼
					if(GetSQL.pwd ==null)
					{
                         this.clear();
					}else
					{
						//呼叫登入方法
						this.stulogin();
					}
				   
				}
			}else if(jtf.getText().isEmpty())
			{
				JOptionPane.showMessageDialog(null,"請輸入使用者名稱","提示訊息",JOptionPane.WARNING_MESSAGE);
			    this.clear();
			}else if(jpf.getText().isEmpty())	
			{
				JOptionPane.showMessageDialog(null,"請輸入密碼","提示訊息",JOptionPane.WARNING_MESSAGE);
			    this.clear();
			}
		}else if(e.getActionCommand()=="重置")
		{
			this.clear();
		}			
		
	}
				
		//清空文字框和密碼框
	public	void clear()
		{
			jtf.setText("");
			jpf.setText("");
		}
		    //學生登入判斷方法
			public void stulogin()
			{
				if(GetSQL.pwd.equals(jpf.getText()))
				{
//					System.out.println("登入成功");
					JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
					this.clear();
					//關閉當前介面
					 dispose();
					 //建立一個新介面
					 Stu_UI6 ui=new Stu_UI6();
				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jtf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else
				{
					JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
				    //清空輸入框
					this.clear();
				}
			}
			
			//教師登入判斷方法
			public void tealogin()
			{
				if(GetSQL.pwd.equals(jpf.getText()))
				{
//					System.out.println("登入成功");
					 JOptionPane.showMessageDialog(null,"登入成功!","提示訊息",JOptionPane.WARNING_MESSAGE);
					 this.clear();	
					//關閉當前介面
					 dispose();
					 //建立一個新介面,適用於教師來管理學生
					Teacher6 t=new Teacher6();				 					
				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱和密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jtf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入使用者名稱!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else if(jpf.getText().isEmpty())
				{
					JOptionPane.showMessageDialog(null,"請輸入密碼!","提示訊息",JOptionPane.WARNING_MESSAGE);
				}else
				{
					JOptionPane.showMessageDialog(null,"使用者名稱或者密碼錯誤!\n請重新輸入","提示訊息",JOptionPane.ERROR_MESSAGE);
				    //清空輸入框
					this.clear();
				}
			}
		
}


SQL.java

/*
 * 功能:用來和資料庫SQLserver進行連線,以及相應的查詢方法。
 */
package com.package_7;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JOptionPane;

//寫一個類,用來與資料庫建立連線,並且查詢資料
class GetSQL {
	// 設定使用者名稱和密碼
	static String userword;
	static String pwd;
	
	static String english;
	static String num;
	static String name;
	static String chinese;
	static String zhengzhi;
	static String math;
	
	static String age;
	static String salary;
	static String sex;
	static String zhicheng;
	static String teanum;
	static String teaname;

	static Connection ct = null;
	static PreparedStatement ps = null;
	static ResultSet rs = null;

	// 用於連線資料庫的方法,可用於子類的繼承
	public static void ConnectSQL() {
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			ct = DriverManager.getConnection("jdbc:odbc:ywq");
			System.out.println("The SQL is connected");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	// 用於向資料庫進行查詢的方法
	public static void querystu(String s,String username) {
		// 建立火箭車
		try {
			ps = ct.prepareStatement("select * from info where 許可權=? and 使用者名稱=? ");
			// 給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
			ps.setString(1, s);
			ps.setString(2, username);
			// ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
			rs = ps.executeQuery();
			// 迴圈取出
			if (rs.next()) {
				// 將教師的使用者名稱和密碼取出
				userword = rs.getString(2);
				pwd = rs.getString(3);
				System.out.println("成功獲取到密碼和使用者名稱from資料庫");
				System.out.println(userword + "\t" + pwd + "\t");
			}else
			{
				JOptionPane.showMessageDialog(null, "沒有此使用者,請重新輸入!", "提示訊息", JOptionPane.WARNING_MESSAGE);
			}
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
	//在教師表中進行查詢
	public static void querytea(String s,String name ) {
		// 建立火箭車
		try {
			ps = ct.prepareStatement("select * from info_tea where 許可權=? and 使用者名稱=? ");
			// 給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
			ps.setString(1, s);
			ps.setString(2, name);
			// ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
			rs = ps.executeQuery();
			// 迴圈取出
			if (rs.next()) {
				// 將教師的使用者名稱和密碼取出
				userword = rs.getString(2);
				pwd = rs.getString(3);
				System.out.println("成功獲取到密碼和使用者名稱from資料庫");
				System.out.println(userword + "\t" + pwd + "\t");
			}else
			{
				JOptionPane.showMessageDialog(null, "沒有此使用者,請重新輸入!", "提示訊息", JOptionPane.WARNING_MESSAGE);
			}
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	//從資料庫中根據學號或者教工號來查詢資料,並且填入表格。
	public static void getdatastu(String s) {
		// 建立火箭車
		try {
			ps = ct.prepareStatement("select * from info where 學號 =? ");
			// 給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
			ps.setString(1, s);
			// ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
			rs = ps.executeQuery();
			if(rs.next())	
			{
				// 將教師的使用者名稱和密碼取出
				num = rs.getString(4);
				name = rs.getString(5);
				math = rs.getString(6);
				chinese = rs.getString(7);
				english = rs.getString(8);
				zhengzhi = rs.getString(9);
			}else
			{
				JOptionPane.showMessageDialog(null, "沒有此學生,請重新輸入", "提示訊息", JOptionPane.WARNING_MESSAGE);
			}
	
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
	public static void getdatatea(String s) {
		// 建立火箭車
		try {
			ps = ct.prepareStatement("select * from info_tea where 教師編號號 =? ");
			// 給?賦值(可防止SQL注入漏洞問題),不要直接使用拼接的方式
			ps.setString(1, s);
			// ResultSet結果集,大家可以把ResultSet理解成返回一張錶行的結果集
			rs = ps.executeQuery();
			if(rs.next())	
			{
				// 將教師的使用者名稱和密碼取出
				teanum = rs.getString(4);
				teaname = rs.getString(5);
				sex = rs.getString(6);
				salary = rs.getString(7);
				zhicheng = rs.getString(8);
				age = rs.getString(9);
			}else
			{
				JOptionPane.showMessageDialog(null, "沒有此教師,請重新輸入", "提示訊息", JOptionPane.WARNING_MESSAGE);
			}
	
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
	
}

Stu_UI6.java
/*
 * 功能:學生登入成功介面。
 * 
 */
package com.package_7;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Stu_UI6 extends JFrame implements ActionListener
{

	     //定義元件
		JButton jb1,jb2=null;
		JPanel jp1,jp2,jp3=null;
		JLabel jlb1,jlb2,jlb3,jlb4=null;
		
//		public static void main(String[] args) {
//			// TODO Auto-generated method stub
//			Stu_UI6  ui=new Stu_UI6();
//		}	
	    //建構函式
		public  Stu_UI6()    //不能申明為void!!!!!否則彈不出新介面
		{
			//建立元件
			jb1=new JButton("課程管理");
			jb2=new JButton("成績查詢");
			
			jp1=new JPanel();
			jp2=new JPanel();
			jp3=new JPanel();
			
			jlb1=new JLabel("姓名");
			jlb2=new JLabel("學號");
			jlb3=new JLabel("最新公告:");
			jlb4=new JLabel("我校舉行六十週年校慶的通知");
			
			jp1.add(jlb1);
			jp1.add(jlb2);
			
			jp2.add(jb1);
			jp2.add(jlb3);
			
			jp3.add(jb2);
			jp3.add(jlb4);
			
			
			this.add(jp1);
			this.add(jp2);
			this.add(jp3);
			
			//設定佈局管理器
			this.setLayout(new GridLayout(3,3,50,50));
			this.setTitle("學生成績管理系統");
			this.setSize(400,300);
			this.setLocation(200, 200);		
			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.setVisible(true);

}
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			
		}
}


Teacher.java
/*
 * 功能:實現了查詢學生和老師的資訊,並且顯示在表格中的功能。
 */

package com.package_7;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Teacher6 extends JFrame implements ActionListener {

	// 定義元件
	JLabel jl2,jl,jl3,jl4 = null;
	JTextField jtf,jtf2 = null;
	JButton jb,jb2 = null;
	JPanel jp1, jp2,jp3,jp4,jp5,jp6 = null;

	DefaultTableModel model,model2 = null;
	JTable table,table2 = null;
	JScrollPane jsp,jsp2 = null;

//	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		Teacher6 t = new Teacher6();
//	}

	// 建構函式
	public Teacher6() {
		// 建立元件		
		jl = new JLabel("請輸入學號:");
		jl2=new JLabel("請輸入教工號:");	
		
		jl3=new JLabel("學生資訊表:");
		jl4=new JLabel("教師資訊表:");
		
		jtf = new JTextField(10);
		jtf2 = new JTextField(10);
		jb = new JButton("查詢1");
		jb2 = new JButton("查詢2");
		// 設定監聽
		jb.addActionListener(this);
		jb2.addActionListener(this);
		// 設定表格1
		String[] colnames = { "姓名", "學號", "數學", "語文", "英語", "政治" };
		model = new DefaultTableModel(colnames, 3);
		table = new JTable(model);
		jsp = new JScrollPane(table);
		//設定表格2
		String[] col = { "姓名", "教工號", "性別", "工資", "職稱", "年齡" };
		model2 = new DefaultTableModel(col, 3);
		table2 = new JTable(model2);
		jsp2 = new JScrollPane(table2);
		

		jp1 = new JPanel();
		jp2 = new JPanel();
		jp3 = new JPanel();
		jp4 = new JPanel();
		jp5 = new JPanel();
		jp6 = new JPanel();
		jp5.setLayout(new BorderLayout());
		jp6.setLayout(new BorderLayout());

		jp1.add(jl);
		jp1.add(jtf);
		jp1.add(jb);
		jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
		jp1.setPreferredSize(new Dimension(20,20));
		
		jp3.add(jl2);
		jp3.add(jtf2);
		jp3.add(jb2);
		jp3.setLayout(new FlowLayout(FlowLayout.LEFT));

		jp2.add(jsp);
		jp4.add(jsp2);
		
		jp5.add(jl3,BorderLayout.SOUTH);
		jp6.add(jl4,BorderLayout.SOUTH);

		this.add(jp1);
		this.add(jp5);
		this.add(jp2);
		this.add(jp3);
		this.add(jp6);
		this.add(jp4);
		
		this.setLayout(new GridLayout(6, 1));
		this.setTitle("學生成績管理系統—教師");
		this.setSize(500, 500);
		this.setLocation(150, 150);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setResizable(false);
		

	}

	@Override
	public void actionPerformed(ActionEvent e) {

		if (e.getActionCommand().equals("查詢1")  &&!jtf.getText().isEmpty()) {						
			// 當點選查詢按鈕1時,首先與資料庫建立連線
			GetSQL.ConnectSQL();
			GetSQL.getdatastu(jtf.getText());
			jtf.setText("");
//			System.out.println(GetSQL.english);
//			System.out.println(GetSQL.chinese);
			// 將資料填入表格	
			table.setValueAt(GetSQL.name, 0, 0);
			table.setValueAt(GetSQL.num, 0, 1);
			table.setValueAt(GetSQL.math, 0, 2);
			table.setValueAt(GetSQL.chinese, 0, 3);
			table.setValueAt(GetSQL.english, 0, 4);
			table.setValueAt(GetSQL.zhengzhi, 0, 5);				
				
		}else if (e.getActionCommand().equals("查詢2")  &&!jtf2.getText().isEmpty())
		{
			// 當點選查詢按鈕1時,首先與資料庫建立連線
			GetSQL.ConnectSQL();
			GetSQL.getdatatea(jtf2.getText());
			jtf2.setText("");

			// 將資料填入表格				
			table2.setValueAt(GetSQL.teaname, 0, 0);
			table2.setValueAt(GetSQL.teanum, 0, 1);
			table2.setValueAt(GetSQL.sex, 0, 2);
			table2.setValueAt(GetSQL.salary, 0, 3);
			table2.setValueAt(GetSQL.zhicheng, 0, 4);
			table2.setValueAt(GetSQL.age, 0, 5);
		}else
		{
			JOptionPane.showMessageDialog(null , "請輸入要查詢的編號","提示訊息",JOptionPane.WARNING_MESSAGE);
		}

	}
}

其中,資料庫資料如圖所示:


在前面的資料庫查詢中,使用了

ps=ct.prepareStatement("select * from info where 許可權=? ");

這條語句,是依次將資料庫中的許可權“學生”或者"教師"的資料全部取出來,進行判斷時,會產生錯誤。因為其將最後一個數據複製給了username和password。

改進方法:

ps = ct.prepareStatement("select * from info where 許可權=? and 使用者名稱=? "); 

此條語句按照jtf.getText()來進行查詢,如果查到此使用者名稱則判斷密碼是否正確。否則將彈出“使用者名稱不存在的提示”,較好的解決了查詢問題。

如圖所示:

教師登入成功介面,如圖:


在此係統中,可以對資料庫中學生表和教師表中的資訊進行查詢,按照提示,可輸入學號和教工號來實現。

如圖所示:


說說經驗之談,在構建表格的時候,列名怎麼也不出現。

查閱資料後發現,只有將JTable加入到JScrollPane中才會顯示列名。程式碼如下:

// 設定表格1
        String[] colnames = { "姓名", "學號", "數學", "語文", "英語", "政治" };

        model = new DefaultTableModel(colnames, 3);

        table = new JTable(model);

        jsp = new JScrollPane(table);

然後將JScrollPane新增進一個JPanel中,實現了表格的設定。

至於點選查詢按鈕所進行的查詢工作就和前面大同小異了。當輸入的學號或者教工號不存在時,會給出一個提示。如圖所示:





簡易資訊管理系統適合新手學Java圖形介面開發。

1、登入介面可以進行登入操作。有倆種許可權選擇。分別跳轉到不同的介面。

2、使用了事件監聽、Java操作SQLserver資料庫等知識。

3、圖形化介面中使用了JTable等元件,將查詢結果顯示在表格中。

其實,在這個簡單的程式中,至少我可以看出可以使用單例模式和門面模式。


經過好久的努力,在圖形化介面開發上,希望能夠幫助更多正在學習圖形介面開發的小夥伴~

如果對你有幫助,記得點贊哦~歡迎大家關注我的部落格,可以加群366533258交流討論哈~
 

相關推薦

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

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

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

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

JAVA用於List實現簡單的學生管理系統

作為一名JAVA的程式設計師,無論初學者也好大神也好,學生管理系統是個很好例子,初學者用陣列、list等來寫簡單的學生管理系統,大神則是用swing+資料庫做有介面的學生管理系統,廢話不多說,今天我就用List來實現學生管理系統。 學生管理系統主要針對學生,我

java基礎語言編寫一個班級學生管理系統

import java.util.Scanner; class StuManager {     public static void main(String[] args)     {         System.out.println("*********************");      

java-IO 檔案作為資料庫的學生管理系統

import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOExc

Java 基於MySQL資料庫的簡單學生管理系統

因為實驗室要交作業然後就做了一個學生管理系統  貼個程式碼紀念一下~ 做的太急介面什麼的也比較差 還有一些小細節沒有完善不過還是能實現主要的功能的~ Window是主介面 package First; import java.sql.*; import java.aw

springMVC-spring-Hibernate 開發學生管理系統簡單案例-java各檔案編寫(四)

四、java各檔案編寫 原始檔:https://download.csdn.net/download/flyingshadower/10628472 (1)工程目錄: (2)StudentEntity 利用Hibernate自動生成實體類 package com.student

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

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

java學生管理系統介面簡單實現

學生管理系統簡單的實現,供初學Java Swing同學學習使用。 import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import j

Java Swing 圖形介面開發簡介

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

學生管理系統開發程式碼分析筆記:jsp+java bean+servlet技術

1 序言 學習java web的時候很渴望有一份完整的專案給我閱讀,而網上的大部分專案拿過來都無法直接用,好不容易找到了一個學生管理系統也是漏洞百出。在此,我將邊修改邊學習這份程式碼,並且加上完全的註釋,以便日後查閱。 2 專案說明 該專案為常見的學生管理系統,系統用例就

JAVA使用GUI編寫一個簡單的學生管理系統0.1版本--學生登陸介面

JAVA入門,寫的不好請多包涵,如有不懂,下方可提問,有問會必答! import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Login{ public stati

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

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

java構建學生管理系統(一)

class 管理系統 同時 進步 傳參 databases 什麽 界面 查看 用java搭建學生管理系統,重要還是對數據庫的操作,諸如增刪改查等。 1.基本的功能: 老師完成對學生信息的查看和修改,完成對班級的信息的概覽。 學生可以看自己的成績和對自己信息的修改。 學生和老

二、springMVC項目依賴配置pom.xml - Java開發企業級權限管理系統

-- nal tools core -a RM hot jar maven <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

Java開發企業級權限管理系統 視頻教程

登錄接口 myba 分布式緩存 系統介紹 功能實現 工具類 let -a xxx 第1章 課程整體概述與權限管理系統介紹 1-1 為什麽企業級項目需要權限管理 1-2 權限管理的核心是什麽? 1-3 理想中的權限管理應該是什麽樣的? 1-4 主流開源權限管理

基於struts2框架開發學生管理系統

vpd peid esc png 頁面 介紹 pass 面數據 分享 學生管理系統采用struts2框架作為後臺開發框架,jsp實現頁面數據的展示,數據庫采用mysql。功能介紹:包含學生信息管理,班級信息管理,年級信息管理,系統信息管理等功能。數據庫模型設置如下:CREA

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

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

java學生管理系統

要求:1、新增學生    2、刪除指定學號的學生    3、修改指定學號的成績               4、查詢指定學號的資訊      &n

springMVC-spring-Hibernate 開發學生管理系統簡單案例-jsp檔案說明(五)

五、jsp檔案說明 原始檔:https://download.csdn.net/download/flyingshadower/10628472 (1)jsp檔案如圖: (2)addPage.jsp <%@ page contentType="text/html;char