实验目的:掌握数据库编程技术。能正确连接数据库,能对数据库中信息进行查询、插入、删除、修改。

实验内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书号、价格字段。设计一个GUI界面进行书目管理。在该界面上有四个选项卡,分别是查询、插入、删除、修改。点击查询选项卡,出现的界面上有书名、作者、出版社、书号四个文本框,一个按钮和一个只读文本区。文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的“查询”按钮,可以在界面下方的文本区中显示出符合条件的书目详细信息。点击插入选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。在文本框中输入信息后,点击“插入”按钮,该书目信息插入数据库表中。点击删除选项卡,出现的界面上有书名文本框和一个按钮,输入书名后点击“删除”按钮,该书目信息从数据库表中删除。点击修改选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。输入的书名必须是已存在的,否则会弹出消息框显示出错信息。输入信息后,点击“修改”按钮,数据库表中的相应书目信息被修改为新值。

实验源码:

BookInfo.java

<strong>/</strong>** 项目名称:图书管理系统* 版本:    1.0* 创建者:  张俊强* 创建时间:2016/5/26* */
package librarySystem;import java.awt.*;import javax.swing.*;import java.awt.event.*;
import java.sql.*;@SuppressWarnings("serial")
public class BookInfo extends JFrame implements ActionListener{//主角面上的控件private JLabel inputLabel;private JTextField inputText;private JButton searchBut;private JTable bookTable;private JScrollPane bookScroll;private JButton addBut;private JButton modifyBut;private JButton deleteBut;private JButton refreshBut;private BookTableModel bookTableModel;public static void main(String[] args) throws SQLException {// TODO Auto-generated method stubBookInfo bookInfo=new BookInfo();bookInfo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);bookInfo.setBounds(350, 150, 600, 400);bookInfo.setVisible(true);
//      bookInfo.importSQL();//导出数据bookInfo.setMinWindowLayout();//设置数据}public BookInfo() throws SQLException{//创建主界面上的控件inputLabel=new JLabel("请输入书名:");inputText=new JTextField(10);searchBut=new JButton("查询");bookTableModel=new BookTableModel();bookTable=new JTable(bookTableModel);bookScroll=new JScrollPane(bookTable);addBut=new JButton("添加");modifyBut=new JButton("修改");deleteBut=new JButton("删除");refreshBut=new JButton("刷新");searchBut.addActionListener(this);addBut.addActionListener(this);refreshBut.addActionListener(this);modifyBut.addActionListener(this);deleteBut.addActionListener(this);}void setMinWindowLayout(){//主界面布局Container con1=new Container();con1.setLayout(new FlowLayout());con1.add(inputLabel);con1.add(inputText);con1.add(searchBut);con1.add(refreshBut);Container con2=new Container();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();}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==searchBut){if(!this.inputText.getText().equals("")){String bookName=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 Auto-generated catch blocke1.printStackTrace();}}else{JOptionPane.showMessageDialog(this,"输入不能为空", "提示",JOptionPane.PLAIN_MESSAGE);}}else if(e.getSource()==addBut){@SuppressWarnings("unused")AddBookDialog addWin=new AddBookDialog(this,"添加图书",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,"未选中", "提示",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="DELETE FROM book_info WHERE book_num= '"+bookNum+"'";bookTableModel.deleteBook(sql);this.refreshTable();JOptionPane.showMessageDialog(this,"删除成功", "提示",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,"未选中", "提示",JOptionPane.PLAIN_MESSAGE);}else{@SuppressWarnings("unused")ModifyBook modifyWin=new ModifyBook(this,"修改信息",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 Auto-generated catch blocke1.printStackTrace();}}
}

BookTableModel.java

