首页 > 文章列表 > 如何使用java实现简单的图书借阅系统

如何使用java实现简单的图书借阅系统

java
260 2023-04-25

如何使用java实现简单的图书借阅系统

具体内容如下

直接看代码:

package ttt;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;



import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.border.TitledBorder;

import javax.swing.table.DefaultTableModel;

public class Labmsys extends JFrame{

        JTable booktable=null;

        static DefaultTableModel bookmodel=null;

        JTable borrowtable=null;

        static DefaultTableModel bmodel=null;

        JPanel j1=new JPanel();

        JPanel j2=new JPanel();

        JPanel j3=new JPanel();

        JButton button1=new JButton("借书");

        JButton button2=new JButton("还书");



    public Labmsys()

    {

        this.setLayout(new BorderLayout());

        this.add(j1,BorderLayout.WEST);

        this.add(j2,BorderLayout.EAST);

        this.add(j3,BorderLayout.CENTER);

        j1.setBorder(new TitledBorder("图书借书表"));

        j2.setBorder(new TitledBorder("图书库存表"));

        this.booktable=bookIn();

        this.borrowtable=borrowIn();

        JScrollPane  jsp1=new JScrollPane(borrowtable);

        JScrollPane  jsp2=new JScrollPane(booktable);

        j1.add(jsp1);

        j2.add(jsp2);

        j3.add(button1);

        j3.add(button2);

        //添加借书监听器

        button1.addActionListener(new ActionListener()

        {



            @Override

            public void actionPerformed(ActionEvent e) {

                // TODO Auto-generated method stub

                int rowNum=booktable.getSelectedRow();

                System.out.println(rowNum);

                if(rowNum>=0)

                {

                    String isbn=booktable.getValueAt(rowNum, 0).toString();

                    System.out.println(isbn);

                    int count=Integer.parseInt((String) booktable.getValueAt(rowNum, 2));

                    String s=JOptionPane.showInputDialog("请输入学号");

                    if(count<=0)

                        JOptionPane.showMessageDialog(null,"图书库存不足");

                    else if (null==s)

                        JOptionPane.showMessageDialog(null,"请输入学号");

                    else{

                        if(borrowBook(isbn,s))

                        {

                            System.out.println("yes");

                            JOptionPane.showMessageDialog(null,"successful!");

                        }

                        else JOptionPane.showMessageDialog(null,"Wrong!");

                    }

                }else JOptionPane.showMessageDialog(null,"Choose book!");



            }

      });

        //添加还书监听器

        button2.addActionListener(new ActionListener()

        {



            @Override

            public void actionPerformed(ActionEvent e) {

                // TODO Auto-generated method stub

                int rowNum=borrowtable.getSelectedRow();

                System.out.println(rowNum);

                if(rowNum>=0)

                {

                    String isbn=borrowtable.getValueAt(rowNum, 2).toString();

                    String tablexh = borrowtable.getValueAt(rowNum, 1).toString();

                    System.out.println(isbn);

                    String xh=JOptionPane.showInputDialog("请输入学号");

                    if (!xh.equals(tablexh))

                        JOptionPane.showMessageDialog(null,"学号不正确");

                    else{

                        if(returnBook(isbn))

                        {

                            JOptionPane.showMessageDialog(null,"successful!");

                        }

                        else JOptionPane.showMessageDialog(null,"Wrong!");

                    }

                }else JOptionPane.showMessageDialog(null,"Choose book!");

                }

            });



    }



    public boolean borrowBook(String isbn, String s) {

                int xh = Integer.parseInt(s);

                int isbn2 =Integer.parseInt(isbn);

                System.out.println("学号:"+xh);

        boolean b=false;

        String driver="com.mysql.jdbc.Driver";

        String url="jdbc:mysql://localhost:3306/test";

        String user="root";

        String password="123456";



        Connection conn=null;

        Statement stmt=null;



        try {  

               Class.forName(driver); 

               conn = DriverManager.getConnection(url, user, password);  

               stmt = conn.createStatement();  



               System.out.println("isbn:"+isbn);

               conn.setAutoCommit(false);

               String sql1 = "update book set count=count-1 where isbn='"+isbn2+"'";

               String sql2 = "insert into borrow(xh,isbn) values('"+xh+"','"+isbn2+"')";

               stmt.executeUpdate(sql1);



               stmt.executeUpdate(sql2);

               System.out.println("isbn2:"+isbn2);

               //stmt = (PreparedStatement) conn.prepareStatement("update book set count=count-1 where isbn=?");



               conn.commit();

               stmt.close();

               conn.close();

               b=true;

        }

        catch (Exception e) {  

               try{

                   conn.rollback();

               }catch(Exception e1){e1.printStackTrace();}

              }  

              return b;

            }



