精华内容
下载资源
问答
  • JAVA+SSM+图书管理系统

    2020-04-26 21:29:35
    好看的图书管理系统,好看的图书管理系统,基于Spring+SpringMVC+Mybatis框架,适合毕业设计和课程设计使用。另外还有人脸登录图书管理系统。图片地址:https://blog.csdn.net/u014452148/article/details/105777475
  • 这是基于Eclipse平台 图书管理系统,可添加书目读者信息,包含了数据库。
  • 图书管理系统 java

    2019-01-31 15:00:01
    图书管理系统以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底地解脱出来,提高效率,减轻工作人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上,从而使...
  • java图书管理系统附源代码,用来电子管理图书,代码十分简洁,对于初学java等有需求的同学,很有借鉴意义。
  • 课程设计:简易图书管理系统 实现方式:JAVA 主题:图形化和非图形化两个版本,均在Eclipse Java Photon上测试通过 内容:包含Java文件,类文件,开发文档,报告文档,测试样例,方法说明表
  • 手把手实现Java图书管理系统(附源码)

    万次阅读 多人点赞 2020-02-03 11:43:43
    本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。 详细介绍了图书管理系统的实现,包括: 1.环境搭建 2.系统功能 3.技术实现 4....

    基于SSM的图书管理系统的设计与实现

    一、系统简介

    本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群

    详细介绍了图书管理系统的实现,包括:
    1.环境搭建
    2.系统功能
    3.技术实现
    4.项目运行
    5.功能演示
    6.系统扩展

    以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。

    二、技术实现

    1.后台框架:Spring、SpringMVC、MyBatis
    2.UI界面:BootStrap
    3.数据库:MySQL

    运行环境:

    • JDK 8
    • Eclipse
    • Tomcat 7.0
    • MySQL 5.5

    三、系统功能

    系统共分为三种用户:
    1.普通用户
    书籍查询、书籍借阅、书籍归还、书籍预定
    2.管理员
    借书处理、归还处理、预定处理
    3.系统管理员
    用户管理、书籍管理、类别管理

    四、运行效果

    系统登陆界面:
    在这里插入图片描述
    普通用户:
    在这里插入图片描述
    管理员:
    在这里插入图片描述
    超级管理员:
    在这里插入图片描述

    课程链接地址: https://edu.csdn.net/course/detail/27513
    手把手实现Java图书管理系统(附源码)

    在完成毕业设计或学习过程中,如有任何问题都可以加QQ群 470098064,互相交流。

    展开全文
  • 图书管理系统+Java源代码+SQL Server数据库文件 直接导包到开发工具里,使用SQL Server数据库
  • 图书资料管理信息系统,带源代码、数据库sql文件、课设报告,具备如下基本功能: 1、 系统管理功能有:角色管理、用户管理、修改密码。主要实现系统的安全管理,不同的操作者有不同的权限,可以执行不同的操作。普通...
  • Java图书管理系统

    万次阅读 多人点赞 2018-05-31 07:58:44
    学习要学以致用,于是写了一个粗糙的java图书管理系统,实现了图书的增删改查的基本操作,在写的过程中遇到了很多问题,不过也都通过暴力解决了。大晚上的脑仁不够用了, 直接上图吧。主界面:增加图书:查找图书:...

    学习要学以致用,于是写了一个粗糙的java图书管理系统,实现了图书的增删改查的基本操作,在写的过程中遇到了很多问题,不过也都通过暴力解决了。大晚上的脑仁不够用了, 直接上图吧。

    主界面:

    增加图书:


    查找图书:


    修改图书:


    删除图书:


    源代码:

    package success;
    import java.util.Scanner;
    
    public class Library {
        Scanner input=new Scanner(System.in);
        private int BookId;//书的ID
        private String BookName;//书的名字
        private String Author;//书的作者
        private int BookNum;//书的数量
        
        public void Library(int BookId,String BookName,String Author,int BookNum){
            this.BookId=BookId;
            this.BookName=BookName;
            this.Author=Author;
            this.BookNum=BookNum;
        }
        
        public void setBookId(int BookId){
            this.BookId=BookId;
            
        }
        public void setBookName(String BookName){
            this.BookName=BookName;
        }
        public void setAuthor(String Author){
            this.Author=Author;
        }
        public void setBookNum(int BookNum){
            this.BookNum=BookNum;
        }
        public int getBookId(){
            return BookId;
        }
        public String getBookName(){
            return BookName;
        }
        public String getAuthor(){
            return Author;
        }
        public int getBookNum(){
            return BookNum;
        }
        //增加图书函数
        public void add(Library a){//增加图书以及图书信息函数
            int BookId1,BookNum1;
            String BookName1,Author1;
            System.out.println("~~~~~~~~~开始添加图书信息!~~~~~~~~~");
            System.out.println("图书ID:");
            BookId1=input.nextInt();
            a.setBookId(BookId1);
            System.out.println("图书名字:");
            BookName1=input.next();
            a.setBookName(BookName1);
            System.out.println("图书作者");
            Author1=input.next();
            a.setAuthor(Author1);
            System.out.println("图书数量");
            BookNum1=input.nextInt();
            a.setBookNum(BookNum1);
            System.out.println("~~~~~~~~~结束添加图书信息!~~~~~~~~~");
        }
        public int select(String[][] a){//用来输出特定图书号图书信息
            int m;
            int n = -1;
            
            System.out.println("请输入你要查找的图书号:");
            m=input.nextInt();
            for(int i=0;i<a.length;i++)
            {
                if(Integer.parseInt(a[i][0])==m){
                    
                    n=i;
                    break;}
                
            }
                return n;
        }
        
    
        public int alter_s(String[][] a){//用来查找修改图书的下标
            int m;
            int n=-1;
            System.out.println("选择要修改图书的编号:");
            m=input.nextInt();
            for(int i=0;i<a.length;i++){
                if(Integer.parseInt(a[i][0])==m){
                    n=i;
                    break;
                }
                
            }
            
            return n;
        }
        public int Num(){//用来查找修改图书信息的下标
            int n=-1;
            System.out.println("选择你要修改的内容:0.图书ID   1.图书姓名   2.图书作者   4.图书数量");
            n=input.nextInt();
            return n;
        }
        public int delete(String[][] a){//用于删除图书信息
            System.out.println("选择你要删除的图书的图书号:");
            int m;
            int n=-1;
            m=input.nextInt();
            for(int i=0;i<a.length;i++){
                if(Integer.parseInt(a[i][0])==m){
                    n=i;
                    break;
                }
                
            }
            
            return n;
        }
        public void display(){
        System.out.println("-----------------------------图书管理系统---------------------------------");
        System.out.println("\t\t1.增加图书\t\t2.查找图书");
        System.out.println("\t\t3.修改图书\t\t4.删除图书");
        System.out.println("\t\t5.退出系统\t\t6.联系作者");
        System.out.println("--------------------------------------------------------------------------");}
        public static void main(String[] args){
            Scanner input=new Scanner(System.in);
            Library Lib=new Library();
            String[][] book1=new String[10][10];//存放图书信息的数组
            
            
            int count=0;//图书个数
            int m,o;//用来定位下标
            boolean flag=true;
            int number;
            
            while(flag){
                Lib.display();
                System.out.println("请输入选择的功能:");
                number=input.nextInt();
                switch(number){
                case 1:
                    Lib.add(Lib);
                    book1[count][0]=Lib.BookId+"";
                    book1[count][1]=Lib.BookName;
                    book1[count][2]=Lib.Author;
                    book1[count][3]=Lib.BookNum+"";
                    System.out.println("图书的ID是:"+book1[count][0]);
                    System.out.println("图书的名称是:"+book1[count][1]);
                    System.out.println("图书的作者是:"+book1[count][2]);
                    System.out.println("图书的数量是:"+book1[count][3]);
                    count++;
                    
                    break;
                case 2:
                    m=Lib.select(book1);
                    
                    if(m<0){
                        System.out.println("没有这个图书编号!");
                        
                    }else{
                        System.out.println("图书编号为:"+book1[m][0]);
                        System.out.println("图书名称为:"+book1[m][1]);
                        System.out.println("图书的作者是:"+book1[m][2]);
                        System.out.println("图书的数量是:"+book1[m][3]);
                    }
                    System.out.println("~~~~~~~~~~~~图书信息查找完毕~~~~~~~~~~~~");
                    break;
                case 3:
                    m=Lib.alter_s(book1);
                    o=Lib.Num();
                    System.out.println("请输入你要修改的内容:");
                    book1[m][o]=input.next();
                    System.out.println("~~~~~~~~~~~~图书信息已经修改~~~~~~~~~~~~");
                    break;
                case 4:
                    m=Lib.delete(book1);
                    book1[m]=null;
                    for(int i=m;i<book1.length-1;i++)
                    {
                        book1[i]=book1[i+1];
                    }
                    System.out.println("~~~~~~~~~~~~图书信息已被删除~~~~~~~~~~~");
                    count--;
                    break;
                case 5:
                    System.out.println("~~~~~~~~~~~~您已经退出系统~~~~~~~~~~~~");
                    flag=false;
                    break;
                case 6:
                    System.out.println("~~~~~~~~~~~~作者真的菜!~~~~~~~~~~~~");
                    break;
                default:
                    System.out.println("输入错误");
                    break;
                    
                }
            }
        }
    
        
    }
    

    也可以从Github下载源码。


    展开全文
  • 图书管理系统.zip

    2019-07-27 10:50:59
    图书管理系统进行了对图书的增删改查,对用户的增删改,分为用户和管理员两个界面,管理员比用户多了两个选项卡来进行账户和图书的管理
  • 图书管理系统。基于Springboot+VUE的前后端分离项目。 到底什么是非常火的前后端分离?做个入门的项目吧。包括文档说明和博客说明。 前后端分离简单来说就是把一个应用的前端代码和后端代码分开写。
  • 图书管理系统Java Swing + mysql + eclipse
  • Java图书管理系统源代码,功能有图书信息检索功能、图书借阅、归还流程。具有以下特点:  友好的用户界面。  较高的处理效率,便于使用和维护。  采用成熟技术开发,使系统具有较高的技术水平和较长的生命...
  • 基于eclipse+MySQL的图书管理系统,可以实现读者的注册、借书和还书,管理员的管理等等操作,是一个功能全面的图书管理系统
  • Java编写的超简易图书管理系统,含servlet,jsp,html等文件,连接的数据库access,课程设计产物(想看看能获多少积分),文件含运行说明
  • Eclipse+Java+Swing实现图书管理系统

    千次阅读 多人点赞 2020-09-20 10:04:42
    Java+Swing图书管理系统一、系统介绍二、系统展示1.注册2.登录3.用户端-图书查询及借阅4.用户端-借阅记录及归还5.管理员端-添加图书类别6.管理员端-修改图书类别7.管理员端-添加图书8.管理员端-修改图书9.管理员端-...

    一、系统介绍

    该系统实现用户注册登录功能。用户端实现书籍查询,借书,还书功能。用户能够查询自己的借书记录。管理员能够上架图书,下架图书,添加图书类别,修改图书类别,删除图书类别,添加图书信息,修改图书信息,修改用户信息,查询图书借阅归还记录。

    二、系统展示

    1.注册

    在这里插入图片描述

    2.登录

    在这里插入图片描述

    3.用户端-图书查询及借阅

    在这里插入图片描述

    4.用户端-借阅记录及归还

    在这里插入图片描述

    5.管理员端-添加图书类别

    在这里插入图片描述

    6.管理员端-修改图书类别

    在这里插入图片描述

    7.管理员端-添加图书

    在这里插入图片描述

    8.管理员端-修改图书

    在这里插入图片描述

    9.管理员端-管理用户信息

    在这里插入图片描述

    10.管理员端-查询借阅信息

    在这里插入图片描述

    三、部分代码

    基本类什么的就不列出来了,直接上页面。

    AdminMainFrm.java

    package com.sjsq.view;
    
    import java.awt.event.ActionEvent;
    
    import javax.swing.GroupLayout;
    import javax.swing.JDesktopPane;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.WindowConstants;
    
    public class AdminMainFrm extends JFrame {
    
    	private JDesktopPane jD_table;
    	private JMenu jMenu1;
    	private JMenu jMenu2;
    	private JMenu jMenu3;
    	private JMenu jMenu4;
    	private JMenuBar jMenuBar1;
    	private JMenuItem jMenuItem1;
    	private JMenuItem jMenuItem2;
    	private JMenuItem jMenuItem3;
    	private JMenuItem jMenuItem4;
    	private JMenuItem jMenuItem5;
    	private JMenuItem jMenuItem6;
    	private JMenuItem jMenuItem7;
    	
    	
    	public AdminMainFrm() {
    		initComponents();
    		// 设置位置
    		setBounds(100, 200, 1050, 650);
    		// 居中显示
    		this.setLocationRelativeTo(null);
    	}
    
    	private void initComponents() {
    
    		jD_table = new JDesktopPane();
    		jMenuBar1 = new JMenuBar();
    		jMenu1 = new JMenu();
    		jMenu2 = new JMenu();
    		jMenuItem1 = new JMenuItem();
    		jMenuItem2 = new JMenuItem();
    		jMenu3 = new JMenu();
    		jMenuItem4 = new JMenuItem();
    		jMenuItem5 = new JMenuItem();
    		jMenu4 = new JMenu();
    		jMenuItem6 = new JMenuItem();
    		jMenuItem7 = new JMenuItem();
    		jMenuItem3 = new JMenuItem();
    
    		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    		setTitle("管理员主界面");
    
    		jMenu1.setText("基本数据管理");
    
    		jMenu2.setText("类别管理");
    		jMenu2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenu2ActionPerformed(evt);
    			}
    
    			private void jMenu2ActionPerformed(ActionEvent evt) {
    				
    
    			}
    		});
    
    		jMenuItem1.setText("图书类别添加");
    		jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem1ActionPerformed(evt);
    			}
    		});
    		jMenu2.add(jMenuItem1);
    
    		jMenuItem2.setText("图书类别修改");
    		jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem2ActionPerformed(evt);
    			}
    		});
    		jMenu2.add(jMenuItem2);
    
    		jMenu1.add(jMenu2);
    
    		jMenu3.setText("书籍管理");
    
    		jMenuItem4.setText("书籍添加");
    		jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem4ActionPerformed(evt);
    			}
    		});
    		jMenu3.add(jMenuItem4);
    
    		jMenuItem5.setText("书籍修改");
    		jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem5ActionPerformed(evt);
    			}
    		});
    		jMenu3.add(jMenuItem5);
    
    		jMenu1.add(jMenu3);
    
    		jMenu4.setText("用户管理");
    
    		jMenuItem6.setText("用户信息");
    		jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem6ActionPerformed(evt);
    			}
    		});
    		jMenu4.add(jMenuItem6);
    
    		jMenuItem7.setText("借还信息");
    		jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem7ActionPerformed(evt);
    			}
    		});
    		jMenu4.add(jMenuItem7);
    
    		jMenu1.add(jMenu4);
    
    		jMenuItem3.setText("退出系统");
    		jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem3ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem3);
    
    		jMenuBar1.add(jMenu1);
    
    		setJMenuBar(jMenuBar1);
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addComponent(jD_table, GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addComponent(jD_table, GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE));
    
    		pack();
    	}
    		
    
    	// 借还信息
    	private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {
    		BorrowDetailFrm b = new BorrowDetailFrm();
    		b.setVisible(true);
    		this.jD_table.add(b);
    	}
    
    	// 用户信息
    	private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {
    		UserInfoFrm userInfoFrm = new UserInfoFrm();
    		userInfoFrm.setVisible(true);
    		this.jD_table.add(userInfoFrm);
    	}
    
    	private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
    		BookTypeAddFrm addFrm = new BookTypeAddFrm();
    		addFrm.setVisible(true);
    		this.jD_table.add(addFrm);
    	}
    
    	private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
    		BookManagerFrm bookManagerFrm = new BookManagerFrm();
    		bookManagerFrm.setVisible(true);
    		this.jD_table.add(bookManagerFrm);
    
    	}
    
    	private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
    		BookAddFrm bookAddFrm = new BookAddFrm();
    		bookAddFrm.setVisible(true);
    		this.jD_table.add(bookAddFrm);
    	}
    
    	private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
    		BookTypeManagerFrm bookTypeManagerFrm = new BookTypeManagerFrm();
    		bookTypeManagerFrm.setVisible(true);
    		this.jD_table.add(bookTypeManagerFrm);
    	}
    
    	private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
    		int i = JOptionPane.showConfirmDialog(null, "确认退出系统");
    		if (i == 0) {
    			this.dispose();
    		}
    	}
    
    	public static void main(String args[]) {
    		java.awt.EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				new AdminMainFrm().setVisible(true);
    			}
    		});
    	}
    
    }
    

    BookAddFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;
    
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    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.LayoutStyle;
    import javax.swing.table.DefaultTableModel;
    
    import com.sjsq.dao.BookDao;
    import com.sjsq.dao.BorrowDetailDao;
    import com.sjsq.model.Book;
    import com.sjsq.model.BorrowDetail;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    import com.sjsq.util.TimeUtil;
    
    public class BookInfoFrm extends JInternalFrame {
    	
    	private JTextField bookIdText;
    	private JTextField bookName;
    	private JTextField bookNameText;
    	private JTable bookTable;
    	private JButton jB_borrow;
    	private JButton jButton1;
    	private JLabel jLabel1;
    	private JLabel jLabel2;
    	private JLabel jLabel3;
    	private JPanel jPanel1;
    	private JScrollPane jScrollPane1;
    	
    	DbUtil dbUtil = new DbUtil();
    	BookDao bookDao = new BookDao();
    	BorrowDetailDao borrowDetailDao = new BorrowDetailDao();
    
    	
    	public BookInfoFrm() {
    		initComponents();
    		fillTable(new Book());
    		setTitle("书籍信息");
    		this.setLocation(200, 50);
    	}
    
    	private void fillTable(Book book) {
    		DefaultTableModel model = (DefaultTableModel) bookTable.getModel();
    		model.setRowCount(0);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			book.setStatus(1);
    			ResultSet list = bookDao.list(con, book);
    			while (list.next()) {
    				Vector rowData = new Vector();
    				rowData.add(list.getInt("id"));
    				rowData.add(list.getString("book_name"));
    				rowData.add(list.getString("type_name"));
    				rowData.add(list.getString("author"));
    				rowData.add(list.getString("remark"));
    				model.addRow(rowData);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	
    	private void initComponents() {
    
    		jScrollPane1 = new JScrollPane();
    		bookTable = new JTable();
    		jPanel1 = new JPanel();
    		jLabel1 = new JLabel();
    		bookNameText = new JTextField();
    		jButton1 = new JButton();
    		jB_borrow = new JButton();
    		jLabel2 = new JLabel();
    		bookIdText = new JTextField();
    		jLabel3 = new JLabel();
    		bookName = new JTextField();
    
    		setClosable(true);
    
    		bookTable.setModel(new DefaultTableModel(new Object[][] {
    
    		}, new String[] { "编号", "书名", "类型", "作者", "描述" }) {
    			boolean[] canEdit = new boolean[] { false, false, false, false, false };
    
    			public boolean isCellEditable(int rowIndex, int columnIndex) {
    				return canEdit[columnIndex];
    			}
    		});
    		bookTable.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mousePressed(java.awt.event.MouseEvent evt) {
    				bookTableMousePressed(evt);
    			}
    		});
    		jScrollPane1.setViewportView(bookTable);
    
    		jLabel1.setText("书籍名称:");
    
    		bookNameText.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				bookNameTextActionPerformed(evt);
    			}
    		});
    
    		jButton1.setText("查询");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
    		jPanel1.setLayout(jPanel1Layout);
    		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
    						.addGap(42, 42, 42).addComponent(jLabel1).addGap(36, 36, 36)
    						.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, 130,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 149, Short.MAX_VALUE)
    						.addComponent(jButton1).addGap(45, 45, 45)));
    		jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel1Layout.createSequentialGroup().addGap(23, 23, 23)
    						.addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jButton1).addComponent(jLabel1).addComponent(bookNameText,
    										GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
    										GroupLayout.PREFERRED_SIZE))
    						.addContainerGap(30, Short.MAX_VALUE)));
    
    		jB_borrow.setText("借书");
    		jB_borrow.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jB_borrowActionPerformed(evt);
    			}
    		});
    
    		jLabel2.setText("编号:");
    
    		bookIdText.setEditable(false);
    
    		jLabel3.setText("书名:");
    
    		bookName.setEditable(false);
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(22, 22, 22)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    						.createSequentialGroup().addComponent(jLabel2)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
    						.addComponent(bookIdText, GroupLayout.PREFERRED_SIZE, 95,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel3)
    						.addGap(18, 18, 18)
    						.addComponent(bookName, GroupLayout.PREFERRED_SIZE, 127,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 102, Short.MAX_VALUE)
    						.addComponent(jB_borrow).addGap(88, 88, 88))
    						.addGroup(layout.createSequentialGroup()
    								.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
    										.addComponent(jPanel1, GroupLayout.Alignment.TRAILING,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    										.addComponent(jScrollPane1, GroupLayout.Alignment.TRAILING,
    												GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE))
    								.addContainerGap(38, Short.MAX_VALUE)))));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup()
    						.addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
    						.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 225,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE)
    						.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel2).addComponent(jLabel3)
    								.addComponent(bookIdText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(bookName, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(jB_borrow))
    						.addGap(27, 27, 27)));
    
    		pack();
    	}
    		
    
    	private void jB_borrowActionPerformed(java.awt.event.ActionEvent evt) {
    		String bookId = this.bookIdText.getText();
    		String bookName = this.bookName.getText();
    		if (StringUtil.isEmpty(bookId) || StringUtil.isEmpty(bookName)) {
    			JOptionPane.showMessageDialog(null, "请选择相关书籍");
    			return;
    		}
    		BorrowDetail borrowDetail = new BorrowDetail();
    		borrowDetail.setUserId(LoginFrm.currentUser.getUserId());
    		borrowDetail.setBookId(Integer.parseInt(bookId));
    		borrowDetail.setStatus(1);
    		borrowDetail.setBorrowTime(TimeUtil.getTime());
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    
    			// 先查询是否有该书在借
    			ResultSet list = borrowDetailDao.list(con, borrowDetail);
    			while (list.next()) {
    				JOptionPane.showMessageDialog(null, "该书已在借,请先还再借");
    				return;
    			}
    			int i = borrowDetailDao.add(con, borrowDetail);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "借书成功");
    			} else {
    				JOptionPane.showMessageDialog(null, "借书失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "借书异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    
    	}
    
    	private void bookTableMousePressed(java.awt.event.MouseEvent evt) {
    		int row = this.bookTable.getSelectedRow();
    		Object bookId = this.bookTable.getValueAt(row, 0);
    		Object bookName = this.bookTable.getValueAt(row, 1);
    		this.bookIdText.setText(bookId.toString());
    		this.bookName.setText(bookName.toString());
    	}
    
    	private void bookNameTextActionPerformed(java.awt.event.ActionEvent evt) {
    	}
    
    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    		String bookName = this.bookNameText.getText();
    		Book book = new Book();
    		book.setBookName(bookName);
    		fillTable(book);
    	}
    
    }
    

    BookManagerFrm.java

    package com.sjsq.view;
    
    import java.math.BigDecimal;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;
    
    import javax.swing.BorderFactory;
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    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.LayoutStyle;
    import javax.swing.table.DefaultTableModel;
    
    import com.sjsq.dao.BookDao;
    import com.sjsq.dao.BookTypeDao;
    import com.sjsq.model.Book;
    import com.sjsq.model.BookType;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    
    public class BookManagerFrm extends JInternalFrame {
    	
    	private JTextField authorText;
    	private JTextField bookId;
    	private JTextField bookName;
    	private JTextField bookNameText;
    	private JTable bookTable;
    	private JButton jButton1;
    	private JButton jButton2;
    	private JComboBox jCB_status;
    	private JComboBox jCB_type2;
    	private JLabel jLabel1;
    	private JLabel jLabel10;
    	private JLabel jLabel11;
    	private JLabel jLabel3;
    	private JLabel jLabel4;
    	private JLabel jLabel5;
    	private JLabel jLabel6;
    	private JLabel jLabel7;
    	private JLabel jLabel8;
    	private JLabel jLabel9;
    	private JPanel jPanel1;
    	private JPanel jPanel2;
    	private JScrollPane jScrollPane1;
    	private JTextField numberText;
    	private JTextField priceText;
    	private JTextField publishText;
    	private JTextField remarkText;
    	
    	
    	DbUtil dbUtil = new DbUtil();
    	BookTypeDao bookTypeDao = new BookTypeDao();
    	BookDao bookDao = new BookDao();
    
    	
    	public BookManagerFrm() {
    		initComponents();
    		this.jCB_status.addItem("上架");
    		this.jCB_status.addItem("下架");
    		fillBookTable(new Book());
    		fillBookType();
    		setTitle("书籍修改");
    		this.setLocation(125, 10);
    	}
    
    	private void fillBookType() {
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			ResultSet list = bookTypeDao.list(con, new BookType());
    			while (list.next()) {
    				BookType bookType = new BookType();
    				bookType.setTypeId(list.getInt("id"));
    				bookType.setTypeName(list.getString("type_name"));
    				this.jCB_type2.addItem(bookType);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private void fillBookTable(Book book) {
    		DefaultTableModel model = (DefaultTableModel) bookTable.getModel();
    		model.setRowCount(0);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			ResultSet resultSet = bookDao.list(con, book);
    			while (resultSet.next()) {
    				Vector rowData = new Vector();
    				rowData.add(resultSet.getInt("id"));
    				rowData.add(resultSet.getString("book_name"));
    				rowData.add(resultSet.getString("type_name"));
    				rowData.add(resultSet.getString("author"));
    				rowData.add(resultSet.getDouble("price"));
    				rowData.add(resultSet.getInt("number"));
    				if (resultSet.getInt("status") == 1) {
    					rowData.add("上架");
    				} else {
    					rowData.add("下架");
    				}
    				model.addRow(rowData);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	
    	
    	private void initComponents() {
    
    		jPanel1 = new JPanel();
    		jLabel1 = new JLabel();
    		bookNameText = new JTextField();
    		jButton1 = new JButton();
    		jScrollPane1 = new JScrollPane();
    		bookTable = new JTable();
    		jPanel2 = new JPanel();
    		jLabel3 = new JLabel();
    		bookId = new JTextField();
    		jLabel4 = new JLabel();
    		bookName = new JTextField();
    		jLabel5 = new JLabel();
    		authorText = new JTextField();
    		jLabel6 = new JLabel();
    		publishText = new JTextField();
    		jLabel7 = new JLabel();
    		priceText = new JTextField();
    		jLabel8 = new JLabel();
    		numberText = new JTextField();
    		jLabel9 = new JLabel();
    		jLabel10 = new JLabel();
    		jCB_type2 = new JComboBox();
    		jLabel11 = new JLabel();
    		remarkText = new JTextField();
    		jButton2 = new JButton();
    		jCB_status = new JComboBox();
    
    		setClosable(true);
    
    		jPanel1.setBorder(BorderFactory.createTitledBorder("查询操作"));
    
    		jLabel1.setText("书名:");
    
    		jButton1.setText("查询");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
    		jPanel1.setLayout(jPanel1Layout);
    		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel1Layout.createSequentialGroup().addGap(25, 25, 25).addComponent(jLabel1)
    						.addGap(18, 18, 18)
    						.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, 171,
    								GroupLayout.PREFERRED_SIZE)
    						.addGap(62, 62, 62).addComponent(jButton1).addContainerGap(299, Short.MAX_VALUE)));
    		jPanel1Layout
    				.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    						.addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
    								.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
    								.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(jButton1)).addContainerGap(22, Short.MAX_VALUE)));
    
    		bookTable.setModel(new DefaultTableModel(new Object[][] {
    
    		}, new String[] { "编号", "书名", "类别", "作者", "价格", "库存", "状态" }) {
    			boolean[] canEdit = new boolean[] { false, false, false, false, false, false, false };
    
    			public boolean isCellEditable(int rowIndex, int columnIndex) {
    				return canEdit[columnIndex];
    			}
    		});
    		bookTable.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mousePressed(java.awt.event.MouseEvent evt) {
    				bookTableMousePressed(evt);
    			}
    		});
    		jScrollPane1.setViewportView(bookTable);
    
    		jPanel2.setBorder(BorderFactory.createTitledBorder("书籍操作"));
    
    		jLabel3.setText("编号:");
    
    		bookId.setEditable(false);
    
    		jLabel4.setText("书名:");
    
    		jLabel5.setText("作者:");
    
    		jLabel6.setText("出版:");
    
    		jLabel7.setText("价格:");
    
    		jLabel8.setText("库存:");
    
    		jLabel9.setText("状态:");
    
    		jLabel10.setText("类别:");
    
    		jLabel11.setText("描述:");
    
    		jButton2.setText("修改");
    		jButton2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton2ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
    		jPanel2.setLayout(jPanel2Layout);
    		jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel2Layout.createSequentialGroup()
    						.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(
    								jPanel2Layout.createSequentialGroup().addGap(26, 26, 26).addGroup(jPanel2Layout
    										.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(
    												jPanel2Layout.createSequentialGroup().addComponent(jLabel9)
    														.addPreferredGap(
    																LayoutStyle.ComponentPlacement.RELATED)
    														.addComponent(jCB_status, 0, 117, Short.MAX_VALUE))
    										.addGroup(GroupLayout.Alignment.TRAILING,
    												jPanel2Layout
    														.createSequentialGroup().addGroup(jPanel2Layout
    																.createParallelGroup(
    																		GroupLayout.Alignment.LEADING)
    																.addComponent(jLabel3).addComponent(jLabel6))
    														.addPreferredGap(
    																LayoutStyle.ComponentPlacement.RELATED,
    																GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    														.addGroup(jPanel2Layout
    																.createParallelGroup(
    																		GroupLayout.Alignment.TRAILING,
    																		false)
    																.addComponent(publishText,
    																		GroupLayout.Alignment.LEADING)
    																.addComponent(bookId,
    																		GroupLayout.Alignment.LEADING,
    																		GroupLayout.DEFAULT_SIZE, 117,
    																		Short.MAX_VALUE))))
    										.addGap(39, 39, 39)
    										.addGroup(jPanel2Layout.createParallelGroup(
    												GroupLayout.Alignment.LEADING, false)
    												.addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel10)
    														.addGap(27, 27,
    																27)
    														.addComponent(jCB_type2, 0,
    																GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    												.addGroup(GroupLayout.Alignment.TRAILING,
    														jPanel2Layout.createSequentialGroup().addComponent(jLabel7)
    																.addGap(27, 27, 27).addComponent(priceText))
    												.addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel4)
    														.addGap(27, 27, 27).addComponent(
    																bookName, GroupLayout.PREFERRED_SIZE, 108,
    																GroupLayout.PREFERRED_SIZE)))
    										.addGap(18, 18, 18)
    										.addGroup(jPanel2Layout
    												.createParallelGroup(GroupLayout.Alignment.LEADING)
    												.addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel11)
    														.addGap(18, 18, 18).addComponent(remarkText,
    																GroupLayout.PREFERRED_SIZE, 172,
    																GroupLayout.PREFERRED_SIZE))
    												.addGroup(jPanel2Layout
    														.createParallelGroup(GroupLayout.Alignment.TRAILING,
    																false)
    														.addGroup(GroupLayout.Alignment.LEADING,
    																jPanel2Layout.createSequentialGroup()
    																		.addComponent(jLabel8).addGap(18, 18, 18)
    																		.addComponent(numberText))
    														.addGroup(GroupLayout.Alignment.LEADING,
    																jPanel2Layout.createSequentialGroup()
    																		.addComponent(jLabel5).addGap(20, 20, 20)
    																		.addComponent(authorText,
    																				GroupLayout.PREFERRED_SIZE,
    																				106,
    																				GroupLayout.PREFERRED_SIZE))))
    										.addGap(97, 97, 97))
    								.addGroup(jPanel2Layout.createSequentialGroup().addGap(108, 108, 108)
    										.addComponent(jButton2)))
    						.addContainerGap()));
    		jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel2Layout.createSequentialGroup().addGroup(jPanel2Layout
    						.createParallelGroup(GroupLayout.Alignment.LEADING)
    						.addGroup(jPanel2Layout.createSequentialGroup().addGroup(jPanel2Layout
    								.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel3)
    								.addComponent(bookId, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    								.addGap(18, 18, 18)
    								.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    										.addComponent(jLabel6)
    										.addComponent(publishText, GroupLayout.PREFERRED_SIZE,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.PREFERRED_SIZE)
    										.addComponent(jLabel7)
    										.addComponent(priceText, GroupLayout.PREFERRED_SIZE,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.PREFERRED_SIZE)
    										.addComponent(jLabel8).addComponent(numberText,
    												GroupLayout.PREFERRED_SIZE,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.PREFERRED_SIZE))
    								.addGap(18, 18, 18)
    								.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    										.addComponent(jLabel9)
    										.addComponent(jCB_status, GroupLayout.PREFERRED_SIZE,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.PREFERRED_SIZE)
    										.addComponent(jLabel10)
    										.addComponent(jCB_type2, GroupLayout.PREFERRED_SIZE,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.PREFERRED_SIZE)
    										.addComponent(jLabel11).addComponent(remarkText,
    												GroupLayout.PREFERRED_SIZE,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.PREFERRED_SIZE)))
    						.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel4)
    								.addComponent(bookName, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(authorText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(jLabel5)))
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 42, Short.MAX_VALUE)
    						.addComponent(jButton2).addGap(28, 28, 28)));
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(31, 31, 31)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
    						.addComponent(jPanel1, GroupLayout.Alignment.LEADING,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
    								Short.MAX_VALUE)
    						.addComponent(jScrollPane1, GroupLayout.Alignment.LEADING).addComponent(jPanel2,
    								GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 668,
    								Short.MAX_VALUE))
    				.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup()
    						.addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
    						.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 186,
    								GroupLayout.PREFERRED_SIZE)
    						.addGap(18, 18, 18).addComponent(jPanel2, GroupLayout.DEFAULT_SIZE,
    								GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    						.addContainerGap()));
    
    		pack();
    	}
    
    	
    
    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    		String bookName = this.bookNameText.getText();
    		Book book = new Book();
    		book.setBookName(bookName);
    		fillBookTable(book);
    	}
    
    	private void bookTableMousePressed(java.awt.event.MouseEvent evt) {
    		int row = bookTable.getSelectedRow();
    		Integer bookId = (Integer) bookTable.getValueAt(row, 0);
    		Book book = new Book();
    		book.setBookId(bookId);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			ResultSet list = bookDao.list(con, book);
    			if (list.next()) {
    				this.bookId.setText(list.getString("id"));
    				this.bookName.setText(list.getString("book_name"));
    				this.authorText.setText(list.getString("author"));
    				this.publishText.setText(list.getString("publish"));
    				this.priceText.setText(list.getString("price"));
    				this.numberText.setText(list.getString("number"));
    				this.remarkText.setText(list.getString("remark"));
    				int status = list.getInt("status");
    				if (status == 1) {
    					this.jCB_status.setSelectedIndex(0);
    				} else {
    					this.jCB_status.setSelectedIndex(1);
    				}
    				int typeId = list.getInt("type_id");
    				int count = this.jCB_type2.getItemCount();
    				for (int i = 0; i < count; i++) {
    					BookType bookType = (BookType) this.jCB_type2.getItemAt(i);
    					if (bookType.getTypeId() == typeId) {
    						this.jCB_type2.setSelectedIndex(i);
    					}
    				}
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    		String bookName = this.bookName.getText();
    		String author = this.authorText.getText();
    		String publish = this.publishText.getText();
    		String priceStr = this.priceText.getText();
    		String numberStr = this.numberText.getText();
    		String remark = this.remarkText.getText();
    		String bookId = this.bookId.getText();
    		if (StringUtil.isEmpty(bookId) || StringUtil.isEmpty(bookName) || StringUtil.isEmpty(author)
    				|| StringUtil.isEmpty(publish) || StringUtil.isEmpty(priceStr) || StringUtil.isEmpty(numberStr)
    				|| StringUtil.isEmpty(remark)) {
    			JOptionPane.showMessageDialog(null, "请输入相关内容");
    			return;
    		}
    		BookType selectedItem = (BookType) jCB_type2.getSelectedItem();
    		Integer typeId = selectedItem.getTypeId();
    		int index = jCB_status.getSelectedIndex();
    
    		int number;
    		double price;
    		try {
    			number = Integer.parseInt(numberStr);
    			price = new BigDecimal(priceStr).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
    		} catch (Exception e) {
    			JOptionPane.showMessageDialog(null, "参数错误");
    			return;
    		}
    		Book book = new Book();
    		book.setBookId(Integer.parseInt(bookId));
    		book.setBookName(bookName);
    		book.setAuthor(author);
    		book.setBookTypeId(typeId);
    		book.setNumber(number);
    		book.setPrice(price);
    		book.setPublish(publish);
    		book.setRemark(remark);
    		book.setStatus(1);
    		if (index == 0) {
    			book.setStatus(1);
    		} else if (index == 1) {
    			book.setStatus(2);
    		}
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			int i = bookDao.update(con, book);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "修改成功");
    			} else {
    				JOptionPane.showMessageDialog(null, "修改失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "修改异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    
    		fillBookTable(new Book());
    	}
    
    }
    

    BookInfoFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;
    
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    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.LayoutStyle;
    import javax.swing.table.DefaultTableModel;
    
    import com.sjsq.dao.BookDao;
    import com.sjsq.dao.BorrowDetailDao;
    import com.sjsq.model.Book;
    import com.sjsq.model.BorrowDetail;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    import com.sjsq.util.TimeUtil;
    
    public class BookInfoFrm extends JInternalFrame {
    	
    	private JTextField bookIdText;
    	private JTextField bookName;
    	private JTextField bookNameText;
    	private JTable bookTable;
    	private JButton jB_borrow;
    	private JButton jButton1;
    	private JLabel jLabel1;
    	private JLabel jLabel2;
    	private JLabel jLabel3;
    	private JPanel jPanel1;
    	private JScrollPane jScrollPane1;
    	
    	DbUtil dbUtil = new DbUtil();
    	BookDao bookDao = new BookDao();
    	BorrowDetailDao borrowDetailDao = new BorrowDetailDao();
    
    	
    	public BookInfoFrm() {
    		initComponents();
    		fillTable(new Book());
    		setTitle("书籍信息");
    		this.setLocation(200, 50);
    	}
    
    	private void fillTable(Book book) {
    		DefaultTableModel model = (DefaultTableModel) bookTable.getModel();
    		model.setRowCount(0);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			book.setStatus(1);
    			ResultSet list = bookDao.list(con, book);
    			while (list.next()) {
    				Vector rowData = new Vector();
    				rowData.add(list.getInt("id"));
    				rowData.add(list.getString("book_name"));
    				rowData.add(list.getString("type_name"));
    				rowData.add(list.getString("author"));
    				rowData.add(list.getString("remark"));
    				model.addRow(rowData);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	
    	private void initComponents() {
    
    		jScrollPane1 = new JScrollPane();
    		bookTable = new JTable();
    		jPanel1 = new JPanel();
    		jLabel1 = new JLabel();
    		bookNameText = new JTextField();
    		jButton1 = new JButton();
    		jB_borrow = new JButton();
    		jLabel2 = new JLabel();
    		bookIdText = new JTextField();
    		jLabel3 = new JLabel();
    		bookName = new JTextField();
    
    		setClosable(true);
    
    		bookTable.setModel(new DefaultTableModel(new Object[][] {
    
    		}, new String[] { "编号", "书名", "类型", "作者", "描述" }) {
    			boolean[] canEdit = new boolean[] { false, false, false, false, false };
    
    			public boolean isCellEditable(int rowIndex, int columnIndex) {
    				return canEdit[columnIndex];
    			}
    		});
    		bookTable.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mousePressed(java.awt.event.MouseEvent evt) {
    				bookTableMousePressed(evt);
    			}
    		});
    		jScrollPane1.setViewportView(bookTable);
    
    		jLabel1.setText("书籍名称:");
    
    		bookNameText.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				bookNameTextActionPerformed(evt);
    			}
    		});
    
    		jButton1.setText("查询");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
    		jPanel1.setLayout(jPanel1Layout);
    		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
    						.addGap(42, 42, 42).addComponent(jLabel1).addGap(36, 36, 36)
    						.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, 130,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 149, Short.MAX_VALUE)
    						.addComponent(jButton1).addGap(45, 45, 45)));
    		jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel1Layout.createSequentialGroup().addGap(23, 23, 23)
    						.addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jButton1).addComponent(jLabel1).addComponent(bookNameText,
    										GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
    										GroupLayout.PREFERRED_SIZE))
    						.addContainerGap(30, Short.MAX_VALUE)));
    
    		jB_borrow.setText("借书");
    		jB_borrow.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jB_borrowActionPerformed(evt);
    			}
    		});
    
    		jLabel2.setText("编号:");
    
    		bookIdText.setEditable(false);
    
    		jLabel3.setText("书名:");
    
    		bookName.setEditable(false);
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(22, 22, 22)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    						.createSequentialGroup().addComponent(jLabel2)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
    						.addComponent(bookIdText, GroupLayout.PREFERRED_SIZE, 95,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel3)
    						.addGap(18, 18, 18)
    						.addComponent(bookName, GroupLayout.PREFERRED_SIZE, 127,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 102, Short.MAX_VALUE)
    						.addComponent(jB_borrow).addGap(88, 88, 88))
    						.addGroup(layout.createSequentialGroup()
    								.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
    										.addComponent(jPanel1, GroupLayout.Alignment.TRAILING,
    												GroupLayout.DEFAULT_SIZE,
    												GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    										.addComponent(jScrollPane1, GroupLayout.Alignment.TRAILING,
    												GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE))
    								.addContainerGap(38, Short.MAX_VALUE)))));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup()
    						.addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
    						.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 225,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE)
    						.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel2).addComponent(jLabel3)
    								.addComponent(bookIdText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(bookName, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(jB_borrow))
    						.addGap(27, 27, 27)));
    
    		pack();
    	}
    		
    
    	private void jB_borrowActionPerformed(java.awt.event.ActionEvent evt) {
    		String bookId = this.bookIdText.getText();
    		String bookName = this.bookName.getText();
    		if (StringUtil.isEmpty(bookId) || StringUtil.isEmpty(bookName)) {
    			JOptionPane.showMessageDialog(null, "请选择相关书籍");
    			return;
    		}
    		BorrowDetail borrowDetail = new BorrowDetail();
    		borrowDetail.setUserId(LoginFrm.currentUser.getUserId());
    		borrowDetail.setBookId(Integer.parseInt(bookId));
    		borrowDetail.setStatus(1);
    		borrowDetail.setBorrowTime(TimeUtil.getTime());
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    
    			// 先查询是否有该书在借
    			ResultSet list = borrowDetailDao.list(con, borrowDetail);
    			while (list.next()) {
    				JOptionPane.showMessageDialog(null, "该书已在借,请先还再借");
    				return;
    			}
    			int i = borrowDetailDao.add(con, borrowDetail);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "借书成功");
    			} else {
    				JOptionPane.showMessageDialog(null, "借书失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "借书异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    
    	}
    
    	private void bookTableMousePressed(java.awt.event.MouseEvent evt) {
    		int row = this.bookTable.getSelectedRow();
    		Object bookId = this.bookTable.getValueAt(row, 0);
    		Object bookName = this.bookTable.getValueAt(row, 1);
    		this.bookIdText.setText(bookId.toString());
    		this.bookName.setText(bookName.toString());
    	}
    
    	private void bookNameTextActionPerformed(java.awt.event.ActionEvent evt) {
    	}
    
    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    		String bookName = this.bookNameText.getText();
    		Book book = new Book();
    		book.setBookName(bookName);
    		fillTable(book);
    	}
    
    }
    

    BookTypeAddFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JInternalFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    
    import com.sjsq.dao.BookTypeDao;
    import com.sjsq.model.BookType;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    
    public class BookTypeAddFrm extends JInternalFrame {
    	
    	private JButton jButton1;
    	private JButton jButton2;
    	private JLabel jLabel1;
    	private JLabel jLabel2;
    	private JScrollPane jScrollPane1;
    	private JTextField typeNameText;
    	private JTextArea typeRemarkTtext;
    	
    	DbUtil dbUtil = new DbUtil();
    	BookTypeDao bookTypeDao = new BookTypeDao();
    
    	
    	public BookTypeAddFrm() {
    		initComponents();
    		setTitle("图书类别添加");
    		this.setLocation(200, 50);
    	}
    
    	
    	private void initComponents() {
    
    		jLabel1 = new JLabel();
    		jLabel2 = new JLabel();
    		jButton1 = new JButton();
    		typeNameText = new JTextField();
    		jScrollPane1 = new JScrollPane();
    		typeRemarkTtext = new JTextArea();
    		jButton2 = new JButton();
    
    		setClosable(true);
    
    		jLabel1.setText("图书类别名称:");
    
    		jLabel2.setText("类别说明:");
    
    		jButton1.setText("添加");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
    
    		typeRemarkTtext.setColumns(20);
    		typeRemarkTtext.setRows(5);
    		jScrollPane1.setViewportView(typeRemarkTtext);
    
    		jButton2.setText("重置");
    		jButton2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton2ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup().addGap(49, 49, 49)
    						.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
    								.addGroup(layout.createSequentialGroup().addComponent(jLabel2).addGap(18, 18, 18)
    										.addComponent(jScrollPane1))
    								.addGroup(layout.createSequentialGroup().addComponent(jLabel1).addGap(18, 18, 18)
    										.addComponent(typeNameText, GroupLayout.PREFERRED_SIZE, 241,
    												GroupLayout.PREFERRED_SIZE))
    								.addGroup(layout.createSequentialGroup().addComponent(jButton1).addGap(53, 53, 53)
    										.addComponent(jButton2)))
    						.addGap(179, 179, 179)));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(35, 35, 35)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
    						.addComponent(typeNameText, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    				.addGap(43, 43, 43)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(jLabel2)
    						.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 134,
    								GroupLayout.PREFERRED_SIZE))
    				.addGap(41, 41, 41).addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    						.addComponent(jButton1).addComponent(jButton2))
    				.addContainerGap(62, Short.MAX_VALUE)));
    
    		pack();
    	}
    		
    
    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    		String typeName = this.typeNameText.getText();
    		String typeRemark = this.typeRemarkTtext.getText();
    		if (StringUtil.isEmpty(typeName) || StringUtil.isEmpty(typeRemark)) {
    			JOptionPane.showMessageDialog(null, "请输入相关信息");
    			return;
    		}
    		BookType bookType = new BookType();
    		bookType.setTypeName(typeName);
    		bookType.setRemark(typeRemark);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			int i = bookTypeDao.add(con, bookType);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "添加成功");
    				reset();
    			} else if (i == 2) {
    				JOptionPane.showMessageDialog(null, "添加失败,类别已存在");
    			} else {
    				JOptionPane.showMessageDialog(null, "添加失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private void reset() {
    		this.typeNameText.setText("");
    		this.typeRemarkTtext.setText("");
    	}
    
    	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    		reset();
    	}
    
    }
    

    BookTypeManagerFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;
    
    import javax.swing.BorderFactory;
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    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.LayoutStyle;
    import javax.swing.table.DefaultTableModel;
    
    import com.sjsq.dao.BookTypeDao;
    import com.sjsq.model.BookType;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    
    public class BookTypeManagerFrm extends JInternalFrame {
    	
    	private JButton jButton1;
    	private JButton jButton2;
    	private JLabel jLabel1;
    	private JLabel jLabel2;
    	private JLabel jLabel3;
    	private JPanel jPanel1;
    	private JScrollPane jScrollPane1;
    	private JTextField typeIdText;
    	private JTextField typeNameText;
    	private JTextField typeRemarkText;
    	private JTable typeTable;
    	
    	
    	DbUtil dbUtil = new DbUtil();
    	BookTypeDao bookTypeDao = new BookTypeDao();
    
    	
    	public BookTypeManagerFrm() {
    		initComponents();
    		fillTable();
    		setTitle("图书类别修改");
    		this.setLocation(200, 30);
    	}
    
    	private void fillTable() {
    		DefaultTableModel model = (DefaultTableModel) typeTable.getModel();
    		model.setRowCount(0);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			ResultSet list = bookTypeDao.list(con, new BookType());
    			while (list.next()) {
    				Vector rowData = new Vector();
    				rowData.add(list.getInt("id"));
    				rowData.add(list.getString("type_name"));
    				rowData.add(list.getString("remark"));
    				model.addRow(rowData);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	private void initComponents() {
    
    		jScrollPane1 = new JScrollPane();
    		typeTable = new JTable();
    		jPanel1 = new JPanel();
    		jLabel1 = new JLabel();
    		jLabel2 = new JLabel();
    		jLabel3 = new JLabel();
    		typeIdText = new JTextField();
    		typeNameText = new JTextField();
    		typeRemarkText = new JTextField();
    		jButton1 = new JButton();
    		jButton2 = new JButton();
    
    		setClosable(true);
    
    		typeTable.setModel(new DefaultTableModel(new Object[][] {
    
    		}, new String[] { "编号", "类别名称", "类别描述" }) {
    			boolean[] canEdit = new boolean[] { false, false, false };
    
    			public boolean isCellEditable(int rowIndex, int columnIndex) {
    				return canEdit[columnIndex];
    			}
    		});
    		typeTable.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mousePressed(java.awt.event.MouseEvent evt) {
    				typeTableMousePressed(evt);
    			}
    		});
    		jScrollPane1.setViewportView(typeTable);
    
    		jPanel1.setBorder(BorderFactory.createTitledBorder("表单操作"));
    		jPanel1.setToolTipText("");
    
    		jLabel1.setText("编号:");
    
    		jLabel2.setText("类别名称:");
    
    		jLabel3.setText("描述:");
    
    		typeIdText.setEditable(false);
    
    		jButton1.setText("修改");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
    
    		jButton2.setText("删除");
    		jButton2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton2ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
    		jPanel1.setLayout(jPanel1Layout);
    		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
    						.createParallelGroup(GroupLayout.Alignment.LEADING)
    						.addGroup(jPanel1Layout.createSequentialGroup().addGap(22, 22, 22).addGroup(jPanel1Layout
    								.createParallelGroup(GroupLayout.Alignment.LEADING, false)
    								.addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel3).addGap(18, 18, 18)
    										.addComponent(typeRemarkText))
    								.addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel1).addGap(18, 18, 18)
    										.addComponent(typeIdText, GroupLayout.PREFERRED_SIZE, 123,
    												GroupLayout.PREFERRED_SIZE)
    										.addGap(18, 18, 18)
    										.addGroup(jPanel1Layout
    												.createParallelGroup(GroupLayout.Alignment.LEADING)
    												.addComponent(jButton2)
    												.addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel2)
    														.addGap(18, 18, 18).addComponent(typeNameText,
    																GroupLayout.PREFERRED_SIZE, 133,
    																GroupLayout.PREFERRED_SIZE))))))
    						.addGroup(jPanel1Layout.createSequentialGroup().addGap(41, 41, 41).addComponent(jButton1)))
    						.addContainerGap(43, Short.MAX_VALUE)));
    		jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
    						.createParallelGroup(GroupLayout.Alignment.LEADING)
    						.addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel1).addComponent(jLabel2).addComponent(typeNameText,
    										GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
    										GroupLayout.PREFERRED_SIZE))
    						.addComponent(typeIdText, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    						.addGap(27, 27, 27)
    						.addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel3).addComponent(typeRemarkText,
    										GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
    										GroupLayout.PREFERRED_SIZE))
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 41, Short.MAX_VALUE)
    						.addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jButton1).addComponent(jButton2))
    						.addContainerGap()));
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(42, 42, 42)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
    						.addComponent(jPanel1, GroupLayout.Alignment.LEADING,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
    								Short.MAX_VALUE)
    						.addComponent(jScrollPane1, GroupLayout.Alignment.LEADING,
    								GroupLayout.PREFERRED_SIZE, 452, GroupLayout.PREFERRED_SIZE))
    				.addContainerGap(49, Short.MAX_VALUE)));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup().addContainerGap()
    						.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 137,
    								GroupLayout.PREFERRED_SIZE)
    						.addGap(51, 51, 51)
    						.addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addContainerGap(30, Short.MAX_VALUE)));
    
    		pack();
    	}
    		
    
    	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    		String typeId = this.typeIdText.getText();
    		if (StringUtil.isEmpty(typeId)) {
    			JOptionPane.showMessageDialog(null, "请选择相关信息");
    			return;
    		}
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			int i = bookTypeDao.delete(con, typeId);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "删除成功");
    				fillTable();
    			} else if (i == 2) {
    				JOptionPane.showMessageDialog(null, "删除失败-类别最少保留一个");
    			} else if (i == 3) {
    				JOptionPane.showMessageDialog(null, "删除失败-该类别下有书籍");
    			} else {
    				JOptionPane.showMessageDialog(null, "删除失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "删除异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    		String typeId = this.typeIdText.getText();
    		String typeName = this.typeNameText.getText();
    		String typeRemark = this.typeRemarkText.getText();
    		if (StringUtil.isEmpty(typeName) || StringUtil.isEmpty(typeRemark)) {
    			JOptionPane.showMessageDialog(null, "请输入相关信息");
    			return;
    		}
    		BookType bookType = new BookType();
    		bookType.setTypeId(Integer.parseInt(typeId));
    		bookType.setTypeName(typeName);
    		bookType.setRemark(typeRemark);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			int i = bookTypeDao.update(con, bookType);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "修改成功");
    				fillTable();
    			} else {
    				JOptionPane.showMessageDialog(null, "修改失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "修改异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private void typeTableMousePressed(java.awt.event.MouseEvent evt) {
    		int row = this.typeTable.getSelectedRow();
    		this.typeIdText.setText(typeTable.getValueAt(row, 0).toString());
    		this.typeNameText.setText(typeTable.getValueAt(row, 1).toString());
    		this.typeRemarkText.setText(typeTable.getValueAt(row, 2).toString());
    	}
    
    }
    

    BorrowDetailFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;
    
    import javax.swing.GroupLayout;
    import javax.swing.JInternalFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    import com.sjsq.dao.BorrowDetailDao;
    import com.sjsq.model.BorrowDetail;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.TimeUtil;
    
    public class BorrowDetailFrm extends JInternalFrame {
    	
    	private JTable detailTable;
    	private JScrollPane jScrollPane1;
    	
    	
    	DbUtil dbUtil = new DbUtil();
    	BorrowDetailDao borrowDetailDao = new BorrowDetailDao();
    
    	
    	public BorrowDetailFrm() {
    		initComponents();
    		fillTable(new BorrowDetail());
    		setTitle("借还信息");
    		this.setLocation(200, 50);
    	}
    
    	private void fillTable(BorrowDetail borrowDetail) {
    		DefaultTableModel model = (DefaultTableModel) detailTable.getModel();
    		model.setRowCount(0);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			ResultSet list = borrowDetailDao.list(con, borrowDetail);
    			while (list.next()) {
    				Vector rowData = new Vector();
    				rowData.add(list.getString("username"));
    				rowData.add(list.getString("book_name"));
    				int status = list.getInt("status");
    				if (status == 1) {
    					rowData.add("在借");
    				} else {
    					rowData.add("已还");
    				}
    				rowData.add(TimeUtil.getDateByTime(list.getLong("borrow_time")));
    				if (status == 2) {
    					rowData.add(TimeUtil.getDateByTime(list.getLong("return_time")));
    				}
    				model.addRow(rowData);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	
    	private void initComponents() {
    
    		jScrollPane1 = new JScrollPane();
    		detailTable = new JTable();
    
    		setClosable(true);
    
    		detailTable.setModel(new DefaultTableModel(new Object[][] {
    
    		}, new String[] { "借书人", "书名", "状态", "借书时间", "还书时间" }) {
    			boolean[] canEdit = new boolean[] { false, false, false, false, false };
    
    			public boolean isCellEditable(int rowIndex, int columnIndex) {
    				return canEdit[columnIndex];
    			}
    		});
    		jScrollPane1.setViewportView(detailTable);
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup().addContainerGap()
    						.addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 700, Short.MAX_VALUE)
    						.addContainerGap()));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout
    						.createSequentialGroup().addContainerGap().addComponent(jScrollPane1,
    								GroupLayout.PREFERRED_SIZE, 366, GroupLayout.PREFERRED_SIZE)
    						.addContainerGap(25, Short.MAX_VALUE)));
    
    		pack();
    	}
    		
    }
    

    LoginFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    import javax.swing.LayoutStyle;
    import javax.swing.WindowConstants;
    
    import com.sjsq.dao.UserDao;
    import com.sjsq.model.User;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    
    public class LoginFrm extends JFrame {
    	public static User currentUser;
    	private JButton jB_login;
    	private JButton jB_reset;
    	private JLabel jLabel1;
    	private JLabel jLabel2;
    	private JLabel jLabel3;
    	private JTextField passwordText;
    	private JComboBox role;
    	private JTextField userNameText;
    	
    	UserDao userDao = new UserDao();
    	DbUtil dbUtil = new DbUtil();
    
    	
    	public LoginFrm() {
    		initComponents();
    		this.role.addItem("学生");
    		this.role.addItem("管理员");
    		this.setLocationRelativeTo(null);
    	}
    
    	
    	private void initComponents() {
    
    		jLabel1 = new JLabel();
    		jLabel2 = new JLabel();
    		jLabel3 = new JLabel();
    		jB_login = new JButton();
    		jB_reset = new JButton();
    		userNameText = new JTextField();
    		passwordText = new JTextField();
    		role = new JComboBox();
    
    		setTitle("用户登录");
    		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    		setResizable(false);
    
    		jLabel1.setText("账号:");
    
    		jLabel2.setText("密码:");
    
    		jLabel3.setText("角色:");
    
    		jB_login.setText("登录");
    		jB_login.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jB_loginActionPerformed(evt);
    			}
    		});
    
    		jB_reset.setText("重置");
    		jB_reset.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jB_resetActionPerformed(evt);
    			}
    		});
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(59, 59, 59)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    						.addGroup(layout.createSequentialGroup().addComponent(jB_login).addGap(87, 87, 87)
    								.addComponent(jB_reset))
    						.addGroup(layout.createSequentialGroup()
    								.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
    										.addComponent(jLabel3).addComponent(jLabel2).addComponent(jLabel1))
    								.addGap(18, 18, 18)
    								.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
    										.addComponent(userNameText, GroupLayout.DEFAULT_SIZE, 150,
    												Short.MAX_VALUE)
    										.addComponent(passwordText)
    										.addComponent(role, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
    				.addContainerGap(137, Short.MAX_VALUE)));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(49, 49, 49)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
    						.addComponent(userNameText, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    				.addGap(45, 45, 45)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(jLabel2)
    						.addComponent(passwordText, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    				.addGap(33, 33, 33)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel3)
    						.addComponent(role, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    				.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 42, Short.MAX_VALUE)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jB_login)
    						.addComponent(jB_reset))
    				.addGap(37, 37, 37)));
    
    		pack();
    	}
    
    	
    
    	private void jB_loginActionPerformed(java.awt.event.ActionEvent evt) {
    		String userName = this.userNameText.getText();
    		String password = this.passwordText.getText();
    		int index = this.role.getSelectedIndex();
    		if (StringUtil.isEmpty(userName) || StringUtil.isEmpty(password)) {
    			JOptionPane.showMessageDialog(null, "请输入相关信息");
    			return;
    		}
    		User user = new User();
    		user.setUserName(userName);
    		user.setPassword(password);
    		if (index == 0) {
    			user.setRole(1);
    		} else {
    			user.setRole(2);
    		}
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			User login = userDao.login(con, user);
    			currentUser = login;
    			if (login == null) {
    				JOptionPane.showMessageDialog(null, "登录失败");
    			} else {
    				// 角色 1普通 2管理员
    				if (index == 0) {
    					// 学生
    					this.dispose();
    					new UserMainFrm().setVisible(true);
    				} else {
    					// 管理员
    					
    					this.dispose();
    					new AdminMainFrm().setVisible(true);
    				}
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "登录异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    
    	}
    
    	private void reset() {
    		this.userNameText.setText("");
    		this.passwordText.setText("");
    	}
    
    	private void jB_resetActionPerformed(java.awt.event.ActionEvent evt) {
    		reset();
    	}
    
    	public static void main(String args[]) {
    		java.awt.EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				new LoginFrm().setVisible(true);
    			}
    		});
    	}
    
    }
    

    RegisterFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    import javax.swing.LayoutStyle;
    import javax.swing.WindowConstants;
    
    import com.sjsq.dao.UserDao;
    import com.sjsq.model.User;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    
    public class RegisterFrm extends JFrame {
    	
    	private JButton jButton1;
    	private JButton jButton2;
    	private JLabel jLabel1;
    	private JLabel jLabel2;
    	private JTextField passwordText;
    	private JTextField userNameText;
    	
    	
    	DbUtil dbUtil = new DbUtil();
    	UserDao userDao = new UserDao();
    
    	
    	public RegisterFrm() {
    		initComponents();
    		this.setLocationRelativeTo(null);
    	}
    
    	
    	private void initComponents() {
    
    		jLabel1 = new JLabel();
    		jLabel2 = new JLabel();
    		jButton1 = new JButton();
    		jButton2 = new JButton();
    		userNameText = new JTextField();
    		passwordText = new JTextField();
    
    		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    		setTitle("用户注册");
    		setResizable(false);
    
    		jLabel1.setText("账号:");
    
    		jLabel2.setText("密码:");
    
    		jButton1.setText("注册");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
    
    		jButton2.setText("重置");
    		jButton2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton2ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(60, 60, 60)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    						.addGroup(layout.createSequentialGroup().addComponent(jButton1).addGap(77, 77, 77)
    								.addComponent(jButton2))
    						.addGroup(layout.createSequentialGroup()
    								.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    										.addComponent(jLabel1).addComponent(jLabel2))
    								.addGap(37, 37, 37)
    								.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
    										.addComponent(passwordText).addComponent(userNameText,
    												GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE))))
    				.addContainerGap(123, Short.MAX_VALUE)));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(49, 49, 49)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
    						.addComponent(userNameText, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    				.addGap(48, 48, 48)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel2)
    						.addComponent(passwordText, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    				.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jButton1)
    						.addComponent(jButton2))
    				.addGap(64, 64, 64)));
    
    		pack();
    	}
    		
    
    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    		String userName = this.userNameText.getText();
    		String password = this.passwordText.getText();
    		if (StringUtil.isEmpty(userName) || StringUtil.isEmpty(password)) {
    			JOptionPane.showMessageDialog(null, "请输入相关信息");
    			return;
    		}
    		User user = new User();
    		user.setUserName(userName);
    		user.setPassword(password);
    		user.setRole(1);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			int i = userDao.addUser(con, user);
    			if (i == 2) {
    				JOptionPane.showMessageDialog(null, "该用户名已存在,请重新注册");
    			} else if (i == 0) {
    				JOptionPane.showMessageDialog(null, "注册失败");
    			} else {
    				JOptionPane.showMessageDialog(null, "注册成功");
    				this.dispose();
    				new LoginFrm().setVisible(true);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private void reset() {
    		this.userNameText.setText("");
    		this.passwordText.setText("");
    	}
    
    	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    		reset();
    	}
    
    	public static void main(String args[]) {
    		java.awt.EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				new RegisterFrm().setVisible(true);
    			}
    		});
    	}
    
    }
    

    UserBorrowDetail.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;
    
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JInternalFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.LayoutStyle;
    import javax.swing.table.DefaultTableModel;
    
    import com.sjsq.dao.BorrowDetailDao;
    import com.sjsq.model.BorrowDetail;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    import com.sjsq.util.TimeUtil;
    
    public class UserBorrowDetail extends JInternalFrame {
    	
    	private JTextField borrowIdText;
    	private JTable borrowTbale;
    	private JButton jB_return;
    	private JLabel jLabel1;
    	private JScrollPane jScrollPane1;
    	
    	
    	DbUtil dbUtil = new DbUtil();
    	BorrowDetailDao borrowDetailDao = new BorrowDetailDao();
    
    	
    	public UserBorrowDetail() {
    		initComponents();
    		fillTable(new BorrowDetail());
    		this.jB_return.setVisible(false);
    		setTitle("借还信息");
    		this.setLocation(200, 50);
    	}
    
    	private void fillTable(BorrowDetail borrowDetail) {
    		DefaultTableModel model = (DefaultTableModel) borrowTbale.getModel();
    		model.setRowCount(0);
    		Integer userId = LoginFrm.currentUser.getUserId();
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			borrowDetail.setUserId(userId);
    			ResultSet list = borrowDetailDao.list(con, borrowDetail);
    			while (list.next()) {
    				Vector rowData = new Vector();
    				rowData.add(list.getInt("id"));
    				rowData.add(list.getString("book_name"));
    				int status = list.getInt("status");
    				if (status == 1) {
    					rowData.add("在借");
    				}
    				if (status == 2) {
    					rowData.add("已还");
    				}
    				rowData.add(TimeUtil.getDateByTime(list.getLong("borrow_time")));
    				if (status == 2) {
    					rowData.add(TimeUtil.getDateByTime(list.getLong("return_time")));
    				}
    				model.addRow(rowData);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	private void initComponents() {
    
    		jScrollPane1 = new JScrollPane();
    		borrowTbale = new JTable();
    		jLabel1 = new JLabel();
    		borrowIdText = new JTextField();
    		jB_return = new JButton();
    
    		setClosable(true);
    
    		borrowTbale.setModel(new DefaultTableModel(new Object[][] {
    
    		}, new String[] { "编号", "书名", "状态", "借书时间", "还书时间" }) {
    			boolean[] canEdit = new boolean[] { false, false, false, false, false };
    
    			public boolean isCellEditable(int rowIndex, int columnIndex) {
    				return canEdit[columnIndex];
    			}
    		});
    		borrowTbale.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mousePressed(java.awt.event.MouseEvent evt) {
    				borrowTbaleMousePressed(evt);
    			}
    		});
    		jScrollPane1.setViewportView(borrowTbale);
    
    		jLabel1.setText("编号:");
    
    		borrowIdText.setEditable(false);
    
    		jB_return.setText("还书");
    		jB_return.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jB_returnActionPerformed(evt);
    			}
    		});
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup().addGap(35, 35, 35).addComponent(jLabel1).addGap(38, 38, 38)
    						.addComponent(borrowIdText, GroupLayout.PREFERRED_SIZE, 114,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 282, Short.MAX_VALUE)
    						.addComponent(jB_return).addGap(44, 44, 44))
    				.addGroup(layout.createSequentialGroup().addContainerGap()
    						.addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 700, Short.MAX_VALUE)
    						.addContainerGap()));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup()
    				.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 239,
    						GroupLayout.PREFERRED_SIZE)
    				.addGap(18, 18, 18)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
    						.addComponent(borrowIdText, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(jB_return))
    				.addContainerGap(26, Short.MAX_VALUE)));
    
    		pack();
    	}
    		
    
    	private void jB_returnActionPerformed(java.awt.event.ActionEvent evt) {
    		String BorrowStr = this.borrowIdText.getText();
    		if (StringUtil.isEmpty(BorrowStr)) {
    			JOptionPane.showMessageDialog(null, "请选择未还的书籍");
    			return;
    		}
    		BorrowDetail detail = new BorrowDetail();
    		detail.setBorrowId(Integer.parseInt(BorrowStr));
    		detail.setStatus(2);
    		detail.setReturnTime(TimeUtil.getTime());
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			int i = borrowDetailDao.returnBook(con, detail);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "还书成功");
    			} else {
    				JOptionPane.showMessageDialog(null, "还书失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "还书异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    		fillTable(new BorrowDetail());
    	}
    
    	private void borrowTbaleMousePressed(java.awt.event.MouseEvent evt) {
    		int row = borrowTbale.getSelectedRow();
    		Integer borrowId = (Integer) borrowTbale.getValueAt(row, 0);
    		String status = (String) borrowTbale.getValueAt(row, 2);
    		this.borrowIdText.setText(borrowId.toString());
    		if (status.equals("在借")) {
    			this.jB_return.setVisible(true);
    		} else {
    			this.jB_return.setVisible(false);
    		}
    	}
    }
    

    UserInfoFrm.java

    package com.sjsq.view;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;
    
    import javax.swing.BorderFactory;
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    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.LayoutStyle;
    import javax.swing.table.DefaultTableModel;
    
    import com.sjsq.dao.UserDao;
    import com.sjsq.model.User;
    import com.sjsq.util.DbUtil;
    import com.sjsq.util.StringUtil;
    
    public class UserInfoFrm extends JInternalFrame {
    	
    	private JButton jButton1;
    	private JButton jButton2;
    	private JLabel jLabel1;
    	private JLabel jLabel2;
    	private JLabel jLabel3;
    	private JLabel jLabel4;
    	private JLabel jLabel5;
    	private JPanel jPanel1;
    	private JPanel jPanel2;
    	private JScrollPane jScrollPane1;
    	private JTextField passwordText;
    	private JTextField userIdText;
    	private JTextField userNameText;
    	private JTextField userNaneSelectText;
    	private JTable userTable;
    	
    	
    	DbUtil dbUtil = new DbUtil();
    	UserDao userDao = new UserDao();
    
    	
    	public UserInfoFrm() {
    		initComponents();
    		fillTable(new User());
    		setTitle("用户信息");
    		this.setLocation(200, 50);
    	}
    
    	private void fillTable(User user) {
    		DefaultTableModel model = (DefaultTableModel) userTable.getModel();
    		model.setRowCount(0);
    
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			ResultSet list = userDao.list(con, user);
    			while (list.next()) {
    				Vector rowData = new Vector();
    				rowData.add(list.getInt("id"));
    				rowData.add(list.getString("username"));
    				rowData.add(list.getString("password"));
    				model.addRow(rowData);
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	
    	private void initComponents() {
    
    		jLabel2 = new JLabel();
    		jScrollPane1 = new JScrollPane();
    		userTable = new JTable();
    		jPanel1 = new JPanel();
    		jLabel1 = new JLabel();
    		jButton1 = new JButton();
    		userNaneSelectText = new JTextField();
    		jPanel2 = new JPanel();
    		jLabel3 = new JLabel();
    		userIdText = new JTextField();
    		jLabel4 = new JLabel();
    		userNameText = new JTextField();
    		jLabel5 = new JLabel();
    		passwordText = new JTextField();
    		jButton2 = new JButton();
    
    		jLabel2.setText("jLabel2");
    
    		setClosable(true);
    
    		userTable.setModel(new DefaultTableModel(new Object[][] {
    
    		}, new String[] { "编号", "账号", "密码" }) {
    			boolean[] canEdit = new boolean[] { false, false, false };
    
    			public boolean isCellEditable(int rowIndex, int columnIndex) {
    				return canEdit[columnIndex];
    			}
    		});
    		userTable.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mousePressed(java.awt.event.MouseEvent evt) {
    				userTableMousePressed(evt);
    			}
    		});
    		jScrollPane1.setViewportView(userTable);
    
    		jPanel1.setBorder(BorderFactory.createTitledBorder("表单操作"));
    
    		jLabel1.setText("账号:");
    
    		jButton1.setText("查询");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
    		jPanel1.setLayout(jPanel1Layout);
    		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(jLabel1)
    						.addGap(18, 18, 18)
    						.addComponent(userNaneSelectText, GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE)
    						.addGap(18, 18, 18).addComponent(jButton1).addContainerGap()));
    		jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
    						.createParallelGroup(GroupLayout.Alignment.LEADING)
    						.addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel1).addComponent(userNaneSelectText,
    										GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
    										GroupLayout.PREFERRED_SIZE))
    						.addComponent(jButton1))
    						.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    
    		jPanel2.setBorder(BorderFactory.createTitledBorder("用户操作"));
    
    		jLabel3.setText("编号:");
    
    		userIdText.setEditable(false);
    
    		jLabel4.setText("账号:");
    
    		jLabel5.setText("密码:");
    
    		jButton2.setText("修改");
    		jButton2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton2ActionPerformed(evt);
    			}
    		});
    
    		GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
    		jPanel2.setLayout(jPanel2Layout);
    		jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel2Layout.createSequentialGroup().addContainerGap()
    						.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    								.addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel3)
    										.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
    										.addComponent(userIdText, GroupLayout.PREFERRED_SIZE, 85,
    												GroupLayout.PREFERRED_SIZE)
    										.addGap(18, 18, 18).addComponent(jLabel4))
    								.addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel5)
    										.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
    										.addComponent(passwordText, GroupLayout.PREFERRED_SIZE, 88,
    												GroupLayout.PREFERRED_SIZE)))
    						.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    								.addGroup(jPanel2Layout.createSequentialGroup().addGap(37, 37, 37).addComponent(
    										userNameText, GroupLayout.PREFERRED_SIZE, 94,
    										GroupLayout.PREFERRED_SIZE))
    								.addGroup(jPanel2Layout.createSequentialGroup().addGap(8, 8, 8).addComponent(jButton2)))
    						.addContainerGap(26, Short.MAX_VALUE)));
    		jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(jPanel2Layout.createSequentialGroup()
    						.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel3).addComponent(jLabel4)
    								.addComponent(userIdText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(userNameText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    						.addGap(29, 29, 29)
    						.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
    								.addComponent(jLabel5)
    								.addComponent(passwordText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    								.addComponent(jButton2))
    						.addContainerGap(37, Short.MAX_VALUE)));
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
    				.createSequentialGroup().addGap(24, 24, 24)
    				.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
    						.addComponent(jPanel2, GroupLayout.Alignment.LEADING,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
    								Short.MAX_VALUE)
    						.addComponent(jScrollPane1, GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
    						.addComponent(jPanel1, GroupLayout.Alignment.LEADING,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
    								Short.MAX_VALUE))
    				.addGap(226, 226, 226)));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
    				.addGroup(layout.createSequentialGroup()
    						.addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addGap(28, 28, 28)
    						.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 136,
    								GroupLayout.PREFERRED_SIZE)
    						.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
    						.addComponent(jPanel2, GroupLayout.PREFERRED_SIZE,
    								GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addContainerGap(16, Short.MAX_VALUE)));
    
    		pack();
    	}
    		
    
    	private void userTableMousePressed(java.awt.event.MouseEvent evt) {
    		int row = this.userTable.getSelectedRow();
    		this.userIdText.setText(userTable.getValueAt(row, 0).toString());
    		this.userNameText.setText(userTable.getValueAt(row, 1).toString());
    		this.passwordText.setText(userTable.getValueAt(row, 2).toString());
    	}
    
    	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    		String userId = this.userIdText.getText();
    		String userName = this.userNameText.getText();
    		String password = this.passwordText.getText();
    		if (StringUtil.isEmpty(userName) || StringUtil.isEmpty(password)) {
    			JOptionPane.showMessageDialog(null, "请输入相关信息");
    			return;
    		}
    		User user = new User();
    		user.setUserId(Integer.parseInt(userId));
    		user.setUserName(userName);
    		user.setPassword(password);
    		Connection con = null;
    		try {
    			con = dbUtil.getCon();
    			int i = userDao.update(con, user);
    			if (i == 1) {
    				JOptionPane.showMessageDialog(null, "修改成功");
    				fillTable(new User());
    			} else {
    				JOptionPane.showMessageDialog(null, "修改失败");
    			}
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "修改异常");
    		} finally {
    			try {
    				dbUtil.closeCon(con);
    			} catch (Exception e) {
    				
    				e.printStackTrace();
    			}
    		}
    	}
    
    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    		String userName = this.userNaneSelectText.getText();
    		User user = new User();
    		user.setUserName(userName);
    		fillTable(user);
    	}
    
    }
    

    UserMainFrm.java

    package com.sjsq.view;
    
    import javax.swing.GroupLayout;
    import javax.swing.JDesktopPane;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.WindowConstants;
    
    public class UserMainFrm extends JFrame {
    
    	private JMenu jMenu1;
    	private JMenuBar jMenuBar1;
    	private JMenuItem jMenuItem1;
    	private JMenuItem jMenuItem2;
    	private JMenuItem jMenuItem3;
    	private JDesktopPane userMainjdp;
    
    	public UserMainFrm() {
    		initComponents();
    		// 设置位置
    		setBounds(100, 200, 1050, 650);
    		// 居中显示
    		this.setLocationRelativeTo(null);
    	}
    
    	private void initComponents() {
    
    		userMainjdp = new JDesktopPane();
    		jMenuBar1 = new JMenuBar();
    		jMenu1 = new JMenu();
    		jMenuItem1 = new JMenuItem();
    		jMenuItem2 = new JMenuItem();
    		jMenuItem3 = new JMenuItem();
    
    		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    		setTitle("图书者主界面");
    		
    		jMenu1.setText("基本信息");
    
    		jMenuItem1.setText("书籍信息");
    		jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem1ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem1);
    
    		jMenuItem2.setText("借书记录");
    		jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem2ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem2);
    
    		jMenuItem3.setText("退出系统");
    		jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem3ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem3);
    
    		jMenuBar1.add(jMenu1);
    
    		setJMenuBar(jMenuBar1);
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(userMainjdp,
    				GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE));
    		layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(userMainjdp,
    				GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE));
    
    		pack();
    	}
    
    	private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
    		int i = JOptionPane.showConfirmDialog(null, "确认退出系统");
    		if (i == 0) {
    			this.dispose();
    		}
    	}
    
    	private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
    		UserBorrowDetail userBorrowDetail = new UserBorrowDetail();
    		userBorrowDetail.setVisible(true);
    		this.userMainjdp.add(userBorrowDetail);
    	}
    
    	private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
    		BookInfoFrm infoFrm = new BookInfoFrm();
    		infoFrm.setVisible(true);
    		this.userMainjdp.add(infoFrm);
    	}
    
    	public static void main(String args[]) {
    		java.awt.EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				new UserMainFrm().setVisible(true);
    			}
    		});
    	}
    
    }
    

    UserManagerFrm.java

    package com.sjsq.view;
    
    import javax.swing.GroupLayout;
    import javax.swing.JInternalFrame;
    
    public class UserManagerFrm extends JInternalFrame {
    
    	public UserManagerFrm() {
    		initComponents();
    	}
    
    	private void initComponents() {
    
    		setClosable(true);
    
    		GroupLayout layout = new GroupLayout(getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(
    				layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 394, Short.MAX_VALUE));
    		layout.setVerticalGroup(
    				layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 278, Short.MAX_VALUE));
    
    		pack();
    	}
    
    }
    

    四、其他

    1.其他系统实现

    JavaWeb系统系列实现

    Java+JSP实现学生图书管理系统
    Java+JSP实现学生信息管理系统
    Java+JSP实现用户信息管理系统
    Java+Servlet+JSP实现航空订票系统
    Java+Servlet+JSP实现房屋租赁管理系统
    Java+Servlet+JSP实现学生选课管理系统
    Java+Servlet+JSP实现学生成绩管理系统
    Java+Servlet+JSP实现宠物诊所管理系统
    Java+SSM+Easyui实现网上考试系统
    Java+Springboot+H-ui实现营销管理系统
    Java+Springboot+Mybatis+Bootstrap实现网上商城系统

    JavaSwing系统系列实现

    Java+Swing实现斗地主游戏
    Java+Swing实现图书管理系统
    Java+Swing实现医院管理系统
    Java+Swing实现仓库管理系统
    Java+Swing实现考试管理系统
    Java+Swing实现通讯录管理系统
    Java+Swing实现停车场管理系统
    Java+Swing实现学生信息管理系统
    Java+Swing实现学生宿舍管理系统
    Java+Swing实现学生选课管理系统
    Java+Swing实现学生成绩管理系统
    Java+Swing实现学校教材管理系统
    Java+Swing实现学校教务管理系统
    Java+Swing实现企业人事管理系统
    Java+Swing实现电子相册管理系统
    Java+Swing实现自助取款机(ATM)系统
    Java+Swing实现超市管理系统-TXT存储信息
    Java+Swing实现宠物商店管理系统-TXT存储信息

    2.获取源码

    点击以下链接获取源码,数据库文件在sql文件下面。
    Java+Swing+Mysql图书管理系通源码

    3.运行项目

    请走点击以下链接,部署你的项目。
    Eclipse如何导入JavaSwing项目超详细教程

    4.备注

    如有侵权请联系我删除。

    5.联系博主

    左侧关注微信公众号,里面有Java教程和一些Java资源。如果此文对您有帮助,请关注加点赞,谢谢!

    展开全文
  • 简易图书管理系统

    2018-03-02 11:03:00
    java简易图书管理系统,没有窗口化,但是用到了mysql数据库,实现了用户登录与注册
  • sql数据库 eclipse代码齐全,附加说明文档,不会运行的参考eclipse连接数据库,如果代码打开,注释是乱码调整为GBK即可。肯定不亏值得下载
  • Java开发源代码+mysql数据库。用于大学计算机的课程设计。
  • 在面向对象编程课程上制作的简单的控制台图书管理系统小练习,包括简单类图和代码、数据文件,多有不足之处,希望大家多多指正。
  • 图书管理系统 Java Eclipse MySQL

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,314
精华内容 2,525
关键字:

eclipse图书管理系统java

java 订阅