图书信息管理系统Java

发布于:2023-07-04 ⋅ 阅读:(194) ⋅ 点赞:(0)

要求:

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:

1、系统以菜单方式工作

2、图书信息录入功能--输入

3、图书信息浏览功能--输出

4、图书信息查询功能--算法

查询方式

 按书名查询

 按作者名查询

5、图书信息的删除与修改(可选项)

源代码:

Library.java:

class Library {
    String Login_number;
    String Book_name;
    String Author_name;
    String Classification_name;
    String Publish_unit;
    String Publish_time;
    double Price;
    Library(String login_number,String book_name,String author_name,String classification_name,String publish_unit,String publish_time,double price)
    {
        Login_number = login_number;
        Book_name = book_name;
        Author_name = author_name;
        Classification_name = classification_name;
        Publish_unit = publish_unit;
        Publish_time = publish_time;
        Price = price;
    }
    public String getlogin_number()
    {
        return Login_number;
    }
    public String getBook_name()
    {
        return Book_name;
    }
    public String getAuthor_name()
    {
        return Author_name;
    }
    public String getClassification_name()
    {
        return Classification_name;
    }
    public String getPublish_unit()
    {
        return Publish_unit;
    }
    public String getPublish_time()
    {
        return Publish_time;
    }
    public double getPrice()
    {
        return Price;
    }
}

 