    private boolean returnBook(String isbn) {

        int isbn2 =Integer.parseInt(isbn);



           boolean b=false;

           String driver="com.mysql.jdbc.Driver";

           String url="jdbc:mysql://localhost:3306/test";

           String user="root";

           String password="123456";





           Connection conn=null;

           Statement stmt=null;





           try {  

             Class.forName(driver); 

             conn = DriverManager.getConnection(url, user, password);  

             stmt = conn.createStatement();  

             conn.setAutoCommit(false);

             stmt.executeUpdate("delete from borrow where isbn='"+isbn2+"'");

             stmt.executeUpdate("update book set count=count+1 where isbn='"+isbn2+"'");

             System.out.println("还书isbn2:"+isbn2);

             conn.commit();

             stmt.close();

             conn.close();

             b=true;

             }

           catch (Exception e) {  

               try{

                   conn.rollback();

                   }catch(Exception e1){e1.printStackTrace();}}  

           return b;

    }



    private JTable borrowIn() {

        // TODO Auto-generated method stub

        String []head={"id","xh","ISBN"};

        String [][]data=null;

        bookmodel=new DefaultTableModel(data,head);

        JTable t=new JTable(bookmodel);

        String driver="com.mysql.jdbc.Driver";

        String url="jdbc:mysql://localhost:3306/test";

        String user="root";

        String password="123456";



        Connection conn=null;

        Statement stmt=null;

        ResultSet rs=null;

        try {  

               Class.forName(driver); 



               conn = DriverManager.getConnection(url, user, password);  

               stmt = conn.createStatement();  

               rs=stmt.executeQuery("select * from borrow"); 

               String[] row=new String[3];

               while(rs.next()){

               row[0]=rs.getString(1);

               row[1]=rs.getString(2);

               row[2]=rs.getString(3);

               bookmodel.addRow(row);

               bookmodel.fireTableDataChanged(); }

               rs.close();

               stmt.close();

               conn.close();}



        catch (Exception e) {  

               // TODO Auto-generated catch block     

               System.out.println(e);  

              }  

              return t;

    }





    public  JTable bookIn() {

        // TODO Auto-generated method stub

        String []head={"ISBN","name","count"};

        String [][]data=null;

        bmodel=new DefaultTableModel(data,head);

        JTable t=new JTable(bmodel);

        String driver="com.mysql.jdbc.Driver";

        String url="jdbc:mysql://localhost:3306/test";

        String user="root";

        String password="123456";



        Connection conn=null;

        Statement stmt=null;

        ResultSet rs=null;

        try {  

               Class.forName(driver); 



               conn = DriverManager.getConnection(url, user, password);  

               stmt = conn.createStatement();  

               rs=stmt.executeQuery("select * from book"); 

               String[] row=new String[3];

               while(rs.next()){

               row[0]=rs.getString(1);

               row[1]=rs.getString(2);

               row[2]=rs.getString(3);

               bmodel.addRow(row);

               bmodel.fireTableDataChanged(); }

               rs.close();

               stmt.close();

               conn.close();}



        catch (Exception e) {  

               // TODO Auto-generated catch block     

               System.out.println(e);  

              }

        return t;  

    }





    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Labmsys n=new Labmsys(); 

        n.setTitle("图书借阅管理系统");

        n.setSize(1000,500);

        n.setLocationRelativeTo(null);

        n.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        n.setVisible(true);

    }



}

数据库:

--

-- Table structure for table `book`

--



DROP TABLE IF EXISTS `book`;

CREATE TABLE `book` (

  `ISBN` int(11) NOT NULL,

  `name` varchar(50) NOT NULL,

  `count` int(11) default NULL,

  PRIMARY KEY  (`ISBN`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;



--

-- Dumping data for table `book`

--



LOCK TABLES `book` WRITE;

/*!40000 ALTER TABLE `book` DISABLE KEYS */;

INSERT INTO `book` VALUES (662530,'c#',9),(662545,'python',12),(663520,'c++',6),(663548,'java',8);

/*!40000 ALTER TABLE `book` ENABLE KEYS */;

UNLOCK TABLES;



--

-- Table structure for table `borrow`

--



DROP TABLE IF EXISTS `borrow`;

CREATE TABLE `borrow` (

  `id` int(11) NOT NULL auto_increment,

  `xh` int(11) NOT NULL,

  `isbn` int(11) NOT NULL,

  PRIMARY KEY  (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;



--

-- Dumping data for table `borrow`

--



LOCK TABLES `borrow` WRITE;

/*!40000 ALTER TABLE `borrow` DISABLE KEYS */;

INSERT INTO `borrow` VALUES (1006,123456,662545),(1007,456789,663520),(1009,789456,662530),(1010,741852,662530);

运行结果显示: