国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java】手把手教你寫學(xué)生信息管理系統(tǒng)(窗口化+MYSQL)

這篇具有很好參考價值的文章主要介紹了【Java】手把手教你寫學(xué)生信息管理系統(tǒng)(窗口化+MYSQL)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

程序整體框架 :

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?

一.數(shù)據(jù)庫表格建立:

?

? ? ? ? (本項(xiàng)目使用到了數(shù)據(jù)庫的可視化軟件DataGrip,需要同學(xué)們自行下載并配置環(huán)境)

首先我們需要在DataGrip中建立一個student的框架java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

????????????????????????????????????????????????????????然后建立一個studenttable表?

?java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? 建立列用來存儲學(xué)生信息?

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????整體框架? ? ???????????????java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?

?????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????數(shù)據(jù)格式的編寫? ? ? ????????

???????????????java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫?這樣數(shù)據(jù)庫方面的就已經(jīng)處理完成啦

二.代碼部分

?main類:

public class Main {
    public static void main(String[] args){
        JDBC win=new JDBC();
        //調(diào)用窗口類,創(chuàng)建窗口
        Windows1 system=new Windows1();
        system.setVisible(true);
    }
}

?Window1類

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;


public class Windows1 extends JFrame implements  ActionListener {
    JLabel label1,label2,label3,label4,label5,label6;
    JTextField field1,field2,field3,field4,field5,field6;
    JButton button1,button2,button3,button4;
    JPanel panel1,panel2,panel3;
    JTable table;
    DefaultTableModel model;
    public Windows1(){
        //設(shè)置窗口屬性
        setTitle("學(xué)生信息管理系統(tǒng)");
        setSize(800,650);
        //窗口居中
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //設(shè)置組件
        label1=new JLabel("學(xué)號");
        label2=new JLabel("姓名");
        label3=new JLabel("性別");
        label4=new JLabel("年齡");
        label5=new JLabel("專業(yè)");
        label6=new JLabel("班級");

        field1=new JTextField(10);
        field2=new JTextField(10);
        field3=new JTextField(10);
        field4=new JTextField(10);
        field5=new JTextField(10);
        field6=new JTextField(10);

        button1=new JButton("添加");
        button2=new JButton("刪除");
        button3=new JButton("查找");
        button4=new JButton("修改");
        //設(shè)置表格
        String[] str={"學(xué)號","姓名","性別","年齡","專業(yè)","班級"};
        model=new DefaultTableModel(str,0);
        table=new JTable(model);
        JScrollPane scrollPane=new JScrollPane(table);
         //設(shè)置布局
        panel1=new JPanel();
        panel2=new JPanel();
        panel3=new JPanel();

        panel1.setLayout(new GridLayout(6,2));
        panel1.add(label1);
        panel1.add(field1);
        panel1.add(label2);
        panel1.add(field2);
        panel1.add(label3);
        panel1.add(field3);
        panel1.add(label4);
        panel1.add(field4);
        panel1.add(label5);
        panel1.add(field5);
        panel1.add(label6);
        panel1.add(field6);

        panel2.setLayout(new FlowLayout());
        panel2.add(button1);
        panel2.add(button2);
        panel2.add(button3);
        panel2.add(button4);

        panel3.setLayout(new BorderLayout());
        panel3.add(panel1,BorderLayout.CENTER);
        panel3.add(panel2,BorderLayout.NORTH);
        panel3.add(scrollPane,BorderLayout.SOUTH);
        add(panel3);
        JDBC jdbc=new JDBC();
        jdbc.fetchData(model);

        //按鍵監(jiān)聽器
        button1.addActionListener( this);
        button2.addActionListener( this);
        button3.addActionListener( this);
        button4.addActionListener( this);
    }

