分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

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

实验内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书号、价格字段。设计一个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 stub  BookInfo 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(); } @Override public void actionPerformed(ActionEvent e) {  // TODO Auto-generated method stub  if(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 block    e1.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 block   e1.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 block   e.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(); } @Override public int getColumnCount() {//得到列数  // TODO Auto-generated method stub  return this.colName.size(); } @Override public int getRowCount() {//得到行数  // TODO Auto-generated method stub  return this.rowData.size(); } @Override public Object getValueAt(int row, int col) {//得到某行某列的数据  // TODO Auto-generated method stub  return (this.rowData.get(row)).get(col); } @Override public String getColumnName(int column) {  // TODO Auto-generated method stub  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 Auto-generated catch block   e.printStackTrace();  }//  initData("SELECT * FROM book_info"); } public void deleteBook(String sql){  try {   stmt.executeUpdate(sql);  } catch (SQLException e1) {   // TODO Auto-generated catch block   e1.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); } @Override public void actionPerformed(ActionEvent e) {  // TODO Auto-generated method stub  if(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 block     e1.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(); } @Override public void actionPerformed(ActionEvent e) { // System.out.println(bookPriceText.getText());  // TODO Auto-generated method stub  if(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 block      e1.printStackTrace();     }     JOptionPane.showMessageDialog(this,"修改成功", "提示",JOptionPane.PLAIN_MESSAGE);        this.setVisible(false);    } else if (n == JOptionPane.NO_OPTION) {     return;    }   }  }  if(e.getSource()==cancelBut){   this.setVisible(false);  } } }

程序运行结果:
主界面:

查询界面:

添加图书界面:

修改界面:

删除操作:

数据库界面:

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

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

  1. Java版本:图书管理系统

    实验目的:掌握数据库编程技术.能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 实验内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界 ...

  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. 人工智能电磁车模如何入手?
  2. Ajax简单异步上传图片并回显
  3. DataGridView中实现点击单元格Cell动态添加自定义控件
  4. jQuery 表格自动增加
  5. layui删除后刷新表格_LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)...
  6. php判断记录,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程
  7. 多选题spss相关分析_【医学问卷分析】使用SPSS多重响应对医学问卷多选题进行统计分析——【杏花开医学统计】...
  8. java tomcat 日志_java – 访问Tomcat中的详细日志
  9. Adb命令笔记 --菜鸟的笔记
  10. linux tomcat reload,linux-tomcat安装配置
  11. mysql 是否有归档模式_数据库的归档模式和非归档模式的区别
  12. Android Multimedia框架总结(六)C++中MediaPlayer的C/S架构
  13. 状态反馈不改变系统传递函数零点的证明
  14. python在excel中插入折线图_Python-使用XlsxWriter模块在Excel工作表中绘制折线图
  15. 文本表达:解决BERT中的各向异性方法总结
  16. ps抠出图像的透明阴影
  17. Kotlin学习(五)之----集合 + 数组类型 + 解构写法 list,set,map.....
  18. 解决h5中video标签返回流无法快进和后退的问题
  19. 鑫缘聚禾:拼多多拼团怎么拼
  20. HTTPS 中双向认证SSL 协议的具体过程

热门文章

  1. 企业需要考虑的远程办公相关问题
  2. Debian server 9.x 安装
  3. 基于雨流计数法的源-荷-储双层协同优化配置 代码主要做的是一个源荷储优化配置的问题
  4. 网站抢单搭建什么服务器,12306抢票、嘀嘀抢单服务器如何搭建?
  5. 关于市面上含有高级辅助驾驶功能的汽车事故问题思考
  6. 【flask入门系列】请求钩子与上下文
  7. Linux各个发行版本代号整理
  8. 华为云CCE学习笔记-部署harbor(helm模板)
  9. 通话距离感应实现源码
  10. 自定义Paging分页