本文適用于cs人學期中“失足”寫不完java課設,想要速成xx管理系統的人群
注:開發中使用的idea版本為2020.3.1,mysql版本為8.0.24,navicat版本為15
本文將分成管理系統的界面設計 + 界面按鈕事件回應 + SQL陳述句的撰寫三大塊,因為在筆者看來一個能做到增刪改查的最基本的管理系統應該就這三大塊就能完成了,
管理系統的界面設計
首先是界面,界面這塊我們采用javaswing來進行界面的繪制
想要設計一個管理系統,主界面必不可少
主界面:
首先我們創建一個MainViewTest類,然后讓它繼承JFrame,如圖:

在主界面類里我們定義我們需要的控制元件,然后在建構式里去布局
這里我們定義四個按鈕,矩陣狀排列作為演示
package org.example.CRUD;
import javax.swing.*;
public class MainViewTest extends JFrame {
public JButton a = new JButton("增");
public JButton b = new JButton("刪");
public JButton c = new JButton("改");
public JButton d = new JButton("查");
public MainViewTest(){
setTitle("演示界面");//設定視窗的標題
setLayout(null);//清空布局管理器
setSize(400,400);//設定視窗大小
setLocationRelativeTo(null);//設定視窗相對于指定組件的位置,
//如果組件當前未顯示,或者 c 為 null,則此視窗將置于螢屏的中央,
setDefaultCloseOperation(EXIT_ON_CLOSE);//設定默認關閉操作
setResizable(true);//設定視窗大小是否可改變
//設定組件的擺放位置
a.setBounds(100,100,50,50);
b.setBounds(200,100,50,50);
c.setBounds(100,200,50,50);
d.setBounds(200,200,50,50);
//將組件添加到視窗中
add(a);
add(b);
add(c);
add(d);
setVisible(true);//設定組件可視
}
public static void main(String[] args) {
new MainViewTest();
}
}
運行界面效果如下圖所示

還有一些其他的組件如:
文本框(JTextField)
密碼框(JPasswordField)
標簽(JLable)
復選框(JCheckBox)
單選框(JRadioButton)
組合單選框(ButtonGroup)
下拉框(JComboBox)
串列(JList)
滾動窗格組件(JScrollPane)
多行文本框(JTextArea)
選項卡(JTabbedPane)
布局都是類似的,具體需要使用到什么的時候可以去查閱官方檔案
界面按鈕事件的系結和事件撰寫
給按鈕添加監聽事件,我們給視窗新建一個處理事件回應的類,每一個視窗都需要一個相應的處理事件的類,
對于上面的MainViewTest類我們新建一個MainViewTestHandler類來處理事件,

在MainViewTest類的建構式中創建監聽類物件

在MainViewTestHandler類中把監聽類和視窗進行系結,在actionPerformed中寫視窗事件回應代碼