package librarySystem;
import java.sql.*;
import java.util.*;/** 图书表模型* */
import javax.swing.table.*;
@SuppressWarnings("serial")
public class BookTableModel extends AbstractTableModel{//表的元素private Vector<Vector<String>> rowData;private Vector<String> colName;// 数据库private PreparedStatement stmt;private ResultSet result;public BookTableModel(String sql) throws SQLException{this.initData(sql);}public BookTableModel() throws SQLException{this.initData("SELECT * FROM book_info");}public void initData(String sql) throws SQLException{setRowData(new Vector<Vector<String>>());setColName(new Vector<String>());getColName().add("书号");getColName().add("书名");getColName().add("作者");getColName().add("出版社");getColName().add("出版时间");getColName().add("价格");/** 数据库的导入* */try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}String url= "jdbc:mysql://localhost:3306/device";String user="root";String password="123456";Connection con=DriverManager.getConnection(url,user,password);stmt = con.prepareStatement(sql);result=stmt.executeQuery();importSQL();}void importSQL() throws SQLException{// TODO Auto-generated method stub@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(item);signNull=false;}result.close();}@Overridepublic int getColumnCount() {//得到列数// TODO Auto-generated method stubreturn this.colName.size();}@Overridepublic int getRowCount() {//得到行数// TODO Auto-generated method stubreturn this.rowData.size();}@Overridepublic Object getValueAt(int row, int col) {//得到某行某列的数据// TODO Auto-generated method stubreturn (this.rowData.get(row)).get(col);}@Overridepublic String getColumnName(int column) {// TODO Auto-generated method stubreturn 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 Auto-generated catch blocke.printStackTrace();}
//      initData("SELECT * FROM book_info");}public void deleteBook(String sql){try {stmt.executeUpdate(sql);} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}
}

AddBookDialog.java

package librarySystem;import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;import javax.swing.*;@SuppressWarnings("serial")
public class AddBookDialog extends JDialog implements 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 bookWriterText;private JTextField bookPublishText;private JTextField bookPriceText;private JTextField bookTimeText;private JButton submitBut;private JButton cancelBut;public AddBookDialog(Frame owner,String title,boolean model){//父窗口,窗口名,是否是模式窗口super(owner,title,model);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);submitBut=new JButton("确认");cancelBut=new JButton("取消");submitBut.addActionListener(this);cancelBut.addActionListener(this);this.setBounds(350,150,400,260);this.setResizable(false);this.setLayout(new BorderLayout());initLayout();}public void initLayout(){Container[] con1=new Container[6];for(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);Container con2=new Container();con2.setLayout(new BorderLayout());con2.add(con1[0],BorderLayout.NORTH);con2.add(con1[1],BorderLayout.CENTER);con2.add(con1[2],BorderLayout.SOUTH);Container con3=new Container();con3.setLayout(new BorderLayout());con3.add(con1[3],BorderLayout.NORTH);con3.add(con1[4],BorderLayout.CENTER);con3.add(con1[5],BorderLayout.SOUTH);Container con4=new Container();con4.setLayout(new FlowLayout());con4.add(submitBut);con4.add(cancelBut);Container con5=new Container();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);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==submitBut){if(bookNumText.getText().equals("")||bookNameText.getText().equals("")||bookWriterText.getText().equals("")||bookPublishText.getText().equals("")||bookPriceText.getText().equals("")||bookTimeText.getText().equals("")){//System.out.println("输入失败");JOptionPane.showMessageDialog(this,"输入不能有空", "提示",JOptionPane.PLAIN_MESSAGE);}else{//System.out.println("输入成功");String sql="insert into "+ "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=new BookTableModel();book.addBook(sql);} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}JOptionPane.showMessageDialog(this,"添加成功", "提示",JOptionPane.PLAIN_MESSAGE);this.setVisible(false);}}if(e.getSource()==cancelBut){this.setVisible(false);}}
}

ModifyBook.java

package librarySystem;import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;
import javax.swing.*;@SuppressWarnings("serial")
public class ModifyBook extends JDialog implements 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 bookWriterText;private JTextField bookPublishText;private JTextField bookPriceText;private JTextField bookTimeText;private JButton submitBut;private JButton cancelBut;private BookTableModel bookModel;private int rowNum;public ModifyBook(Frame owner,String title,boolean type,BookTableModel model,int row){super(owner,title,type);bookModel=model;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);submitBut=new JButton("确认修改");cancelBut=new JButton("取消");submitBut.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=new Container[6];for(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);Container con2=new Container();con2.setLayout(new BorderLayout());con2.add(con1[0],BorderLayout.NORTH);con2.add(con1[1],BorderLayout.CENTER);con2.add(con1[2],BorderLayout.SOUTH);Container con3=new Container();con3.setLayout(new BorderLayout());con3.add(con1[3],BorderLayout.NORTH);con3.add(con1[4],BorderLayout.CENTER);con3.add(con1[5],BorderLayout.SOUTH);Container con4=new Container();con4.setLayout(new FlowLayout());con4.add(submitBut);con4.add(cancelBut);Container con5=new Container();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.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();}@Overridepublic void actionPerformed(ActionEvent e) {//    System.out.println(bookPriceText.getText());// TODO Auto-generated method stubif(e.getSource()==submitBut){if(bookNumText.getText().equals("")||bookNameText.getText().equals("")||bookWriterText.getText().equals("")||bookPublishText.getText().equals("")||bookPriceText.getText().equals("")||bookTimeText.getText().equals("")){//System.out.println("输入失败");JOptionPane.showMessageDialog(this,"修改不能有空", "提示",JOptionPane.PLAIN_MESSAGE);}else{int n = JOptionPane.showConfirmDialog(null, "确认修改吗?", "确认修改框", 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()+"' WHERE book_num = '"+bookNumText.getText()+"' ";try {BookTableModel book=new BookTableModel();book.addBook(sql);} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}JOptionPane.showMessageDialog(this,"修改成功", "提示",JOptionPane.PLAIN_MESSAGE);this.setVisible(false);} else if (n == JOptionPane.NO_OPTION) {return;}}}if(e.getSource()==cancelBut){this.setVisible(false);}}
}

