亚州天堂爱爱,做爱视频国产全过程在线观看,成人试看30分钟免费视频,女人无遮挡裸交性做爰视频网站

? ? ?

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

Java 學(xué)生信息管理系統(tǒng)

關(guān)注博主不迷路,博主帶你碼代碼!

1. 項(xiàng)目概述

這是一個(gè)學(xué)生信息管理系統(tǒng),學(xué)生信息主要包括:學(xué)號(hào),姓名,性別,出生日期,班級(jí);暫時(shí)就只有這些信息,若后續(xù)需要,可以相應(yīng)的進(jìn)行添加。

該項(xiàng)目主要采用的技術(shù)是 Java GUI 設(shè)計(jì),這個(gè)地方主要用 Java 工具 windowsbuilder 進(jìn)行布局,(windowsbuilder沒(méi)有安裝或者不會(huì)安裝的,可以看看我的這篇博客 Eclipse 安裝 windowbuilder插件 ),MySql 數(shù)據(jù)庫(kù)(Mysql 數(shù)據(jù)庫(kù)沒(méi)有安裝的 或者數(shù)據(jù)庫(kù)使用軟件 Navicat 沒(méi)有安裝的可以看看我的這篇博客 2021 MySql 8.0.26 安裝教程(最詳細(xì)的傻瓜教程) ),以及使用 Java 中的 JDBC 將數(shù)據(jù)庫(kù)鏈接起來(lái)。

2. 數(shù)據(jù)庫(kù)的建立

由于在項(xiàng)目中沒(méi)有創(chuàng)建學(xué)生數(shù)據(jù)庫(kù)的功能,所以學(xué)生數(shù)據(jù)庫(kù)必須要先建立好,下面給出如何建立好MySQL學(xué)生數(shù)據(jù)庫(kù)的相關(guān)代碼 圖片

-- 創(chuàng)建數(shù)據(jù)庫(kù)CREATE DATABASE niitDEFAULT CHARACTER SET utf8mb4;SHOW DATABASES;-- 使用數(shù)據(jù)庫(kù)niitUSE niit;-- 創(chuàng)建表StudentCREATE TABLE Student( ID INT PRIMARY KEY, NAME VARCHAR(4), GENDER CHAR(1), DOB DATE, BATCH INT);-- 插入記錄INSERT INTO Student VALUES(1,'獨(dú)孤求敗','男','1988-1-2',1),(2,'周芷若','女','1988-12-3',1),(3,'金毛獅王','男','1978-11-1',1),(4,'蒙摯','男','1989-2-5',2),(5,'夏春','女','1998-4-3',2),(6,'梅長(zhǎng)蘇','男','1999-12-6',2);-- 查看表中所有記錄 語(yǔ)法:select * from 表名SELECT * FROM Student;

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

3. 項(xiàng)目頁(yè)面

主頁(yè)面

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

添加學(xué)生

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

修改信息

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

刪除學(xué)生

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

查詢信息

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

4. 項(xiàng)目代碼 分析

主頁(yè)面

