java(swing)+ mysql實現(xiàn)學(xué)生信息管理系統(tǒng)源碼
更新時間:2022年05月22日 09:28:33 作者:broccoli2
這篇文章主要分享了java mysql實現(xiàn)學(xué)生信息管理系統(tǒng)的源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現(xiàn)學(xué)生信息管理系統(tǒng)源碼,供大家參考,具體內(nèi)容如下
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.AbstractTableModel;
import javax.swing.text.BadLocationException;
/*
DROP DATABASE IF EXISTS `myproject`;
CREATE DATABASE myproject DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
USE ABC;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` varchar(36) NOT NULL,
`name` varchar(36) NOT NULL,
`age` varchar(36) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
*
*
*/
public class Test extends JFrame {
private static final long serialVersionUID = 1L;
private JTable table;
private JPanel panel;
private JScrollPane scrollpane;
private JButton button1, button2, button3;
private JTextArea text1, text2, text3;
private List<Student> stu;
public Test() throws BadLocationException, SQLException {
super("學(xué)生信息");
this.setSize(500, 340);
this.add(getJScrollPane(stu), BorderLayout.CENTER);
this.add(getJPanel(), BorderLayout.SOUTH);
this.setResizable(true);
this.setLocation(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// 設(shè)置JScrollPane方法
private JScrollPane getJScrollPane(List<Student> stu) throws SQLException {
if (scrollpane == null) {
scrollpane = new JScrollPane();
scrollpane.setViewportView(getJTable(stu));
}
return scrollpane;
}
// 設(shè)置JPanel方法
private JPanel getJPanel() {
if (panel == null) {
panel = new JPanel();
panel.setLayout(new GridLayout(2, 3));
text1 = new JTextArea();
text2 = new JTextArea();
text3 = new JTextArea();
button1 = new JButton("添加");
button2 = new JButton("刪除");
button3 = new JButton("更新");
button1.addActionListener(new insert());
button2.addActionListener(new delete());
button3.addActionListener(new update());
text1.setBorder(BorderFactory.createLineBorder(Color.gray, 2));
text2.setBorder(BorderFactory.createLineBorder(Color.gray, 2));
text3.setBorder(BorderFactory.createLineBorder(Color.gray, 2));
text1.setFont(new Font("宋體", Font.BOLD, 16));
text2.setFont(new Font("宋體", Font.BOLD, 16));
text3.setFont(new Font("宋體", Font.BOLD, 16));
text1.setText("id");
text2.setText("name");
text3.setText("age");
panel.add(text1);
panel.add(text2);
panel.add(text3);
panel.add(button1);
panel.add(button2);
panel.add(button3);
}
return panel;
}
// 設(shè)置Jtable方法
private void setJTable(JTable table) {
table.setFont(new Font("宋體", Font.BOLD, 18));
table.setRowHeight(30);
}
// 獲取Jtable對象方法(該方法具體就是獲得jtable對象的時候 一并從數(shù)據(jù)取出學(xué)生信息并放入Jtable表格中)
private JTable getJTable(List<Student> stu) throws SQLException {
if (table == null) {
JDBCDaoImpl jdbc = new JDBCDaoImpl();
ResultSet rs = jdbc.search();
stu = select(rs);
jdbc.closeConnection();
table = new JTable(new Table(stu));
setJTable(table);
}
return table;
}
// 設(shè)置學(xué)生信息方法(該方法是用戶增加 刪除 更新用戶操作的具體實現(xiàn)方法 包含了完整性檢查)
private Student setStu() {
if (text1.getText().equals("") || text2.getText().equals("") || text3.getText().equals("")) {
return null;
} else {
Student sd = new Student();
sd.setId(text1.getText());
sd.setName(text2.getText());
sd.setAge(text3.getText());
return sd;
}
}
// 重置輸入框為空
private void resetText() {
text1.setText("");
text2.setText("");
text3.setText("");
}
// 刷新學(xué)生信息方法(該方法是重新讀取數(shù)據(jù)庫學(xué)生的信息 然后返回一個學(xué)生的集合 用于刷新Jtable表格對象中的數(shù)據(jù))
private List<Student> select(ResultSet rs) throws SQLException {
List<Student> st = new ArrayList<Student>();
while (rs.next()) {
Student s = new Student();
s.setId(rs.getString(1));
s.setName(rs.getString(2));
s.setAge(rs.getString(3));
st.add(s);
}
return st;
}
// 添加按鈕-監(jiān)聽器(該方法是對添加按鈕實現(xiàn)的具體方法 )
class insert implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
stu = new ArrayList<Student>();
Student sd = new Student();
JDBCDaoImpl jdbc = new JDBCDaoImpl();
sd = setStu();
if (sd != null) {
jdbc.insert(sd);
ResultSet rs = jdbc.search();
try {
stu = select(rs);
} catch (SQLException e1) {
e1.printStackTrace();
}
jdbc.closeConnection();
JTable table = new JTable(new Table(stu));//新建一個Jtable 對象 用來盛放增加后的學(xué)生信息
setJTable(table);//設(shè)置Jtable信息
Test.this.scrollpane.setViewportView(table);//把Jtable設(shè)置到Panel
resetText();
} else {
JOptionPane.showMessageDialog(Test.this, "輸入數(shù)據(jù)不完整");
}
}
}
// 刪除按鈕-監(jiān)聽器(該方法是對刪除按鈕實現(xiàn)的具體方法)
class delete implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
stu = new ArrayList<Student>();
Student sd = new Student();
JDBCDaoImpl jdbc = new JDBCDaoImpl();
sd = setStu();
if (sd != null) {
jdbc.delete(sd);
ResultSet rs = jdbc.search();
try {
stu = select(rs);
} catch (SQLException e1) {
e1.printStackTrace();
}
jdbc.closeConnection();
JTable table = new JTable(new Table(stu));//新建一個Jtable 對象 用來盛放增加后的學(xué)生信息
setJTable(table);//設(shè)置Jtable信息
Test.this.scrollpane.setViewportView(table);//把Jtable設(shè)置到Panel
resetText();
} else {
JOptionPane.showMessageDialog(Test.this, "輸入數(shù)據(jù)不完整");
}
}
}
// 更新按鈕-監(jiān)聽器(該方法是對更新按鈕實現(xiàn)的具體方法)
class update implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
stu = new ArrayList<Student>();
Student sd = new Student();
JDBCDaoImpl jdbc = new JDBCDaoImpl();
sd = setStu();
if (sd != null) {
jdbc.update(sd);
ResultSet rs = jdbc.search();
try {
stu = select(rs);
} catch (SQLException e1) {
e1.printStackTrace();
}
jdbc.closeConnection();
JTable table = new JTable(new Table(stu));//新建一個Jtable 對象 用來盛放增加后的學(xué)生信息
setJTable(table);//設(shè)置Jtable信息
Test.this.scrollpane.setViewportView(table);//把Jtable設(shè)置到Panel
resetText();
} else {
JOptionPane.showMessageDialog(Test.this, "輸入數(shù)據(jù)不完整");
}
}
}
// Student類 (用于封裝數(shù)據(jù)信息和數(shù)據(jù)庫表進行映射)
public class Student {
// 學(xué)生的id name age信息
private String id;
private String name;
private String age;
// get&set方法
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
// JTable 表模式類 (JTable對象 初始化的時候通過 這個Table獲取表格的行數(shù)、列數(shù)、列標題、以及每個單元格存放的數(shù)據(jù) 具體使用原因放在開頭的備注了)
public class Table extends AbstractTableModel {
List<Student> stu = new ArrayList<Student>();
public Table(List s) {
this.stu = s;
}
public List<Student> getStu() {
return stu;
}
public void setStu(List<Student> stu) {
this.stu = stu;
}
@Override
// 獲取行數(shù)
public int getRowCount() {
return stu.size();
}
@Override
// 獲取列數(shù)
public int getColumnCount() {
// TODO Auto-generated method stub
return 3;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
// 獲取列名字
public String getColumnName(int col) {
String res = "";
switch (col) {
case 0:
res = "ID";
break;
case 1:
res = "Name";
break;
case 2:
res = "Age";
break;
default:
break;
}
return res;
}
@Override
// 獲取具體值
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
Object res = "";
Student temp = stu.get(rowIndex);
switch (columnIndex) {
case 0:
res = temp.getId();
break;
case 1:
res = temp.getName();
break;
case 2:
res = temp.getAge();
break;
default:
break;
}
return res;
}
}
// JDBCDAO類 配置連接數(shù)據(jù)的信息,鏈接釋放操作和基本增刪改查操作
public class JDBCDaoImpl {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8&useSSL=false";
String user = "root";
String passwd = "123456";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
// 數(shù)據(jù)庫連接開始
public Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, passwd);
stmt = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
// 數(shù)據(jù)庫連接釋放
public void closeConnection() {
if (rs != null) {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (rs == null) {
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 查找操作
public ResultSet search() {
getConnection();
try {
String sql = "SELECT * FROM student";
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
// 添加操作
public void insert(Student sd) {
// TODO Auto-generated method stub
getConnection();
try {
String sql = "INSERT INTO student(id,name,age)" + "VALUES('" + sd.getId() + "','" + sd.getName() + "','"
+ sd.getAge() + "')";
int count = stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
// 刪除操作
public void delete(Student sd) {
// TODO Auto-generated method stub
getConnection();
try {
String sql = "DELETE FROM student WHERE id = '" + sd.getId() + "'";
int count = stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
// 更新操作
public void update(Student sd) {
// TODO Auto-generated method stub
getConnection();
try {
String sql = "UPDATE student SET name='" + sd.getName() + "',age= '" + sd.getAge() + "'WHERE id = '"
+ sd.getId() + "'";
int count = stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// main 方法
public static void main(String[] args) throws BadLocationException, SQLException {
new Test().setVisible(true);
}
}
關(guān)于管理系統(tǒng)的更多內(nèi)容請點擊《管理系統(tǒng)專題》進行學(xué)習(xí)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Java+Mysql學(xué)生管理系統(tǒng)源碼
- javaWeb實現(xiàn)學(xué)生信息管理系統(tǒng)
- Java+MySQL實現(xiàn)學(xué)生信息管理系統(tǒng)源碼
- java學(xué)生管理系統(tǒng)界面簡單實現(xiàn)(全)
- java學(xué)生信息管理系統(tǒng)源代碼
- Java?GUI實現(xiàn)學(xué)生成績管理系統(tǒng)
- java實現(xiàn)簡單的學(xué)生信息管理系統(tǒng)代碼實例
- Java基于MySQL實現(xiàn)學(xué)生管理系統(tǒng)
- 簡單實現(xiàn)Java版學(xué)生管理系統(tǒng)
- Java實現(xiàn)簡易學(xué)生管理系統(tǒng)
相關(guān)文章
@FeignClient?path屬性路徑前綴帶路徑變量時報錯的解決
這篇文章主要介紹了@FeignClient?path屬性路徑前綴帶路徑變量時報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解
這篇文章主要介紹了intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
Java實現(xiàn)FTP文件的上傳和下載功能的實例代碼
FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。接下來通過本文給大家實例講解Java實現(xiàn)FTP文件的上傳和下載功能,需要的的朋友一起看看吧2016-11-11
PropertiesLoaderUtils 出現(xiàn)中文亂碼的解決方式
這篇文章主要介紹了PropertiesLoaderUtils 出現(xiàn)中文亂碼的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08

