Tujuan dari artikel ini adalah untuk menguasai teknologi pemrograman basis data melalui sistem manajemen perpustakaan, dapat terhubung dengan benar ke database, dan dapat meminta, memasukkan, menghapus, dan memodifikasi informasi dalam database.
Konten: Buat tabel informasi bibliografi dalam database, termasuk judul, penulis, rumah penerbitan, tanggal publikasi, nomor buku, dan bidang harga. Rancang antarmuka GUI untuk manajemen bibliografi. Ada empat tab di antarmuka ini, yaitu kueri, memasukkan, menghapus, dan memodifikasi. Klik tab kueri, dan antarmuka yang muncul mencakup empat kotak teks: judul buku, penulis, penerbit, nomor buku, tombol, dan area teks hanya baca. Konten kotak teks bisa kosong. Setelah memasukkan informasi kueri yang sesuai (misalnya, Anda hanya dapat memasukkan judul sesuai dengan judul buku), klik tombol "Query" pada antarmuka untuk menampilkan informasi terperinci dari daftar pustaka yang memenuhi kriteria di area teks di bawah antarmuka. Klik tab Sisipkan, dan antarmuka yang muncul akan mencakup judul buku, penulis, rumah penerbitan, tanggal publikasi, nomor buku, kotak teks harga, dan tombol. Setelah memasukkan informasi di kotak teks, klik tombol "Masukkan" dan informasi bibliografi dimasukkan ke dalam tabel database. Klik tab Hapus. Ada kotak teks untuk judul dan tombol pada antarmuka yang muncul. Setelah memasukkan judul, klik tombol "Hapus". Informasi bibliografi dihapus dari tabel database. Klik tab Modifikasi, dan antarmuka yang muncul termasuk judul buku, penulis, rumah penerbitan, tanggal publikasi, nomor buku, kotak teks harga, dan tombol. Judul buku yang dimasukkan harus ada, jika tidak kotak pesan akan muncul dan menampilkan pesan kesalahan. Setelah memasukkan informasi, klik tombol "Modifikasi", dan informasi bibliografi yang sesuai dalam tabel database dimodifikasi ke nilai baru.
Kode Sumber:
BookInfo.java
* Nama Proyek: Sistem Manajemen Buku * Versi: 1.0 * Pencipta: Zhang Junqiang * Waktu Penciptaan: 2016/5/26 * */Paket LibrarySystem; impor java.awt.*; impor javax.swing.*; impor java.awt.event.*; impor java.sql.*; @SuppressWarnings ("Serial") BookInfo kelas publik memperluas jframe mengimplementasikan ActionListener {// kontrol pada protagonis menghadapi jlabel inputLabel pribadi; inputText JTextfield Private; pencarian pribadi jbutton; Private Jtable Booktable; Private Jscrollpane Bookscroll; addbut jbutton pribadi; private Jbutton ModifyBut; Private Jbutton DeleteBut; Private Jbutton RefreshBut; Booktablemodel Private Booktablemodel; public static void main (string [] args) melempar sqlexception {// TODO Metode yang dihasilkan otomatis Stub BookInfo bookInfo = new bookInfo (); bookInfo.setDefaultCloseOperation (jframe.exit_on_close); BookInfo.setbounds (350, 150, 600, 400); bookInfo.setVisible (true); // bookInfo.importsql (); // Ekspor data bookInfo.setminWindowlayout (); // Setel data} public bookInfo () melempar sqlexception {// Buat kontrol pada antarmuka utama inputLabel = new jlabel ("Harap masukkan judul buku:"); inputText = JTextField baru (10); searchbut = jbutton baru ("kueri"); booktableModel = booktableModel baru (); Booktable = JTable baru (BooktableModel); bookscroll = jscrollpane baru (Booktable); addbut = jbutton baru ("add"); ModifyBut = JButton baru ("Modify"); deleteBut = jbutton baru ("hapus"); RefreshBut = JButton baru ("Refresh"); searchbut.addactionListener (ini); addbut.addactionListener (ini); Refreshbut.addactionListener (ini); odifyBut.addactionListener (ini); deleteBut.addactionListener (ini); } void setminwindowlayout () {// container tata letak antarmuka utama con1 = container baru (); con1.setLayout (flowlayout baru ()); con1.add (inputLabel); con1.add (inputText); con1.add (pencarian); con1.add (refreshbut); Wadah con2 = wadah baru (); con2.setLayout (flowlayout baru ()); con2.add (addbut); con2.add (ubahbut); con2.add (deleteBut); this.setLayout (borderlayout baru ()); this.add (con1, borderlayout.north); this.add (bookscroll, borderlayout.center); this.add (con2, borderlayout.south); this.validate (); } @Override public void actionPerformed (ActionEvent e) {// TODO Metode yang dihasilkan secara otomatis Stub if (e.getSource () == SearchBut) {if (! This.inputText.getText (). Equals ("")) {string bookname = this.inputText.gettext (); String sql = "pilih * dari book_info di mana book_name = '"+bookname+"'"; coba {booktableModel = booktableModel baru (sql); Booktable.setModel (BooktableModel); } catch (sqlexception e1) {// todo auto-generated catch block e1.printstacktrace (); }} else {joptionpane.showmessagealog (ini, "input tidak dapat kosong", "prompt", joptionpane.plain_message); }} lain jika (e.getSource () == addbut) {@suppressWarnings ("tidak digunakan") addBookDialog addwin = addBookDialog baru (ini, "tambahkan buku", true); this.refreshtable (); } lain if (e.getSource () == RefreshBut) {this.refreshtable (); } else if (e.getSource () == deleteBut) {int rownum = booktable.getSelectedRowR (); if (rownum <0 || rownum> booktable.getrowcount ()) {joptionpane.showmessagealog (ini, "tidak dipilih", "tip", joptionpane.plain_message); } else {//system.out.print(bookname); int n = joptionpane.showconfirmDialog (null, "konfirmasi penghapusan?", "Kotak Konfirmasi Penghapusan", joptionpane.yes_no_option); if (n == jOptionPane.yes_option) {string booknum = (string) booktable.getValueat (rownum, 0); String sql = "hapus dari book_info di mana book_num = '"+booknum+"'"; BooktableModel.DeleteBook (SQL); this.refreshtable (); JOPTIONPANE.SHOWMESSADEIALOG (ini, "DELETESUCCESS", "TIP", JOPTIONPANE.PLAIN_MESSAGE); } lain jika (n == jOptionPane.no_option) {return; }}} lain jika (e.getSource () == ModifyBut) {booktable.setModel (booktableModel); int rownum = booktable.getSelectedRow (); if (rownum <0 || rownum> booktable.getrowcount ()) {joptionpane.showmessagealog (ini, "unceck", "prompt", joptionpane.plain_message); } else {@suppresswarnings ("tidak digunakan") ModifyBook ModifyWin = new ModifyBook (ini, "Modify Information", true, booktableModel, rownum); this.refreshtable (); }}} public void refreshtable () {booktableModel Searchbook; coba {searchBook = booktableModel baru ("Pilih * dari book_info"); Booktable.setModel (Searchbook); booktableModel = pencarian; } catch (sqlexception e1) {// todo auto-generated catch block e1.printstacktrace (); }}} Booktablemodel.java
paket pustaka; impor java.sql.*; impor java.util.*; /** Model tabel buku**/ impor javax.swing.table.*; @SuppressWarnings ("Serial") Kelas Publik BookTablemodel memperluas AbstractTablemodel {// elemen tabel vektor pribadi <vector <string>> rowData; vektor pribadi <string> colname; // database private preparedStatement stmt; Hasil Hasil Pribadi; Public booktableModel (String sql) melempar sqlexception {this.initdata (sql); } public booktableModel () melempar sqlexception {this.initData ("pilih * dari book_info"); } public void initData (String SQL) melempar SQLException {setRowData (vektor baru <vector <string> ())); setColName (vektor baru <string> ()); getColName (). Tambah ("Buku No."); getColName (). Tambah ("Judul Buku"); getColName (). Tambah ("Judul Buku"); getColname (). Tambah ("penulis"); getColname (). Tambah ("Penerbit"); getColname (). Tambah ("waktu penerbitan"); getColname (). Tambah ("Harga"); / * * Impor basis data * */ coba {class.forname ("com.mysql.jdbc.driver"); } catch (ClassNotFoundException e) {// TODO AUTO-ENCOMEERATED Catch Block E.PrintStackTrace (); } String url = "jdbc: mysql: // localhost: 3306/device"; String user = "root"; String password = "ZJQ1314520"; Koneksi con = driverManager.getConnection (url, pengguna, kata sandi); stmt = con.preparestatement (sql); hasil = stmt.executeQuery (); imporsql (); } void imporSQL () melempar SQLException {// TODO Metode yang dihasilkan secara otomatis Stub @suppresswarnings ("tidak digunakan") Boolean Signnull = true; while (result.next ()) {vector <string> item = vector baru <string> (); untuk (int i = 1; i <7; i ++) {item.add (result.getString (i)); } getRowData (). Tambah (item); Signnull = false; } result.close (); } @Override Public int getColumnCount () {// Dapatkan jumlah kolom // TODO METODE AUTO-DIHOMPUSI AUTO-METODE RETTOM RETTOM THER.COLNAME.SIZE (); } @Override public int getRowCount () {// Dapatkan jumlah baris // TODO METODE AUTO-AUTO-ENTEORATED Stub Return this.rowdata.size (); } @Override public int getRowCount () {// Dapatkan jumlah baris // TODO METODE AUTO-AUTO-ENTEORATED Stub Return this.rowdata.size (); } @Override Objek publik getValueat (int row, int col) {// Dapatkan data baris dan kolom // TODO Metode Stub yang dihasilkan secara otomatis (this.rowdata.get (baris)). Get (col); } @Override Public String getColumnName (kolom int) {// TODO METODE AUTO-DIHOMPOLED RETTOM RETTRIFIS.COLNAME.GET (KOLOM); } public vector <vector <string>> getRowData () {return rowData; } public void setrowData (vektor <vector <string>> rowData) {this.rowData = rowData; } vektor publik <string> getColName () {return colname; } public void setColName (Vector <String> colname) {this.colname = colname; } public void addBook (string sql) {coba {stmt.executeUpdate (sql); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); } // initdata ("Pilih * dari book_info"); } public void deleteBook (string sql) {coba {stmt.executeUpdate (sql); } catch (sqlexception e1) {// todo auto-generated catch block e1.printstacktrace (); }}} AddBookDialog.java
paket pustaka; impor java.awt.*; impor java.awt.event.*; impor java.sql.sqlexception; impor javax.swing.*; @SuppressWarnings ("Serial") Kelas Publik AddBookDialog memperluas jDialog mengimplementasikan ActionListener {private Jlabel booknumlabel; Private Jlabel Booknamelabel; Private Jlabel BookWriterLabel; Private Jlabel BookpublishLabel; Private Jlabel BookPricelabel; Private Jlabel Booktimelabel; Private JTextfield BooknumText; Private JTextfield booknametext; Private JTextfield BookWritext; Private JTextfield BookpublishText; Private JTextfield BookPriceText; Private JTextfield booktimetext; Submittobet Jbutton Pribadi; Private Jbutton membatalkan tetapi; Public AddBookDialog (pemilik bingkai, judul string, model boolean) {// jendela induk, nama jendela, apakah itu jendela mode super (pemilik, judul, model); booknumlabel = new jlabel ("nomor buku:"); booknamelabel = new jlabel ("judul buku:"); BookWriterLabel = New Jlabel ("Author:"); bookpublishlabel = new jlabel ("penerbit:"); BookPricelabel = JLabel baru ("Harga:"); booktimelabel = new jlabel ("waktu penerbitan:"); booknumText = JTextField baru (10); bookNametext = JTextField baru (10); BookwriterText = JTextField baru (10); bookpublishText = JTextField baru (10); BookPriceText = JTextField baru (10); booktimetext = JTextField baru (9); kirimbut = jbutton baru ("batal"); cancelbut = jbutton baru ("batal"); submitbut.addactionListener (ini); cancelbut.addactionListener (ini); this.setbounds (350.150.400.260); this.setresizable (false); this.setLayout (borderlayout baru ()); initlayout (); } public void initlayout () {container [] con1 = container baru [6]; untuk (int i = 0; i <6; i ++) con1 [i] = wadah baru (); con1 [0] .setLayout (flowlayout baru ()); con1 [0] .add (booknumlabel); con1 [0] .add (booknumText); con1 [1] .setLayout (flowlayout baru ()); con1 [1] .add (booknamelabel); con1 [1] .add (booknametext); con1 [2] .setLayout (flowlayout baru ()); con1 [2] .add (BookWriterLabel); con1 [2] .add (BookwriterText); con1 [3] .setLayout (flowlayout baru ()); con1 [3] .add (BookpublishLabel); con1 [3] .add (BookPublishText); con1 [4] .setLayout (flowlayout baru ()); con1 [4] .add (BookPricelabel); con1 [4] .add (BookPriceText); con1 [5] .setLayout (flowlayout baru ()); con1 [5] .add (booktimelabel); con1 [5] .add (booktimetext); Wadah con2 = wadah baru (); con2.setLayout (borderlayout baru ()); con2.add (con1 [0], borderlayout.north); con2.add (con1 [1], borderlayout.center); con2.add (con1 [2], borderlayout.south); Wadah con3 = wadah baru (); con3.setlayout (borderlayout baru ()); con3.add (con1 [3], borderlayout.north); con3.add (con1 [4], borderlayout.center); con3.add (con1 [5], borderlayout.south); Wadah con4 = wadah baru (); con4.setLayout (flowlayout baru ()); con4.add (submitbut); con4.add (batal -btugut); Wadah con5 = wadah baru (); con5.setLayout (borderlayout baru ()); con5.add (con2, borderlayout.north); con5.add (con3, borderlayout.center); con5.add (con4, borderlayout.south); this.add (con5, borderlayout.center); this.validate (); this.setVisible (true); } @Override public void actionPerformed (ActionEvent e) {// TODO Metode yang dihasilkan otomatis Stub if (e.getSource () == submitbut) {if (booknumText.getText (). "") BookPriceText.getText (). Equals ("") ||. JOPTIONPANE.SHOWMESSADEIALOG (ini, "input tidak dapat kosong", "prompt", joptionpane.plain_message); } else {//system.out.println("input berhasil "); String sql = "masukkan ke" + "book_info (book_num, book_name, book_writer, publish_house, book_price, publish_time)" + "values('"+bookNumText.getText()+"','"+bookNameText.getText()+"','"+bookWriterText.getText()+"','"+bookPublishText.getText()+"','"+bookPriceText.getText()+"','"+bookTimeText.getText()+"'); try { BooktableModel Book = BooktableModel baru (); this.setVisible (false); ModifyBook.java
paket pustaka; impor java.awt.*; impor java.awt.event.*; impor java.sql.sqlexception; impor javax.swing.*; @SuppressWarnings ("Serial") Kelas Publik ModifyBook memperluas jDialog mengimplementasikan ActionListener {private Jlabel booknumlabel; Private Jlabel Booknamelabel; Private Jlabel BookWriterLabel; Private Jlabel BookpublishLabel; Private Jlabel BookPricelabel; Private Jlabel Booktimelabel; Private JTextfield BooknumText; Private JTextfield booknametext; Private JTextfield BookWritext; Private JTextfield BookpublishText; Private JTextfield BookPriceText; Private JTextfield booktimetext; Submittobet Jbutton Pribadi; Private Jbutton membatalkan tetapi; BooktableModel Private Bookmodel; Private Int Rownum; Public ModifyBook (bingkai pemilik, judul string, tipe boolean, model booktableModel, int row) {super (pemilik, judul, jenis); bookmodel = model; rownum = baris; booknumlabel = new jlabel ("nomor buku:"); booknamelabel = new jlabel ("judul buku:"); BookWriterLabel = New Jlabel ("Author:"); bookpublishlabel = new jlabel ("penerbit:"); BookPricelabel = JLabel baru ("Harga:"); booktimelabel = new jlabel ("waktu penerbitan:"); booknumText = JTextField baru (10); bookNametext = JTextField baru (10); BookwriterText = JTextField baru (10); bookpublishText = JTextField baru (10); BookPriceText = JTextField baru (10); booktimetext = JTextField baru (9); submitbut = jbutton baru ("konfirmasi modifikasi"); cancelbut = jbutton baru ("batal"); submitbut.addactionListener (ini); cancelbut.addactionListener (ini); this.setbounds (350.150.400.260); this.setresizable (false); this.setLayout (borderlayout baru ()); this.setValue (); this.initlayout (); } public void initlayout () {container [] con1 = container baru [6]; untuk (int i = 0; i <6; i ++) con1 [i] = wadah baru (); con1 [0] .setLayout (flowlayout baru ()); con1 [0] .add (booknumlabel); con1 [0] .add (booknumText); con1 [1] .setLayout (flowlayout baru ()); con1 [1] .add (booknamelabel); con1 [1] .add (booknametext); con1 [2] .setLayout (flowlayout baru ()); con1 [2] .add (BookWriterLabel); con1 [2] .add (BookwriterText); con1 [3] .setLayout (flowlayout baru ()); con1 [3] .add (BookpublishLabel); con1 [3] .add (BookPublishText); con1 [4] .setLayout (flowlayout baru ()); con1 [4] .add (BookPricelabel); con1 [4] .add (BookPriceText); con1 [5] .setLayout (flowlayout baru ()); con1 [5] .add (booktimelabel); con1 [5] .add (booktimetext); Wadah con2 = wadah baru (); con2.setLayout (borderlayout baru ()); con2.add (con1 [0], borderlayout.north); con2.add (con1 [1], borderlayout.center); con2.add (con1 [2], borderlayout.south); Wadah con3 = wadah baru (); con3.setlayout (borderlayout baru ()); con3.add (con1 [3], borderlayout.north); con3.add (con1 [4], borderlayout.center); con3.add (con1 [5], borderlayout.south); Wadah con4 = wadah baru (); con4.setLayout (flowlayout baru ()); con4.add (submitbut); con4.add (batal -btugut); Wadah con5 = wadah baru (); con5.setLayout (borderlayout baru ()); con5.add (con2, borderlayout.north); con5.add (con3, borderlayout.center); con5.add (con4, borderlayout.south); this.add (con5, borderlayout.center); this.validate (); this.setVisible (true); } public void setValue () {this.booknumText.setText ((string) bookmodel.getValueat (rownum, 0)); this.booknumText.seteditable (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 Metode yang dihasilkan otomatis Stub if (e.getSource () == Submitbut) {if (booknumText.getText (). Equals ("") || bookNametext.getText (). Equals (") || bookwritext.gettext (). Equals ("). BookpublishText.getText (). Equals ("") ||. Modifikasi? "," Kotak Modifikasi ", JOptionPane.YES_NO_OPTION); if (n == JOPTIONPANE.YES_OPTION) {string sql =" perbarui book_info set book_name = '"+booknametex '"+bookWriterText.getText()+"',publish_house='"+bookPublishText.getText()+"',book_price='"+bookPriceText.getText()+"',publish_time='"+bookTimeText.getText()+"' WHERE book_num = '"+bookNumText.getText()+"' "; try { BooktableModel Book = BooktableModel baru (); } Joptionpane.showmessagealog (ini, "modifikasi berhasil", "prompt", joptionpane.plain_message); this.setVisible (false); } lain jika (n == jOptionPane.no_option) {return; }}} if (e.getSource () == cancelbut) {this.setVisible (false); }}}} Hasil menjalankan program:
Antarmuka utama:
Antarmuka kueri:
Tambahkan antarmuka buku:
Ubah antarmuka:
Hapus Operasi:
Antarmuka Database:
Untuk informasi lebih lanjut tentang sistem manajemen, silakan klik "Sistem Manajemen Topik Khusus" untuk dipelajari
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.