LibraryMenu.java:

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class LibraryMenu extends JFrame{
    //private Frame f = new Frame("图书信息管理系统");
    private MenuBar mb = new MenuBar();
    Menu submit = new Menu("录入");
    Menu scan = new Menu("浏览");
    Menu search = new Menu("查询");
    Menu file = new Menu("文件操作");
    MenuItem BookNameSearch = new MenuItem("书名",new MenuShortcut(KeyEvent.VK_3));
    MenuItem AuthorSearch = new MenuItem("作者名",new MenuShortcut(KeyEvent.VK_4));
    MenuItem input = new MenuItem("录入",new MenuShortcut(KeyEvent.VK_1));
    MenuItem Scan = new MenuItem("浏览",new MenuShortcut(KeyEvent.VK_2));
    MenuItem delete = new MenuItem("删除");
    MenuItem modify = new MenuItem("修改"); 
    JTable table;
           
    //主菜单
    LibraryMenu() throws FileNotFoundException
    {
        
        String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};     
         int row = Read.read().length;
         String [][]S = new String[row][7];
         S = Read.read();
         Object [][]Date = new String[row][7];
         for(int i=0;i<row;i++)
             for(int k=0;k<7;k++){
                 Date[i][k] = S[i][k];                    
         }
        table = new JTable(Date,columntitle);
        submit.addActionListener(new Clicksumbit());//注册,添加监听器
        submit.add(input);
        Scan.addActionListener(new ClickScan());
        scan.add(Scan);
        search.addSeparator();
        BookNameSearch.addActionListener(new ClicksearchBookName());
        AuthorSearch.addActionListener(new ClicksearchAuthorName());
        search.add(BookNameSearch);
        search.add(AuthorSearch);
        delete.addActionListener(new Clickdelete());
        modify.addActionListener(new Clickmodify());
        file.add(delete);
        file.add(modify);
        mb.add(submit);
        mb.add(scan);
        mb.add(search);
        mb.add(file);
        this.add(new JScrollPane (table));
        //panel.add(texts);
        //this.add(panel);
        this.setMenuBar(mb);
    }
    //定义事件监听器,当点击submit时触发
    class Clicksumbit implements ActionListener
    {

        //事件处理器,实现点击submit(录入)时,弹出录入窗口
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand().equals("录入"))//Button 用e.getSorce()==submit
            {
                ClickSumbit clicksumbit = new ClickSumbit();

            }
        }
}
    class ClicksearchBookName implements ActionListener
    {
        JFrame f = new JFrame("按书名查询");
        JButton b1 = new JButton("确认");
        JButton b2 = new JButton("重置");
        JTextField text1 = new JTextField(20);
        JPanel panel1  = new JPanel();
        //JTextArea text  = new JTextArea(3,100);
        //JTable table1;
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand().equals("书名"))
            {
                panel1.add(text1);
                b1.addActionListener(new Clickb1());
                b2.addActionListener(new Clickb2());
                panel1.add(b1);
                panel1.add(b2);
                //panel1.add(text);
                //f.add(new JScrollPane (table1));
                f.add(panel1);
                f.setBounds(250,200,800, 300);
                f.setVisible(true);
            }
        }
        class Clickb1 implements ActionListener
        {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==b1)
                {
                    
                    try {
                        String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};     
                         int row = Read.read().length;
                         String [][]S = new String[row][7];
                         S = Read.read();
                         Object [][]Date = new String[row][7];
                         int number = 0;
                         for(int i=0;i<row;i++)
                         {
                                 if(S[i][1].equals(text1.getText()))
                                 {
                                     for(int k = 0;k<7;k++)
                                         Date[number][k] = S[i][k];
                                         number++;
                                 }
                                                     
                         } 
                            DefaultTableModel model = new DefaultTableModel(Date, columntitle);
                               table.setModel(model);
                       
                    // f.add(new JScrollPane(table1));
                        
                    } catch (FileNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    
                }
            }
            
        }
        class Clickb2 implements ActionListener
        {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==b2)
                {
                    text1.setText(" ");
                }
                
            }
            
        }
        
    }
    class ClicksearchAuthorName implements ActionListener
    {
        JFrame f = new JFrame("按作者名查询");
        JButton b1 = new JButton("确认");
        JButton b2 = new JButton("重置");
        JTextField text1 = new JTextField(20);
        JPanel panel1  = new JPanel();
        //JTextArea text  = new JTextArea(10,100);
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand().equals("作者名"))
            {
                panel1.add(text1);
                b1.addActionListener(new Clickb1());
                b2.addActionListener(new Clickb2());
                panel1.add(b1);
                panel1.add(b2);
                //panel1.add(text);
                f.add(panel1);
                f.setBounds(250,200, 700, 200);
                f.setVisible(true);
            }
        }
        class Clickb1 implements ActionListener
        {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==b1)
                {
                
                    try {
                        String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};     
                         int row = Read.read().length;
                         String [][]S = new String[row][7];
                         int number = 0;
                         S = Read.read();
                         Object [][]Date = new String[row][7];
                         for(int i=0;i<row;i++)
                         {
                                 if(S[i][2].equals(text1.getText()))
                                 { 
                                     for(int k = 0;k<7;k++)
                                     Date[number][k] = S[i][k];
                                     number++;
                                 }
                                                 
                         }
                         DefaultTableModel model = new DefaultTableModel(Date, columntitle);
                           table.setModel(model);
                    } 
                    
                    catch (FileNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    
                }
                
            }
            
        }
        class Clickb2 implements ActionListener
        {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==b2)
                {
                    text1.setText(" ");
                    //text.setText(" ");
                }
                
            }
            
        }
    }
    class ClickScan implements ActionListener
    {
        //LibrianInforManager a = new LibrianInforManager();
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand().equals("浏览"))
            {
                try {
                    String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};     
                     int row = Read.read().length;
                     String [][]S = new String[row][7];
                     S = Read.read();
                     Object [][]Date = new String[row][7];
                     for(int i=0;i<row;i++)
                         for(int k=0;k<7;k++){
                             Date[i][k] = S[i][k];                    
                     }
                    //table = new JTable(Date,columntitle);
                     DefaultTableModel model = new DefaultTableModel(Date, columntitle);
                     table.setModel(model);
                     
                    
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        
        }
    }
    class Clickdelete implements ActionListener
    {
        JFrame frame1 = new JFrame("删除");
        JLabel label = new JLabel("请输入您想删除的登入号");
        JPanel panel = new JPanel();
        JButton button = new JButton("确定");
        JButton button1 = new JButton("取消");
        JTextField text1 = new JTextField(20);
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand()=="删除")
            {
                panel.add(label);
                panel.add(text1);
                button.addActionListener(new Clickbutton());
                button1.addActionListener(new Clickbutton1());
                panel.add(button);
                panel.add(button1);
                frame1.add(panel);
                frame1.setBounds(200, 150, 400, 200);
                frame1.setVisible(true);
            }
            
        }
        class Clickbutton implements ActionListener
        {
            
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==button)
                {
                    try {     
                         int row = Read.read().length;
                         String [][]S = new String[row][7];   
                         S = Read.read();
                         for(int i=0;i<row;i++)
                         {
                                 int k = i;
                                 if(S[k][0].equals(text1.getText()))
                                 {
                                     for(int n = k;n<row;n++)
                                     {
                                         for(int j=0;j<7;j++)
                                         {
                                             if(n==row-1)
                                                 break;
                                             S[n][j]=S[n+1][j];
                                             
                                         }
                                     }
                                     row --;
                                 }
                         }
                        File file = new File("Library.txt");
                            try {
                                FileWriter out = new FileWriter(file);
                                for(int i=0;i<row;i++)
                                {
                                    for(int j=0;j<7;j++)
                                    {
                                        out.write(S[i][j]+" ");
                                        
                                    }
                                    out.write("\r\n");
                                    
                                }
                                out.flush();
                                out.close();
                            } catch (IOException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                            }
                        }
                    
                    catch (FileNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
                
            }
            
        }
        class Clickbutton1 implements ActionListener
        {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==button1)
                {
                    frame1.setVisible(false);
                }
            }
            
        }
    }
    class Clickmodify implements ActionListener
    {

        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand()=="修改")    
            {
                Modify modify = new Modify();
            }
        }
        
    }
}