package studentsmanager;import java.awt.Color;import java.awt.EventQueue;import java.awt.Font;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;public class MainFrame extends JFrame { private JPanel contentPane; /** * Launch the application. */ // 有了main函數(shù)才可以單獨(dú)運(yùn)行 public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { MainFrame frame = new MainFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public MainFrame() { // 設(shè)置大小不可改變 setResizable(false); // 設(shè)置標(biāo)題 setTitle("學(xué)生管理系統(tǒng)"); // 由于這是主頁(yè)面,所有當(dāng)主頁(yè)面關(guān)閉的時(shí)候,程序就直接退出 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // setBounds(int x,int y,int width,int height); // x 和 y 是窗口打開(kāi)時(shí)的位置 // width 和 height 是窗口打?qū)挾群透叨? setBounds(100, 100, 450, 350); // setLocationRelativeTo(c) // 設(shè)置窗口相對(duì)于 c 的位置,當(dāng) c 為空或者 null 時(shí),默認(rèn)為是相對(duì)于屏幕中央 setLocationRelativeTo(null); // 實(shí)例化一個(gè) pane contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblNewLabel = new JLabel("學(xué)生管理系統(tǒng)"); lblNewLabel.setForeground(Color.RED); lblNewLabel.setFont(new Font("宋體", Font.BOLD, 25)); lblNewLabel.setBounds(140, 10, 163, 44); contentPane.add(lblNewLabel); JButton addButton = new JButton("添加學(xué)生"); // addActionListener 注冊(cè)監(jiān)聽(tīng)器 addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 設(shè)置新窗口可見(jiàn) new AddFrame().setVisible(true); } }); addButton.setFont(new Font("宋體", Font.PLAIN, 18)); addButton.setBounds(167, 64, 114, 37); contentPane.add(addButton); JButton changeButton = new JButton("修改信息"); changeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 同上 new ChangeFrame().setVisible(true); } }); changeButton.setFont(new Font("宋體", Font.PLAIN, 18)); changeButton.setBounds(167, 121, 114, 37); contentPane.add(changeButton); JButton deleteButton = new JButton("刪除學(xué)生"); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 同上 new DeleteFrame().setVisible(true); } }); deleteButton.setFont(new Font("宋體", Font.PLAIN, 18)); deleteButton.setBounds(167, 180, 114, 37); contentPane.add(deleteButton); JButton queryButton = new JButton("查詢信息"); queryButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 同上 new QueryFrame().setVisible(true); } }); queryButton.setFont(new Font("宋體", Font.PLAIN, 18)); queryButton.setBounds(167, 240, 114, 37); contentPane.add(queryButton); }}

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

添加學(xué)生

package studentsmanager;import java.awt.EventQueue;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;public class AddFrame extends JFrame { private JPanel contentPane; private JTextField idField; private JTextField nameField; private JTextField genderField; private JTextField dobField; private JTextField batchField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { AddFrame frame = new AddFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public AddFrame() { // 和前面類(lèi)似 setResizable(false); setTitle("添加學(xué)生"); // 這個(gè)地方,添加學(xué)生只是這個(gè)程序的一部分,所以當(dāng)關(guān)閉這部分的時(shí)候,程序不直接退出,只是關(guān)閉該部分程序 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 450, 470); setLocationRelativeTo(null); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(null); JLabel TitleLabel = new JLabel("請(qǐng)輸入新學(xué)生的信息:"); TitleLabel.setFont(new Font("宋體", Font.BOLD, 20)); TitleLabel.setBounds(71, 34, 208, 45); panel.add(TitleLabel); JLabel idLabel = new JLabel("學(xué)號(hào):"); idLabel.setFont(new Font("宋體", Font.PLAIN, 16)); idLabel.setBounds(71, 105, 50, 30); panel.add(idLabel); idField = new JTextField(); idField.setBounds(143, 99, 240, 45); panel.add(idField); idField.setColumns(10); JLabel nameLabel = new JLabel("姓名:"); nameLabel.setFont(new Font("宋體", Font.PLAIN, 16)); nameLabel.setBounds(71, 160, 50, 30); panel.add(nameLabel); nameField = new JTextField(); nameField.setColumns(10); nameField.setBounds(143, 154, 240, 45); panel.add(nameField); JLabel genderLabel = new JLabel("性別:"); genderLabel.setFont(new Font("宋體", Font.PLAIN, 16)); genderLabel.setBounds(71, 215, 50, 30); panel.add(genderLabel); genderField = new JTextField(); genderField.setColumns(10); genderField.setBounds(143, 209, 240, 45); panel.add(genderField); JLabel dobLabel = new JLabel("出生日期:"); dobLabel.setFont(new Font("宋體", Font.PLAIN, 16)); dobLabel.setBounds(41, 270, 80, 30); panel.add(dobLabel); dobField = new JTextField(); dobField.setColumns(10); dobField.setBounds(143, 264, 240, 45); panel.add(dobField); JLabel batchLabel = new JLabel("班級(jí):"); batchLabel.setFont(new Font("宋體", Font.PLAIN, 16)); batchLabel.setBounds(71, 325, 50, 30); panel.add(batchLabel); batchField = new JTextField(); batchField.setColumns(10); batchField.setBounds(143, 319, 240, 45); panel.add(batchField); JButton addButton = new JButton("添加"); // 添加鼠標(biāo)監(jiān)聽(tīng)事件 addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 先取出數(shù)據(jù) // getText() 返回字符串類(lèi)型的 // Integer.parseInt 數(shù)據(jù)類(lèi)型轉(zhuǎn)換 int id = Integer.parseInt(idField.getText()); String nameString = nameField.getText(); String genderString = genderField.getText(); String dobfieldString = dobField.getText(); int batch = Integer.parseInt(batchField.getText()); // 輸出一下學(xué)生的信息,方便修改 System.out.println(id "t" nameString "t" genderString "t" dobfieldString "t" batch); // SQLHelp 是自己寫(xiě)的一個(gè)工具類(lèi) SQLHelp sqlHelp = new SQLHelp(); try { // 調(diào)用添加學(xué)生信息的方法 sqlHelp.addStudent(id, nameString, genderString, dobfieldString, batch); // 彈出對(duì)話框,提示用戶添加成功 JOptionPane.showMessageDialog(AddFrame.this, "添加成功!"); } catch (SQLException e1) { // 這里捕獲一下異常,因?yàn)閷W(xué)生的學(xué)號(hào)是唯一的,所以當(dāng)學(xué)號(hào)已經(jīng)存在的時(shí)候,提示用戶,該學(xué)生信息已存在 // 異常代碼為 23000 if(e1.getSQLState().equals("23000")) { JOptionPane.showMessageDialog(AddFrame.this, "添加失敗!該學(xué)生已存在"); } e1.printStackTrace(); } } }); addButton.setFont(new Font("宋體", Font.PLAIN, 18)); addButton.setBounds(182, 389, 97, 33); panel.add(addButton); }}

添加成功:

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

添加失敗:

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

修改信息

package studentsmanager;import java.awt.EventQueue;import java.awt.Font;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;import java.awt.event.ActionListener;import java.sql.SQLException;import java.awt.event.ActionEvent;public class ChangeFrame extends JFrame { private JPanel contentPane; private JTextField idField; private JTextField nameField; private JTextField genderField; private JTextField dobField; private JTextField batchField; private JTextField searchField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { ChangeFrame frame = new ChangeFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public ChangeFrame() { setResizable(false); setTitle("修改信息"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 450, 470); setLocationRelativeTo(null); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(null); JLabel lblNewLabel = new JLabel("請(qǐng)輸入要修改的學(xué)生的學(xué)號(hào):"); lblNewLabel.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel.setBounds(71, 0, 208, 29); panel.add(lblNewLabel); JLabel lblNewLabel_1 = new JLabel("學(xué)號(hào):"); lblNewLabel_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1.setBounds(71, 105, 50, 30); panel.add(lblNewLabel_1); idField = new JTextField(); idField.setEditable(false); idField.setBounds(143, 99, 240, 45); panel.add(idField); idField.setColumns(10); JLabel lblNewLabel_1_1 = new JLabel("姓名:"); lblNewLabel_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1.setBounds(71, 160, 50, 30); panel.add(lblNewLabel_1_1); nameField = new JTextField(); nameField.setColumns(10); nameField.setBounds(143, 154, 240, 45); panel.add(nameField); JLabel lblNewLabel_1_1_1 = new JLabel("性別:"); lblNewLabel_1_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1.setBounds(71, 215, 50, 30); panel.add(lblNewLabel_1_1_1); genderField = new JTextField(); genderField.setColumns(10); genderField.setBounds(143, 209, 240, 45); panel.add(genderField); JLabel lblNewLabel_1_1_1_1 = new JLabel("出生日期:"); lblNewLabel_1_1_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1_1.setBounds(41, 270, 80, 30); panel.add(lblNewLabel_1_1_1_1); dobField = new JTextField(); dobField.setColumns(10); dobField.setBounds(143, 264, 240, 45); panel.add(dobField); JLabel lblNewLabel_1_1_1_2 = new JLabel("班級(jí):"); lblNewLabel_1_1_1_2.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1_2.setBounds(71, 325, 50, 30); panel.add(lblNewLabel_1_1_1_2); batchField = new JTextField(); batchField.setColumns(10); batchField.setBounds(143, 319, 240, 45); panel.add(batchField); JButton changeButton = new JButton("修改"); changeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int id = Integer.parseInt(searchField.getText()); String nameString = nameField.getText(); String gendeString = genderField.getText(); String dobString = dobField.getText(); int batch = Integer.parseInt(batchField.getText()); SQLHelp sqlHelp = new SQLHelp(); try { sqlHelp.changeStudent(id, nameString, gendeString, dobString, batch); JOptionPane.showMessageDialog(ChangeFrame.this, "修改成功!"); } catch (SQLException e) { JOptionPane.showMessageDialog(ChangeFrame.this, "修改失?。?#034;); e.printStackTrace(); } } }); changeButton.setFont(new Font("宋體", Font.PLAIN, 18)); changeButton.setBounds(182, 389, 97, 33); panel.add(changeButton); searchField = new JTextField(); searchField.setBounds(71, 39, 208, 45); panel.add(searchField); searchField.setColumns(10); JButton searchButton = new JButton("查找"); searchButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ int id = Integer.parseInt(searchField.getText()); try { SQLHelp sqlHelp = new SQLHelp(); Student student = sqlHelp.queryStudent(id); if(student != null) { // id 是直接讀入的,所以就不需要從數(shù)據(jù)庫(kù)中讀出了 idField.setText(String.valueOf(id)); nameField.setText(student.getName()); genderField.setText(student.getGender()); dobField.setText(student.getDob()); batchField.setText(String.valueOf(student.getBatch())); } else { JOptionPane.showMessageDialog(ChangeFrame.this, "無(wú)此用戶"); } } catch (SQLException e1) { e1.printStackTrace(); } } }); searchButton.setFont(new Font("宋體", Font.PLAIN, 18)); searchButton.setBounds(289, 42, 97, 39); panel.add(searchButton); }}

修改前查詢到學(xué)生信息

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

修改成功

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

修改失敗

失敗的情況是數(shù)據(jù)鏈接出現(xiàn)了問(wèn)題

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

未查詢到學(xué)生信息

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

刪除學(xué)生

package studentsmanager;import java.awt.EventQueue;import java.awt.Font;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;import java.awt.event.ActionListener;import java.sql.SQLException;import java.awt.event.ActionEvent;public class DeleteFrame extends JFrame { private JPanel contentPane; private JTextField idField; private JTextField nameField; private JTextField genderField; private JTextField dobField; private JTextField batchField; private JTextField searchField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { DeleteFrame frame = new DeleteFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public DeleteFrame() { setResizable(false); setTitle("刪除學(xué)生"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 450, 470); setLocationRelativeTo(null); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(null); JLabel lblNewLabel = new JLabel("請(qǐng)輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):"); lblNewLabel.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel.setBounds(71, 0, 208, 29); panel.add(lblNewLabel); JLabel lblNewLabel_1 = new JLabel("學(xué)號(hào):"); lblNewLabel_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1.setBounds(71, 105, 50, 30); panel.add(lblNewLabel_1); idField = new JTextField(); idField.setEditable(false); idField.setBounds(143, 99, 240, 45); panel.add(idField); idField.setColumns(10); JLabel lblNewLabel_1_1 = new JLabel("姓名:"); lblNewLabel_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1.setBounds(71, 160, 50, 30); panel.add(lblNewLabel_1_1); nameField = new JTextField(); nameField.setColumns(10); nameField.setBounds(143, 154, 240, 45); panel.add(nameField); JLabel lblNewLabel_1_1_1 = new JLabel("性別:"); lblNewLabel_1_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1.setBounds(71, 215, 50, 30); panel.add(lblNewLabel_1_1_1); genderField = new JTextField(); genderField.setColumns(10); genderField.setBounds(143, 209, 240, 45); panel.add(genderField); JLabel lblNewLabel_1_1_1_1 = new JLabel("出生日期:"); lblNewLabel_1_1_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1_1.setBounds(41, 270, 80, 30); panel.add(lblNewLabel_1_1_1_1); dobField = new JTextField(); dobField.setColumns(10); dobField.setBounds(143, 264, 240, 45); panel.add(dobField); JLabel lblNewLabel_1_1_1_2 = new JLabel("班級(jí):"); lblNewLabel_1_1_1_2.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1_2.setBounds(71, 325, 50, 30); panel.add(lblNewLabel_1_1_1_2); batchField = new JTextField(); batchField.setColumns(10); batchField.setBounds(143, 319, 240, 45); panel.add(batchField); JButton deleteButton = new JButton("刪除"); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int id = Integer.parseInt(searchField.getText()); try { SQLHelp sqlHelp = new SQLHelp(); sqlHelp.deletestudent(id); JOptionPane.showMessageDialog(DeleteFrame.this, "刪除成功!"); } catch (SQLException e1) { JOptionPane.showMessageDialog(DeleteFrame.this, "刪除失敗"); e1.printStackTrace(); } } }); deleteButton.setFont(new Font("宋體", Font.PLAIN, 18)); deleteButton.setBounds(182, 389, 97, 33); panel.add(deleteButton); searchField = new JTextField(); searchField.setBounds(71, 39, 208, 45); panel.add(searchField); searchField.setColumns(10); JButton searchButton = new JButton("查找"); searchButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int id = Integer.parseInt(searchField.getText()); try { SQLHelp sqlHelp = new SQLHelp(); Student student = sqlHelp.queryStudent(id); if(student != null) { idField.setText(String.valueOf(id)); nameField.setText(student.getName()); genderField.setText(student.getGender()); dobField.setText(student.getDob()); batchField.setText(String.valueOf(student.getBatch())); } else { JOptionPane.showMessageDialog(DeleteFrame.this, "無(wú)此學(xué)生"); } } catch (SQLException e) { e.printStackTrace(); } } }); searchButton.setFont(new Font("宋體", Font.PLAIN, 18)); searchButton.setBounds(289, 42, 97, 39); panel.add(searchButton); }}

刪除成功

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

刪除失敗

刪除失敗的時(shí)候是數(shù)據(jù)庫(kù)鏈接出現(xiàn)了問(wèn)題

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

查詢到學(xué)生信息

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

未查詢到學(xué)生

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

查詢信息

package studentsmanager;import java.awt.EventQueue;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;public class QueryFrame extends JFrame { private JPanel contentPane; private JTextField idField; private JTextField nameField; private JTextField genderField; private JTextField dobField; private JTextField batchField; private JTextField searchField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { QueryFrame frame = new QueryFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public QueryFrame() { setResizable(false); setTitle("查詢信息"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 450, 470); setLocationRelativeTo(null); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(null); JLabel lblNewLabel = new JLabel("請(qǐng)輸入要查找的學(xué)生的學(xué)號(hào):"); lblNewLabel.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel.setBounds(71, 0, 208, 29); panel.add(lblNewLabel); JLabel lblNewLabel_1 = new JLabel("學(xué)號(hào):"); lblNewLabel_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1.setBounds(71, 105, 50, 30); panel.add(lblNewLabel_1); idField = new JTextField(); idField.setEditable(false); idField.setBounds(143, 99, 240, 45); panel.add(idField); idField.setColumns(10); JLabel lblNewLabel_1_1 = new JLabel("姓名:"); lblNewLabel_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1.setBounds(71, 160, 50, 30); panel.add(lblNewLabel_1_1); nameField = new JTextField(); nameField.setColumns(10); nameField.setBounds(143, 154, 240, 45); panel.add(nameField); JLabel lblNewLabel_1_1_1 = new JLabel("性別:"); lblNewLabel_1_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1.setBounds(71, 215, 50, 30); panel.add(lblNewLabel_1_1_1); genderField = new JTextField(); genderField.setColumns(10); genderField.setBounds(143, 209, 240, 45); panel.add(genderField); JLabel lblNewLabel_1_1_1_1 = new JLabel("出生日期:"); lblNewLabel_1_1_1_1.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1_1.setBounds(41, 270, 80, 30); panel.add(lblNewLabel_1_1_1_1); dobField = new JTextField(); dobField.setColumns(10); dobField.setBounds(143, 264, 240, 45); panel.add(dobField); JLabel lblNewLabel_1_1_1_2 = new JLabel("班級(jí):"); lblNewLabel_1_1_1_2.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel_1_1_1_2.setBounds(71, 325, 50, 30); panel.add(lblNewLabel_1_1_1_2); batchField = new JTextField(); batchField.setColumns(10); batchField.setBounds(143, 319, 240, 45); panel.add(batchField); searchField = new JTextField(); searchField.setBounds(71, 39, 208, 45); panel.add(searchField); searchField.setColumns(10); JButton searchButton = new JButton("查找"); searchButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // 1.讀出要查詢的學(xué)生輸入的id // 因?yàn)閷W(xué)生的學(xué)號(hào)是唯一的,所以我們根據(jù)學(xué)號(hào)查詢后,只會(huì)有一條數(shù)據(jù) // 轉(zhuǎn)化一下數(shù)據(jù)類(lèi)型 int id = Integer.parseInt(searchField.getText()); // 2.執(zhí)行JDBC語(yǔ)句 try { SQLHelp sqlHelp = new SQLHelp(); Student student = sqlHelp.queryStudent(id); // 3.將查詢結(jié)果填到文本框中 // 前提是學(xué)生存在 if(student != null) { idField.setText(String.valueOf(id)); nameField.setText(student.getName()); genderField.setText(student.getGender()); dobField.setText(student.getDob()); batchField.setText(String.valueOf(student.getBatch())); } else { // 此時(shí)學(xué)生不存在,提示用戶,不存在該學(xué)生 JOptionPane.showMessageDialog(QueryFrame.this, "無(wú)此學(xué)生"); } } catch (SQLException e) { e.printStackTrace(); } } }); searchButton.setFont(new Font("宋體", Font.PLAIN, 18)); searchButton.setBounds(289, 42, 97, 39); panel.add(searchButton); }}

Java 項(xiàng)目 學(xué)生信息管理系統(tǒng) 超詳細(xì) 超完整 保姆級(jí)講解(java的學(xué)生信息管理系統(tǒng)詳解)

SQLHelp 工具類(lèi)

package studentsmanager;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class SQLHelp { public static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; public static final String DB_URL = "jdbc:mysql://localhost:3306/niit?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; public static final String username = "root"; public static final String password = "011216"; private Connection connection = null; private PreparedStatement pStatement = null; private ResultSet rSet = null; // 加載驅(qū)動(dòng) // 靜態(tài)初始化塊(只執(zhí)行一次) static { try { Class.forName(JDBC_DRIVER); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 鏈接數(shù)據(jù)庫(kù) public void connectDB() { try { connection = DriverManager.getConnection(DB_URL,username,password); System.out.println("數(shù)據(jù)庫(kù)鏈接成功"); } catch (SQLException e) { System.out.println("數(shù)據(jù)庫(kù)鏈接失敗"); e.printStackTrace(); } } // 關(guān)閉資源 public void close() { if(rSet != null) { try { rSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(pStatement != null) { try { pStatement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(connection != null) { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public void addStudent(int id, String nameString, String genderString, String dobString, int batch) throws SQLException { // try finally 無(wú)論是否拋出異常都將執(zhí)行 finally 中的語(yǔ)句 try { // 先鏈接到數(shù)據(jù)庫(kù) connectDB(); // sql 語(yǔ)句 // 靜態(tài) sql 語(yǔ)句需要進(jìn)行字符串拼接 // 動(dòng)態(tài) sql 語(yǔ)句 String addsql = "insert into student values(?, ?, ?, ?, ?)"; pStatement = connection.prepareStatement(addsql); pStatement.setInt(1, id); pStatement.setString(2, nameString); pStatement.setString(3, genderString); pStatement.setString(4, dobString); pStatement.setInt(5, batch); pStatement.executeUpdate(); } finally { close(); } } public void changeStudent(int id, String nameString, String genderString, String dobString, int batch) throws SQLException { try { connectDB(); String changesql = "update student set name = ?, gender = ?, dob = ?, batch = ? where id = ?"; pStatement = connection.prepareStatement(changesql); pStatement.setString(1, nameString); pStatement.setString(2, genderString); pStatement.setString(3, dobString); pStatement.setInt(4, batch); pStatement.setInt(5, id); pStatement.executeUpdate(); } finally { close(); } } public void deletestudent(int id) throws SQLException { try { connectDB(); String deleteString = "select * from student where id = ?"; pStatement = connection.prepareStatement(deleteString); pStatement.setInt(1, id); pStatement.execute(); } finally { close(); } } public Student queryStudent(int id) throws SQLException { try { connectDB(); String querysql = "select * from student where id = ?"; pStatement = connection.prepareStatement(querysql); pStatement.setInt(1, id); // 三種方法執(zhí)行 // execute() 都可以使用,返回true或false // executeQuery() 專門(mén)用于查詢,返回結(jié)果集 // executeUpdate() 專門(mén)用于刪除、更新 rSet = pStatement.executeQuery(); if(rSet.next()) { String nameString = rSet.getString(2); String genderString = rSet.getString(3); String dobString = rSet.getString(4); int batchString = rSet.getInt(5); // 查詢到學(xué)生信息返回結(jié)果集 return new Student(nameString, genderString, dobString, batchString); } else { // 沒(méi)有查詢到學(xué)生信息,返回null return null; } } finally { close(); } }}

Student 工具類(lèi)

package studentsmanager;public class Student { private String name; private String gender; private String dob; private int batch; public Student(String name, String gender, String dob, int batch) { this.name = name; this.gender = gender; this.dob = dob; this.batch = batch; } public String getName() { return name; } public String getGender() { return gender; } public String getDob() { return dob; } public int getBatch() { return batch; } }

5. 項(xiàng)目總結(jié)

這算一個(gè)比較完整的項(xiàng)目了,既有 GUI 又有 MySQL 數(shù)據(jù)庫(kù)的已經(jīng) Java 的 JDBC ,雖然已經(jīng)有了 GUI 界面,但很明顯,沒(méi)有進(jìn)行任何美化,就只是簡(jiǎn)單的一個(gè)界面,勉勉強(qiáng)強(qiáng)可以看的過(guò)去,使用 JDBC 鏈接數(shù)據(jù)庫(kù)的時(shí)候,沒(méi)有實(shí)現(xiàn)可以直接在程序創(chuàng)建數(shù)據(jù)庫(kù),只能從數(shù)據(jù)庫(kù)方創(chuàng)建數(shù)據(jù)庫(kù),這是一個(gè)缺點(diǎn),同時(shí)使用 JDBC 鏈接數(shù)據(jù)庫(kù)的時(shí)候,所使用的代碼依舊是 MySQL 數(shù)據(jù)庫(kù)的代碼,(我 MySQL 學(xué)的不好,增刪改查啥的數(shù)據(jù)庫(kù)代碼都還記不清楚 哭了…)還有就是當(dāng)程序在進(jìn)行修改和刪除的時(shí)候,修改失敗和刪除失敗的時(shí)候,都是因?yàn)閿?shù)據(jù)鏈接失敗了才進(jìn)行彈窗,不知道怎么改成無(wú)法修改或者無(wú)法刪除的時(shí)候提示,(又哭了…)

歡迎個(gè)位大佬指出錯(cuò)誤,同時(shí)也歡迎各位小白借鑒,有問(wèn)題的話,評(píng)論或者私聊都是可以的,看了就會(huì)回復(fù)!

最后一句:

關(guān)注博主不迷路,博主帶你碼代碼!

原文地址:https://blog.csdn.net/qq_52354698/article/details/121582956

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2024年4月21日 下午3:21
下一篇 2024年4月21日 下午3:33

相關(guān)推薦

  • 程序員就業(yè)和發(fā)展前景(程序員就業(yè)和發(fā)展前景怎么寫(xiě))

    程序員,英文是 code worker,顧名思義就是計(jì)算機(jī)程序的作者。它通常指從事計(jì)算機(jī)軟件開(kāi)發(fā)的人員,當(dāng)然也包括用計(jì)算機(jī)語(yǔ)言編寫(xiě)程序來(lái)進(jìn)行各種信息處理的人?,F(xiàn)在軟件行業(yè)中,程序員…

    科研百科 2023年4月26日
    286
  • 上海交大附中新建綜合樓項(xiàng)目主體結(jié)構(gòu)順利封頂(上海交大附中占地)

    9月5日,上海交通大學(xué)附屬中學(xué)新建綜合樓工程項(xiàng)目主體封頂儀式圓滿舉行,上海市教委、上海交通大學(xué)附屬中學(xué)、中建八局發(fā)展建設(shè)公司等相關(guān)代表參加儀式。 上海交通大學(xué)附屬中學(xué)是市重點(diǎn)寄宿制…

    科研百科 2022年11月12日
    168
  • 紫陽(yáng)縣:“安家工程”激發(fā)新業(yè)態(tài)黨建活力

    陽(yáng)光訊(雷紅民 記者 向博)近年來(lái),快遞員、送餐員、電商購(gòu)物等一大批新業(yè)態(tài)勞動(dòng)者不斷涌現(xiàn),為經(jīng)濟(jì)發(fā)展注入新的活力。紫陽(yáng)縣堅(jiān)持以黨建引領(lǐng)新業(yè)態(tài)高質(zhì)量發(fā)展,大力實(shí)施“安家工程”,以打造…

    科研百科 2023年2月7日
    219
  • 信息管理系統(tǒng)項(xiàng)目設(shè)計(jì)

    信息管理系統(tǒng)項(xiàng)目設(shè)計(jì) 隨著信息技術(shù)的不斷發(fā)展,企業(yè)對(duì)于信息管理系統(tǒng)的需求也越來(lái)越強(qiáng)烈。一個(gè)有效的信息管理系統(tǒng)可以幫助企業(yè)提高工作效率,降低運(yùn)營(yíng)成本,提高客戶滿意度,增強(qiáng)企業(yè)競(jìng)爭(zhēng)力。…

    科研百科 2024年12月10日
    2
  • 阿里低代碼平臺(tái)設(shè)計(jì)用到哪些技能

    阿里低代碼平臺(tái)設(shè)計(jì)用到哪些技能 隨著數(shù)字化轉(zhuǎn)型的加速,企業(yè)對(duì)于快速開(kāi)發(fā)和部署應(yīng)用程序的需求也越來(lái)越迫切。阿里低代碼平臺(tái)應(yīng)運(yùn)而生,它為企業(yè)提供了一種快速開(kāi)發(fā)應(yīng)用程序的解決方案。然而,…

    科研百科 2024年3月5日
    83
  • 主導(dǎo)完成科研項(xiàng)目

    主導(dǎo)完成科研項(xiàng)目 作為一名研究人員,主導(dǎo)完成科研項(xiàng)目是我職業(yè)生涯中最為重要的任務(wù)之一。這項(xiàng)工作不僅代表著我對(duì)于研究領(lǐng)域的理解和探索,同時(shí)也為我今后的職業(yè)發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。 在主…

    科研百科 2025年2月5日
    1
  • 科研項(xiàng)目技術(shù)可行性研究報(bào)告模板(科研項(xiàng)目技術(shù)可行性研究報(bào)告)

    科研項(xiàng)目技術(shù)可行性研究報(bào)告 隨著科技的不斷進(jìn)步,科研項(xiàng)目的發(fā)展也越來(lái)越迅速。在開(kāi)展任何科研項(xiàng)目之前,進(jìn)行技術(shù)可行性研究是非常重要的。技術(shù)可行性研究不僅可以評(píng)估科研項(xiàng)目的可行性,還可…

    科研百科 2024年8月4日
    29
  • 科研項(xiàng)目資金使用情況表

    科研項(xiàng)目資金使用情況表 隨著科技的不斷發(fā)展,科研項(xiàng)目已經(jīng)成為國(guó)家經(jīng)濟(jì)發(fā)展的重要支柱??蒲许?xiàng)目資金使用情況表是反映科研項(xiàng)目資金使用狀況的重要工具,可以幫助我們了解科研項(xiàng)目的資金來(lái)源、…

    科研百科 2025年5月22日
    0
  • freefem

    FreeFem:讓性別平等成為可能 性別平等是人類(lèi)社會(huì)的一項(xiàng)基本權(quán)利。然而,長(zhǎng)期以來(lái),性別歧視和不平等仍然存在于我們的社會(huì)中,給女性帶來(lái)了極大的困難和挑戰(zhàn)。而FreeFem技術(shù)則可…

    科研百科 2024年10月28日
    0
  • 技術(shù)面和基本面矛盾時(shí),2選1?(當(dāng)技術(shù)面和基本面發(fā)生沖突)

    最近看到一些同學(xué),都說(shuō),橡膠怎么能漲這么多?他的基本面,現(xiàn)貨面都不好的,國(guó)外疫情加重,汽車(chē)需求不好,輪胎也沒(méi)多生產(chǎn),另外,怎么就上去了呢? 這里,談下,我的一直以來(lái)的交易觀點(diǎn),我如…

    2022年10月4日
    145