JAVA 图书馆的书籍管理程序

请设计并实现一个图书馆的书籍管理程序,要求提供方便的图形界面实现图书信息的录入/修改/删除功能。图书的信息至少包括:图书的编号、书名、类型、作者、价格、出版目期、出版社、购入日期、借阅人等。要求可以浏览所有的图书,并能按类型、作者、出版社、或借阅人进行搜索,能按价格或出版日期进行排序。

package src;

import java.io.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;

class Book{
	public String id=null;
	public String name=null;
	public String type=null;
	public String author=null;
	public String price=null;
	public String pressDate=null;
	public String press=null;//出版社
	public String buyDate=null;
	public String reader=null;
}

/**
 * @author Lenovo
 *
 */
public class Library extends JFrame{

	private ArrayList<Book> list=new ArrayList<Book>();
	private ArrayList<Book> searchList=new ArrayList<Book>();
	
	private JPanel p1=new JPanel();
	private JButton addB=new JButton("录入");
	private JButton modifyB=new JButton("修改");
	private JButton delB=new JButton("删除");
	private JButton lookB=new JButton("查看");
	private JButton searchTypeB=new JButton("搜索-按类型");
	private JButton searchAuthorB=new JButton("搜索-按作者");
	private JButton searchPressB=new JButton("搜索-按出版社");
	private JButton searchReaderB=new JButton("搜索-按借书人");
	private JButton sortDateB=new JButton("排序-按出版日期");
	private JButton sortPriceB=new JButton("排序-按价格");
	
	private JPanel p2=new JPanel();
	private JLabel idL=new JLabel("编号");
	private JTextField idT=new JTextField("",3);
	private JLabel nameL=new JLabel("书名");
	private JTextField nameT=new JTextField("",3);
	private JLabel typeL=new JLabel("类型");
	private JTextField typeT=new JTextField("",3);
	private JLabel authorL=new JLabel("作者");
	private JTextField authorT=new JTextField("",3);
	private JLabel priceL=new JLabel("价格");
	private JTextField priceT=new JTextField("",3);
	private JLabel pressDateL=new JLabel("出版日期");
	private JTextField pressDateT=new JTextField("",3);
	private JLabel pressL=new JLabel("出版社");
	private JTextField pressT=new JTextField("",3);
	private JLabel buyDateL=new JLabel("购买日期");
	private JTextField buyDateT=new JTextField("",3);
	private JLabel readerL=new JLabel("借阅人");
	private JTextField readerT=new JTextField("",3);
	
	private JTextArea info=new JTextArea();
	
	/**
	 * 构造方法 实现界面 并对每个按钮添加事件监听器
	 */
	public Library(){
		Container c=getContentPane();
		
		p1.add(addB);
		p1.add(modifyB);
		p1.add(delB);
		p1.add(lookB);
		p1.add(searchTypeB);
		p1.add(searchAuthorB);
		p1.add(searchPressB);
		p1.add(searchReaderB);
		p1.add(sortPriceB);
		p1.add(sortDateB);
		
		p2.add(idL);
		p2.add(idT);
		p2.add(nameL);
		p2.add(nameT);
		p2.add(typeL);
		p2.add(typeT);
		p2.add(authorL);
		p2.add(authorT);
		p2.add(priceL);
		p2.add(priceT);
		p2.add(pressDateL);
		p2.add(pressDateT);
		p2.add(pressL);
		p2.add(pressT);
		p2.add(buyDateL);
		p2.add(buyDateT);
		p2.add(readerL);
		p2.add(readerT);
		
		c.add(p1, BorderLayout.NORTH);
		c.add(p2, BorderLayout.SOUTH);
		c.add(new JScrollPane(info), BorderLayout.CENTER);
		
		addB.addActionListener(new addHandler());
		modifyB.addActionListener(new modifyHandler());
		delB.addActionListener(new modifyHandler());
		lookB.addActionListener(new lookHandler());
		searchTypeB.addActionListener(new searchTypeHandler());
		searchAuthorB.addActionListener(new searchAuthorHandler());
		searchPressB.addActionListener(new searchPressHandler());
		searchReaderB.addActionListener(new searchReaderHandler());
		sortPriceB.addActionListener(new sortPriceHandler());
		sortDateB.addActionListener(new sortDateHandler());
	}
	
	/**
	 * @param l
	 * list 更新显示
	 */
	private void refresh(ArrayList<Book> l){
		StringBuffer stringBuffer=new StringBuffer("");
		stringBuffer.append("编号" + "\t" + "书名" + "\t" + "类型" + "\t" + "作者" + "\t" + "价格" + "\t" + "出版日期" + "\t" + "出版社" + "\t"
				+ "购买日期" + "\t" + "借阅人" + "\n");
		for(int i=0;i<l.size();i++){
			stringBuffer.append(list.get(i).id + "\t" + list.get(i).name + "\t" + list.get(i).type + "\t" + list.get(i).author
					+ "\t" + list.get(i).price + "\t" + list.get(i).pressDate + "\t" + list.get(i).press + "\t"
					+ list.get(i).buyDate + "\t" + list.get(i).reader + "\n");
		}
		info.setText(stringBuffer.toString());
	}
	