Write.java:

import java.awt.Frame;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Write {
	public static void write(Library a) throws IOException {
		File file = new File("Library.txt"); 
		FileWriter out = new FileWriter(file,true); //可追加数据
		out.write(a.getlogin_number()+" ");
		out.write(a.getBook_name()+" ");
		out.write(a.getAuthor_name()+" ");
		out.write(a.getClassification_name()+" ");
		out.write(a.getPublish_unit()+" ");
		out.write(a.getPublish_time()+" ");
		out.write(String.valueOf(a.getPrice())+" ");
		out.write("\r\n");
		out.flush();
		out.close();
		
	}

Read.java:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Read {
	public static String[][] read() throws FileNotFoundException{
		File file=new File("Library.txt");		
	    Scanner input = new Scanner(file);
	    String []A = new String[10000];
	    int k=0;
	    while(input.hasNext()){
	    	String str = String.valueOf(input.next());
	    	A[k] = str;
	    	k++;
	    }
	    int row = k/7;
	    int col = 7;
	    int t = 0;
	    String [][]B = new String[row][col];
	    for(int i=0;i<row;i++)
	    	for(int r = 0;r<col;r++)    
	    		{
	    		B[i][r] = A[t];
	    		t++;	    	
	    		}	  	    	
	    return B;
	}

}

ClickSubmit.java:

import java.awt.Button;
import java.awt.Choice;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ClickSumbit {
	private JFrame frame = new JFrame("录入");
	private JLabel login_number = new JLabel("    登入号: ");
	private TextField input_number1 = new TextField(10);
	private JLabel book_name = new JLabel("    书名: ");
	private TextField input_number2 = new TextField(10);
	private JLabel Author_name = new JLabel("    作者名: ");
	private TextField input_number3 = new TextField(10);
	private JLabel Classification_name = new JLabel("    分类号: ");
	private Choice input_number4 = new Choice();
	private JLabel Publish_unit = new JLabel("    出版单位: ");
	private TextField input_number5 = new TextField(10);
	private JLabel Publish_time = new JLabel("    出版时间: ");
	private TextField input_number6 = new TextField(10);
	private JLabel Price = new JLabel("    价格: ");
	private TextField input_number = new TextField(10);
	private JLabel backnapse = new JLabel("     ");
	private Button confirm = new Button("确认");
	private Button reset = new Button("重置");
	Box box1 = Box.createHorizontalBox();
	Box box2 = Box.createHorizontalBox();
	Box box3 = Box.createHorizontalBox();
	Box box4 = Box.createHorizontalBox();
	Box box5 = Box.createHorizontalBox();
	Box box6 = Box.createHorizontalBox();
	Box box7 = Box.createHorizontalBox();
	Box box8 = Box.createHorizontalBox();
	Box boxV = Box.createVerticalBox();	
	String [] a = {"A(马克思主义等)","B(哲学,宗教)","C(社会科学总论)","D(政治)","E(军事)","F(经济)"
			,"G(文化,科学,教育)","H(语言)","I(文学)","J(艺术)","K(历史)","Z(综合性问题)"};
	ClickSumbit() {
		for(int i=0;i<a.length;i++)
		{
			input_number4.add(a[i]);
		}
		box1.add(login_number);
		box1.add(Box.createHorizontalStrut(47));
		box1.add(input_number1);
		box1.add(Box.createHorizontalStrut(100));
		box2.add(book_name);
		box2.add(Box.createHorizontalStrut(60));
		box2.add(input_number2);
		box2.add(Box.createHorizontalStrut(100));
		box3.add(Author_name);
		box3.add(Box.createHorizontalStrut(47));
		box3.add(input_number3);
		box3.add(Box.createHorizontalStrut(100));
		box4.add(Classification_name);
		box4.add(Box.createHorizontalStrut(47));
		box4.add(input_number4);
		box4.add(Box.createHorizontalStrut(100));
		box5.add(Publish_unit);
		box5.add(Box.createHorizontalStrut(34));
		box5.add(input_number5);
		box5.add(Box.createHorizontalStrut(100));
		box6.add(Publish_time);
		box6.add(Box.createHorizontalStrut(34));
		box6.add(input_number6);
		box6.add(Box.createHorizontalStrut(100));
		box7.add(Price);
		box7.add(Box.createHorizontalStrut(60));
		box7.add(input_number);
		box7.add(Box.createHorizontalStrut(100));
		confirm.addActionListener(new Clickcomfirm());
		box8.add(backnapse);
		box8.add(Box.createHorizontalStrut(60));
		box8.add(confirm);
		box8.add(Box.createHorizontalStrut(100));
		reset.addActionListener(new Clickreset());
		box8.add(reset);
		box8.add(Box.createHorizontalStrut(100));
		boxV.add(box1);
		boxV.add(box2);
		boxV.add(box3);
		boxV.add(box4);
		boxV.add(box5);
		boxV.add(box6);
		boxV.add(box7);
		boxV.add(box8);
		frame.add(boxV);
		frame.setBounds(120, 100, 400, 300);
			//frame.pack();
		frame.setVisible(true);
			
		}
	class Clickcomfirm implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			if(e.getSource()==confirm)
			{
				Library library = new Library(input_number1.getText(), input_number2.getText(), input_number3.getText(), input_number4.getSelectedItem(), input_number5.getText(), input_number6.getText(), Double.parseDouble(input_number.getText()));
				try {
					Write.write(library);
					input_number1.setText(" ");
					input_number2.setText(" ");
					input_number3.setText(" ");
					input_number5.setText(" ");
					input_number6.setText(" ");
					input_number.setText(" ");
					System.out.println("存入成功");
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}			
		}
	}
}
	class Clickreset implements ActionListener
	{
		public void actionPerformed(ActionEvent e) {
			if(e.getSource()==reset)
			{
				input_number1.setText(" ");
				input_number2.setText(" ");
				input_number3.setText(" ");
				input_number5.setText(" ");
				input_number6.setText(" ");
				input_number.setText(" ");
			}
			
		}
		
	}
}

