JAVA 图书馆的书籍管理程序

    xiaoxiao2021-03-25  15

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

    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); } }

    效果图:

         

    转载请注明原文地址: https://ju.6miu.com/read-300381.html

    最新回复(0)