    @Override
    public void actionPerformed(ActionEvent e){
        SQLHelp sqlhelp=new SQLHelp();
        //添加
        if(e.getSource()==button1){
            try{
                sqlhelp.addStudent(field1.getText(),field2.getText(),field3.getText(),field4.getText(),field5.getText(),field6.getText());
                JOptionPane.showMessageDialog(Windows1.this,"添加成功");
            }catch (SQLException e1){
                if(e1.getSQLState().equals("23000")){
                    JOptionPane.showMessageDialog(Windows1.this,"添加失敗,該生已存在");
                }
                e1.printStackTrace();
            }
            String[] data1={field1.getText(),field2.getText(),field3.getText(),field4.getText(),field5.getText(),field6.getText()};
            model.addRow(data1);
        }
        //刪除
        else if(e.getSource()==button2){
            int selectedRow=table.getSelectedRow();
            if(selectedRow!=-1){
                String id= (String) table.getValueAt(selectedRow,0);

                try{
                    sqlhelp.deletestudent(id);
                    JOptionPane.showMessageDialog(Windows1.this,"刪除成功");
                }catch(SQLException e2){
                    JOptionPane.showMessageDialog(Windows1.this,"刪除失敗");
                    e2.printStackTrace();
                }
                model.removeRow(selectedRow);
            }
        }
        //查找
        else if(e.getSource()==button3){
            String keyword=JOptionPane.showInputDialog(this,"請輸入學(xué)生學(xué)號");
            for (int i = 0; i < model.getRowCount(); i++) {
                if (model.getValueAt(i, 0).toString().contains(keyword)) {
                    table.setRowSelectionInterval(i, i);
                }
            }
        }
        //修改
        else if (e.getSource()==button4) {
            int selectedRow=table.getSelectedRow();
            if(selectedRow!=-1)
            {
                model.setValueAt(field1.getText(),selectedRow,0);
                model.setValueAt(field2.getText(),selectedRow,1);
                model.setValueAt(field3.getText(),selectedRow,2);
                model.setValueAt(field4.getText(),selectedRow,3);
                model.setValueAt(field5.getText(),selectedRow,4);
                model.setValueAt(field6.getText(),selectedRow,5);
                try{
                    sqlhelp.changeStudent(
                            field1.getText(),
                            field2.getText(),
                            field3.getText(),
                            field4.getText(),
                            field5.getText(),
                            field6.getText()
                    );
                    JOptionPane.showMessageDialog(this,"修改成功");
                } catch (SQLException e3) {
                    throw new RuntimeException(e3);
                }
            }

        }
    }
}

?JDBC類:

import javax.swing.table.DefaultTableModel;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;


public class JDBC {

    public void fetchData(DefaultTableModel model) {
        int numsrow=1;
        List data=new ArrayList<>();
        try {
            // 注冊 JDBC 驅(qū)動
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 打開鏈接
            Connection conn = DriverManager.getConnection
                    (
                            "jdbc:mysql://localhost:3306/MySQL",
                            "root",
                            "123456"
                    );

            // 執(zhí)行查詢
            Statement stmt = conn.createStatement();
            String sql = "SELECT ID,Name,Gender,Age,Expertise,Class FROM student.studenttable";
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData metaData= rs.getMetaData();
            int numberOfrow=metaData.getColumnCount();
            Windows1 win=new Windows1();
            while(rs.next()) {

                Objects[] rowDta = new Objects[numberOfrow];
                String id = rs.getString("ID");
                String name = rs.getString("Name");
                String gender = rs.getString("Gender");
                String age = rs.getString("Age");
                String expertise = rs.getString("Expertise");
                String room = rs.getString("Class");
                String[] data1 = {id, name, gender, age, expertise, room};
                model.addRow(data1);
            }
                // 釋放資源
                rs.close();
                stmt.close();
                conn.close();

            } catch(SQLException | ClassNotFoundException e){
                e.printStackTrace();

            }
        }
    }

