자바+MySQL 도서 관리 시스템 구현(전체 코드)

(전체 코드+실습 보고서):
링크:https://pan.baidu.com/s/1E6BhEaHMa6Wch5yf6YAjOA추출 코드:vnrx
유용 하 다 고 생각 되면 좋아요~
기능
관리자 로그 인
도서 대출 정보 관리
도서 정보 관리
관리자 가 비밀 번 호 를 변경 합 니 다시스템 종료
도구
  • Eclipse Version: 2018-09 (4.9.0)
  • MySQL Workbench 8.0 CE
  • mysql-connector-java-8.0.13.jar
  • 3.효과 도:
    로그 인 화면:

    주 인터페이스:

    도서 대출 관리:

    개인 서고 관리:

    비밀번호 변경:

    4.데이터베이스 디자인

    1)도서 목록

    2)사용자 테이블

    두 데이터 테이블 사이 에는 관련 이 없습니다.

    5.JAVA 차원 분석
    (1)논리 도

    (2)패키지 구 조 는 MVC 3 층 구조 로 각 모듈 을 구성한다.

    6.주요 자바 코드 분석
    Dao 클래스(BookDao 의 경우)
    
    package pers.cyz.dao;
     
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
     
    import pers.cyz.model.Book;
    import pers.cyz.util.DBUtil;
     
    /**
     *                ,        、      
     * 、      、      、           
     * 
     * @author 1651200111    
     */
    public class BookDao {
     
     
    	/**
    	 *       
    	 */
     public void addBook(Book book) throws Exception{
     	//           
     Connection con = DBUtil.getConnection();
     String sql="insert into tb_books"
     		// ISBN、  、    、    、   
     		+ "(ISBN, book_name, book_price, book_author, published_house,"
     		//    、     、     、    ,    
     		+ "book_category, borrower_name, borrower_phone) "
     		+ "values("
     		/*
     		 *    ?  ,      ,          。      ,
     		 *         SQL   , SQL          。             
     		 */
     		+ "?,?,?,?,?,?,?,?)";
     /*
     * prepareStatement      SQL         conn     ,
     *         ,      execute()          ;
     */
     PreparedStatement psmt = con.prepareStatement(sql);
     //    SQL  , SQL      
     psmt.setString(1, book.getISBN());
     psmt.setString(2, book.getBookName());
     psmt.setFloat(3, book.getPrice());
     psmt.setString(4, book.getAuthor());
     psmt.setString(5, book.getPublishHouse());
     psmt.setString(6, book.getBookCategory());
     
     if (book.getBorrowerName() == null || book.getBorrowerName() == "") {
     	psmt.setString(7, null);
     }
     else {
     	 psmt.setString(7, book.getBorrowerName());
     }
     
     if (book.getBorrowerPhone() == null || book.getBorrowerPhone() == "") {
     	 psmt.setString(8, null); 
     }
     else {
     	psmt.setString(8, book.getBorrowerPhone()); 
     }
     
     //  SQL  
     psmt.execute();
     
     }
    	
     
     /**
     *       
     */
     public void delBook(int ID) throws SQLException{
     	 //           
     Connection con=DBUtil.getConnection();
     String sql="" + 
     "DELETE FROM tb_books "+ 
     //    ?  ,      
     "WHERE ID = ?";
     //    sql  
     PreparedStatement psmt = con.prepareStatement(sql);
     //    SQL  , SQL      
     psmt.setInt(1, ID);
     //   SQL  
     psmt.execute(); 
     }
    	 
     
    	/**
    	 *       
    	 */
     public void changeBook(Book book) throws SQLException{
     	//           
     Connection con=DBUtil.getConnection();
     String sql="update tb_books "
     		+ "set ISBN = ?, book_name = ?, book_price = ?, book_author = ?"
     + ",published_house = ?, book_category = ?, borrower_name = ?, borrower_phone = ? "
     //    ?  ,       
     		+ "where ID = ?";
     //    sql  
     PreparedStatement psmt = con.prepareStatement(sql);
     //    SQL  , SQL      
     psmt.setString(1, book.getISBN());
     psmt.setString(2, book.getBookName());
     psmt.setFloat(3, book.getPrice());
     psmt.setString(4, book.getAuthor());
     psmt.setString(5, book.getPublishHouse());
     psmt.setString(6, book.getBookCategory());
     if (book.getBorrowerName().equals("")) {
     	psmt.setString(7, null);
     }
     else {
     	 psmt.setString(7, book.getBorrowerName());
     }
     
     if (book.getBorrowerPhone().equals("")) {
     	psmt.setString(8, null);
     }
     else {
     	 psmt.setString(8, book.getBorrowerPhone());
     }
     psmt.setInt(9, book.getID());
     //   SQL  
     psmt.execute(); 
     }
     
    	 
     
    	/**
    	 *       
    	 */
    	public List<Book> query() throws Exception{	 
    		Connection con = DBUtil.getConnection();	 
    		Statement stmt = con.createStatement();	 
    		ResultSet rs = stmt.executeQuery("select "
    				// ISBN、  、  、    、   
    				+ "ID, ISBN, book_name, book_author, book_price, published_house, "
    				//    、     、     
    				+ "book_category, borrower_name, borrower_phone "
    				+ "from tb_books");	 
    		List<Book> bookList = new ArrayList<Book>();	 
    		Book book = null;	 
    		//         ,        
    		while (rs.next()){	 
    			book = new Book();	 
    			book.setID(rs.getInt("ID"));
    			book.setISBN(rs.getString("ISBN"));
    			book.setBookName(rs.getString("book_name"));	 
    			book.setAuthor(rs.getString("book_author"));
    			book.setPrice(rs.getFloat("book_price"));
    			book.setPublishHouse(rs.getString("published_house"));
    			book.setBookCategory(rs.getString("book_category"));
    			book.setBorrowerName(rs.getString("borrower_name"));
    			book.setBorrowerPhone(rs.getString("borrower_phone"));
    			bookList.add(book);	 
    		}	 
    		return bookList;	 
    	}
     
     
    	/**
    	 *       
    	 * 
    	 * @return
    	 * 		bookList
    	 */
    	public List<Book> borrowQuery() throws Exception{	 
    		Connection con = DBUtil.getConnection();	 
    		Statement stmt = con.createStatement();	 
    		ResultSet rs = stmt.executeQuery(""
    				// ID、  、     、     
    				+ "SELECT ID, book_name, borrower_name, borrower_phone "
    				+ "FROM tb_books "
    				+ "WHERE borrower_name IS NOT NULL"
    				);	 
    		List<Book> bookList = new ArrayList<Book>();	 
    		Book book = null;	 
    		//         ,        
    		while (rs.next()){	 
    			book = new Book();	 
    			book.setID(rs.getInt("ID"));
    			book.setBookName(rs.getString("book_name"));	 
    			book.setBorrowerName(rs.getString("borrower_name"));
    			book.setBorrowerPhone(rs.getString("borrower_phone"));
    			bookList.add(book);	 
    		}	 
    		return bookList;	 
    	}
     
    	/**
    	 *       ,    
    	 */
     public void returnBook(Book book) throws SQLException{
     	//           
     Connection con=DBUtil.getConnection();
     String sql="UPDATE tb_books "
     		// ISBN、    、  、  
     		+ "SET "
     		//      、     
     		+ "borrower_name = ?, borrower_phone = ? "
     //    ?  ,       
     		+ "WHERE ID = ?";
     //    sql  
     PreparedStatement psmt = con.prepareStatement(sql);
     //    SQL  , SQL      
     psmt.setString(1, book.getBorrowerName());
     psmt.setString(2, book.getBorrowerPhone());
     psmt.setInt(3, book.getID());
     //   SQL  
     psmt.execute(); 
     }
    
    }
    핵심 내용:
    JDBC 는 간단 한 데이터베이스 첨삭 검 사 를 진행한다.
    상세 참조:https://www.jb51.net/article/204374.htm
    Model 클래스(Book 의 경우)
    
    package pers.cyz.model;
     
    /**
     *      ,              get、set  
     * 
     * @author 1651200111    
     */
    public class Book {
    	private int ID;
    	// ISBN 
    	private String ISBN;
    	//     
    	private String bookName;
    	//     
    	private float price;
    	//     
    	private String author;
    	//    
    	private String publishedHouse;
    	//      
    	private String bookCategory;
    	//      
    	private String borrowerName;
    	//      
    	private String borrowerPhone;
     
    	/**
    	 *   ID
    	 */
    	public int getID() {
    		return ID;
    	}
    	/**
    	 *   ID
    	 */
    	public void setID(int iD) {
    		ID = iD;
    	}
    	
    	/**
    	 *   ISBN
    	 */
    	public String getISBN() {
    		return ISBN;
    	}
    	/**
    	 *   ISBN
    	 */
    	public void setISBN(String iSBN) {
    		ISBN = iSBN;
    	}
    	
    	
    	/**
    	 *       
    	 */
    	public String getBookName() {
    		return bookName;
    	}
    	/**
    	 *       
    	 */
    	public void setBookName(String bookName) {
    		this.bookName = bookName;
    	}
    	
    	
    	/**
    	 *       
    	 */
    	public float getPrice() {
    		return price;
    	}
    	/**
    	 *       
    	 */
    	public void setPrice(float price) {
    		this.price = price;
    	}
    	
    	
    	/**
    	 *       
    	 */
    	public String getAuthor() {
    		return author;
    	}
    	/**
    	 *       
    	 */
    	public void setAuthor(String author) {
    		this.author = author;
    	}
    	
    	
    	/**
    	 *      
    	 */
    	public String getPublishHouse() {
    		return publishedHouse;
    	}
    	/**
    	 *      
    	 */
    	public void setPublishHouse(String publishedHouse) {
    		this.publishedHouse = publishedHouse;
    	}
    	
    	
    	/**
    	 *         
    	 */
    	public String getBookCategory() {
    		return bookCategory;
    	}
    	/**
    	 *         
    	 */
    	public void setBookCategory(String bookCategory) {
    		this.bookCategory = bookCategory;
    	}
    	
    	
    	/**
    	 *        
    	 */
    	public String getBorrowerName() {
    		return borrowerName;
    	}
    	/**
    	 *        
    	 */
    	public void setBorrowerName(String borrowerName) {
    		this.borrowerName = borrowerName;
    	}
    	
    	
    	/**
    	 *        
    	 */
    	public String getBorrowerPhone() {
    		return borrowerPhone;
    	}
    	/**
    	 *        
    	 */
    	public void setBorrowerPhone(String borrowerPhone) {
    		this.borrowerPhone = borrowerPhone;
    	}
     
    }
    핵심 내용:
    주로 데이터베이스 대응 표 에 대응 하 는 필드 get,set 방법 입 니 다.
    Eclipse 기술:
    Shift+alt+s->Generate Getters and Setters->Select all->Generate 자동 생 성 set,get 방법

    Controller 클래스(BookAction 의 경우)
    
    package pers.cyz.controller;
     
    import java.util.List;
     
    import javax.swing.JTable;
    import javax.swing.JTextField;
     
    import pers.cyz.dao.BookDao;
    import pers.cyz.model.Book;
     
     
    /**
     *          ,      、    
     * 、     、              
     * 
     * @author 1651200111    
     */
    public class BookAction {
    	
     
     
    	/**
    	 *        
    	 * @return
    	 * 		results
    	 */
    	@SuppressWarnings("rawtypes")
    	public Object[][] initializTable(String[] columnNames) throws Exception{
    		BookDao bookDao = new BookDao();
    		List list = bookDao.query();
    		Object[][] results = new Object[list.size()][columnNames.length];
    		
    		for(int i = 0; i < list.size(); i++) {
    			Book book = (Book)list.get(i);				
    	
    			results[i][0] = book.getID();
    			results[i][1] = book.getBookName();
    			results[i][2] = book.getAuthor();
    			results[i][3] = book.getPrice();
    			results[i][4] = book.getISBN();
    			results[i][5] = book.getPublishHouse();
    			results[i][6] = book.getBookCategory();	
    	
    			String borrowerName = book.getBorrowerName();
    			if (borrowerName == null) {	
    				borrowerName = "";	
    				results[i][7] = borrowerName;
    			}
    			else {	
    				results[i][7] = borrowerName;
    			}
    			
    			String borrowerPhone = book.getBorrowerPhone();	
    			if (borrowerPhone == null) {		
    				borrowerPhone = "";	
    				results[i][8] = borrowerPhone;
    			}	
    			else {	
    				results[i][8] = borrowerPhone;
    			}
    		}	 	
    		return results;
    }
    	
    	
     	/**
     	 *       
     	 */
    	public void addBookInformation (JTextField textFieldISBN, JTextField textFieldName
    			,JTextField textFieldPrice, JTextField textFieldAuthor, JTextField textFieldPublishedHouse
    			, JTextField textFieldBookCategory, JTextField textFieldBorrowName
    			, JTextField textFieldBorrowPhone) throws Exception {
    	
     BookDao bookDao=new BookDao();
     Book book=new Book(); 
     
     book.setISBN(textFieldISBN.getText()); 
     book.setBookName(textFieldName.getText());
     float price = Float.parseFloat(textFieldPrice.getText());
     book.setPrice(price);
     book.setAuthor(textFieldAuthor.getText());
     book.setPublishHouse(textFieldPublishedHouse.getText());
     book.setBookCategory(textFieldBookCategory.getText());
     
     if (textFieldBorrowName.getText() == null ||textFieldBorrowName.getText() == "" ) {
     	book.setBorrowerName(null);
     }
     else {
     	 book.setBorrowerName(textFieldBorrowName.getText());
     }
     
     if (textFieldBorrowPhone.getText() == null || textFieldBorrowPhone.getText() == "") {
     	book.setBorrowerPhone(null);
     }
     else {
     	book.setBorrowerPhone(textFieldBorrowPhone.getText());
     }
     
     //    
     bookDao.addBook(book);
    	}
    	
    	
     
    	/**
    	 *       
    	 */
    	public void delBookInformation (JTable table) throws Exception {
    	
    		int selRow = table.getSelectedRow();
    		int ID = Integer.parseInt(table.getValueAt(selRow, 0).toString());
    		
     BookDao bookDao=new BookDao();
     Book book=new Book(); 
     
     book.setID(ID);
     
     //       
     bookDao.delBook(ID);
    	}
    	
    	
    	/**
    	 *       
    	 */
    	public void changeBookInformation (JTextField textFieldISBN, JTextField textFieldName
    			,JTextField textFieldPrice, JTextField textFieldAuthor, JTextField textFieldPublishedHouse
    			, JTextField textFieldBookCategory, JTextField textFieldBorrowerName
    			, JTextField textFieldBorrowerPhone, JTable table) throws Exception{
    		
     BookDao bookDao=new BookDao();
     Book book=new Book(); 
     
    		int selRow = table.getSelectedRow();
    		int ID = Integer.parseInt(table.getValueAt(selRow, 0).toString());	
     book.setID(ID);
     
     book.setISBN(textFieldISBN.getText()); 
     book.setBookName(textFieldName.getText());
     book.setAuthor(textFieldAuthor.getText());
     float price = Float.parseFloat(textFieldPrice.getText());
     book.setPrice(price);
     book.setPublishHouse(textFieldPublishedHouse.getText());
     book.setBookCategory(textFieldBookCategory.getText());
     book.setBorrowerName(textFieldBorrowerName.getText());
     	book.setBorrowerPhone(textFieldBorrowerPhone.getText());
     
     //    
     bookDao.changeBook(book); 
    	}	
    	
    }
    
    util 클래스(DBUtil 을 예 로 들 면)
    
    package pers.cyz.util;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    /**
     *       ,                  
     * 
     * @author 1651200111    
     */
    public class DBUtil {
    	
    	//        
    	private static final String URL = "jdbc:mysql://127.0.0.1:3306/db_books?"
    			+ "useUnicode = true & serverTimezone = GMT"
    			// MySQL            SSL  
    			+ "& characterEncoding = utf8 & useSSL = false";
    	private static final String NAME = "root";
    	private static final String PASSWORD = "root";
    	private static Connection conn = null;
    	
    	//      (     、           )
    	 static{
    	 try {
    	 //       
    	 Class.forName("com.mysql.cj.jdbc.Driver");
    	 //         
    	 conn = DriverManager.getConnection(URL, NAME, PASSWORD);
    	 } catch (ClassNotFoundException e) {
    	 e.printStackTrace();
    	 } catch (SQLException e) {
    	 e.printStackTrace();
    	 }
    	 }
    	 
    	 //                 	 
    	 public static Connection getConnection(){ 
    		 return conn;	 
    	 }
    	
    }
    util 클래스(BackgroundImage 를 예 로 들 면)
    
    package pers.cyz.util;
     
    import java.awt.Container;
     
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    /**
     *        
     * 
     * @author 1651200111    
     */
    public class BackgroundImage {
    	
    	public BackgroundImage(JFrame frame,Container container,String ImageName) {
    		//         
    		ImageIcon icon= new ImageIcon("res/" + ImageName);	
    		
    		final JLabel labelBackground = new JLabel();
    		ImageIcon iconBookManageSystemBackground = icon;
    		labelBackground.setIcon(iconBookManageSystemBackground);
    		//   label   
    		labelBackground.setBounds(0,0,iconBookManageSystemBackground.getIconWidth()
    				,iconBookManageSystemBackground.getIconHeight());		
    		//                  
    		frame.getLayeredPane().add(labelBackground,new Integer(Integer.MIN_VALUE));
    		//              
    		JPanel panel = (JPanel)container;
    		panel.setOpaque(false);
    		
    	}
    
    }
    핵심 내용:
    그림 라벨 을 창 밑 판 넬 에 두 고 창 을 용기 로 바 꾸 고 용기 판 넬 을 투명 하 게 설정 하면 배경 그림 이 설 치 됩 니 다.그 다음 에 이 용기 에 구성 요 소 를 직접 추가 할 수 있 습 니 다.
    두 개 이상 의 클래스 에 필요 한 코드 세그먼트 를 모두 공공 클래스 에 밀봉 하 였 습 니 다.전체적으로 MVC 3 층 구조 에 따라 조직 되 었 다.
    참고 글:https://www.jb51.net/article/204374.htm
    참고 글:https://www.jb51.net/article/88326.htm
    자바+MySQL 이 도서 관리 시스템(전체 코드)을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자바 my sql 도서 관리 시스템 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기