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 許可權=? ");
改進方法:
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