도서 정보 관리는 독자 정보 관리와 유사합니다. 여기에는 도서 추가 및 책 쿼리 및 수정의 두 부분이 포함됩니다. 책 정보 추가에는 8 개의 정보가 책의 8 가지 정보를 입력해야하며 ISBN 번호는 고유합니다. 구현 프로세스 중에 ISBN을 기본 키로 사용해야합니다. 구현 프로세스를 보자 :
데이터베이스의 책 :
책 추가 과정 :
데이터베이스 컨텐츠 추가 :
책의 쿼리 및 수정 : ISBN, 저자, 출판사, 책 이름 등과 같은 다양한 조건에 따라 쿼리 프로세스를 쿼리 할 수 있으며 모든 책은 기본적으로 목록에 표시됩니다. 쿼리 조건을 입력 한 후 쿼리 결과가 표에 표시됩니다.
이 모듈은 태그 패널을 사용하여 필요한 정보를 쉽게 쿼리 할 수 있습니다. 수정 프로세스가 ISBN 번호를 입력하고 Enter를 눌러 아래의 모든 책 정보를 표시하면 책 정보를 수정 한 후 모든 콘텐츠가 업데이트됩니다.
책 쿼리 :
책 정보 수정 :
다음과 같이 책의 소스 코드 추가 : addbook.java
패키지 pdsu.bbm.view; java.awt.borderlayout import; java.awt.flowlayout 가져 오기; Java.awt.Font 가져 오기; import java.awt.image; import java.awt.event.actionevent; import java.awt.event.actionListener; import java.text.parseexception; import java.text.simpledateformat; import java.util.date; import java.util.iterator; Java.util.list 가져 오기; import javax.swing.buttongroup; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jcombobox; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jtextfield; pdsu.bbm.dao.bookdao 가져 오기; pdsu.bbm.dao.booktypedao 가져 오기; pdsu.bbm.model.book 가져 오기; pdsu.bbm.model.booktype 가져 오기; Public Class AddBook은 JFrame 구현 ActionListener {Private JPanel ContentPane; 개인 jlabel label_1; 개인 jlabel lbll; 개인 jlabel label_2; 개인 jlabel label_3; 개인 jlabel label_4; 개인 jlabel label_5; jpanel centerppanel; Jbutton Button1, Button2, Button3; 개인 jcombobox combobox_1; 이미지 아이콘 = 새로운 ImageIcon ( "image/icon.png"). getImage (); Private Jtextfield isbnfiled; 개인 Jtextfield Publishfield; Private Jtextfield PublishDatefield; Private Jtextfield PublishTime; 개인 Jtextfield UnitPricefield; 개인 Jtextfield BookNamefield; 개인 jtextfield authorFiled; public static void main (String [] args) {new addbook (); } public addbook () {settitle ( "책 정보 추가"); setsize (555, 333); seticonimage (아이콘); setLocationRelativeto (null); settitle ( "책 정보 추가"); setsize (555, 334); setLocationRelativeto (null); setvisible (true); centerppanel = 새로운 jpanel (); centerppanel.setlayout (null); jlabel label1 = new Jlabel ( "isbn :"); label1.setfont (new font ( "宋体", font.plain, 20)); LABEL1.SETBOUNDS (71, 26, 95, 42); centerppanel.add (label1); isbnfiled = new Jtextfield (); ISBNFILED.SETBOUNDS (120, 30, 110, 30); centerppanel.add (isbnfiled); ISBNFILED.SETCOLUMNS (10); Jlabel 레이블 = New Jlabel ( "카테고리 :"); label.setfont (new font ( "Zongyi", font.plain, 20)); label.setbounds (306, 30, 116, 35); centerppanel.add (레이블); label_1 = new Jlabel ( "책 제목 :"); label_1.setfont (new font ( "宋体", font.plain, 20)); label_1. 세트 바운드 (50, 75, 154, 50); centerppanel.add (label_1); lbll = New Jlabel ( "저자 :"); lbll.setfont (new font ( "宋体", font.plain, 20)); lbll.setbounds (306, 75, 137, 50); centerppanel.add (lbll); label_2 = New Jlabel ( "Publisher :"); label_2.setfont (new font ( "宋体", font.plain, 20)); label_2.setbounds (50, 130, 154, 50); centerppanel.add (label_2); label_3 = new Jlabel ( "宋体 :"); label_3.setfont (new font ( "宋体", font.plain, 20)); label_3.setbounds (285, 135, 137, 50); centerppanel.add (label_3); Publishfield = New Jtextfield (); Publishfield.setColumns (10); Publishfield.SetBounds (120, 143, 110, 30); centerppanel.add (publishfield); PublishDatefield = New Jtextfield (); PublishDatefield.setColumns (10); PublishDatefield.SetBounds (380, 143, 120, 30); centerppanel.add (publishdatefield); label_4 = new Jlabel ( "인쇄 수 :"); label_4.setfont (새 글꼴 ( "宋体", font.plain, 20)); label_4. 세트 바운드 (28, 190, 154, 50); centerppanel.add (label_4); PublishTime = New Jtextfield (); PublishTime.setColumns (10); PublishTime.setBounds (120, 203, 110, 30); centerppanel.add (publishtime); label_5 = new Jlabel ( "宋体 :"); label_5.setfont (new font ( "宋体", font.plain, 20)); label_5. 세트 바운드 (305, 194, 84, 42); centerppanel.add (label_5); UnitPricefield = 새로운 jtextfield (); UnitPricefield.SetColumns (10); UnitPricefield.SetBounds (380, 203, 120, 30); centerppanel.add (Unitpricefield); getContentPane (). add (centerppanel, borderlayout.center); BookNamefield = 새로운 jtextfield (); BookNamefield.setColumns (10); BookNamefield.SetBounds (120, 86, 110, 30); centerppanel.add (Booknamefield); authorFiled = new Jtextfield (); authorFiled.SetColumns (10); authorFiled.SetBounds (380, 86, 120, 30); centerppanel.add (authorFiled); 목록 <booktype> rs = booktypedao.selectbooktype (); 반복자 <BookType> iterator = rs.ITerator (); 문자열 [] Alttypename = 새 문자열 [rs.size ()]; int i = 0; while (iterator.hasnext ()) {문자열 typename = iterator.next (). getTypename (); Alttypename [i] = typeName; i ++; } combobox_1 = 새로운 jcombobox (Alttypename); Combobox_1. 세트 바운드 (380, 30, 120, 30); combobox_1.setfont (new font ( "安体", font.plain, 16)); centerppanel.add (combobox_1); buttongroup group = new buttongroup (); JPANEL PANEL2 = New JPanel (); PANIL2.SETLAYOUT (New FlowLayout ()); button1 = new Jbutton ( "add"); button1.setfont (새 글꼴 ( "宋体", font.plain, 20)); button2 = new Jbutton ( "宋体", font.plain, 20)); button3 = new Jbutton ( "Reset"); button3.setfont (new font ( "宋体", font.plain, 20)); PANIL2.ADD (button1); PANIL2.add (button3); PANIL2.add (button2); button1.addactionListener (this); button2.addactionListener (this); button3.addactionListener (this); getContentPane (). Add (Panel2, BorderLayout.South); setvisible (true); } @SuppressWarnings ( "Unused") public void ActionPerformed (ActionEvent e) {if (e.getSource () == button1) {String isbn = isbnfiled.getText (). toString (); String BookName = BookNamefield.getText (); 문자열 awork = authorFiled.getText (); 문자열 selectType = comboBox_1.getSelectedItem (). toString (); String Publish = publishfield.getText (); String PublishDate = PublishDatefield.getText (); 문자열 시간 = publishtime.getText (). trim (); 문자열 price = initpricefield.getText (). trim (); if (isbn.equals ( "") || bookName.equals ( "") || author.equals ( "") || selectType.equals ( ") || publish.equals (" ") || publishdate.equals (" ") || time.equals (" ") || price.equals (")) {joptionpane.shomesedialog ( ") 반품; } else {booktype bt = new BookType (); 책 책 = 새 책 (); book.setisbn (isbn); book.setbookName (BookName); Book.setAuthor (저자); bt.settypename (selecttype); int m = 0; 목록 <BookType> list = BookTyPedao .SelectIdByTyPename (selectType); 반복자 <BookType> item = list.iterator (); while (ite.hasnext ()) {m = item.next (). getId (); } book.settypeid (m + ""); book.setpublish (게시); try {book.setpublishtime (integer.parseint (time)); book.setunitprice (Integer.parseint (price)); } catch (numberformatexception e1) {e1.printstacktrace (); } simpledateformat sdf = new simpledateformat ( "yyyy-mm-dd"); 날짜 regdate = null; try {regdate = sdf.parse (publishdate); } catch (parseException e1) {joptionpane.showmessagedialog ( "올바른 날짜를 입력하십시오"); publishdatefield.settext ( ""); } book.setPublishDate (regdate); if (regdate == null) 반환; if (bookdao.selectbookbyisbn (isbn)! = null) {joptionpane.showmessagedialog (이것은 "이것은 이미 존재합니다"); 반품; } else if (bookdao.insertbook (book)! = 0) {joptionpane.showmessagedialog ( ","성공적으로 추가 "); } else joptionpane.showmessagedialog (이것은 "추가 실패"); }} if (e.getSource () == button3) {isbnfiled.settext ( ""); BookNamefield.settext ( ""); authorfield.settext ( ""); Publishfield.settext ( ""); publishdatefield.settext ( ""); publishtime.settext ( ""); UnitPricefield.settext ( ""); UnitPricefield.settext ( ""); } if (e.getSource () == button2) {dispose (); New Mainwindow (); }}} 책 쿼리 및 소스 코드 수정 : BookSelectandModify.java
패키지 pdsu.bbm.view; java.awt.borderlayout import; java.awt.dimension import; Java.awt.Font 가져 오기; import java.awt.gridlayout; import java.awt.image; import java.awt.event.actionevent; import java.awt.event.actionListener; import java.text.simpledateformat; java.util.arraylist 가져 오기; import java.util.date; import java.util.iterator; Java.util.list 가져 오기; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jcombobox; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.jtabbedpane; import javax.swing.jtable; import javax.swing.jtextfield; import javax.swing.swingconstants; import javax.swing.table.tablemodel; pdsu.bbm.dao.bookdao 가져 오기; pdsu.bbm.dao.booktypedao 가져 오기; pdsu.bbm.model.book 가져 오기; pdsu.bbm.model.booktype 가져 오기; Public Class BookselectandModify 확장 jframe 구현 ActionListener {// SERIAL NUMBER STATIC 최종 최종 SerialVersionUID = 1L을 설정합니다. 개인 jtabbedpane jtabbedpane; // 태그 패널 // selectJP 쿼리 패널 select_conditionjp 드롭 다운 목록 패널 select_resultjp 결과 버튼 패널 updatejp 수정 패널 // updatejp 수정 패널, bookjp middle panel buttonjp2 버튼 패널 개인 jpanel selectjp, select_resultjp, buttonjp1, bookjp, buttonjp2; // private jtextfield selectjtf, isbnjtf, booknamejtf, authorjtf, printtimejtf, publishjtf, publishdatejtf, unitpricejtf; 개인 jlabel isbnjl, booknamejl, authorjl, categoryjl, printtimejl, publishjl, publishdatejl, unitpricejl; // 집중하다! private jtable jtable; // 테이블 정의 개인 jcombobox ChoiceJcb, booktypejcb; 개인 jscrollpane jscrollpane; private jbutton selectjb, exitjb, updatejb, resetjb; // 쿼리 버튼, 종료 버튼, 버튼 수정, 닫기 개인 테이블 모드 getSelect; private String [] title = { "isbn", "book sequence", "book name", "author", "publisher", "date of publication", "prints of prints", "단위 가격"}; 이미지 아이콘 = 새로운 ImageIcon ( "image/icon.png"). getImage (); publicselectandmodify () {super (); seticonimage (아이콘); settitle ( "책 쿼리 및 수정"); 세트 바운드 (100, 100, 555, 400); setLocationRelativeto (null); // jtabbedpane tabjtabbedpane = new jtabbedpane (); 추가 (jtabbedpane); selectJP = new jpanel (); selectJP.setLayout (new BorderLayout ()); jtabbedpane.add ( "Book Information Query", selectJP); // 쿼리 조건 패널 select_conditionjp = new jpanel (); ChoiceJcb = 새로운 jcombobox (); 문자열 배열 [] = { "isbn", "book name", "book sequence", "author", "publisher", "all"}; // (int i = 0; i <array.length; i ++) {chookesjcb.additem (배열 [i]); } select_conditionjp.add (ChoiceJcb); selectJtf = new Jtextfield (20); select_conditionjp.add (selectJtf); selectjp.add (select_conditionjp, borderlayout.north); // 쿼리 결과 패널 select_resultjp = new jpanel (); Bookdao dao = New Bookdao (); 목록 <book> list = dao.selectbook (); jtable = new Jtable (getSelect (list), 제목); //! 테이블 크기를 변경하지 않은 jtable.setAutoResizemode (jtable.auto_resize_off); //! jscrollpane = new JScrollpane (jtable); // 스크롤 패널에 테이블을 추가 // 스크롤 패널 테두리 표시 jscrollpane.setpreferredsize (450, 170)); sect_resultjp.add (jscrollpane); selectjp.add (select_resultjp, borderlayout.center); // 쿼리 버튼 패널 버튼 jp1 = new jpanel (); selectJB = new JButton ( "query"); selectJB.setFont (새 글꼴 ( "Zongyi", font.plain, 20)); selectjb.addactionListener (this); buttonjp1.add (selectJB); exitjb = new Jbutton ( "종료"); exitjb.setfont (new font ( "Zongyi", font.plain, 20)); exitjb.addactionListener (this); buttonjp1.add (exitjb); selectjp.add (buttonjp1, borderlayout.south); // 정보 수정 페이지 updatejp = new jpanel (); UpdateJP.SetLayout (New BorderLayout ()); jtabbedpane.addtab ( "도서 정보 수정", UpdateJP); bookjp = new jpanel (); 최종 GridLayout GridLayout = New GridLayout (8, 2); // 경계 사이의 거리를 설정 gridlayout.setvgap (8); gridlayout.sethgap (8); bookjp.setlayout (gridlayout); isbnjl = new Jlabel ( "isbn :"); ISBNJL.SETFONT (New Font ( "宋体", font.plain, 20)); ISBNJL.SETHORIZONTALALIGNMENT (SwingConstants.Center); bookjp.add (isbnjl); ISBNJTF = New Jtextfield (20); isbnjtf.addactionListener (this); bookjp.add (isbnjtf); CategoryJl = New Jlabel ( "카테고리 :"); CategoryJl.SetFont (New Font ( "宋体", font.plain, 20)); CategoryJl.Sethorizontalalignment (SwingConstants.center); bookjp.add (categoryjl); // 드롭 다운 목록 목록 <BookType> list1 = booktypedao.selectbooktype (); iterator <booktype> it = list1.iterator (); 문자열 ty [] = 새 문자열 [list1.size ()]; int i = 0; BookTyPejcb = 새로운 jcombobox (); while (it.hasnext ()) {ty [i] = it.next (). gettypename (); booktypejcb.additem (ty [i]); i ++; } bookjp.add (booktypejcb); BookNameJl = New Jlabel ( "책 제목 :"); booknamejl.setfont (new font ( "宋体", font.plain, 20)); BookNameJl.Sethorizontalalignment (SwingConstants.center); bookjp.add (booknamejl); booknamejtf = new Jtextfield (); BookNamejtf.setColumns (20); bookjp.add (booknamejtf); authorjl = new Jlabel ( "저자 :"); authorjl.setfont (새 글꼴 ( "宋体", font.plain, 20)); authorjl.sethorizontalalignment (swingconstants.center); bookjp.add (authorjl); authorjtf = 새로운 jtextfield (); authorjtf.setColumns (20); bookjp.add (authorjtf); PublishJl = New Jlabel ( "Publisher :"); publishjl.setfont (new font ( "宋体", font.plain, 20)); publishjl.sethorizontalalignment (swingconstants.center); bookjp.add (publishjl); publishjtf = new jtextfield (); bookjp.add (publishjtf); PublishDateJl = New Jlabel ( "게시 날짜 :"); publishdatejl.setfont (new font ( "宋体", font.plain, 20)); publishdatejl.sethorizontalalignment (swingconstants.center); bookjp.add (publishdatejl); publishdatejtf = new jtextfield (); publishdatejtf.sethorizontalalignment (swingconstants.left); bookjp.add (publishdatejtf); printtimejl = new Jlabel ( "인쇄 수 :"); printtimejl.setfont (new font ( "宋体", font.plain, 20)); printtimejl.sethorizontalalignment (swingconstants.center); bookjp.add (printtimejl); printtimejtf = new jtextfield (); bookjp.add (printtimejtf); UnitPriceJl = New Jlabel ( "단가 :"); UnitPriceJl.SetFont (New Font ( "宋体", font.plain, 20)); UnitPriceJl.Sethorizontalalignment (SwingConstants.Center); bookjp.add (unitpricejl); unitpricejtf = new jtextfield (); bookjp.add (unitpricejtf); // 버튼 패널 // 버튼 패널 디자인 Buttonjp2 = new JPanel (); UpdateJB = New JButton ( "Modify"); UpdateJB.SetFont (New Font ( "Songyi", font.plain, 20)); updatejb.addactionListener (this); Resetjb = New Jbutton ( "Close"); Resetjb.setfont (New Font ( "Zongyi", font.plain, 20)); resetjb.addactionListener (this); buttonjp2.add (updatejb); buttonjp2.add (resetjb); UpdateJp.add (BookJP, BorderLayout.Center); UpdateJp.add (buttonjp2, borderlayout.south); setvisible (true); setDefaultCloseOperation (jframe.exit_on_close); } // 쿼리 테이블을 패널 비공개 개체 [] [] getSelect (list <book> list)에 추가합니다. {// todo 자동 생성 메소드 스터브 개체 [] [] 객체 = new Object [list.size ()] [title.length]; for (int i = 0; i <list.size (); i ++) {book book = list.get (i); 개체 [i] [0] = book.getisbn (); Objects [1] = book.getTypeid (); // 서적 시퀀스 개체 [i] [2] = book.getBookName (); // 책 이름 객체 [i] [3] = book.getAuthor (); // Book Author Objects [i] [4] = book.getPublish (// publisher dates [5] = book.getPublishdate () 개체 [i] [6] = book.getPublishTime (); // 인쇄 객체 수 [i] [7] = book.getUnitPrice (); // 단위 가격} 개체를 반환합니다. } public void actionPerformed (actionEvent e) {// todo 자동 생성 메소드 스터브 if (e.getSource () == isbnjtf) {String isbn = isbnjtf.getText (); 문자열 typename = null; 문자열 id = bookdao.selectbookbyisbn (isbn) .gettypeid (); typename = booktypedao.selectbyid (id); System.out.println (typename); booktypejcb.setSelectedItem (typename); booknamejtf.settext (bookdao.selectbookbyisbn (isbn) .getBookName ()); authorjtf.settext (bookdao.selectbookbyisbn (isbn) .getAuthor ()); publishjtf.settext (bookdao.selectbookbyisbn (isbn) .getPublish ()); publishdatejtf.settext (bookdao.selectbookbyisbn (isbn) .getPublishDate ()); publishdatejtf.settext (bookdao.selectbookbyisbn (isbn) .getPublishDate ()+""); printtimejtf.settext (bookdao.selectbookbyisbn (isbn) .getPublishTime ()+""); initpricejtf.settext (bookdao.selectbookbyisbn (isbn) .getUnitPrice ()+""); } if (e.getSource () == SelectJB) {// int r = ChoiceJcb.getSelectedIngex (); if (r == 0) {문자열 이름 = selectJtf.getText (). trim (); // 선형 테이블 유형 목록에 캐스트 <Book> List = New ArrayList <Book> (); Book Book = BookDao.SelectBookByIsBn (이름); if (book == null) {joptionpane.showmessagedialog (이것은 "이 인코딩이 존재하지 않습니다!"); } else {list.add (book); Object [] [] data = getSelect (list); jtable = new Jtable (데이터, 제목); jtable.getColumnModel (). getColumn (4) .SetPreferRedWidth (175); jtable.setAutizemode (jtable.auto_resize_off); jscrollpane.setViewPortView (jtable); }} if (r == 1) {// 책 이름 문자열 이름 = selectJtf.getText (). toString (); 목록 <book> list = bookdao.selectbookbyName (이름); // 선형 테이블이 비어있는 경우 (list == null || list.size () == 0) {joptionpane.showMessagedIalog ( "책이 존재하지 않습니다!"); } else {object [] [] data = getSelect (list); jtable = new Jtable (데이터, 제목); tianjia (); }} if (r == 2) {// 책 시퀀스 문자열 이름 = selectJtf.getText (). toString (); 목록 <book> list = bookdao.selectbookbytype (이름); // 선형 테이블이 비어있는 경우 (list == null || list.size () == 0) {joptionpane.showMessagedIalog ( "책이 존재하지 않습니다!"); } else {object [] [] data = getSelect (list); jtable = new Jtable (데이터, 제목); tianjia (); }} if (r == 3) {// 저자 이름에 따라 문자열 찾기 = selectJtf.getText (). toString (); // 목록 검색 <book> list = bookdao.selectbookbyauthor (이름); // 선형 테이블이 비어있는 경우 (list == null || list.size () == 0) {joptionpane.showmessagedialog ( "이 책이 존재하지 않습니다!"); } else {object [] [] data = getSelect (list); jtable = new Jtable (데이터, 제목); tianjia (); }} if (r == 4) {// 게시자 이름에 따라 문자열을 검색 = selectJtf.getText (). toString (); 목록 <book> list = bookdao.selectbookbypublish (이름); if (list == null || list.size () == 0) {joptionpane.showmessagedialog ( "이 책이 존재하지 않습니다!"); } else {object [] [] data = getSelect (list); jtable = new Jtable (데이터, 제목); tianjia (); }} if (r == 5) {list <book> list = bookdao.selectbook (); }} if (e.getSource () == UpdateJB) {String isbn = isbnjtf.getText (). trim (); 문자열 typename = ((String) booktypejcb.getSelectedItem ()). trim (); 문자열 id = booktypedao.selectbytypename (typename); String BookName = BookNamejtf.getText (); 문자열 author = authorjtf.getText (); 문자열 publish = publishjtf.getText (); String PublishDate = publishdatejtf.getText (); simpledateformat sdf = new simpledateformat ( "yyyy-mm-dd"); 날짜 regdate = null; try {regdate = sdf.parse (publishdate); } catch (예외 e2) {e2.printstacktrace (); joptionpane.showmessagedialog (이것은 "올바른 날짜 형식을 입력하십시오!"); } if (regdate == null) 반환; int publishtime = integer.parseint (printtimejtf.getText ()); int initprice = integer.parseint (initpricejtf.gettext ()); // 캡슐화 객체 책 책 = 새 책 (); book.setisbn (isbn); book.settypeid (id); book.setbookName (BookName); Book.setAuthor (저자); book.setpublish (게시); book.setpublishdate (regdate); book.setpublishtime (publishtime); book.setunitPrice (UnitPrice); BOOK.SETTYPENAME (typeName); int result = bookdao.update (Book); list <book> list2 = new ArrayList <Book> (); list2.add (book); // system.out.println (list2); if (result == 1) {joptionpane.showmessagedialog (이것은 "성공적으로 수정되었습니다!"); BookDao BK = New BookDao (); 목록 <book> list = bk.selectbook (); jtable = new Jtable (getSelect (list), 제목); tianjia (); } else {joptionpane.showmessagedialog (이것은 "수정 실패!"); }} if (e.getSource () == resetjb) {dispose (); New Mainwindow (); } if (e.getSource () == exitjb) {dispose (); New Mainwindow (); }} private void tianjia () {jtable.getColumnModel (). getColumn (4) .SetPreferRedWidth (175); jtable.setAutizemode (jtable.auto_resize_off); jscrollpane.setViewPortView (jtable); } public static void main (String [] args) {new BookSelectandModify (); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.