feat(实验5): 添加银行系统和图书管理系统界面

- 新增 BankManagerSystem 和 BookManagerSystem 类
- 使用 JFormDesigner 设计并生成了相应的界面
- 添加了基本的事件处理方法
- 优化了界面布局和组件样式
This commit is contained in:
dev_xulongjin 2025-05-19 11:26:26 +08:00
parent ab7ec43d97
commit 0f6ab9f93c
11 changed files with 1210 additions and 36 deletions

View File

@ -0,0 +1,255 @@
/*
* Created by JFormDesigner on Wed May 14 09:34:54 CST 2025
*/
package cn.vscoder.experiment_5.BankSystem;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
/**
* @author xulongjin
*/
public class BankManagerSystem extends JFrame {
public BankManagerSystem() {
initComponents();
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents @formatter:off
panel1 = new JPanel();
label1 = new JLabel();
label2 = new JLabel();
label3 = new JLabel();
label4 = new JLabel();
label5 = new JLabel();
label6 = new JLabel();
textField1 = new JTextField();
textField2 = new JTextField();
textField3 = new JTextField();
textField4 = new JTextField();
textField5 = new JTextField();
textField6 = new JTextField();
panel2 = new JPanel();
label7 = new JLabel();
radioButton1 = new JRadioButton();
radioButton2 = new JRadioButton();
radioButton3 = new JRadioButton();
checkBox1 = new JCheckBox();
button1 = new JButton();
button2 = new JButton();
button3 = new JButton();
button4 = new JButton();
button5 = new JButton();
button6 = new JButton();
button7 = new JButton();
button8 = new JButton();
scrollPane1 = new JScrollPane();
table1 = new JTable();
//======== this ========
var contentPane = getContentPane();
contentPane.setLayout(new GridLayout(3, 0));
//======== panel1 ========
{
panel1.setLayout(null);
//---- label1 ----
label1.setText("\u94f6\u884c\u5361\u53f7\uff1a");
panel1.add(label1);
label1.setBounds(25, 25, 70, 40);
//---- label2 ----
label2.setText("\u7528\u6237\u59d3\u540d\uff1a");
panel1.add(label2);
label2.setBounds(25, 79, 75, 40);
//---- label3 ----
label3.setText("\u4f59 \u989d\uff1a");
panel1.add(label3);
label3.setBounds(25, 129, 75, 40);
//---- label4 ----
label4.setText("\u5b58/\u53d6\u6b3e \uff1a");
panel1.add(label4);
label4.setBounds(355, 125, 75, 40);
//---- label5 ----
label5.setText("\u5bc6 \u7801\uff1a");
panel1.add(label5);
label5.setBounds(355, 75, 75, 40);
//---- label6 ----
label6.setText("\u8eab\u4efd\u8bc1\u53f7\uff1a");
panel1.add(label6);
label6.setBounds(355, 20, 75, 40);
panel1.add(textField1);
textField1.setBounds(90, 25, 205, 39);
panel1.add(textField2);
textField2.setBounds(90, 80, 205, 39);
panel1.add(textField3);
textField3.setBounds(90, 130, 205, 39);
panel1.add(textField4);
textField4.setBounds(420, 75, 205, 39);
panel1.add(textField5);
textField5.setBounds(420, 20, 205, 39);
panel1.add(textField6);
textField6.setBounds(420, 125, 205, 39);
{
// compute preferred size
Dimension preferredSize = new Dimension();
for(int i = 0; i < panel1.getComponentCount(); i++) {
Rectangle bounds = panel1.getComponent(i).getBounds();
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
}
Insets insets = panel1.getInsets();
preferredSize.width += insets.right;
preferredSize.height += insets.bottom;
panel1.setMinimumSize(preferredSize);
panel1.setPreferredSize(preferredSize);
}
}
contentPane.add(panel1);
//======== panel2 ========
{
panel2.setLayout(null);
//---- label7 ----
label7.setText("\u5b58\u6b3e\u671f\u9650\uff1a");
panel2.add(label7);
label7.setBounds(50, 10, 75, 35);
//---- radioButton1 ----
radioButton1.setText("1\u5e74");
panel2.add(radioButton1);
radioButton1.setBounds(new Rectangle(new Point(120, 15), radioButton1.getPreferredSize()));
//---- radioButton2 ----
radioButton2.setText("3\u5e74");
panel2.add(radioButton2);
radioButton2.setBounds(285, 15, 60, 24);
//---- radioButton3 ----
radioButton3.setText("\u6d3b\u671f");
panel2.add(radioButton3);
radioButton3.setBounds(440, 15, 65, 24);
//---- checkBox1 ----
checkBox1.setText("\u529e\u65b0\u5361\u65f6\u5b58\u6b3e");
panel2.add(checkBox1);
checkBox1.setBounds(new Rectangle(new Point(85, 50), checkBox1.getPreferredSize()));
//---- button1 ----
button1.setText("\u529e\u65b0\u5361");
panel2.add(button1);
button1.setBounds(105, 85, 90, 45);
//---- button2 ----
button2.setText("\u5f00\u7a7a\u5361");
panel2.add(button2);
button2.setBounds(105, 135, 90, 45);
//---- button3 ----
button3.setText("\u5b58\u6b3e");
panel2.add(button3);
button3.setBounds(210, 85, 90, 45);
//---- button4 ----
button4.setText("\u67e5\u8be2");
panel2.add(button4);
button4.setBounds(210, 135, 90, 45);
//---- button5 ----
button5.setText("\u53d6\u6b3e");
panel2.add(button5);
button5.setBounds(320, 85, 90, 45);
//---- button6 ----
button6.setText("\u5220\u9664");
panel2.add(button6);
button6.setBounds(320, 135, 90, 45);
//---- button7 ----
button7.setText("\u6539\u5bc6\u7801");
panel2.add(button7);
button7.setBounds(430, 85, 90, 45);
//---- button8 ----
button8.setText("\u6e05\u7a7a");
panel2.add(button8);
button8.setBounds(430, 135, 90, 45);
{
// compute preferred size
Dimension preferredSize = new Dimension();
for(int i = 0; i < panel2.getComponentCount(); i++) {
Rectangle bounds = panel2.getComponent(i).getBounds();
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
}
Insets insets = panel2.getInsets();
preferredSize.width += insets.right;
preferredSize.height += insets.bottom;
panel2.setMinimumSize(preferredSize);
panel2.setPreferredSize(preferredSize);
}
}
contentPane.add(panel2);
//======== scrollPane1 ========
{
//---- table1 ----
table1.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"\u5361\u53f7", "\u59d3\u540d", "\u8eab\u4efd\u8bc1\u53f7", "\u5bc6\u7801", "\u4f59\u989d"
}
));
table1.setBorder(null);
scrollPane1.setViewportView(table1);
}
contentPane.add(scrollPane1);
pack();
setLocationRelativeTo(getOwner());
// JFormDesigner - End of component initialization //GEN-END:initComponents @formatter:on
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables @formatter:off
private JPanel panel1;
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JLabel label4;
private JLabel label5;
private JLabel label6;
private JTextField textField1;
private JTextField textField2;
private JTextField textField3;
private JTextField textField4;
private JTextField textField5;
private JTextField textField6;
private JPanel panel2;
private JLabel label7;
private JRadioButton radioButton1;
private JRadioButton radioButton2;
private JRadioButton radioButton3;
private JCheckBox checkBox1;
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JButton button6;
private JButton button7;
private JButton button8;
private JScrollPane scrollPane1;
private JTable table1;
// JFormDesigner - End of variables declaration //GEN-END:variables @formatter:on
}