我們用按鈕的文本來進行事件的判斷,用控制陳述句來進行相應的選擇
SQL陳述句的撰寫
管理系統通常都會鏈接到資料庫來進行資料的管理,其中最重要的就是SQL陳述句的撰寫,接下來我將會教大家簡單的增刪改查SQL陳述句的撰寫
在撰寫SQL陳述句之前,我們先新建一個用于獲取資料庫鏈接的類DButil
并且添加資料庫驅動jar包,具體添加jar包的方式參考我另一篇文章
idea連接mysql資料庫
DButil類中注冊資料庫鏈接代碼
package org.example.util;
import java.sql.*;
public class DBUtil {
//3306/后的test為鏈接的資料庫名
private static final String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false";
//資料庫注冊
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
//資料庫用戶名
private static final String USER_NAME = "root";
//資料庫密碼
private static final String PWD = "my121267";
//創建一個空鏈接
private Connection con = null;
//靜態代碼塊,當類加載的時候代碼也會被執行
static {
try {
Class.forName(DRIVER);//注冊資料庫驅動
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//獲取資料庫連接,要獲取資料庫連接就呼叫這個函式
public static Connection getConn(){
try {
System.out.println("獲取鏈接成功");
return DriverManager.getConnection(URL,USER_NAME,PWD);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
//下面都是關閉相應的資源
public static void closeConn(Connection connection){
if(connection != null){
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static void closePs(PreparedStatement ps){
if(ps != null){
try {
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static void closeRs(ResultSet rs){
if(rs != null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
我們可以在MainViewTestHandler類中直接撰寫SQL代碼,也可以再新建一個類來撰寫,這里我直接在這個類中撰寫
首先是增加的SQL陳述句代碼
if("增".equals(text)) {
try {
if("".equals(mainViewTest.name.getText()) || "".equals(mainViewTest.age.getText())){
JOptionPane.showMessageDialog(mainViewTest,"請檢查插入資料是否為空白!");
return;
}
String name = mainViewTest.name.getText();
int age = Integer.parseInt(mainViewTest.age.getText());
String sql = "insert into " + table_name + " values(" + add(name)+","+age+")";
//中間這三行陳述句是資料庫鏈接中最核心的三句
cons = DBUtil.getConn();//獲取資料庫連接
statement2 = cons.prepareStatement(sql);//系結sql陳述句
int res = statement2.executeUpdate();//執行sql陳述句
//
JOptionPane.showMessageDialog(mainViewTest,"sql陳述句執行成功");
}catch(Exception e2) {
e2.printStackTrace();
}finally {
//在finally中釋放所有的資源
DBUtil.closeRs(res2);
DBUtil.closePs(statement2);
DBUtil.closeConn(cons);
}
}else if("刪".equals(text)){
}else if("改".equals(text)) {
}else if("查".equals(text)){
}
}
注意:增加的sql陳述句中我添加了兩個輸入框,還有很重要的一點是需要給這四個按鈕都添加上監聽事件,如下:

a.addActionListener(mainViewTestHandler);
b.addActionListener(mainViewTestHandler);
c.addActionListener(mainViewTestHandler);
d.addActionListener(mainViewTestHandler);
這四行代碼給按鈕添加了監聽事件,如果沒這四行代碼的話,點擊按鈕是沒有任何反應的,
接下來是洗掉的sql陳述句
else if("刪".equals(text)){
try {
if("".equals(mainViewTest.name.getText())){
JOptionPane.showMessageDialog(mainViewTest,"請檢查插入資料是否為空白!");
return;
}
String delname = mainViewTest.name.getText();
String delsql = "delete from " + table_name + " where student = " + add(delname);
cons = DBUtil.getConn();
statement2 = cons.prepareStatement(delsql);
int res = statement2.executeUpdate();
JOptionPane.showMessageDialog(mainViewTest,"sql陳述句執行成功");
}catch(Exception e2) {
e2.printStackTrace();
}finally {
DBUtil.closeRs(res2);
DBUtil.closePs(statement2);
DBUtil.closeConn(cons);
}
這里洗掉是按照學生姓名來洗掉的,并且是用的第一個輸入框來輸入學生姓名用于洗掉
然后是修改SQL陳述句
else if("改".equals(text)) {
try {
if("".equals(mainViewTest.name.getText())){
JOptionPane.showMessageDialog(mainViewTest,"請檢查插入資料是否為空白!");
return;
}
String upname = mainViewTest.name.getText();
int upage = Integer.parseInt(mainViewTest.age.getText());
String upsql = "update " + table_name + " set age = " +upage + " where student = " + add(upname);
cons = DBUtil.getConn();
statement2 = cons.prepareStatement(upsql);
int res = statement2.executeUpdate();
JOptionPane.showMessageDialog(mainViewTest,"sql陳述句執行成功");
}catch(Exception e2) {
e2.printStackTrace();
}finally {
DBUtil.closeRs(res2);
DBUtil.closePs(statement1);
DBUtil.closePs(statement2);
DBUtil.closeConn(cons);
}
最后是查詢sql陳述句
else if("查".equals(text)){
try {
if("".equals(mainViewTest.name.getText())){
JOptionPane.showMessageDialog(mainViewTest,"請檢查插入資料是否為空白!");
return;
}
String selname = mainViewTest.name.getText();
String selsql = "select age from " + table_name + " where student = " + add(selname);
cons = DBUtil.getConn();
statement2 = cons.prepareStatement(selsql);
res2 = statement2.executeQuery();
JOptionPane.showMessageDialog(mainViewTest,"sql陳述句執行成功");
}catch(Exception e2) {
e2.printStackTrace();
}finally {
DBUtil.closeRs(res2);
DBUtil.closePs(statement1);
DBUtil.closePs(statement2);
DBUtil.closeConn(cons);
}
}
查詢陳述句最后沒有能顯示出來的地方,如果想獲取查詢出來的資料需要去查詢Resultset結果集的相關資料
至此,一個最基本的xx管理系統鏈接資料庫就已經寫好了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/292701.html
標籤:java
上一篇:[Python從零到壹] 十五.文本挖掘之資料預處理、Jieba工具和文本聚類萬字詳解
下一篇:Flume【環境搭建 01】【apache-flume-1.9.0 安裝配置】【Linux環境 騰訊云 CentOS Linux release 7.5.1804】
