欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java(swing)+ mysql實現(xiàn)學生信息管理系統(tǒng)源碼

 更新時間:2022年05月22日 09:28:33   作者:broccoli2  
這篇文章主要分享了java mysql實現(xiàn)學生信息管理系統(tǒng)的源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)學生信息管理系統(tǒng)源碼,供大家參考,具體內容如下

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("學生信息");
 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);
 }

 // 設置JScrollPane方法
 private JScrollPane getJScrollPane(List<Student> stu) throws SQLException {
 if (scrollpane == null) {
 scrollpane = new JScrollPane();
 scrollpane.setViewportView(getJTable(stu));
 }
 return scrollpane;
 }

 // 設置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;

 }

 // 設置Jtable方法
 private void setJTable(JTable table) {
 table.setFont(new Font("宋體", Font.BOLD, 18));
 table.setRowHeight(30);
 }

 // 獲取Jtable對象方法(該方法具體就是獲得jtable對象的時候 一并從數(shù)據(jù)取出學生信息并放入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;
 }

 // 設置學生信息方法(該方法是用戶增加 刪除 更新用戶操作的具體實現(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("");
 }

 // 刷新學生信息方法(該方法是重新讀取數(shù)據(jù)庫學生的信息 然后返回一個學生的集合 用于刷新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 對象 用來盛放增加后的學生信息
 setJTable(table);//設置Jtable信息
 Test.this.scrollpane.setViewportView(table);//把Jtable設置到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 對象 用來盛放增加后的學生信息
 setJTable(table);//設置Jtable信息
 Test.this.scrollpane.setViewportView(table);//把Jtable設置到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 對象 用來盛放增加后的學生信息
 setJTable(table);//設置Jtable信息
 Test.this.scrollpane.setViewportView(table);//把Jtable設置到Panel
 resetText();
 } else {
 JOptionPane.showMessageDialog(Test.this, "輸入數(shù)據(jù)不完整");

 }

 }

 }

 // Student類 (用于封裝數(shù)據(jù)信息和數(shù)據(jù)庫表進行映射)
 public class Student {
 // 學生的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);

 }
}

關于管理系統(tǒng)的更多內容請點擊《管理系統(tǒng)專題》進行學習

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 劍指Offer之Java算法習題精講二叉樹專題篇下

    劍指Offer之Java算法習題精講二叉樹專題篇下

    跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質的變化
    2022-03-03
  • @FeignClient?path屬性路徑前綴帶路徑變量時報錯的解決

    @FeignClient?path屬性路徑前綴帶路徑變量時報錯的解決

    這篇文章主要介紹了@FeignClient?path屬性路徑前綴帶路徑變量時報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • java用split分割字符串的一個有趣現(xiàn)象

    java用split分割字符串的一個有趣現(xiàn)象

    最近在項目中使用了java中的split分割字符串,發(fā)現(xiàn)了一個bug,充分了展示了自己對java底層的認知有很多的不足和欠缺。下面將這次的經過總結出來分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • intellij idea設置統(tǒng)一JavaDoc模板的方法詳解

    intellij idea設置統(tǒng)一JavaDoc模板的方法詳解

    這篇文章主要介紹了intellij idea設置統(tǒng)一JavaDoc模板的方法詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Java判斷兩個日期相差天數(shù)的方法

    Java判斷兩個日期相差天數(shù)的方法

    這篇文章主要介紹了Java判斷兩個日期相差天數(shù)的方法,以實例形式對比分析了java進行日期換算及對比的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Java實現(xiàn)FTP文件的上傳和下載功能的實例代碼

    Java實現(xiàn)FTP文件的上傳和下載功能的實例代碼

    FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。接下來通過本文給大家實例講解Java實現(xiàn)FTP文件的上傳和下載功能,需要的的朋友一起看看吧
    2016-11-11
  • 解讀jdk動態(tài)代理為什么必須實現(xiàn)接口

    解讀jdk動態(tài)代理為什么必須實現(xiàn)接口

    這篇文章主要介紹了解讀jdk動態(tài)代理為什么必須實現(xiàn)接口問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • resty upload無需依賴的文件上傳與下載

    resty upload無需依賴的文件上傳與下載

    這篇文章主要為大家介紹了resty upload中無需依賴的文件上傳與下載過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步,早日升職加薪
    2022-03-03
  • PropertiesLoaderUtils 出現(xiàn)中文亂碼的解決方式

    PropertiesLoaderUtils 出現(xiàn)中文亂碼的解決方式

    這篇文章主要介紹了PropertiesLoaderUtils 出現(xiàn)中文亂碼的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Springcloud Eureka配置及集群代碼實例

    Springcloud Eureka配置及集群代碼實例

    這篇文章主要介紹了Springcloud Eureka配置及集群代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12

最新評論