⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modifyanddelbook.java

📁 Java Swing写的图书馆管理系统
💻 JAVA
字号:
package library.iframe;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;

import library.DBConnectOperation.Dbo;
import library.model.Book;
import library.model.BookType;
import library.util.CreateIcon;

public class ModifyAndDelBook extends JInternalFrame {
	private DefaultTableModel model=new DefaultTableModel();
	private JTextField ISBN;
	private JComboBox bookTypeComboBox;
	private JTextField name;
	private JTextField writer;
	private JTextField translator;
	private JTextField publisher;
	private JFormattedTextField pubDate;
	private JTextField price;
	private JButton saveButton;
	private JButton cancelButton;
	private JButton clearButton;
	private JButton delButton;
	private Book book;
	private SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");	//设置日期格式
	private final String columnNames[]={"图书编号","图书类别","图书名称","作者","译者","出版社","出版日期","单价"};
	public ModifyAndDelBook(){
		super();
		setBounds(100, 100, 590, 420);
		setTitle("图书修改或删除");
		setClosable(true);
		setIconifiable(true);
		setResizable(false);
		
		//设置顶部图片
		JLabel labelTop=new JLabel();
		labelTop.setIcon(CreateIcon.add("bookmodify.jpg"));
		getContentPane().add(labelTop,BorderLayout.NORTH);
		((BorderLayout) getContentPane().getLayout()).setVgap(5);
		
		//设置中央面板,用于显示二维表格
		JPanel panelCenter=new JPanel();
		getContentPane().add(panelCenter);
		
		JScrollPane scrollPane=new JScrollPane();
		scrollPane.setPreferredSize(new Dimension(550,120));
		panelCenter.add(scrollPane);
		JTable table=new JTable();
		table.setModel(model);
		model.setColumnIdentifiers(columnNames);
		scrollPane.setViewportView(table);
		
		//设置底部面板,用于显示要修改的图书信息和相应的按钮
		JPanel panelBottom=new JPanel();
		BorderLayout borderLayoutBottom=new BorderLayout();
		borderLayoutBottom.setVgap(5);
		panelBottom.setLayout(borderLayoutBottom);
		getContentPane().add(panelBottom,BorderLayout.SOUTH);
		
		//设置底部上面板,用于显示并修改要修改的图书信息
		JPanel panelBottomUp=new JPanel();
		panelBottom.add(panelBottomUp);
		GridLayout gridLayoutBottomUp=new GridLayout(0,6);
		gridLayoutBottomUp.setVgap(5);
		gridLayoutBottomUp.setHgap(5);
		panelBottomUp.setLayout(gridLayoutBottomUp);
		
		bookTypeComboBox=new JComboBox();
		ArrayList arrayList=Dbo.selectBookCategory();
		for(int i=0;i<arrayList.size();i++){
			BookType bookType=(BookType)arrayList.get(i);
			bookTypeComboBox.addItem(bookType);
		}
		
		JLabel labelISBN=new JLabel();
		labelISBN.setText("图书编号:");
		labelISBN.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelISBN);
		ISBN=new JTextField("请输入13书号",13);
		ISBN.addFocusListener(new FocusAdapter(){
			public void focusLost(FocusEvent e){
				if(Dbo.selectBookISBN(ISBN.getText())==null){
					JOptionPane.showMessageDialog(null,"图书编号输入错误,该图书不存在!");
					ISBN.setText("");
					return;
				}
				else{
					book=Dbo.selectBook(ISBN.getText());
					name.setText(book.getBookname());
					writer.setText(book.getWriter());
					//JComboBox有个数据模ComboBoxModel,这个数据模,你可以看成是一个Collection.
					//当你往里面添加元素的时候,即当调用addItem(Object anObject)的时候,实际上,是往数据模里面添加元素.因此
					//设置下拉列表所选的选项是要设置数据模型的setSelectedItem
					bookTypeComboBox.getModel().setSelectedItem(Dbo.selectSelectedBookCategory(book.getTypeid()));
					try{
						Date tempDate=format.parse(book.getDate());	//转换日期格式
						translator.setText(book.getTranslator());
						publisher.setText(book.getPublisher());
						pubDate.setText(format.format(tempDate));
						price.setText(new Float(book.getPrice()).toString());
					}catch(Exception es){
						es.printStackTrace();
					}
				}
			}
		});
		panelBottomUp.add(ISBN);
		