程序运行结果:主界面:

查询界面:

添加图书界面:

修改界面:

删除操作:

数据库界面:

Java版本:图书管理系统相关推荐

  1. Java版本 图书管理系统

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 实验目的 ...

  2. 计算机毕设(附源码)JAVA-SSM基于java的图书管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  3. java+Mysql 图书管理系统(idea)

    目录 前言 部分界面截图 登录界面 注册界面 图书管理界面 关于我们界面 部分代码 登录界面 数据库工具类 前言 jdk 版本:openjdk version "11.0.12" ...

  4. Java Web图书管理系统(MVC框架)-包含源码

    Java Web图书管理系统 一.前言 这是大二写的系统,因此这个系统并没有用到很多框架,只是使用了MVC框架,前端使用的是Layui框架.bootstrap框架.JSP技术.JSTL表达式和EL表达 ...

  5. Java Swing图书管理系统桌面软件附源码

    Java Swing图书管理系统桌面软件附源码,亲测可运行. 功能界面如下: 登录界面,默认账号admin密码admin 主功能界面: 添加图书功能界面: 部分源码: 完整源码下载地址: JavaSw ...

  6. Java web 图书管理系统

    本系统由java+sevlet+mysql+eclipse实现的Java web图书管理系统,具有增删改查以及导出Excel表格的功能,需要源码或者需要定制类似的Java /Java web/ ssm ...

  7. Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)

    Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)

  8. 大二小学期java:图书管理系统

    大二小学期java:图书管理系统 import java.util.*;import java.text.*;public class library {public static long char ...

  9. java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目 ...

最新文章

  1. 【Codeforces】835B The number on the board (贪心)
  2. Redis工具类的封装
  3. Poj 2195 Going Home
  4. Spring Boot入门(11)实现文件下载功能
  5. Chrome调试angularJS出现Uncaught SyntaxError: Unexpected identifier
  6. 关于JPQL UPDATE 语句的 一点体会
  7. sublime怎么编译php,让sublime编译php、js
  8. 雄安新区区块链底层系统(1.0)今日正式发布
  9. OLTP与OLAP介绍
  10. 服务器tomcat优化知识复习总结
  11. (删)Java线程同步实现二:Lock锁和Condition
  12. CATIA怎么约束快捷键_CATIA快捷键和Solidworks快捷键
  13. mysql插件的初始化
  14. Liunx文件常用命令总结
  15. Guava学习之Splitter
  16. Java学习手册:大疆创新2020届校园招聘——软件类岗位B卷题一
  17. php实现离线挂机,自动离线挂机脚本下线自动挂机脚本
  18. 2021-12-15 股票模拟交易心得10
  19. A Game of Thrones(101)
  20. Spring学习-初识Spring

热门文章

  1. java背包_java-背包的实现
  2. 瑞森助您实现优秀的LLC恒流LED照明方案
  3. canvas绘图夕颜技术笔记
  4. 函数,主函数,被调用函数,库函数。
  5. REDSHIFT学习笔记-渲染设置2_AOVOpt
  6. 操作符 , | , ^,<<,>>
  7. SNAT和DNAT原理及配置方法
  8. 软件测试实战项目,问题答疑
  9. google autoaugment
  10. python发票二维码条码识别_Python zxing 库解析(条形码二维码识别)