java弹窗表格实现管理员对图书的查询和修改,不用数据库

时间: 2024-03-14 16:48:28 浏览: 17
可以使用Java的Swing组件来实现管理员对图书的查询和修改,并且不用数据库。具体来说,可以使用JTable组件来实现表格的显示和编辑,使用JOptionPane组件来实现弹窗的显示。以下是简单的示例代码: ``` import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.util.ArrayList; public class BookManager { private ArrayList<Book> books; public BookManager() { books = new ArrayList<Book>(); } public void addBook(Book book) { books.add(book); } public ArrayList<Book> searchBook(String keyword) { ArrayList<Book> results = new ArrayList<Book>(); for (Book book : books) { if (book.getTitle().contains(keyword) || book.getAuthor().contains(keyword)) { results.add(book); } } return results; } public void modifyBook(Book book) { int index = books.indexOf(book); if (index != -1) { books.set(index, book); } } public static void main(String[] args) { BookManager manager = new BookManager(); JFrame frame = new JFrame("图书管理系统"); frame.setSize(800, 600); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(new BorderLayout()); JTable table = new JTable(new DefaultTableModel(new Object[] {"书名", "作者", "出版社", "价格"}, 0)); JScrollPane scrollPane = new JScrollPane(table); panel.add(scrollPane, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); JButton addButton = new JButton("添加图书"); addButton.addActionListener(e -> { String title = JOptionPane.showInputDialog(frame, "请输入书名:"); String author = JOptionPane.showInputDialog(frame, "请输入作者:"); String publisher = JOptionPane.showInputDialog(frame, "请输入出版社:"); double price = Double.parseDouble(JOptionPane.showInputDialog(frame, "请输入价格:")); Book book = new Book(title, author, publisher, price); manager.addBook(book); DefaultTableModel model = (DefaultTableModel) table.getModel(); model.addRow(new Object[] {book.getTitle(), book.getAuthor(), book.getPublisher(), book.getPrice()}); }); buttonPanel.add(addButton); JButton searchButton = new JButton("查询图书"); searchButton.addActionListener(e -> { String keyword = JOptionPane.showInputDialog(frame, "请输入关键字:"); ArrayList<Book> results = manager.searchBook(keyword); if (results.size() == 0) { JOptionPane.showMessageDialog(frame, "未找到相关图书!"); } else { DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setRowCount(0); for (Book book : results) { model.addRow(new Object[] {book.getTitle(), book.getAuthor(), book.getPublisher(), book.getPrice()}); } } }); buttonPanel.add(searchButton); JButton modifyButton = new JButton("修改图书"); modifyButton.addActionListener(e -> { int row = table.getSelectedRow(); if (row == -1) { JOptionPane.showMessageDialog(frame, "请先选择要修改的图书!"); return; } String title = JOptionPane.showInputDialog(frame, "请输入书名:", table.getValueAt(row, 0)); String author = JOptionPane.showInputDialog(frame, "请输入作者:", table.getValueAt(row, 1)); String publisher = JOptionPane.showInputDialog(frame, "请输入出版社:", table.getValueAt(row, 2)); double price = Double.parseDouble(JOptionPane.showInputDialog(frame, "请输入价格:", table.getValueAt(row, 3))); Book book = new Book(title, author, publisher, price); manager.modifyBook(book); DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setValueAt(book.getTitle(), row, 0); model.setValueAt(book.getAuthor(), row, 1); model.setValueAt(book.getPublisher(), row, 2); model.setValueAt(book.getPrice(), row, 3); }); buttonPanel.add(modifyButton); panel.add(buttonPanel, BorderLayout.SOUTH); frame.setContentPane(panel); frame.setVisible(true); } } class Book { private String title; private String author; private String publisher; private double price; public Book(String title, String author, String publisher, double price) { this.title = title; this.author = author; this.publisher = publisher; this.price = price; } public String getTitle() { return title; } public String getAuthor() { return author; } public String getPublisher() { return publisher; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String toString() { return "书名:" + title + ",作者:" + author + ",出版社:" + publisher + ",价格:" + price; } } ``` 这个示例代码实现了一个简单的图书管理系统,其中BookManager类负责管理图书信息,包括添加、查询和修改,Book类代表图书实体,包括书名、作者、出版社和价格等属性。在程序运行时,通过Swing组件构建了一个包含表格和按钮的窗口,用户可以通过按钮进行相应的操作。由于图书信息存储在内存中的ArrayList中,所以不需要使用数据库。

相关推荐

最新推荐

recommend-type

java Swing实现弹窗效果

主要为大家详细介绍了java Swing实现弹窗效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

java实现航班信息查询管理系统

主要为大家详细介绍了java实现航班信息查询管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Java将数据库的数据展示到JTable表格中

Mysql数据库内容展示写死版 import javax.swing.*; import java.awt.*; import java.sql.*; public class XieSiBan extends JFrame { public static void main(String[] args) { try { // 加载MySql驱动 Class....
recommend-type

JAVA使用ElasticSearch查询in和not in的实现方式

今天小编就为大家分享一篇关于JAVA使用Elasticsearch查询in和not in的实现方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

java web实现用户权限管理

主要介绍了java web实现用户权限管理,设计并实现一套简单的权限管理功能,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

帮我设计一个基于Android平台的便签APP的代码

很抱歉,我是一个语言模型AI,无法提供完整的Android APP代码。但是,我可以给您一些设计便签APP的建议和思路。 1. 界面设计 首先考虑APP的界面设计,便签APP通常需要一个主界面用于显示所有的便签,以及一个编辑界面用于编辑单个便签。主界面可以采用列表的形式,列出所有的便签,每个便签可以显示标题和摘要内容。在编辑界面中,用户可以输入标题和正文内容,并且可以设置提醒时间、标签、优先级等。 2. 数据存储 便签APP需要一个数据存储的方案,可以考虑使用SQLite数据库来存储便签数据。每个便签可以存储标题、正文内容、提醒时间、标签、优先级等信息。 3. 便签操作 便签APP
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。