이 기사의 목적은 라이브러리 관리 시스템을 통해 데이터베이스 프로그래밍 기술을 마스터하고 데이터베이스에 올바르게 연결하고 데이터베이스에서 정보를 쿼리, 삽입, 삭제 및 수정할 수있는 것입니다.
내용 : 제목, 저자, 출판사, 출판 날짜, 책 번호 및 가격 분야를 포함하여 데이터베이스에서 서지 정보 테이블을 만듭니다. 참고 문헌 관리를위한 GUI 인터페이스를 설계하십시오. 이 인터페이스에는 4 개의 탭, 즉 쿼리, 삽입, 삭제 및 수정이 있습니다. 쿼리 탭을 클릭하고 표시되는 인터페이스에는 책 제목, 저자, 게시자, 책 번호, 버튼 및 읽기 전용 텍스트 영역의 네 개의 텍스트 상자가 포함됩니다. 텍스트 상자의 내용이 비어있을 수 있습니다. 해당 쿼리 정보를 입력 한 후 (예 : 책 제목에 따라 제목 만 입력 할 수 있음) 인터페이스의 "쿼리"버튼을 클릭하여 인터페이스 아래 텍스트 영역의 기준을 충족하는 참고 문헌의 자세한 정보를 표시하십시오. 삽입 탭을 클릭하고 표시되는 인터페이스에는 책 제목, 저자, 출판사, 출판 날짜, 책 번호, 가격 텍스트 상자 및 버튼이 포함되어 있습니다. 텍스트 상자에 정보를 입력 한 후 "삽입"버튼을 클릭하면 서지 정보가 데이터베이스 테이블에 삽입됩니다. 삭제 탭을 클릭하십시오. 제목에 대한 텍스트 상자와 인터페이스에 나타나는 버튼이 있습니다. 제목을 입력 한 후 "삭제"버튼을 클릭하십시오. 서지 정보는 데이터베이스 테이블에서 삭제됩니다. 수정 탭을 클릭하고 표시되는 인터페이스를 클릭하십시오. 책 제목, 저자, 출판사, 출판 날짜, 책 번호, 가격 텍스트 상자 및 버튼이 포함됩니다. 입력 된 책 제목이 존재해야합니다. 그렇지 않으면 메시지 상자가 나타나서 오류 메시지가 표시됩니다. 정보를 입력 한 후 "수정"버튼을 클릭하면 데이터베이스 테이블의 해당 서지 정보가 새 값으로 수정됩니다.
소스 코드 :
BookInfo.java
* 프로젝트 이름 : 도서 관리 시스템 * 버전 : 1.0 * 제작자 : Zhang Junqiang * 생성 시간 : 2016/5/26 * */패키지 라이브러리 시스템; java.awt.*; javax.swing을 가져옵니다.*; import java.awt.event.*; Java.sql.*; @SuppressWarnings ( "Serial") 공개 클래스 BookInfo는 JFrame Ampess ActionListener {// 주인공 직원의 컨트롤 개인 Jlabel inputlabel; 개인 jtextfield inputtext; 개인 Jbutton SearchBut; 개인 jtable 책정; 개인 jscrollpane bookscroll; 개인 JBUTTON ADDBUT; 개인 JBUTTON MONDIFYBUT; 개인 JBUTTON DELETEBUT; 개인 JBUTTON RESHREACBUT; 개인 BookTableModel BookTableModel; public static void main (string [] args)은 sqlexception {// todo 자동 생성 메소드 스터브 bookinfo bookinfo = new BookInfo (); BookInfo.SetDefaultCloseOperation (jframe.exit_on_close); BookInfo.SetBounds (350, 150, 600, 400); BookInfo.SetVisible (true); // bookInfo.importsql (); // data bookinfo.setminwindowlayout (); // set data} public bookinfo () sqlexception {// 기본 인터페이스에서 컨트롤 생성 inputlabel = new jlabel ( "책 제목을 입력하십시오 :"); 입력 텍스트 = 새로운 jtextfield (10); SearchBut = New JButton ( "Query"); BookTableModel = New BookTableModel (); booktable = new Jtable (BookTableModel); bookscroll = 새로운 jscrollpane (booktable); AddBut = New JButton ( "add"); modifybut = new Jbutton ( "modify"); deletebut = new Jbutton ( "delete"); refreshbut = new Jbutton ( "새로 고침"); SearchBut.AdDactionListener (this); addBut.AdDactionListener (this); refreshbut.addactionListener (this); modifybut.addactionListener (this); deletebut.addactionListener (this); } void setMinWindowLayout () {// 메인 인터페이스 레이아웃 컨테이너 con1 = new Container (); con1.setLayout (new flowLayout ()); con1.add (inputlabel); con1.add (inputtext); con1.add (searchbut); con1.add (refreshbut); 컨테이너 con2 = 새로운 컨테이너 (); Con2.SetLayout (New FlowLayout ()); con2.add (addbut); con2.add (modifybut); con2.add (deletebut); this.setLayout (New BorderLayout ()); this.add (con1, borderlayout.north); this.add (Bookscroll, BorderLayout.Center); this.add (Con2, BorderLayout.South); this.validate (); } @Override public void actionPerformed (actionEvent e) {// todo 자동 생성 메소드 스텁 if (e.getSource () == searchBut) {if (! this.inputtext.getText (). String sql = "select * from book_info where book_name = '"+bookname+"'"; try {booktablemodel = new BookTableModel (SQL); BookTable.SetModel (BookTableModel); } catch (sqlexception e1) {// todo 자동 생성 캐치 블록 e1.printstacktrace (); }} else {joptionpane.showmessagedialog (이것은 "입력이 비어있을 수 없다", "프롬프트", joptionpane.plain_message); }} else if (e.getSource () == addBut) {@suppresswarnings ( "Unused") addBookDialog addWin = new AddBookDialog (this, "Add Book", True); this.refreshtable (); } else if (e.getSource () == refreshBut) {this.refreshtable (); } else if (e.getSource () == deleteBut) {int rownum = booktable.getSelectedRow (); if (rownum <0 || rownum> booktable.getrowcount ()) {joptionpane.showmessagedialog (this, "selected", "tip", joptionpane.plain_message); } else {//system.out.print(BookName); int n = joptionpane.showconfirmdialog (null, "삭제 확인?", "삭제 상자 확인 확인", joptionpane.yes_no_option); if (n == joptionpane.yes_option) {String booknum = (String) booktable.getValueat (rownum, 0); 문자열 sql = "book_info에서 삭제 된 book_num = '"+booknum+"'; BookTableModel.deletebook (SQL); this.refreshtable (); joptionpane.showmessagedialog (this, "deletesuccess", "tip", joptionpane.plain_message); } else if (n == joptionpane.no_option) {return; }}} else if (e.getSource () == modifyBut) {booktable.setModel (BookTableModel); int rownum = booktable.getSelectedRow (); if (rownum <0 || rownum> booktable.getrowcount ()) {joptionpane.showmessagedialog (this, "uncheck", "prompt", joptionpane.plain_message); } else {@suppresswarnings ( "Unused") modifybook modifywin = new modifybook (이, "수정 정보", true, booktablemodel, rownum); this.refreshtable (); }}} public void refreshtable () {BookTableModel SearchBook; try {searchbook = new BookTableModel ( "select * from book_info"); BookTable.SetModel (SearchBook); BookTableModel = SearchBook; } catch (sqlexception e1) {// todo 자동 생성 캐치 블록 e1.printstacktrace (); }}} BookTableModel.java
패키지 라이브러리 시스템; Java.sql.*; java.util.*; /** 책 테이블 모델**/ import javax.swing.table.*; @SuppressWarnings ( "Serial") 공개 클래스 BookTableModel은 AbstractTableModel을 확장합니다. {// 테이블 개인 벡터의 요소 <vector <string>> rowdata; 개인 벡터 <string> colname; // 데이터베이스 비공개 준비 상태 stmt; 개인 결과 세트 결과; public booktablemodel (String SQL)은 sqlexception {this.initdata (sql); } public booktableModel ()는 sqlexception {this.initData ( "select * from book_info"); } public void initData (String SQL)는 sqlexception {setrowdata (new vector <vector <string>> ()); setcolname (new vector <string> ()); getColName (). add ( "Book No."); getColName (). add ( "책 제목"); getColName (). add ( "책 제목"); getColName (). add ( "author"); getColName (). add ( "Publisher"); getColName (). add ( "게시 시간"); getColName (). add ( "Price"); / * * 데이터베이스 가져 오기 */ try {class.forname ( "com.mysql.jdbc.driver"); } catch (classNotFoundException e) {// TODO 자동 생성 캐치 블록 E.PrintStackTrace (); } string url = "jdbc : mysql : // localhost : 3306/device"; 문자열 사용자 = "루트"; 문자열 암호 = "ZJQ1314520"; Connection Con = DriverManager.getConnection (URL, 사용자, 암호); stmt = con.preparestatement (SQL); 결과 = stmt.executeQuery (); importSql (); } void importSql ()는 sqlexception을 던지려고 {// todo 자동 생성 메소드 스터브 @suppresswarnings ( "Unused") boolean signnull = true; while (result.next ()) {vector <string> item = new vector <string> (); for (int i = 1; i <7; i ++) {item.add (result.getString (i)); } getRowData (). add (항목); signnull = false; } result.close (); } @override public int getColumnCount () {// 열 수 가져옵니다. } @override public int getRowCount () {// 행의 수를 가져옵니다. } @override public int getRowCount () {// 행의 수를 가져옵니다. } @override public object getValueat (int row, int col) {// 행의 데이터 가져옵니다. // 자동 생성 메소드 스텁 리턴 (this.rowdata.get (row)). get (col); } @override public string getColumnName (int column) {// todo 자동 생성 메소드 스터브 return this.colname.get (column); } public vector <vector <string>> getRowData () {return rowData; } public void setrowdata (vector <vector <string >> rowdata) {this.rowdata = rowdata; } public vector <string> getColName () {return colname; } public void setcolname (vector <string> colname) {this.colname = colname; } public void addBook (String SQL) {try {stmt.executeUpdate (SQL); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } // initData ( "select * from book_info"); } public void deletebook (String SQL) {try {stmt.executeUpdate (SQL); } catch (sqlexception e1) {// todo 자동 생성 캐치 블록 e1.printstacktrace (); }}} AddBookDialog.java
패키지 라이브러리 시스템; java.awt.*; import java.awt.event.*; java.sql.sqlexception 가져 오기; javax.swing을 가져옵니다.*; @SuppressWarnings ( "Serial") 공개 클래스 AddBookDialog 확장 jdialog empless actionListener {private jlabel booknumlabel; 개인 Jlabel Booknamelabel; 개인 jlabel bookwriterlabel; 개인 jlabel bookpublishlabel; 개인 Jlabel BookPricelabel; 개인 jlabel booktimelabel; 개인 Jtextfield BookNumtext; 개인 jtextfield booknametext; Private Jtextfield BookWriterText; Private Jtextfield BookPublishText; 개인 Jtextfield BookPricetext; 개인 jtextfield booktimetext; 개인 JBUTTON 제출부; 개인 JBUTTON CANCELBUT; public addBookDialog (프레임 소유자, 문자열 제목, 부울 모델) {// 부모 창, 창 이름, 모드 창 슈퍼 (소유자, 제목, 모델); Booknumlabel = New Jlabel ( "책 번호 :"); Booknamelabel = New Jlabel ( "책 제목 :"); BookwriterLabel = New Jlabel ( "저자 :"); BookPublishLabel = New Jlabel ( "Publisher :"); BookPricelabel = New Jlabel ( "가격 :"); BookTimelabel = New Jlabel ( "게시 시간 :"); BookNumText = New Jtextfield (10); Booknametext = New Jtextfield (10); BookWriterText = New Jtextfield (10); BookPublishText = New Jtextfield (10); BookPricetext = New Jtextfield (10); booktimetext = new Jtextfield (9); 제출부 = 새로운 JBUTTON ( "취소"); cancelbut = new Jbutton ( "취소"); admithbut.addactionListener (this); cancelbut.addactionListener (this); this.setbounds (350,150,400,260); this.setResizable (false); this.setLayout (New BorderLayout ()); initlayout (); } public void initlayout () {container [] con1 = 새로운 컨테이너 [6]; for (int i = 0; i <6; i ++) con1 [i] = 새로운 컨테이너 (); con1 [0] .setLayout (new flowLayout ()); con1 [0] .add (Booknumlabel); con1 [0] .add (booknumtext); con1 [1] .setLayout (new flowLayout ()); con1 [1] .add (Booknamelabel); con1 [1] .add (booknametext); Con1 [2] .setLayout (New FlowLayout ()); con1 [2] .add (BookwriterLabel); con1 [2] .add (bookwritertext); Con1 [3] .setLayout (New FlowLayout ()); con1 [3] .add (bookpublishlabel); con1 [3] .add (bookpublishtext); Con1 [4] .setLayout (New FlowLayout ()); Con1 [4] .add (BookPricelabel); con1 [4] .add (bookpricetext); Con1 [5] .setLayout (New FlowLayout ()); con1 [5] .add (Booktimelabel); con1 [5] .add (booktimetext); 컨테이너 con2 = 새로운 컨테이너 (); Con2.SetLayout (New BorderLayout ()); con2.add (con1 [0], Borderlayout.north); con2.add (con1 [1], BorderLayout.Center); con2.add (con1 [2], Borderlayout.south); 컨테이너 con3 = 새로운 컨테이너 (); con3.setLayout (New BorderLayout ()); con3.add (con1 [3], Borderlayout.north); con3.add (con1 [4], BorderLayout.Center); con3.add (con1 [5], Borderlayout.south); 컨테이너 con4 = 새로운 컨테이너 (); con4.setLayout (new flowLayout ()); con4.add (제출 부); con4.add (cancelbut); 컨테이너 con5 = 새로운 컨테이너 (); con5.setlayout (New BorderLayout ()); con5.add (con2, borderlayout.north); con5.add (con3, borderlayout.center); con5.add (Con4, BorderLayout.South); this.add (Con5, BorderLayout.Center); this.validate (); this.set -Visible (true); } @override public void actionPerformed (actionEvent e) {// todo 자동 생성 메소드 스터브 if (e.getSource () == 제출부) {if (booknumtext.getText (). bookpricetext.getText (). joptionpane.showmessagedialog (이것은 "입력이 비어있을 수 없다", "프롬프트", joptionpane.plain_message); } else {//system.out.println("input success "); 문자열 sql = "삽입" + "book_info (book_num, book_name, book_writer, publish_house, book_price, publish_time)" + "" "+booknumtext.getText ()+" ',', ' "+booknametext.getText ()+"', ' "+bookwritertext.getText ()+"', ' "+bookpublishText.getText ()+"' ','+bookPricetext.getText ()+" '+timeText.getText.getTettext ('+bookwritext.getText ()+"; BookTableModel은 BooktableModel (SQL) {// Tody Auto-Generated Catchtrace () Joptionpane.showmessage (this.); } if (e.getSource () == cancelBut) {this.setVisible (false}}}; modifybook.java
패키지 라이브러리 시스템; java.awt.*; import java.awt.event.*; java.sql.sqlexception 가져 오기; javax.swing을 가져옵니다.*; @SuppressWarnings ( "Serial") Public Class ModifyBook 확장 jdialog emplements ActionListener {private jlabel booknumlabel; 개인 Jlabel Booknamelabel; 개인 jlabel bookwriterlabel; 개인 jlabel bookpublishlabel; 개인 Jlabel BookPricelabel; 개인 jlabel booktimelabel; 개인 Jtextfield BookNumtext; 개인 jtextfield booknametext; Private Jtextfield BookWriterText; Private Jtextfield BookPublishText; 개인 Jtextfield BookPricetext; 개인 jtextfield booktimetext; 개인 JBUTTON 제출부; 개인 JBUTTON CANCELBUT; 개인 BookTableModel BookModel; 개인 int rownum; Public Modifybook (프레임 소유자, 문자열 제목, 부울 유형, BookTableModel 모델, int row) {Super (소유자, 제목, 유형); BookModel = 모델; rownum = 행; Booknumlabel = New Jlabel ( "책 번호 :"); Booknamelabel = New Jlabel ( "책 제목 :"); BookwriterLabel = New Jlabel ( "저자 :"); BookPublishLabel = New Jlabel ( "Publisher :"); BookPricelabel = New Jlabel ( "가격 :"); BookTimelabel = New Jlabel ( "게시 시간 :"); BookNumText = New Jtextfield (10); Booknametext = New Jtextfield (10); BookWriterText = New Jtextfield (10); BookPublishText = New Jtextfield (10); BookPricetext = New Jtextfield (10); booktimetext = new Jtextfield (9); 제출부 = 새로운 JBUTTON ( "수정 확인"); cancelbut = new Jbutton ( "취소"); admithbut.addactionListener (this); cancelbut.addactionListener (this); this.setbounds (350,150,400,260); this.setResizable (false); this.setLayout (New BorderLayout ()); this.setValue (); this.initlayout (); } public void initlayout () {container [] con1 = 새로운 컨테이너 [6]; for (int i = 0; i <6; i ++) con1 [i] = 새로운 컨테이너 (); con1 [0] .setLayout (new flowLayout ()); con1 [0] .add (Booknumlabel); con1 [0] .add (booknumtext); con1 [1] .setLayout (new flowLayout ()); con1 [1] .add (Booknamelabel); con1 [1] .add (booknametext); Con1 [2] .setLayout (New FlowLayout ()); con1 [2] .add (BookwriterLabel); con1 [2] .add (bookwritertext); Con1 [3] .setLayout (New FlowLayout ()); con1 [3] .add (bookpublishlabel); con1 [3] .add (bookpublishtext); Con1 [4] .setLayout (New FlowLayout ()); Con1 [4] .add (BookPricelabel); con1 [4] .add (bookpricetext); Con1 [5] .setLayout (New FlowLayout ()); con1 [5] .add (Booktimelabel); con1 [5] .add (booktimetext); 컨테이너 con2 = 새로운 컨테이너 (); Con2.SetLayout (New BorderLayout ()); con2.add (con1 [0], Borderlayout.north); con2.add (con1 [1], BorderLayout.Center); con2.add (con1 [2], Borderlayout.south); 컨테이너 con3 = 새로운 컨테이너 (); con3.setLayout (New BorderLayout ()); con3.add (con1 [3], Borderlayout.north); con3.add (con1 [4], BorderLayout.Center); con3.add (con1 [5], Borderlayout.south); 컨테이너 con4 = 새로운 컨테이너 (); con4.setLayout (new flowLayout ()); con4.add (제출 부); con4.add (cancelbut); 컨테이너 con5 = 새로운 컨테이너 (); con5.setlayout (New BorderLayout ()); con5.add (con2, borderlayout.north); con5.add (con3, borderlayout.center); con5.add (Con4, BorderLayout.South); this.add (Con5, BorderLayout.Center); this.validate (); this.set -Visible (true); } public void setValue () {this.booknumtext.settext ((String) BookModel.getValueat (rownum, 0)); this.bookNumText.SetEdable (false); this.booknametext.settext ((String) BookModel.getValueat (rownum, 1)); this.bookwritertext.settext ((String) BookModel.getValueat (rownum, 2)); this.bookPublishText.settext ((String) BookModel.getValueat (rownum, 3)); this.booktimetext.settext ((String) BookModel.getValueat (rownum, 4)); this.bookpricetext.settext ((String) BookModel.getValueat (rownum, 5)); this.validate (); } @override public void ActionPerformed (ActionEvent e) {// system.out.println (bookpricetext.getText ()); // todo 자동 생성 메소드 스텁 if (e.getSource () == 제출 부) {if (booknumtext.getText (). equals ( ") || booknametext.getText () bookpublishtext.getText ( "") || "수정 상자 확인", joptionpane.yes_no_option); if (n == joptionpane.yes_option) {String sql = "update book_info set book_name = '"+booknametext.getText ()+", book_writer = '+bookwritertext.getText ()+"', publish_house = '"+bookpublishText.getText ()+"', book_price = ', bookpricetext.getText ()+"', publish_time = ' "+booktimetext.getText ()+"' '+booknumtext.getText ()+booknumtext.getText. BookTableModel Book = New BookTableModel () AaddBook (SQL); } joptionpane.showmessagedialog (이것은 "수정 성공", "프롬프트", joptionpane.plain_message); this.set -Visible (false); } else if (n == joptionpane.no_option) {return; }}} if (e.getSource () == cancelBut) {this.setVisible (false); }}}} 프로그램 실행 결과 :
메인 인터페이스 :
쿼리 인터페이스 :
책 인터페이스 추가 :
인터페이스 수정 :
작동 삭제 :
데이터베이스 인터페이스 :
관리 시스템에 대한 자세한 내용은 "관리 시스템 특별 주제"를 클릭하여 배우십시오.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.