View File

@ -0,0 +1,268 @@
JFDML JFormDesigner: "8.2.4.0.393" Java: "21.0.6" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
add( new FormWindow( "javax.swing.JFrame", new FormLayoutManager( class java.awt.GridLayout ) {
"rows": 3
} ) {
name: "this"
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jformdesigner.runtime.NullLayout ) ) {
name: "panel1"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
"text": "银行卡号:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 25
"y": 25
"width": 70
"height": 40
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
"text": "用户姓名:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 40
"x": 25
"y": 79
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label3"
"text": "余 额:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 40
"x": 25
"y": 129
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label4"
"text": "存/取款 "
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 40
"x": 355
"y": 125
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label5"
"text": "密 码:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 40
"x": 355
"y": 75
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label6"
"text": "身份证号:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 40
"x": 355
"y": 20
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField1"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 90
"y": 25
"width": 205
"height": 39
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField2"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 205
"height": 39
"x": 90
"y": 80
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField3"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 205
"height": 39
"x": 90
"y": 130
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField4"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 205
"height": 39
"x": 420
"y": 75
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField5"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 205
"height": 39
"x": 420
"y": 20
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField6"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 205
"height": 39
"x": 420
"y": 125
} )
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jformdesigner.runtime.NullLayout ) ) {
name: "panel2"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label7"
"text": "存款期限:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 50
"y": 10
"width": 75
"height": 35
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton1"
"text": "1年"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 120
"y": 15
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton2"
"text": "3年"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 60
"height": 24
"x": 285
"y": 15
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton3"
"text": "活期"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 65
"height": 24
"x": 440
"y": 15
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox1"
"text": "办新卡时存款"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 85
"y": 50
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button1"
"text": "办新卡"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 105
"y": 85
"width": 90
"height": 45
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button2"
"text": "开空卡"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 45
"x": 105
"y": 135
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button3"
"text": "存款"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 45
"x": 210
"y": 85
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button4"
"text": "查询"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 45
"x": 210
"y": 135
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button5"
"text": "取款"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 45
"x": 320
"y": 85
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button6"
"text": "删除"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 45
"x": 320
"y": 135
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button7"
"text": "改密码"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 45
"x": 430
"y": 85
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button8"
"text": "清空"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 45
"x": 430
"y": 135
} )
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane1"
add( new FormComponent( "javax.swing.JTable" ) {
name: "table1"
"model": new com.jformdesigner.model.SwingTableModel( new java.util.Vector, new java.util.Vector {
add( "卡号" )
add( "姓名" )
add( "身份证号" )
add( "密码" )
add( "余额" )
}, new java.util.Vector {
add( null )
add( null )
add( null )
add( null )
add( null )
}, new java.util.Vector {
add( null )
add( null )
add( null )
add( null )
add( null )
}, new java.util.Vector {
add( null )
add( null )
add( null )
add( null )
add( null )
} )
"border": sfield com.jformdesigner.model.FormObject NULL_VALUE
} )
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 670, 625 )
} )
}
}

View File

@ -0,0 +1,298 @@
/*
* Created by JFormDesigner on Wed May 14 08:53:34 CST 2025
*/
package cn.vscoder.experiment_5.BookSystem;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.*;
/**
* @author xulongjin
*/
public class BookManagerSystem extends JFrame {
public BookManagerSystem() {
initComponents();
}
private void createBook(ActionEvent e) {
// TODO add your code here
dModel = (DefaultTableModel) tableBookList.getModel();
Vector data = new Vector<>();
data.addElement(inputBookSN.getText());
data.addElement(inputBookName.getText());
data.addElement(inputBookAuthor.getText());
data.addElement(inputBookPublisher.getText());
data.addElement(inputBookPrice.getText());
data.addElement(inputBookRegisNumber.getText());
data.addElement(selectIsBorrow.isSelected());
dModel.addRow(data);
inputBookSN.setText("");
inputBookName.setText("");
inputBookAuthor.setText("");
inputBookPublisher.setText("");
inputBookPrice.setText("");
inputBookRegisNumber.setText("");
selectIsBorrow.setSelected(false);
}
private void changeInfo(ActionEvent e) {
// TODO add your code here
int i = tableBookList.getSelectedRow();
if (i > -1) {
DefaultTableModel dModel = (DefaultTableModel) tableBookList.getModel();
dModel.setValueAt(inputBookSN.getText(), i, 0);
dModel.setValueAt(inputBookName.getText(), i, 1);
dModel.setValueAt(inputBookAuthor.getText(), i, 2);
dModel.setValueAt(inputBookPublisher.getText(), i, 3);
dModel.setValueAt(inputBookPrice.getText(), i, 4);
dModel.setValueAt(inputBookRegisNumber.getText(), i, 5);
dModel.setValueAt(selectIsBorrow.isSelected(), i, 6);
inputBookSN.setText("");
inputBookName.setText("");
inputBookAuthor.setText("");
inputBookPublisher.setText("");
inputBookPrice.setText("");
inputBookRegisNumber.setText("");
selectIsBorrow.setSelected(false);
} else {
JOptionPane.showMessageDialog(this, "请先选择要修改的图书!");
}
}
private void deleteBook(ActionEvent e) {
// TODO add your code here
DefaultTableModel dModel = (DefaultTableModel) tableBookList.getModel();
int i = tableBookList.getSelectedRow();
if (i > -1) {
dModel.removeRow(i);
} else {
JOptionPane.showMessageDialog(this, "请先选择要删除的图书!");
}
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents @formatter:off
panel1 = new JPanel();
textBookSN = new JLabel();
textBookName = new JLabel();
textBookRegisNumber = new JLabel();
textBookPrice = new JLabel();
textBookPublisher = new JLabel();
textBookAuthor = new JLabel();
inputBookSN = new JTextField();
inputBookName = new JTextField();
inputBookRegisNumber = new JTextField();
inputBookPrice = new JTextField();
inputBookPublisher = new JTextField();
inputBookAuthor = new JTextField();
panel2 = new JPanel();
buttonCreateBook = new JButton();
buttonChangeInfo = new JButton();
buttonDeleteBook = new JButton();
selectIsBorrow = new JCheckBox();
scrollPane1 = new JScrollPane();
tableBookList = new JTable();
//======== this ========
setTitle("\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf");
setMaximumSize(new Dimension(2147483647, 600));
var contentPane = getContentPane();
contentPane.setLayout(new GridLayout(3, 0));
//======== panel1 ========
{
panel1.setLayout(null);
//---- textBookSN ----
textBookSN.setText("\u56fe\u4e66\u7f16\u53f7\uff1a");
panel1.add(textBookSN);
textBookSN.setBounds(40, 20, 75, 30);
//---- textBookName ----
textBookName.setText("\u56fe\u4e66\u540d\u79f0\uff1a");
panel1.add(textBookName);
textBookName.setBounds(40, 65, 75, 30);
//---- textBookRegisNumber ----
textBookRegisNumber.setText("\u56fe\u4e66\u5165\u5e93\u53f7\uff1a");
panel1.add(textBookRegisNumber);
textBookRegisNumber.setBounds(40, 110, 90, 30);
//---- textBookPrice ----
textBookPrice.setText("\u5b9a \u4ef7\uff1a");
panel1.add(textBookPrice);
textBookPrice.setBounds(320, 20, 75, 30);
//---- textBookPublisher ----
textBookPublisher.setText("\u51fa\u7248\u793e \uff1a");
panel1.add(textBookPublisher);
textBookPublisher.setBounds(320, 65, 75, 30);
//---- textBookAuthor ----
textBookAuthor.setText("\u56fe\u4e66\u4f5c\u8005\uff1a");
panel1.add(textBookAuthor);
textBookAuthor.setBounds(320, 110, 75, 30);
panel1.add(inputBookSN);
inputBookSN.setBounds(115, 15, 180, 39);
panel1.add(inputBookName);
inputBookName.setBounds(115, 60, 180, 39);
panel1.add(inputBookRegisNumber);
inputBookRegisNumber.setBounds(115, 105, 180, 39);
panel1.add(inputBookPrice);
inputBookPrice.setBounds(385, 15, 180, 39);
panel1.add(inputBookPublisher);
inputBookPublisher.setBounds(385, 60, 180, 39);
panel1.add(inputBookAuthor);
inputBookAuthor.setBounds(385, 105, 180, 39);
{
// compute preferred size
Dimension preferredSize = new Dimension();
for(int i = 0; i < panel1.getComponentCount(); i++) {
Rectangle bounds = panel1.getComponent(i).getBounds();
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
}
Insets insets = panel1.getInsets();
preferredSize.width += insets.right;
preferredSize.height += insets.bottom;
panel1.setMinimumSize(preferredSize);
panel1.setPreferredSize(preferredSize);
}
}
contentPane.add(panel1);
//======== panel2 ========
{
panel2.setLayout(null);
//---- buttonCreateBook ----
buttonCreateBook.setText("\u521b\u5efa\u56fe\u4e66");
buttonCreateBook.addActionListener(e -> createBook(e));
panel2.add(buttonCreateBook);
buttonCreateBook.setBounds(45, 55, 110, 50);
//---- buttonChangeInfo ----
buttonChangeInfo.setText("\u66f4\u6b63\u4fe1\u606f");
buttonChangeInfo.addActionListener(e -> changeInfo(e));
panel2.add(buttonChangeInfo);
buttonChangeInfo.setBounds(230, 55, 110, 50);
//---- buttonDeleteBook ----
buttonDeleteBook.setText("\u5220\u9664\u56fe\u4e66");
buttonDeleteBook.addActionListener(e -> deleteBook(e));
panel2.add(buttonDeleteBook);
buttonDeleteBook.setBounds(420, 55, 110, 50);
//---- selectIsBorrow ----
selectIsBorrow.setText("\u662f\u5426\u53ef\u501f");
panel2.add(selectIsBorrow);
selectIsBorrow.setBounds(390, 10, 115, 35);
{
// compute preferred size
Dimension preferredSize = new Dimension();
for(int i = 0; i < panel2.getComponentCount(); i++) {
Rectangle bounds = panel2.getComponent(i).getBounds();
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
}
Insets insets = panel2.getInsets();
preferredSize.width += insets.right;
preferredSize.height += insets.bottom;
panel2.setMinimumSize(preferredSize);
panel2.setPreferredSize(preferredSize);
}
}
contentPane.add(panel2);
//======== scrollPane1 ========
{
//---- tableBookList ----
tableBookList.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"ISBN", "\u4e66\u540d", " \u4f5c\u8005", " \u51fa\u7248\u793e", " \u5b9a\u4ef7", "\u5165\u5e93\u53f7", "\u662f\u5426\u53ef\u501f"
}
));
scrollPane1.setViewportView(tableBookList);
}
contentPane.add(scrollPane1);
pack();
setLocationRelativeTo(getOwner());
// JFormDesigner - End of component initialization //GEN-END:initComponents @formatter:on
tableBookList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
i = tableBookList.getSelectedRow();
if (i >= 0) {
inputBookSN.setText(dModel.getValueAt(i, 0).toString());
inputBookName.setText(dModel.getValueAt(i, 1).toString());
inputBookAuthor.setText(dModel.getValueAt(i, 2).toString());
inputBookPublisher.setText(dModel.getValueAt(i, 3).toString());
inputBookPrice.setText(dModel.getValueAt(i, 4).toString());
inputBookRegisNumber.setText(dModel.getValueAt(i, 5).toString());
selectIsBorrow.setSelected(Boolean.parseBoolean(dModel.getValueAt(i, 6).toString()));
}
}
});
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables @formatter:off
private JPanel panel1;
private JLabel textBookSN;
private JLabel textBookName;
private JLabel textBookRegisNumber;
private JLabel textBookPrice;
private JLabel textBookPublisher;
private JLabel textBookAuthor;
private JTextField inputBookSN;
private JTextField inputBookName;
private JTextField inputBookRegisNumber;
private JTextField inputBookPrice;
private JTextField inputBookPublisher;
private JTextField inputBookAuthor;
private JPanel panel2;
private JButton buttonCreateBook;
private JButton buttonChangeInfo;
private JButton buttonDeleteBook;
private JCheckBox selectIsBorrow;
private JScrollPane scrollPane1;
private JTable tableBookList;
// JFormDesigner - End of variables declaration //GEN-END:variables @formatter:on
DefaultTableModel dModel;
int i;
// @Override
// public void valueChanged(ListSelectionEvent e) {
// i = tableBookList.getSelectedRow();
// if (i >= 0) {
// inputBookSN.setText(dModel.getValueAt(i, 0).toString());
// inputBookName.setText(dModel.getValueAt(i, 1).toString());
// inputBookAuthor.setText(dModel.getValueAt(i, 2).toString());
// inputBookPublisher.setText(dModel.getValueAt(i, 3).toString());
// inputBookPrice.setText(dModel.getValueAt(i, 4).toString());
// inputBookRegisNumber.setText(dModel.getValueAt(i, 5).toString());
// selectIsBorrow.setSelected(Boolean.parseBoolean(dModel.getValueAt(i, 6).toString()));
// }
// }
}

View File

@ -0,0 +1,203 @@
JFDML JFormDesigner: "8.2.4.0.393" Java: "21.0.6" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
add( new FormWindow( "javax.swing.JFrame", new FormLayoutManager( class java.awt.GridLayout ) {
"rows": 3
} ) {
name: "this"
"title": "图书管理系统"
"maximumSize": new java.awt.Dimension( 2147483647, 600 )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jformdesigner.runtime.NullLayout ) ) {
name: "panel1"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "textBookSN"
"text": "图书编号:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 40
"y": 20
"width": 75
"height": 30
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "textBookName"
"text": "图书名称:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 30
"x": 40
"y": 65
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "textBookRegisNumber"
"text": "图书入库号:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 90
"height": 30
"x": 40
"y": 110
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "textBookPrice"
"text": "定 价:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 30
"x": 320
"y": 20
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "textBookPublisher"
"text": "出版社 "
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 30
"x": 320
"y": 65
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "textBookAuthor"
"text": "图书作者:"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 75
"height": 30
"x": 320
"y": 110
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "inputBookSN"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 115
"y": 15
"width": 180
"height": 39
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "inputBookName"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 180
"height": 39
"x": 115
"y": 60
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "inputBookRegisNumber"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 180
"height": 39
"x": 115
"y": 105
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "inputBookPrice"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 180
"height": 39
"x": 385
"y": 15
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "inputBookPublisher"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 180
"height": 39
"x": 385
"y": 60
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "inputBookAuthor"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 180
"height": 39
"x": 385
"y": 105
} )
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jformdesigner.runtime.NullLayout ) ) {
name: "panel2"
add( new FormComponent( "javax.swing.JButton" ) {
name: "buttonCreateBook"
"text": "创建图书"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "createBook", true ) )
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 45
"y": 55
"width": 110
"height": 50
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "buttonChangeInfo"
"text": "更正信息"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "changeInfo", true ) )
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 110
"height": 50
"x": 230
"y": 55
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "buttonDeleteBook"
"text": "删除图书"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "deleteBook", true ) )
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"width": 110
"height": 50
"x": 420
"y": 55
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "selectIsBorrow"
"text": "是否可借"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 390
"y": 10
"width": 115
"height": 35
} )
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane1"
add( new FormComponent( "javax.swing.JTable" ) {
name: "tableBookList"
"model": new com.jformdesigner.model.SwingTableModel( new java.util.Vector, new java.util.Vector {
add( "ISBN" )
add( "书名" )
add( " 作者" )
add( " 出版社" )
add( " 定价" )
add( "入库号" )
add( "是否可借" )
}, new java.util.Vector {
add( null )
add( null )
add( null )
add( null )
add( null )
add( null )
add( null )
}, new java.util.Vector {
add( null )
add( null )
add( null )
add( null )
add( null )
add( null )
add( null )
}, new java.util.Vector {
add( null )
add( null )
add( null )
add( null )
add( null )
add( null )
add( null )
} )
} )
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 630, 500 )
} )
}
}

