자바+MySQL 도서 관리 시스템 구현(전체 코드)
링크:https://pan.baidu.com/s/1E6BhEaHMa6Wch5yf6YAjOA추출 코드:vnrx
유용 하 다 고 생각 되면 좋아요~
기능
관리자 로그 인
도서 대출 정보 관리
도서 정보 관리
관리자 가 비밀 번 호 를 변경 합 니 다시스템 종료
도구
로그 인 화면:
주 인터페이스:
도서 대출 관리:
개인 서고 관리:
비밀번호 변경:
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 도서 관리 시스템 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.