SQLhelp類:

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/MySQL";//這里的jdbc:mysql://localhost:3306/一般是固定的,MySQL根據(jù)你自己的數(shù)據(jù)庫名稱來修改

    public static final String username = "root";//數(shù)據(jù)庫用戶名
    public static final String password = "123456";//數(shù)據(jù)庫密碼

    private Connection connection = null;
    private PreparedStatement pStatement = null;
    private ResultSet rSet = null;

    // 加載驅(qū)動
    // 靜態(tài)初始化塊
    static {
        //JDBC驅(qū)動
        try {
            Class.forName(JDBC_DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    // 鏈接數(shù)據(jù)庫
    public void  connectDB() {
        try {
            connection = DriverManager.getConnection(DB_URL,username,password);
            System.out.println("數(shù)據(jù)庫鏈接成功");
        } catch (SQLException e) {
            System.out.println("數(shù)據(jù)庫鏈接失敗");
            e.printStackTrace();
        }
    }

    // 關(guān)閉資源
    public void close() {
        if(rSet != null) {
            try {
                rSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(pStatement != null) {
            try {
                pStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public  void addStudent(String id,String name,String gender, String age,String expertise,String room) throws SQLException {

        // try finally 無論是否拋出異常都將執(zhí)行 finally 中的語句
        try {
            // 先鏈接到數(shù)據(jù)庫
            connectDB();

            // sql 語句
            // 靜態(tài) sql 語句需要進(jìn)行字符串拼接
            // 動態(tài) sql 語句
            //這里的student是我們在DataGrip創(chuàng)建的一個框架,studenttable是一個表的名稱
            String addsql = "insert into student.studenttable values(?, ?, ?, ?, ?,?)";

            pStatement = connection.prepareStatement(addsql);

            pStatement.setString(1, id);
            pStatement.setString(2, name);
            pStatement.setString(3, gender);
            pStatement.setString(4, age);
            pStatement.setString(5, expertise);
            pStatement.setString(6,room);
            pStatement.executeUpdate();

        } finally {

            close();

        }

    }

    public void changeStudent(String id, String name, String gender, String age, String expertise,String room) throws SQLException {

        try {
            connectDB();

            String changesql = "update student.studenttable set name = ?, gender = ?, age = ?, expertise = ?,class=? where id = ?";

            pStatement = connection.prepareStatement(changesql);

            pStatement.setString(1, name);
            pStatement.setString(2, gender);
            pStatement.setString(3, age);
            pStatement.setString(4, expertise);
            pStatement.setString(5, room);
            pStatement.setString(6,id);
            pStatement.executeUpdate();

        } finally {
            close();
        }

    }

    public void deletestudent(String id) throws SQLException {

        try {

            connectDB();

            String deleteString = " delete from student.studenttable where id = ?";

            pStatement = connection.prepareStatement(deleteString);

            pStatement.setString(1, id);

            pStatement.execute();

        } finally {
            close();
        }
    }
}

三.代碼運(yùn)行:

運(yùn)行前要:

使用JDBC之前需要先導(dǎo)入JDBC驅(qū)動包確定已經(jīng)與數(shù)據(jù)庫構(gòu)建了連接

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?

添加模塊:

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫?

?刪除模塊:

選擇需要刪除學(xué)生的行

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?點(diǎn)擊刪除鍵

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?查找模塊:

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?找到的信息會高亮顯示:

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?修改模塊:

先輸入需要修改的信息,再選擇需要修改信息的行數(shù),點(diǎn)擊修改鍵

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

?驗(yàn)證存儲功能:

先關(guān)閉程序后,再打開

java編寫學(xué)生信息,mysql,數(shù)據(jù)庫

數(shù)據(jù)依舊存在。?文章來源地址http://www.zghlxwxcb.cn/news/detail-763261.html

到了這里,關(guān)于【Java】手把手教你寫學(xué)生信息管理系統(tǒng)(窗口化+MYSQL)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 手把手教你寫stm32f103智能風(fēng)扇

    手把手教你寫stm32f103智能風(fēng)扇

    本系統(tǒng)可以分為兩個模式來進(jìn)行運(yùn)行,分別為手動模式和自動模式,同時,在上電進(jìn)入系統(tǒng)后,還會有一個模式選擇的界面產(chǎn)生。 模式選擇:在此界面中,可以通過按鍵K1來控制模式選擇,兩個模式分別為手動模式和自動模式;通過按鍵K2可以進(jìn)入模式。 手動模式:在手動模

    2023年04月17日
    瀏覽(93)
  • 手把手教你寫一個JSON在線解析的前端網(wǎng)站1

    手把手教你寫一個JSON在線解析的前端網(wǎng)站1

    作為一名Android開發(fā),經(jīng)常要跟后端同事聯(lián)調(diào)接口,那么總避免不了要格式化接口返回值,將其轉(zhuǎn)換為清晰直觀高亮的UI樣式以及折疊部分內(nèi)容,方便我們查看定位關(guān)鍵的信息。 一直以來都是打開Google 搜索json格式化,然后選擇Google推薦的前三名的網(wǎng)址,比如 bejson網(wǎng)站

    2024年02月08日
    瀏覽(33)
  • 正則表達(dá)式詳解(零基礎(chǔ)教學(xué),手把手教你寫正則)

    本篇文章將從零講解什么是正則表達(dá)式,以及正則表達(dá)式的規(guī)則、在python中的應(yīng)用,用通俗易懂的描述方式進(jìn)行零基礎(chǔ)級別的講解,盡量做到全網(wǎng)最全講解,力求最高質(zhì)量文章,歡迎關(guān)注!點(diǎn)擊目錄可直接進(jìn)行相關(guān)位置跳轉(zhuǎn)。 目錄: 什么是正則? 為什么需要正則? 元字符

    2023年04月08日
    瀏覽(22)
  • [Kotlin]手把手教你寫一個安卓APP(第一章注冊登錄)

    [Kotlin]手把手教你寫一個安卓APP(第一章注冊登錄)

    開發(fā)軟件:Android Studio 1.創(chuàng)建項(xiàng)目默認(rèn)選擇Empty Activity ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?點(diǎn)擊Next ?2.生成項(xiàng)目設(shè)置包名選擇開發(fā)語言(這里我用的是kotlin) ?在生成項(xiàng)目后我們要做的就是添加需要的配置打開我們的app目錄下的 buil

    2023年04月23日
    瀏覽(32)
  • Java基礎(chǔ)--手把手教你如何從鍵盤錄入信息

    Java基礎(chǔ)--手把手教你如何從鍵盤錄入信息

    從鍵盤錄入信息 Scanner 有掃描儀的意思,sc是自己取的名字(有的人喜歡用input), new Scanner 是創(chuàng)建一個Scanner對象, System.in 代表電腦的鍵盤。 即,掃描電腦的鍵盤。 將第一步寫完,我們在編譯器里面看到, Scanner 標(biāo)紅了,報錯了! ? 為啥報錯呢? 我們要使用 Scanner ,需要

    2024年02月11日
    瀏覽(25)
  • 【Golang項(xiàng)目實(shí)戰(zhàn)】手把手教你寫一個備忘錄程序|附源碼——建議收藏

    【Golang項(xiàng)目實(shí)戰(zhàn)】手把手教你寫一個備忘錄程序|附源碼——建議收藏

    博主簡介: 努力學(xué)習(xí)的大一在校計(jì)算機(jī)專業(yè)學(xué)生,熱愛學(xué)習(xí)和創(chuàng)作。目前在學(xué)習(xí)和分享:數(shù)據(jù)結(jié)構(gòu)、Go,Java等相關(guān)知識。 博主主頁: @是瑤瑤子啦 所屬專欄: Go語言核心編程 近期目標(biāo): 寫好專欄的每一篇文章 前幾天瑤瑤子學(xué)習(xí)了Go語言的基礎(chǔ)語法知識,那么今天我們就寫個

    2024年02月06日
    瀏覽(28)
  • FPGA之手把手教你寫串口協(xié)議解析(STM32與FPGA數(shù)據(jù)互傳)

    最近趁熱打鐵做了一個關(guān)于STM32與FPGA通信并且控制高速DA模塊產(chǎn)生不同頻率信號的正弦波、方波、三角波和鋸齒波的項(xiàng)目,從中收獲到了很多東西,也踩了一些雷和坑,將分為幾篇文章將整個過程分享出來。 這一次準(zhǔn)備分享的是對串口數(shù)據(jù)的解析和賦值。解析的數(shù)據(jù)由STM32發(fā)

    2024年02月06日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu):線性表————順序表的實(shí)現(xiàn)、項(xiàng)目和OJ題目(手把手教你寫代碼)

    數(shù)據(jù)結(jié)構(gòu):線性表————順序表的實(shí)現(xiàn)、項(xiàng)目和OJ題目(手把手教你寫代碼)

    ?? 個人主頁: 小新_- ??個人座右銘:“成功者不是從不失敗的人,而是從不放棄的人!”?? ??歡迎各位→點(diǎn)贊?? + 收藏?? + 留言?? ??所屬專欄:? 話說那些與C++的愛恨情仇 ? 歡迎訂閱,持續(xù)更新中~~~ ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ???讓小新帶著你

    2024年04月16日
    瀏覽(235)
  • 基于STM32F103RCT6之手把手教你寫智能家居項(xiàng)目(2)

    基于STM32F103RCT6之手把手教你寫智能家居項(xiàng)目(2)

    ??????? 上一節(jié)我們簡述了智能家居項(xiàng)目,實(shí)現(xiàn)了點(diǎn)燈的相關(guān)代碼編寫,還有WIFI模塊的固件燒錄。 連接什么平臺: ??????? 我們想要遠(yuǎn)程控制家具的開關(guān)和獲取家中的狀態(tài),少不了一個可以傳輸數(shù)據(jù)的云平臺。我認(rèn)為易監(jiān)控是一個簡單好用的云平臺。 怎么連接平臺:

    2024年02月20日
    瀏覽(909)
  • 手把手教你爬取網(wǎng)站信息

    手把手教你爬取網(wǎng)站信息

    如題,理解這一部分需要一定的Python基礎(chǔ),有些代碼我不做詳細(xì)解釋了,但是用這個方法是確實(shí)可以爬到的。 1. 在抓包?具中先定位到和瀏覽器地址欄的?址?樣的數(shù)據(jù)包 ①在頁面中右擊鼠標(biāo),點(diǎn)擊檢查,博主這里用的是Google瀏覽器 ②在彈出來的頁面中點(diǎn)擊Network,然后再重

    2024年02月02日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包