Modify.iava:

import java.awt.Button;
import java.awt.Choice;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Modify {
	private JFrame frame = new JFrame("修改");
	private JLabel label = new JLabel("请输入你想要的修改其信息的登入号:");
	private TextField modify = new TextField(10);
	private JLabel login_number = new JLabel("    新登入号: ");
	private TextField input_number1 = new TextField(10);
	private JLabel book_name = new JLabel("    新书名: ");
	private TextField input_number2 = new TextField(10);
	private JLabel Author_name = new JLabel("    新作者名: ");
	private TextField input_number3 = new TextField(10);
	private JLabel Classification_name = new JLabel("    新分类号: ");
	private Choice input_number4 = new Choice();
	private JLabel Publish_unit = new JLabel("    新出版单位: ");
	private TextField input_number5 = new TextField(10);
	private JLabel Publish_time = new JLabel("    新出版时间: ");
	private TextField input_number6 = new TextField(10);
	private JLabel Price = new JLabel("    新价格: ");
	private TextField input_number = new TextField(10);
	private Button confirm = new Button("确认");
	private Button reset = new Button("重置");
	private JLabel backnapse = new JLabel("     ");
	Box box1 = Box.createHorizontalBox();
	Box box2 = Box.createHorizontalBox();
	Box box3 = Box.createHorizontalBox();
	Box box4 = Box.createHorizontalBox();
	Box box5 = Box.createHorizontalBox();
	Box box6 = Box.createHorizontalBox();
	Box box7 = Box.createHorizontalBox();
	Box box8 = Box.createHorizontalBox();
	Box box9 = Box.createHorizontalBox();
	Box boxV = Box.createVerticalBox();	
	Modify() {
		String [] a = {"A(马克思主义等)","B(哲学,宗教)","C(社会科学总论)","D(政治)","E(军事)","F(经济)"
				,"G(文化,科学,教育)","H(语言)","I(文学)","J(艺术)","K(历史)","Z(综合性问题)"};
		for(int i=0;i<a.length;i++)
		{
			input_number4.add(a[i]);
		}
		box9.add(label);
		box9.add(Box.createHorizontalStrut(30));
		box9.add(modify);
		box9.add(Box.createHorizontalStrut(100));
		box1.add(login_number);
		box1.add(Box.createHorizontalStrut(47));
		box1.add(input_number1);
		box1.add(Box.createHorizontalStrut(100));
		box2.add(book_name);
		box2.add(Box.createHorizontalStrut(60));
		box2.add(input_number2);
		box2.add(Box.createHorizontalStrut(100));
		box3.add(Author_name);
		box3.add(Box.createHorizontalStrut(47));
		box3.add(input_number3);
		box3.add(Box.createHorizontalStrut(100));
		box4.add(Classification_name);
		box4.add(Box.createHorizontalStrut(47));
		box4.add(input_number4);
		box4.add(Box.createHorizontalStrut(100));
		box5.add(Publish_unit);
		box5.add(Box.createHorizontalStrut(34));
		box5.add(input_number5);
		box5.add(Box.createHorizontalStrut(100));
		box6.add(Publish_time);
		box6.add(Box.createHorizontalStrut(34));
		box6.add(input_number6);
		box6.add(Box.createHorizontalStrut(100));
		box7.add(Price);
		box7.add(Box.createHorizontalStrut(60));
		box7.add(input_number);
		box7.add(Box.createHorizontalStrut(100));
		confirm.addActionListener(new Clickcomfirm());
		box8.add(backnapse);
		box8.add(Box.createHorizontalStrut(60));
		box8.add(confirm);
		box8.add(Box.createHorizontalStrut(100));
		reset.addActionListener(new Clickreset());
		box8.add(reset);
		box8.add(Box.createHorizontalStrut(100));
		boxV.add(box9);
		boxV.add(box1);
		boxV.add(box2);
		boxV.add(box3);
		boxV.add(box4);
		boxV.add(box5);
		boxV.add(box6);
		boxV.add(box7);
		boxV.add(box8);
		frame.add(boxV);
		frame.setBounds(120, 100, 400, 340);
			//frame.pack();
		frame.setVisible(true);
		}
	class Clickcomfirm implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			if(e.getSource()==confirm)
			{

				try {	 
				     int row = Read.read().length;
				     String [][]S = new String[row][7];   
				     S = Read.read();
				     for(int i=0;i<row;i++)
				     { 	
				     		if(S[i][0].equals(modify.getText()))
				     		{
				     		S[i][0] = input_number1.getText();
				     		S[i][1] = input_number2.getText();
				     		S[i][2] = input_number3.getText();
				     		S[i][3] = input_number4.getSelectedItem();
				     		S[i][4] = input_number5.getText();
				     		S[i][5] = input_number6.getText();
				     		S[i][6] = input_number.getText();
				     		}
				     }
				    File file = new File("Library.txt");
				    	try {
							FileWriter out = new FileWriter(file);
							for(int i=0;i<row;i++)
							{
								for(int j=0;j<7;j++)
								{
									out.write(S[i][j]+" ");
									
								}
								out.write("\r\n");
								
							}
							out.flush();
							out.close();
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
				    }
				
				catch (FileNotFoundException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				input_number1.setText(" ");
				input_number2.setText(" ");
				input_number3.setText(" ");
				input_number5.setText(" ");
				input_number6.setText(" ");
				input_number.setText(" ");
		}
	}
}
	class Clickreset implements ActionListener
	{
		public void actionPerformed(ActionEvent e) {
			if(e.getSource()==reset)
			{
				input_number1.setText(" ");
				input_number2.setText(" ");
				input_number3.setText(" ");
				input_number5.setText(" ");
				input_number6.setText(" ");
				input_number.setText(" ");
			}
			
		}
		
	}

}

LibrianInforManager.java

import java.io.FileNotFoundException;

public class LibrianInforManager {

	public static void main(String[] args) throws FileNotFoundException {
		LibraryMenu menu = new LibraryMenu();
		menu.setTitle("图书管理系统");
		menu.setBounds(200, 150, 800, 400);
		menu.setDefaultCloseOperation(1);
		menu.setVisible(true);
	}

}

效果截图:


 


网站公告

今日签到

点亮在社区的每一天
去签到