	/**
	 * @author Lenovo
	 * 实现按钮的功能
	 */
	class addHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			Book book=new Book();
			book.id=idT.getText();
			book.name=nameT.getText();
			book.type = typeT.getText();
			book.author = authorT.getText();
			book.price = priceT.getText();
			book.pressDate = pressDateT.getText();
			book.press = pressT.getText();
			book.buyDate = buyDateT.getText();
			book.reader = readerT.getText();
			
			list.add(book);
			refresh(list);
		}
	}
	
	/**
	 * @author Lenovo
	 * 实现修改按钮的功能操作
	 */
	class modifyHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			int index=-1;
			for(int i=0;i<list.size();i++){
				if(list.get(i).id.equals(idT.getText())){
					index=i;
					break;
				}
			}
			if(index==-1)
				JOptionPane.showMessageDialog(null, "此id不存在");
			else{
				list.get(index).id=idT.getText();
				list.get(index).name=nameT.getText();
				list.get(index).type=typeT.getText();
				list.get(index).author=authorT.getText();
				list.get(index).price=priceT.getText();
				list.get(index).pressDate=pressDateT.getText();
				list.get(index).press=pressT.getText();
				list.get(index).buyDate=buyDateT.getText();
				list.get(index).reader=readerT.getText();
				
				refresh(list);
			}
		}
	}
	
	/**
	 * @author Lenovo
	 * 实现删除按钮的功能操作
	 */
	class delHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			int index=-1;
			for(int i=0;i<list.size();i++){
				if(list.get(i).id.equals(idT.getText())){
					index=i;
					break;
				}
			}
			if(index==-1)
				JOptionPane.showMessageDialog(null, "此id不存在");
			else{
				list.remove(index);
				refresh(list);
			}
		}
	}
	
	
	/**
	 * @author Lenovo
	 * 实现查看按钮操作
	 */
	class lookHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			refresh(list);
		}
		
	}
	
	/**
	 * @author Lenovo
	 * 实现按类型搜索的按钮功能
	 * 
	 */
	class searchTypeHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			searchList.clear();
			for(int i=0;i<list.size();i++){
				if(list.get(i).type.equals(typeT.getText())){
					searchList.add(list.get(i));
				}
			}
			refresh(searchList);
		}
		
	}
	
	/**
	 * @author Lenovo
	 * 实现按作者搜索的功能
	 */
	class searchAuthorHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			searchList.clear();
			for(int i=0;i<list.size();i++){
				if(list.get(i).author.equals(authorT.getText())){
					searchList.add(list.get(i));
				}
			}
			refresh(searchList);
		}
		
	}
	
	/**
	 * @author Lenovo
	 * 实现按出版社搜索的功能
	 */
	class searchPressHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			searchList.clear();
			for(int i=0;i<list.size();i++){
				if(list.get(i).press.equals(pressT.getText()))
					searchList.add(list.get(i));
			}
			refresh(searchList);
		}
		
	}
	
	/**
	 * @author Lenovo
	 * 实现按借阅人搜索的功能
	 */
	class searchReaderHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			searchList.clear();
			for(int i=0;i<list.size();i++){
				if(list.get(i).reader.equals(readerT.getText()))
					searchList.add(list.get(i));
			}
			refresh(searchList);
		}
		
	}
	
	/**
	 * @author Lenovo
	 * 按价格比较的比较器
	 */
	class priceComp implements Comparator<Book>{

		@Override
		public int compare(Book o1, Book o2) {
			// TODO Auto-generated method stub
			return o1.price.compareTo(o2.price);
		}
	}
	
	/**
	 * @author Lenovo
	 * 实现按价格排序的功能
	 */
	class sortPriceHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			Comparator<Book> comparator=new priceComp();
			Collections.sort(list,comparator);
			refresh(list);
		}
		
	}
	
	
	/**
	 * @author Lenovo
	 * 实现按购买日期比较的比较器
	 */
	class dateComp implements Comparator<Book>{

		@Override
		public int compare(Book o1, Book o2) {
			// TODO Auto-generated method stub
			return o1.buyDate.compareTo(o2.buyDate);
		}
		
	}
	
	class sortDateHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			Comparator<Book> comparator=new dateComp();
			Collections.sort(list,comparator);
			refresh(list);
		}
		
	}
	
	public static void main(String[] args){
		Library library=new Library();
		library.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		library.setSize(800,500);
		library.setVisible(true);
	}
	
}


效果图:






     

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值