View File

@ -0,0 +1,7 @@
package cn.vscoder.experiment_5.BookSystem;
public class task {
public static void main(String[] args) {
new BookManagerSystem().setVisible(true);
}
}

View File

@ -1,7 +1,8 @@
package cn.vscoder.experiment_5; package cn.vscoder.experiment_5.Sport_Register;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.*; import javax.swing.border.*;
/* /*
@ -20,6 +21,9 @@ public class SportRegister extends JFrame {
private void selectSexBoyItemStateChanged(ItemEvent e) { private void selectSexBoyItemStateChanged(ItemEvent e) {
// TODO add your code here // TODO add your code here
selectCompetitiveItem.removeAllItems(); selectCompetitiveItem.removeAllItems();
outputMessage.setText("");
items.clear();
selectCompetitiveItem.addItem("参赛项");
selectCompetitiveItem.addItem("男子跳高"); selectCompetitiveItem.addItem("男子跳高");
selectCompetitiveItem.addItem("男子跳远"); selectCompetitiveItem.addItem("男子跳远");
selectCompetitiveItem.addItem("男子铅球"); selectCompetitiveItem.addItem("男子铅球");
@ -31,6 +35,9 @@ public class SportRegister extends JFrame {
private void selectSexGirlItemStateChanged(ItemEvent e) { private void selectSexGirlItemStateChanged(ItemEvent e) {
// TODO add your code here // TODO add your code here
selectCompetitiveItem.removeAllItems(); selectCompetitiveItem.removeAllItems();
outputMessage.setText("");
items.clear();
selectCompetitiveItem.addItem("参赛项");
selectCompetitiveItem.addItem("女子跳高"); selectCompetitiveItem.addItem("女子跳高");
selectCompetitiveItem.addItem("女子跳远"); selectCompetitiveItem.addItem("女子跳远");
selectCompetitiveItem.addItem("女子铅球"); selectCompetitiveItem.addItem("女子铅球");
@ -41,10 +48,46 @@ public class SportRegister extends JFrame {
private void bottomReset(ActionEvent e) { private void bottomReset(ActionEvent e) {
// TODO add your code here // TODO add your code here
inputName.setText("");
inputSn.setText("");
selectSexBoy.setSelected(true);
outputMessage.setText("");
items.clear();
} }
private void bottomPush(ActionEvent e) { private void bottomPush(ActionEvent e) {
// TODO add your code here // TODO add your code here
if (inputName.getText().isEmpty() || inputSn.getText().isEmpty() || items.isEmpty()) {
JOptionPane.showMessageDialog(
this,
"信息不完整,请填写完整",
"提示",
JOptionPane.ERROR_MESSAGE
);
} else {
outputMessage.append("\n---------------------\n");
outputMessage.append("姓名:" + inputName.getText() + ",学号:" + inputSn.getText() + ",\n报名项目:");
for (int i = 0; i < items.size(); i++) {
outputMessage.append(items.get(i));
if (!(i == items.size() - 1)){
outputMessage.append("");
}
}
outputMessage.append("\n--------报名成功-------");
}
}
private void selectCompetitiveItem(ActionEvent e) {
// TODO add your code here
String selectedItem = (String) selectCompetitiveItem.getSelectedItem();
if (selectedItem != null && !selectedItem.trim().isEmpty() && !selectedItem.equals("参赛项")) {
String item = outputMessage.getText();
if (!item.contains(selectedItem + ";")) {
outputMessage.append(selectedItem + ";");
items.add(selectedItem);
}
}
} }
private void initComponents() { private void initComponents() {
@ -59,11 +102,11 @@ public class SportRegister extends JFrame {
selectSexGirl = new JRadioButton(); selectSexGirl = new JRadioButton();
panel3 = new JPanel(); panel3 = new JPanel();
selectCompetitiveItem = new JComboBox<>(); selectCompetitiveItem = new JComboBox<>();
scrollPane1 = new JScrollPane();
outputMessage = new JTextArea();
panel4 = new JPanel(); panel4 = new JPanel();
bottomReset = new JButton(); bottomReset = new JButton();
bottomPush = new JButton(); bottomPush = new JButton();
scrollPane1 = new JScrollPane();
textArea1 = new JTextArea();
//======== this ======== //======== this ========
var contentPane = getContentPane(); var contentPane = getContentPane();
@ -147,15 +190,11 @@ public class SportRegister extends JFrame {
//---- selectCompetitiveItem ---- //---- selectCompetitiveItem ----
selectCompetitiveItem.setModel(new DefaultComboBoxModel<>(new String[] { selectCompetitiveItem.setModel(new DefaultComboBoxModel<>(new String[] {
"\u53c2\u8d5b\u9879", "\u53c2\u8d5b\u9879"
"\u8df3\u9ad8",
"\u8df3\u8fdc",
"100\u7c73",
"400\u7c73",
"\u94c5\u7403"
})); }));
selectCompetitiveItem.addActionListener(e -> selectCompetitiveItem(e));
panel3.add(selectCompetitiveItem); panel3.add(selectCompetitiveItem);
selectCompetitiveItem.setBounds(115, 30, 140, 40); selectCompetitiveItem.setBounds(115, 35, 140, 40);
{ {
// compute preferred size // compute preferred size
@ -174,6 +213,14 @@ public class SportRegister extends JFrame {
} }
contentPane.add(panel3); contentPane.add(panel3);
//======== scrollPane1 ========
{
scrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane1.setBorder(new TitledBorder("\u62a5\u540d\u4fe1\u606f"));
scrollPane1.setViewportView(outputMessage);
}
contentPane.add(scrollPane1);
//======== panel4 ======== //======== panel4 ========
{ {
panel4.setBorder(new TitledBorder("\u64cd\u4f5c")); panel4.setBorder(new TitledBorder("\u64cd\u4f5c"));
@ -207,17 +254,13 @@ public class SportRegister extends JFrame {
} }
} }
contentPane.add(panel4); contentPane.add(panel4);
//======== scrollPane1 ========
{
scrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane1.setBorder(new TitledBorder("\u62a5\u540d\u4fe1\u606f"));
scrollPane1.setViewportView(textArea1);
}
contentPane.add(scrollPane1);
pack(); pack();
setLocationRelativeTo(getOwner()); setLocationRelativeTo(getOwner());
// JFormDesigner - End of component initialization //GEN-END:initComponents @formatter:on // JFormDesigner - End of component initialization //GEN-END:initComponents @formatter:on
selectSexBoyItemStateChanged(null);
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(selectSexGirl);
buttonGroup.add(selectSexBoy);
} }
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables @formatter:off // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables @formatter:off
@ -231,10 +274,12 @@ public class SportRegister extends JFrame {
private JRadioButton selectSexGirl; private JRadioButton selectSexGirl;
private JPanel panel3; private JPanel panel3;
private JComboBox<String> selectCompetitiveItem; private JComboBox<String> selectCompetitiveItem;
private JScrollPane scrollPane1;
private JTextArea outputMessage;
private JPanel panel4; private JPanel panel4;
private JButton bottomReset; private JButton bottomReset;
private JButton bottomPush; private JButton bottomPush;
private JScrollPane scrollPane1;
private JTextArea textArea1;
// JFormDesigner - End of variables declaration //GEN-END:variables @formatter:on // JFormDesigner - End of variables declaration //GEN-END:variables @formatter:on
ArrayList<String> items = new ArrayList<>();
} }

View File

@ -78,19 +78,23 @@ new FormModel {
"model": new javax.swing.DefaultComboBoxModel { "model": new javax.swing.DefaultComboBoxModel {
selectedItem: "参赛项" selectedItem: "参赛项"
addElement( "参赛项" ) addElement( "参赛项" )
addElement( "跳高" )
addElement( "跳远" )
addElement( "100米" )
addElement( "400米" )
addElement( "铅球" )
} }
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "selectCompetitiveItem", true ) )
}, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) { }, new FormLayoutConstraints( class com.jformdesigner.runtime.NullConstraints ) {
"x": 115 "x": 115
"y": 30 "y": 35
"width": 140 "width": 140
"height": 40 "height": 40
} ) } )
} ) } )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane1"
"horizontalScrollBarPolicy": 32
"border": new javax.swing.border.TitledBorder( "报名信息" )
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "outputMessage"
} )
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jformdesigner.runtime.NullLayout ) ) { add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jformdesigner.runtime.NullLayout ) ) {
name: "panel4" name: "panel4"
"border": new javax.swing.border.TitledBorder( "操作" ) "border": new javax.swing.border.TitledBorder( "操作" )
@ -113,17 +117,9 @@ new FormModel {
"y": 40 "y": 40
} ) } )
} ) } )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane1"
"horizontalScrollBarPolicy": 32
"border": new javax.swing.border.TitledBorder( "报名信息" )
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea1"
} )
} )
}, new FormLayoutConstraints( null ) { }, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 ) "location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 425, 565 ) "size": new java.awt.Dimension( 425, 630 )
} ) } )
} }
} }

View File

@ -1,4 +1,4 @@
package cn.vscoder.experiment_5; package cn.vscoder.experiment_5.Sport_Register;
public class task { public class task {
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -136,6 +136,13 @@
<version>${mysqlconnect.version}</version> <version>${mysqlconnect.version}</version>
</dependency> </dependency>
<!-- Kafka -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -0,0 +1,47 @@
package date_20250513;
import org.apache.kafka.clients.consumer.*;
import org.apache.kafka.common.serialization.IntegerDeserializer;
import org.apache.kafka.common.serialization.StringDeserializer;
import java.time.Duration;
import java.util.Arrays;
import java.util.Properties;
/**
* 消费者类
*/
public class MyConsumer {
public static void main(String[] args) {
//1.使用Proerties定义配置属性
Properties props = new Properties();
//设置生产者Broker服务器连接地址
props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "hadoop102:9092");
//设置序列化key程序类
props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
//设置序列号化value程序类此处不一定是非得时Integer也可以是String
props.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
//设置消费者组ID即组名称值可自定义组名称相同的消费者进程属于用一个消费者
props.setProperty(ConsumerConfig.GROUP_ID_CONFIG, "test-consumer-group4");
// 设置从头开始消费
props.put("auto.offset.reset", "earliest");
//2.定义消费者对象
Consumer<String, String> consumer = new KafkaConsumer<String, String>(props);
//3.设置消费者读取的主题名称可以设置多个
consumer.subscribe(Arrays.asList("topic02"));
//4.不同的读取消息
while (true) {
System.out.println("打印开始");
//拉取消息并设置超时时间为10秒
ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(100));
for (ConsumerRecord<String, String> record : records) {
System.out.println(record.value() + ", " + record.partition() + ",offset: " + record.offset());
}
}
}
}

View File

@ -0,0 +1,48 @@
package date_20250513;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.IntegerSerializer;
import org.apache.kafka.common.serialization.StringSerializer;
import java.util.Properties;
/**
* 生产者类
*/
public class MyProducer {
public static void main(String[] args) {
//1.使用Proerties定义配置属性
Properties props = new Properties();
//设置生产者Broker服务器连接地址
props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "hadoop102:9092");
//指定topic
String topic = "topic02";
//设置序列化key程序类
props.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
//设置序列号化value程序类此处不一定是非得时Integer也可以是String
props.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
//2.定义消息生产者对象依靠此对象可以进行消息的传递
Producer<String, String> producer = new KafkaProducer<String, String>(props);
//3.循环发送10条消息
for (int i = 0; i < 10; i++) {
//发送消息此方式只负责发送消息不关心是否发送成功
//第一个参数主题名称
//第二个参数消息的key值
//第三个参数消息的value值
System.out.println(i);
//producer.send(new ProducerRecord<String, String>(topic,"hello to kafka" + i, String.valueOf(i)));
producer.send(new ProducerRecord<String, String>(topic, "hello to kafka" + i));
}
//4.关闭生产者释放资源
producer.close();
}
}