java(swing)+ mysql實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)源碼
本文實(shí)例為大家分享了java實(shí)現(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對(duì)象方法(該方法具體就是獲得jtable對(duì)象的時(shí)候 一并從數(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é)生信息方法(該方法是用戶(hù)增加 刪除 更新用戶(hù)操作的具體實(shí)現(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; } } // 重置輸入框?yàn)榭? private void resetText() { text1.setText(""); text2.setText(""); text3.setText(""); } // 刷新學(xué)生信息方法(該方法是重新讀取數(shù)據(jù)庫(kù)學(xué)生的信息 然后返回一個(gè)學(xué)生的集合 用于刷新Jtable表格對(duì)象中的數(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)聽(tīng)器(該方法是對(duì)添加按鈕實(shí)現(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));//新建一個(gè)Jtable 對(duì)象 用來(lái)盛放增加后的學(xué)生信息 setJTable(table);//設(shè)置Jtable信息 Test.this.scrollpane.setViewportView(table);//把Jtable設(shè)置到Panel resetText(); } else { JOptionPane.showMessageDialog(Test.this, "輸入數(shù)據(jù)不完整"); } } } // 刪除按鈕-監(jiān)聽(tīng)器(該方法是對(duì)刪除按鈕實(shí)現(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));//新建一個(gè)Jtable 對(duì)象 用來(lái)盛放增加后的學(xué)生信息 setJTable(table);//設(shè)置Jtable信息 Test.this.scrollpane.setViewportView(table);//把Jtable設(shè)置到Panel resetText(); } else { JOptionPane.showMessageDialog(Test.this, "輸入數(shù)據(jù)不完整"); } } } // 更新按鈕-監(jiān)聽(tīng)器(該方法是對(duì)更新按鈕實(shí)現(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));//新建一個(gè)Jtable 對(duì)象 用來(lái)盛放增加后的學(xué)生信息 setJTable(table);//設(shè)置Jtable信息 Test.this.scrollpane.setViewportView(table);//把Jtable設(shè)置到Panel resetText(); } else { JOptionPane.showMessageDialog(Test.this, "輸入數(shù)據(jù)不完整"); } } } // Student類(lèi) (用于封裝數(shù)據(jù)信息和數(shù)據(jù)庫(kù)表進(jìn)行映射) 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 表模式類(lèi) (JTable對(duì)象 初始化的時(shí)候通過(guò) 這個(gè)Table獲取表格的行數(shù)、列數(shù)、列標(biāo)題、以及每個(gè)單元格存放的數(shù)據(jù) 具體使用原因放在開(kāi)頭的備注了) 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類(lèi) 配置連接數(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ù)庫(kù)連接開(kāi)始 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ù)庫(kù)連接釋放 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)容請(qǐng)點(diǎn)擊《管理系統(tǒng)專(zhuān)題》進(jìn)行學(xué)習(xí)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java+Mysql學(xué)生管理系統(tǒng)源碼
- javaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- Java+MySQL實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)源碼
- java學(xué)生管理系統(tǒng)界面簡(jiǎn)單實(shí)現(xiàn)(全)
- java學(xué)生信息管理系統(tǒng)源代碼
- Java?GUI實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- java實(shí)現(xiàn)簡(jiǎn)單的學(xué)生信息管理系統(tǒng)代碼實(shí)例
- Java基于MySQL實(shí)現(xiàn)學(xué)生管理系統(tǒng)
- 簡(jiǎn)單實(shí)現(xiàn)Java版學(xué)生管理系統(tǒng)
- Java實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng)
相關(guān)文章
劍指Offer之Java算法習(xí)題精講二叉樹(shù)專(zhuān)題篇下
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03@FeignClient?path屬性路徑前綴帶路徑變量時(shí)報(bào)錯(cuò)的解決
這篇文章主要介紹了@FeignClient?path屬性路徑前綴帶路徑變量時(shí)報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07java用split分割字符串的一個(gè)有趣現(xiàn)象
最近在項(xiàng)目中使用了java中的split分割字符串,發(fā)現(xiàn)了一個(gè)bug,充分了展示了自己對(duì)java底層的認(rèn)知有很多的不足和欠缺。下面將這次的經(jīng)過(guò)總結(jié)出來(lái)分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解
這篇文章主要介紹了intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Java實(shí)現(xiàn)FTP文件的上傳和下載功能的實(shí)例代碼
FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱(chēng),而中文簡(jiǎn)稱(chēng)為“文傳協(xié)議”。接下來(lái)通過(guò)本文給大家實(shí)例講解Java實(shí)現(xiàn)FTP文件的上傳和下載功能,需要的的朋友一起看看吧2016-11-11解讀jdk動(dòng)態(tài)代理為什么必須實(shí)現(xiàn)接口
這篇文章主要介紹了解讀jdk動(dòng)態(tài)代理為什么必須實(shí)現(xiàn)接口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02resty upload無(wú)需依賴(lài)的文件上傳與下載
這篇文章主要為大家介紹了resty upload中無(wú)需依賴(lài)的文件上傳與下載過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步,早日升職加薪2022-03-03PropertiesLoaderUtils 出現(xiàn)中文亂碼的解決方式
這篇文章主要介紹了PropertiesLoaderUtils 出現(xiàn)中文亂碼的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Springcloud Eureka配置及集群代碼實(shí)例
這篇文章主要介紹了Springcloud Eureka配置及集群代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12