java弹窗表格把文件的书存入表格实现管理员对书籍的添加和查询修改的代码,不用数据库
时间: 2024-03-16 22:44:08 浏览: 63
好的,这里是一个简单的示例代码,实现了将文件中的书籍存入表格,并实现了管理员的添加和修改查询功能。这里使用了Java Swing库和文件读写操作,没有使用数据库。
```
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class BookTable extends JFrame {
private DefaultTableModel model;
private JTable table;
private JButton addBtn;
private JButton modifyBtn;
private JButton queryBtn;
public BookTable() {
super("书籍列表");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建表格模型
String[] headers = {"书名", "作者", "出版社", "出版日期", "ISBN"};
model = new DefaultTableModel(headers, 0);
// 创建表格,并设置模型
table = new JTable(model);
// 创建滚动条,将表格添加到滚动条中
JScrollPane scrollPane = new JScrollPane(table);
// 创建按钮
addBtn = new JButton("添加书籍");
modifyBtn = new JButton("修改书籍");
queryBtn = new JButton("查询书籍");
// 为按钮添加监听器
addBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addBook();
}
});
modifyBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
modifyBook();
}
});
queryBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
queryBook();
}
});
// 创建按钮面板,并添加按钮
JPanel buttonPanel = new JPanel();
buttonPanel.add(addBtn);
buttonPanel.add(modifyBtn);
buttonPanel.add(queryBtn);
// 将滚动条和按钮面板添加到窗口中
getContentPane().add(scrollPane, BorderLayout.CENTER);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
// 从文件中读取书籍信息,并添加到表格中
try {
BufferedReader reader = new BufferedReader(new FileReader("books.txt"));
String line;
while ((line = reader.readLine()) != null) {
String[] fields = line.split(",");
model.addRow(fields);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
// 设置窗口大小和位置,并显示窗口
setSize(600, 400);
setLocationRelativeTo(null);
setVisible(true);
}
// 添加新书籍
private void addBook() {
String[] fields = new String[5];
fields[0] = JOptionPane.showInputDialog("请输入书名:");
fields[1] = JOptionPane.showInputDialog("请输入作者:");
fields[2] = JOptionPane.showInputDialog("请输入出版社:");
fields[3] = JOptionPane.showInputDialog("请输入出版日期:");
fields[4] = JOptionPane.showInputDialog("请输入ISBN:");
model.addRow(fields);
// 将新书籍写入文件
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("books.txt", true));
writer.write(String.join(",", fields));
writer.newLine();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 修改书籍信息
private void modifyBook() {
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(this, "请选择要修改的书籍!");
return;
}
String[] fields = new String[5];
fields[0] = JOptionPane.showInputDialog("请输入书名:", model.getValueAt(selectedRow, 0));
fields[1] = JOptionPane.showInputDialog("请输入作者:", model.getValueAt(selectedRow, 1));
fields[2] = JOptionPane.showInputDialog("请输入出版社:", model.getValueAt(selectedRow, 2));
fields[3] = JOptionPane.showInputDialog("请输入出版日期:", model.getValueAt(selectedRow, 3));
fields[4] = JOptionPane.showInputDialog("请输入ISBN:", model.getValueAt(selectedRow, 4));
model.setValueAt(fields[0], selectedRow, 0);
model.setValueAt(fields[1], selectedRow, 1);
model.setValueAt(fields[2], selectedRow, 2);
model.setValueAt(fields[3], selectedRow, 3);
model.setValueAt(fields[4], selectedRow, 4);
// 将修改后的书籍信息写入文件
try {
List<String> lines = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader("books.txt"));
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
reader.close();
BufferedWriter writer = new BufferedWriter(new FileWriter("books.txt"));
for (int i = 0; i < lines.size(); i++) {
if (i == selectedRow) {
writer.write(String.join(",", fields));
} else {
writer.write(lines.get(i));
}
writer.newLine();
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 查询书籍信息
private void queryBook() {
String keyword = JOptionPane.showInputDialog("请输入要查询的书名:");
for (int i = 0; i < model.getRowCount(); i++) {
String bookName = (String) model.getValueAt(i, 0);
if (bookName.contains(keyword)) {
table.setRowSelectionInterval(i, i);
return;
}
}
JOptionPane.showMessageDialog(this, "未找到包含关键字\"" + keyword + "\"的书籍!");
}
public static void main(String[] args) {
new BookTable();
}
}
```
这段代码创建了一个JFrame窗口,其中包含了一个JTable表格用于显示书籍信息,和三个JButton按钮用于添加、修改和查询书籍。在窗口初始化时,从文件中读取书籍信息,并将其添加到表格中。当管理员点击添加/修改/查询按钮时,弹出对话框让管理员输入相关信息,并将结果添加到表格中。同时,修改和删除操作也会将修改后的数据写回到文件中。
这段代码虽然简单,但是可以帮助你了解如何使用Java Swing库和文件读写操作来实现一个简单的表格应用程序。如果你想进一步学习,可以考虑使用数据库来管理数据,或者使用更高级的GUI库来实现更复杂的界面。
阅读全文