		JLabel bookTypeInfo=new JLabel();
		bookTypeInfo.setText("图书种类");
		bookTypeInfo.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(bookTypeInfo);
		panelBottomUp.add(bookTypeComboBox);
		
		
		JLabel labelName=new JLabel();
		labelName.setText("图书名称:");
		labelName.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelName);
		name=new JTextField();
		name.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent e){
				if(name.getText().length()>40){
					JOptionPane.showMessageDialog(null, "图书名称不能超过40个字符");
					name.setText("");
				}
			}
		});
		panelBottomUp.add(name);
		
		JLabel labelWriter=new JLabel();
		labelWriter.setText("作者:");
		labelWriter.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelWriter);
		writer=new JTextField();
		writer.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent e){
				if(writer.getText().length()>20){
					JOptionPane.showMessageDialog(null, "作者不能超过20个字符");
					writer.setText("");
				}
			}
		});
		panelBottomUp.add(writer);
		
		JLabel labelTranslator=new JLabel();
		labelTranslator.setText("译者:");
		labelTranslator.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelTranslator);
		translator=new JTextField();
		translator.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent e){
				if(translator.getText().length()>20){
					JOptionPane.showMessageDialog(null, "译者不能超过20个字符");
					translator.setText("");
				}
			}
		});
		panelBottomUp.add(translator);
		
		JLabel labelPublisher=new JLabel();
		labelPublisher.setText("出版社:");
		labelPublisher.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelPublisher);
		
		publisher=new JTextField();
		publisher.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent e){
				if(publisher.getText().length()>20){
					JOptionPane.showMessageDialog(null, "出版社不能超过20个字符");
					publisher.setText("");
				}
			}
		});
		panelBottomUp.add(publisher);
		
		JLabel labelPubDate=new JLabel();
		labelPubDate.setText("出版日期:");
		labelPubDate.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelPubDate);

		pubDate=new JFormattedTextField(format);		//按照指定格式编辑文本框
		pubDate.setValue(new Date());		//设置文本框pubDate用来存储日期.
		panelBottomUp.add(pubDate);
		
		JLabel labelPrice=new JLabel();
		labelPrice.setText("价格");
		labelPrice.setHorizontalAlignment(SwingConstants.RIGHT);
		panelBottomUp.add(labelPrice);
		
		price=new JTextField();
		price.addKeyListener(new KeyAdapter(){
			public void keyReleased(KeyEvent e){
				try{
					Float.parseFloat(price.getText());
				}
				catch(NumberFormatException se){
					JOptionPane.showMessageDialog(null, "只能输入数字!请重新输入");
					price.setText("");
				}
			}
		});
		panelBottomUp.add(price);
		
		//设置底部下面板,用于设置保存和提交按钮等。
		JPanel panelBottomDown=new JPanel();
		FlowLayout flowLayout=new FlowLayout();
		flowLayout.setVgap(10);
		flowLayout.setHgap(20);
		panelBottomDown.setLayout(flowLayout);
		panelBottom.add(panelBottomDown,BorderLayout.SOUTH);
		
		saveButton=new JButton();
		saveButton.setText("保存");
		saveButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(ISBN.getText().length()==0){
					JOptionPane.showMessageDialog(null,"书号不能为空!");
					return;
				}
				if(name.getText().length()==0){
					JOptionPane.showMessageDialog(null,"书名不能为空!");
					return;
				}
				if(publisher.getText().length()==0){
					JOptionPane.showMessageDialog(null, "出版社不能为空!");
					return;
				}
				if(price.getText().length()==0){
					JOptionPane.showMessageDialog(null,"单价不能为空!");
					return;
				}				
				String ISBNTemp=ISBN.getText();
				BookType bookCategory=(BookType)bookTypeComboBox.getSelectedItem();
				int bookIdTemp=bookCategory.getId();	//获取图书类别id;
				String bookNameTemp=name.getText();
				String writerTemp=writer.getText();
				String translatorTemp=translator.getText();
				String publisherTemp=publisher.getText();
				String pubDateTemp=pubDate.getText();
				float priceTemp=Float.parseFloat(price.getText());
				String sql="update tb_bookinfo set ISBN='"+ISBNTemp+"',id="+bookIdTemp+",bookname='"
				+bookNameTemp+"',writer='"+writerTemp+"',translator='"+translatorTemp+"',publisher='"+publisherTemp+"',date='"
				+pubDateTemp+"',price="+priceTemp
				+"where ISBN='"+ISBNTemp+"'";
				int i=Dbo.executeUpdate(sql);
				if(i!=-1){
					JOptionPane.showMessageDialog(null,"修改成功!");
					String str[]=new String[8];
					str[0]=ISBN.getText();
					str[1]=bookTypeComboBox.getSelectedItem().toString();
					str[2]=name.getText();
					str[3]=writer.getText();
					str[4]=translator.getText();
					str[5]=publisher.getText();
					str[6]=pubDate.getText();
					str[7]=price.getText();
					addTableRow(str);
					ISBN.setText("");
					name.setText("");
					writer.setText("");
					translator.setText("");
					publisher.setText("");
					pubDate.setText("");
					price.setText("");
					Dbo.close();
				}
				else{
					JOptionPane.showMessageDialog(null, "修改失败,请检查数据源");
					return;
				}	
			}
		});
		panelBottomDown.add(saveButton);
		
		delButton=new JButton();
		delButton.setText("删除");
		delButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(ISBN.getText().length()==0){
					JOptionPane.showMessageDialog(null,"书号不能为空!");
					return;
				}
				String sql="delete from tb_bookinfo where ISBN='"+ISBN.getText()+"'";
				int i=Dbo.executeUpdate(sql);
				if(i!=-1){
					JOptionPane.showMessageDialog(null,	"删除成功!");
					ISBN.setText("");
					name.setText("");
					writer.setText("");
					translator.setText("");
					publisher.setText("");
					pubDate.setText("");
					price.setText("");
					return;
				}
				else{
					JOptionPane.showMessageDialog(null,"该图书已被借阅,暂时不能删除!");
					return;
				}
			}
		});
		panelBottomDown.add(delButton);
		
		clearButton=new JButton();
		clearButton.setText("清除表中数据");
		clearButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				if(model.getRowCount()!=0){
					while(model.getRowCount()!=0)
							model.removeRow(model.getRowCount()-1);
					ISBN.setText("");
					name.setText("");
					writer.setText("");
					translator.setText("");
					publisher.setText("");
					pubDate.setText("");
					price.setText("");
					return;
				}
				else {
					JOptionPane.showMessageDialog(null, "表格中暂时没有数据!");
					return;
				}
			}
		});
		panelBottomDown.add(clearButton);
		
		cancelButton=new JButton();
		cancelButton.setText("返回");
		cancelButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				dispose();
			}
		});
		panelBottomDown.add(cancelButton);
		setVisible(true);
	}
	public void addTableRow(String str[]){
		model.addRow(str);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -