Цель этой статьи состоит в том, чтобы освоить технологию программирования базы данных через систему управления библиотеками, иметь возможность правильно подключаться к базе данных и иметь возможность запросить, вставлять, удалять и изменять информацию в базе данных.
Контент: Создайте таблицу библиографической информации в базе данных, включая название, автор, издательство, дату публикации, номер книги и ценовые поля. Разработать интерфейс графического интерфейса для управления библиографией. В этом интерфейсе есть четыре вкладка, а именно запросы, вставить, удалять и модифицировать. Нажмите на вкладку «Запрос», и появляется интерфейс, включающий четыре текстовых поле: заголовок книги, автор, издатель, номер книги, кнопку и текстовую область только для чтения. Содержание текстового поля может быть пустым. После ввода соответствующей информации запроса (например, вы можете ввести заголовок только в соответствии с заголовком книги), нажмите кнопку «Запрос» в интерфейсе, чтобы отобразить подробную информацию библиографии, которая соответствует критериям в текстовой области под интерфейсом. Нажмите на вкладку «Вставка», и появляется интерфейс, содержит название книги, автор, издательство, дата публикации, номер книги, текстовое поле ценового текста и кнопку. После ввода информации в текстовое поле нажмите кнопку «Вставить», и библиографическая информация вставлена в таблицу базы данных. Нажмите на вкладку «Удалить». Есть текстовое поле для заголовка и кнопка на появлении интерфейса. После входа в заголовок нажмите кнопку «Удалить». Библиографическая информация удаляется из таблицы баз данных. Нажмите на вкладку «Модифицировать», и появляется интерфейс, включающий заголовок книги, автор, издательство, дата публикации, номер книги, текстовую коробку цены и кнопку. Введенное название книги должно существовать, в противном случае появится окно сообщений и отобразит сообщение об ошибке. После ввода информации нажмите кнопку «Изменить», и соответствующая библиографическая информация в таблице базы данных изменяется на новое значение.
Исходный код:
BookInfo.java
* Имя проекта: Система управления книгами * Версия: 1.0 * Создатель: Zhang Junqiang * Время создания: 2016/5/26 * */Package LibrarySystem; Импорт java.awt.*; импортировать javax.swing.*; импортировать java.awt.event.*; Импорт java.sql.*; @Suppresswarnings ("serial") public class bookInfo расширяет jframe реализует ActionListener {// управление на главном герои лицом к личному jlabel inputlabel; Private JTextField InputText; Частный Jbutton Searchbut; Частный JTable BookTable; Частный JScrollpane Bookscroll; Частный jbutton addbut; Частный Jbutton modify, но; Частный Jbutton deletebut; Частный Jbutton Refreshbut; Частный Booktablemodel booktablemodel; public static void main (string [] args) выбрасывает SQLexception {// TODO Автогенерированный метод Stub BookInfo bookInfo = new BookInfo (); bookInfo.setDefaultCloseoPeration (jframe.exit_on_close); BookInfo.SetBounds (350, 150, 600, 400); bookInfo.setVisible (правда); // bookInfo.importsql (); // Экспорт данных bookinfo.setminwindowlayout (); // set data} public bookInfo () throws sqlexception {// Создать элемент управления на основном интерфейсе inputabel = new jlabel («Пожалуйста, введите название книги:»); inputtext = new JTextField (10); searchbut = new jbutton ("Query"); booktablemodel = new BooktableModel (); booktable = new jtable (booktablemodel); Bookscroll = new jscrollpane (booktable); addbut = new Jbutton ("Add"); modifybut = new jbutton ("modify"); deletebut = new jbutton ("delete"); represhbut = new jbutton ("rebresh"); searchbut.addactionListener (это); addbut.addactionListener (это); refreshbut.addactionListener (это); modifybut.addactionListener (это); deletebut.addactionListener (это); } void setminWindowlayout () {// Контейнер с макетом основного интерфейса con1 = new Container (); con1.setlayout (new Flowlayout ()); con1.add (inputlabel); con1.add (inputext); con1.add (searchbut); con1.add (обновление); Контейнер 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 (). Equals ("")) {string bookName = this.InputText.getText ();); String sql = "select * from book_info, где 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 ("unare") addbookdialog addwin = new addbookdialog (это, "добавить книгу", 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 (это, «невыбеное», «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); String sql = "Удалить из book_info, где book_num = '"+booknum+"'"; booktablemodel.deletebook (SQL); this.refreshtable (); Joptionpane.showmessageDialog (это, "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 (это, "unchect", "rasfor", joptionpane.plain_message); } else {@suppresswarnings ("unared") 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
Пакет LibrarySystem; Импорт java.sql.*; Импорт java.util.*; /** Модель таблицы книг**/ Импорт javax.swing.table.*; @Suppresswarnings ("serial") открытый класс Booktablemodel Extables AbstracttableModel {// Элементы таблицы Частный вектор <vector <String >> rowdata; Частный вектор <string> colname; // база данных Private ProfectStatement STMT; Частный результат результата; public booktableModel (String SQL) бросает SQLexception {this.InitData (SQL); } public booktableModel () throws sqlexception {this.initdata ("select * from book_info"); } public void initData (String SQL) Throws SQLexception {setRowData (новый Vector <Vector <String >> ()); setColName (новый Vector <String> ()); getColname (). Add («Книга №»); getColName (). Add («Название книги»); getColName (). Add («Название книги»); getColname (). Add ("Автор"); getColname (). Add ("Publisher"); getColname (). Add («Время публикации»); getColName (). Add ("цена"); / * * Импорт базы данных * */ try {class.forname ("com.mysql.jdbc.driver"); } catch (classnotfoundexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } String url = "jdbc: mysql: // localhost: 3306/device"; String user = "root"; String password = "zjq1314520"; Connection con = drivermanager.getConnection (URL, пользователь, пароль); stmt = con.preparestatement (sql); result = stmt.executequery (); ImportSql (); } void importsql () throws sqlexception {// todo Автопогенерированный метод stub @suppresswarnings ("неиспользованный") 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 (item); signnull = false; } result.close (); } @Override public int getColumnCount () {// Получить количество столбцов // TODO Auto Generated Method stub return this.colname.size (); } @Override public int getRowCount () {// Получить количество строк // TODO Auto Generated Method Queb return this.rowdata.size (); } @Override public int getRowCount () {// Получить количество строк // TODO Auto Generated Method Queb return this.rowdata.size (); } @Override public Object getValueat (int row, int col) {// Получить данные о строке и столбец // TODO Auto Generated Method return (this.rowdata.get (row)). Get (col); } @Override public String getColumnName (int column) {// todo автоматическое сгенерированное метод recute 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
Пакет LibrarySystem; Импорт java.awt.*; импортировать java.awt.event.*; Импорт java.sql.sqlexception; импортировать javax.swing.*; @Suppresswarnings ("serial") открытый класс AddBookDialog расширяет JDialog реализует ActionListener {private jlabel booknumlabel; Частный Jlabel Booknamelabel; Частный JLABEL BookwriterLabel; Частный JLABEL BookPublishLabel; Частный Jlabel BookPriceLabel; Частный Jlabel BooktimeLabel; Private JTextfield BookNumText; Private Jtextfield BookNametext; Private JTextfield BookWriterText; Private JTextfield BookPublishText; Private Jtextfield BookPricetext; Private Jtextfield BookTimetext; Частный Jbutton Require, но; Частный Jbutton Cancelbut; public addBookDialog (владелец кадра, заголовок строки, логическая модель) {// родительское окно, имя окна, это то, что это режим, Super (владелец, заголовок, модель); bookNumLabel = new jlabel ("номер книги:"); booknamelabel = new jlabel («Название книги:»); bookwriterlabel = new jlabel («Автор:»); bookpublishlabel = new jlabel («Издатель:»); 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); отправить, но new jbutton ("cancel"); Cancelbut = new Jbutton ("Cancel"); отправить, но addactionListener (это); Cancelbut.AddactionListener (это); this.SetBounds (350 150,400,260); this.SetReSizable (false); this.setlayout (new Borderlayout ()); initLayout (); } public void initlayout () {intainer [] con1 = новый контейнер [6]; для (int i = 0; i <6; i ++) con1 [i] = new container (); 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 (отмена); Контейнер 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.setvisible (true); } @Override public void actionPerformed (actionEvent e) {// todo автоматически генерируемый метод stub if (e.getSource () == Отправить) {if (bookNumText.getText (). Equals ("") || booknametext.getText (). Equals (") || bookWriteRtext.getText () equalsext (). Equals (") || BookPricetext.getText (). Equals ("") ||. Joptionpane.showmessageDialog (это, «вход не может быть пустым», «Приглашение», joptionPane.plain_message); } else {//system.out.println("input успешно "); String SQL = "INSERT в" + "book_info (book_num, book_name, book_writer, publish_house, book_price, publish_time)" + "Value ("+booknumtext.getText ()+"','"+booknametext.getText ()+", '"+bookwritertext.gettext ()+"', '"+bookpublishtext.gettext ()+",'"+bookpricetext.gettext ()+"','+booktimextextextextextextextextextextextextextextextextextemptemlet BookTableModel (); if (e.getSource () == Cancelbut) {this.SetVisible (false); Modifybook.java
Пакет LibrarySystem; Импорт java.awt.*; импортировать java.awt.event.*; Импорт java.sql.sqlexception; импортировать javax.swing.*; @Suppresswarnings ("serial") public class modifybook расширяет Jdialog реализует ActionListener {private jlabel booknumlabel; Частный Jlabel Booknamelabel; Частный JLABEL BookwriterLabel; Частный JLABEL BookPublishLabel; Частный Jlabel BookPriceLabel; Частный Jlabel BooktimeLabel; Private JTextfield BookNumText; Private Jtextfield BookNametext; Private JTextfield BookWriterText; Private JTextfield BookPublishText; Private Jtextfield BookPricetext; Private Jtextfield BookTimetext; Частный Jbutton Require, но; Частный Jbutton Cancelbut; частная книжная книга Bookmodel; Частный Int Rownum; public modifybook (владелец кадра, название строки, логический тип, модель BooktableModel, int row) {super (владелец, заголовок, тип); Bookmodel = модель; rownum = row; bookNumLabel = new jlabel ("номер книги:"); booknamelabel = new jlabel («Название книги:»); bookwriterlabel = new jlabel («Автор:»); bookpublishlabel = new jlabel («Издатель:»); 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); отправить, но new jbutton («Подтвердить модификацию»); Cancelbut = new Jbutton ("Cancel"); отправить, но addactionListener (это); Cancelbut.AddactionListener (это); this.SetBounds (350 150,400,260); this.SetReSizable (false); this.setlayout (new Borderlayout ()); this.setValue (); this.initlayout (); } public void initlayout () {intainer [] con1 = новый контейнер [6]; для (int i = 0; i <6; i ++) con1 [i] = new container (); 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 (отмена); Контейнер 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.setvisible (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 Автопогенерированный метод STUB if (e.getSource () == Отправить. BookPublish.getText (). Equals ("") || Box ", joptionpane.yes_no_option); if (n == joptionpane.yes_option) {string sql =" Обновление book_info set book_name = '"+booknametext.gettext ()+"', book_writer = «+bookwritertext.getText ()+" ', publish_house =' "+bookpublishtext.gettext ()+" ', book_price =' "+bookpricetext.getText ()+" ', publish_time =' "+booktimetext.gettext ()+" 'whened book_num =' "+booknumextext.gettext ()" rooktablem. BooktableModel (); } Joptionpane.showmessageDialog (это, «модификация преуспела», «Приглашение», joptionpane.plain_message); this.SetVisible (false); } else if (n == joptionpane.no_option) {return; }}} if (e.getSource () == cancelbut) {this.setVisible (false); }}}} Результаты запуска программы:
Главный интерфейс:
Интерфейс запроса:
Добавить интерфейс книги:
Изменить интерфейс:
Удалить операцию:
Интерфейс базы данных:
Для получения дополнительной информации о системе управления, пожалуйста, нажмите «Специальная тема управления», чтобы узнать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.