第一个Java项目———Java实现简单图书管理系统(GUI)

第一个Java项目———Java实现简单图书管理系统(GUI)暑假写了个图书管理系统,编译器用的是eclipse,加入了WindowBuilder插件做界面(做的特丑),数据库用的是MySQL。实现了图书的查询,借阅,归还,删除,增加。用户的删除,查询。分为管理员和用户。一,程序整体框架从项目开始,无从下手,随着学习的深入,慢慢的熟悉了开发流程,先把整体框架搭起来,这个过程可以减少后续的一些麻烦,做数据库前先想好需求,…

大家好,又见面了,我是你们的朋友全栈君。

       暑假写了个图书管理系统,编译器用的是eclipse,加入了WindowBuilder插件做界面(做的特丑),数据库用的是MySQL。

       实现了图书的查询,借阅,归还,删除,增加。用户的删除,查询。分为管理员和用户。

源码地址(GitHub):GitHub – best-bo-cai/books_management: 我的第一个java小项目:图书管理系统编译器用的是eclipse,加入了WindowBuilder插件做界面(做的特丑),数据库用的是MySQL。 实现了图书的查询,借阅,归还,删除,增加。用户的删除,查询。分为管理员和用户。

一,程序整体框架

从项目开始,无从下手,随着学习的深入,慢慢的熟悉了开发流程,先把整体框架搭起来,这个过程可以减少后续的一些麻烦,做数据库前先想好需求,把数据库做出来,我用的Navicat,管理表方便。然后把model类(实体类)写出来,一般是一个表写一个,把他单独放在一个包里,然后实现功能,需要界面做界面,需要工具做工具。界面单独放在一个包frame(或view),工具单独放在一个包里util,还有数据库访问层Dao.以上均为个人理解。

第一个Java项目———Java实现简单图书管理系统(GUI)

二,建立数据库表并连接

1,这是建的数据库表,用了四个表:用户表,管理员表,图书表,借书记录表。

第一个Java项目———Java实现简单图书管理系统(GUI)

第一个Java项目———Java实现简单图书管理系统(GUI)

上面这个表有个问题,phone前多了个空格,后面出错好几次,在代码中加了空格才对,不细心导致的,要注意。

第一个Java项目———Java实现简单图书管理系统(GUI)

第一个Java项目———Java实现简单图书管理系统(GUI)

第一个Java项目———Java实现简单图书管理系统(GUI)

2,连接数据库操作放在了util包下,要用到JDBC

package com.java.util;

/**
 * 数据库工具类
 */
import java.sql.Connection;
import java.sql.DriverManager;

public class Connect {
	Connection con;
	/**
	 * 连接数据库
	 * @return
	 */
	public Connection loding() {//加载数据库
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			System.out.println("成功加载数据库驱动!");
		}
		catch(Exception e){
			System.out.println("加载数据库驱动出错!");
			e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因
		}
		//连接数据库
		try {
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/book_admin?serverTimezone=UTC","root","147258369");//这里是MySQL数据库的用户名和密码
			System.out.println("成功连接数据库服务器");
		}
		catch(Exception e1){
			System.out.println("连接数据库服务器出现错误");
		}
		
		return con;
	}
	/**
	 * 关闭数据库
	 * @param con
	 * @throws Exception
	 */
	public void closeCon (java.sql.Connection con)throws Exception {//关闭数据库
        if(con!=null){
            con.close();
        }
    }
}

util包下还有另一个类,判断字符串是否为空的类

package com.java.util;
/**
 * 判断字符串是否为空
 * @author admin
 *
 */
public class StringNull {
	/**
	 * 判断是否为空
	 * @param str
	 * @return
	 */
	public static boolean isEmpty(String str)  {
		if(str==null||"".equals(str.trim())) {
			return true;//1真
		}else {
			return false;//0假
		}
	}
	/**
	 * 判断是否不为空
	 * @param str
	 * @return
	 */
	public static boolean isNotEmpty(String str) {
		if(str!=null&&!"".equals(str.trim())) {
			return true;
		}else {
			return false;
		}
	}
}

三,界面

我的界面很简洁,因为难的不会,这不重要。

首先看看主界面,用的WindowBuilder插件做的。

第一个Java项目———Java实现简单图书管理系统(GUI)

注册界面,只能注册用户,不能注册管理员。

第一个Java项目———Java实现简单图书管理系统(GUI)

功能界面,写了两个界面,一个用户的,一个管理员的。

第一个Java项目———Java实现简单图书管理系统(GUI)第一个Java项目———Java实现简单图书管理系统(GUI)

    查询界面,借阅界面,归还界面,开始没规划好,就放在了一个界面

第一个Java项目———Java实现简单图书管理系统(GUI)

删除功能,以删除界面演示,删除用户一样 

第一个Java项目———Java实现简单图书管理系统(GUI)

添加图书

第一个Java项目———Java实现简单图书管理系统(GUI)

查找图书

第一个Java项目———Java实现简单图书管理系统(GUI)

四,包及其下的类

1,model下的实体类

以图书类为例子,get/set方法和构造方法都可以自动生成,如下图,先鼠标右击(前提先写好成员变量)

第一个Java项目———Java实现简单图书管理系统(GUI)

哇 

package com.java.model;
/**
 * 图书信息
 * @author admin
 *
 */
public class Book {
	private int book_id;//图书编号
	private String book_name;//图书姓名
	private String book_writer;//作者
	private String book_publish;//出版社
	private String book_status;//状态
	
	public Book() {
		super();
	}
	
	public Book(int book_id) {
		super();
		this.book_id = book_id;
	}

	public Book(int book_id, String book_name, String book_writer, String book_publish, String book_status) {
		super();
		this.book_id = book_id;
		this.book_name = book_name;
		this.book_writer = book_writer;
		this.book_publish = book_publish;
		this.book_status = book_status;
	}

	public int getBook_id() {
		return book_id;
	}
	public void setBook_id(int book_id) {
		this.book_id = book_id;
	}
	public String getBook_name() {
		return book_name;
	}
	public void setBook_name(String book_name) {
		this.book_name = book_name;
	}
	public String getBook_writer() {
		return book_writer;
	}
	public void setBook_writer(String book_writer) {
		this.book_writer = book_writer;
	}
	public String getBook_publish() {
		return book_publish;
	}
	public void setBook_publish(String book_publish) {
		this.book_publish = book_publish;
	}
	public String getBook_status() {
		return book_status;
	}
	public void setBook_status(String book_status) {
		this.book_status = book_status;
	}
}

Dao包下的数据库访问层,以Book为例

package com.java.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.java.model.Book;
import com.java.util.StringNull;

/**
 * 
 * @author admin
 *
 */
public class BookDao {
	/**
	 * 查询图书
	 * @param con
	 * @param book
	 * @return
	 * @throws Exception
	 */
	public ResultSet query(Connection con,Book book)throws Exception{
		ResultSet resultUser = null;
		StringBuffer sql = new StringBuffer("select * from book");
		
		//数据库模糊查询
		if(StringNull.isNotEmpty(book.getBook_name())) {
			sql.append(" and book_name like '%"+book.getBook_name()+"%'");
		}
		 
		if(StringNull.isNotEmpty(book.getBook_writer())) {
			sql.append(" and book_writer like '%"+book.getBook_writer()+"%'");
		}
		
		if(StringNull.isNotEmpty(book.getBook_publish())) {
			sql.append(" and book_publish like '%"+book.getBook_publish()+"%'");
		}
		
		PreparedStatement pstmt = (PreparedStatement)con.prepareStatement(sql.toString().replaceFirst("and", "where"));
		return pstmt.executeQuery(); 
	}
	/**
	 * 查询图书
	 * @param con
	 * @param book
	 * @return
	 * @throws Exception
	 */
	public ResultSet query2(Connection con,Book book)throws Exception{
		ResultSet resultUser = null;
		String sql = "select * from book where book_id=?";
		PreparedStatement pstmt = (PreparedStatement)con.prepareStatement(sql);
		
		pstmt.setInt(1, book.getBook_id());
		
		return pstmt.executeQuery();
	}
	/**
	 * 图书信息修改
	 * @param con
	 * @param book
	 * @return
	 * @throws Exception
	 */
	public int update(Connection con,Book book)throws Exception {
		String sql = "update book set book_status=? where book_id=?";
		PreparedStatement pstmt = (PreparedStatement)con.prepareStatement(sql);
	
		pstmt.setString(1, book.getBook_status());
		pstmt.setInt(2, book.getBook_id());
		
		return pstmt.executeUpdate();
	}
	/**
	 * 添加图书信息
	 * @param con
	 * @param book
	 * @return
	 * @throws Exception
	 */
	public int add(Connection con,Book book)throws Exception{
		String sql  = "insert into book values(?,?,?,?,?)";
		PreparedStatement pstmt = (PreparedStatement)con.prepareStatement(sql);
		
		pstmt.setInt(1, book.getBook_id());
		pstmt.setString(2, book.getBook_name());
		pstmt.setString(3, book.getBook_writer());
		pstmt.setString(4, book.getBook_publish());
		pstmt.setString(5, book.getBook_status());
		
		return pstmt.executeUpdate();
	}
	public int delete(Connection con,int bookId) throws Exception{
		String sql = "delete from book where book_id = ?";
		PreparedStatement pstmt = con.prepareStatement(sql);
		pstmt.setInt(1, bookId);
		return pstmt.executeUpdate();
	}
}

frame包下的视图层和控制功能,以图书查询,借阅,归还界面为例,大部分代码是WindowBuilder插件生成的。

package com.java.frame;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JTextField;
import javax.swing.JFormattedTextField;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;
import java.awt.event.ActionEvent;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import com.java.dao.BookDao;
import com.java.dao.BookInformationDao;
import com.java.model.Book;
import com.java.model.BookInformation;
import com.java.util.Connect;
import com.java.util.StringNull;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class QueryBookInterface extends JFrame {
private JPanel contentPane;
private JTextField book_nameTxt;
private JTextField book_writerTxt;
private JTextField book_publishTxt;
private Connect conutil= new Connect();
private BookDao bookDao= new BookDao();
private BookInformationDao bookInformationDao = new BookInformationDao();
public static String readerName;
public static String adminName;
/**
* Launch the application.
*/
JFrame frame = new JFrame();
private JTable bookTable;
private JPanel panel;
private JLabel lblNewLabel;
private JButton borrowButton;
private JLabel label;
private JLabel label_4;
private JLabel label_5;
private JTextField book_RBnameTxt;
private JTextField book_RBwriterTxt;
private JTextField book_RBpublishTxt;
private JTextField book_RBstatusTxt;
private JButton returnButton;
private JTextField book_RBidTxt;
/**
* Create the frame.
*/
public QueryBookInterface() {
setTitle("\u56FE\u4E66\u7684\u67E5\u8BE2\uFF0C\u501F\u9605\uFF0C\u5F52\u8FD8");
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
setBounds(100, 100, 920, 686);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JButton queryButton = new JButton("\u67E5\u8BE2");
queryButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
queryBookTable(e);
}
});
JLabel label_1 = new JLabel("\u56FE\u4E66\u540D\u5B57:");
JLabel label_2 = new JLabel("\u56FE\u4E66\u4F5C\u8005\uFF1A");
JLabel label_3 = new JLabel("\u51FA\u7248\u793E\uFF1A");
book_nameTxt = new JTextField();
book_nameTxt.setColumns(10);
book_writerTxt = new JTextField();
book_writerTxt.setColumns(10);
book_publishTxt = new JTextField();
book_publishTxt.setColumns(10);
JScrollPane scrollPane = new JScrollPane();
panel = new JPanel();
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(42)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(label_2)
.addComponent(label_1)
.addComponent(label_3))
.addGap(28)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(queryButton, GroupLayout.PREFERRED_SIZE, 132, GroupLayout.PREFERRED_SIZE)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING, false)
.addComponent(book_nameTxt)
.addComponent(book_writerTxt)
.addComponent(book_publishTxt, GroupLayout.PREFERRED_SIZE, 286, GroupLayout.PREFERRED_SIZE))))
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addComponent(panel, GroupLayout.PREFERRED_SIZE, 435, GroupLayout.PREFERRED_SIZE)))
.addGap(34)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 388, GroupLayout.PREFERRED_SIZE)
.addContainerGap(21, Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(42)
.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 566, Short.MAX_VALUE))
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(84)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(label_1)
.addComponent(book_nameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED, 52, Short.MAX_VALUE)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(label_2)
.addComponent(book_writerTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(51)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(label_3)
.addComponent(book_publishTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addComponent(queryButton, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(panel, GroupLayout.PREFERRED_SIZE, 277, GroupLayout.PREFERRED_SIZE)
.addGap(11)))
.addGap(21))
);
lblNewLabel = new JLabel("\u56FE\u4E66\u540D\u5B57\uFF1A");
borrowButton = new JButton("\u501F\u9605");
borrowButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
borrowBook();
}
});
label = new JLabel("\u4F5C\u8005\uFF1A");
label_4 = new JLabel("\u51FA\u7248\u793E\uFF1A");
label_5 = new JLabel("\u72B6\u6001\uFF1A");
book_RBnameTxt = new JTextField();
book_RBnameTxt.setColumns(10);
book_RBwriterTxt = new JTextField();
book_RBwriterTxt.setColumns(10);
book_RBpublishTxt = new JTextField();
book_RBpublishTxt.setColumns(10);
book_RBstatusTxt = new JTextField();
book_RBstatusTxt.setColumns(10);
returnButton = new JButton("\u5F52\u8FD8");
returnButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
returnBook();
}
});
JLabel label_6 = new JLabel("\u7F16\u53F7\uFF1A");
book_RBidTxt = new JTextField();
book_RBidTxt.setColumns(10);
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(28)
.addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
.addComponent(lblNewLabel)
.addComponent(label)
.addComponent(label_4)
.addComponent(label_5)
.addComponent(label_6))
.addGap(32)
.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING)
.addComponent(book_RBidTxt, GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE)
.addGroup(gl_panel.createSequentialGroup()
.addComponent(borrowButton)
.addPreferredGap(ComponentPlacement.RELATED, 160, Short.MAX_VALUE)
.addComponent(returnButton))
.addComponent(book_RBwriterTxt, Alignment.LEADING, 286, 286, Short.MAX_VALUE)
.addComponent(book_RBnameTxt, GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE)
.addComponent(book_RBpublishTxt, Alignment.LEADING, 286, 286, Short.MAX_VALUE)
.addComponent(book_RBstatusTxt, Alignment.LEADING, 286, 286, Short.MAX_VALUE))
.addContainerGap())
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(22)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(lblNewLabel)
.addComponent(book_RBnameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(24)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(label)
.addComponent(book_RBwriterTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(label_4)
.addComponent(book_RBpublishTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(label_5)
.addComponent(book_RBstatusTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING)
.addComponent(book_RBidTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_6))
.addPreferredGap(ComponentPlacement.RELATED, 17, Short.MAX_VALUE)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(returnButton)
.addComponent(borrowButton))
.addContainerGap())
);
panel.setLayout(gl_panel);
bookTable = new JTable();
bookTable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
bookTableMousePressed(e);
}
});
bookTable.setFillsViewportHeight(true);
bookTable.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"\u7F16\u53F7", "\u56FE\u4E66\u540D\u5B57", "\u4F5C\u8005", "\u51FA\u7248\u793E", "\u72B6\u6001"
}
) {
boolean[] columnEditables = new boolean[] {
false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
scrollPane.setViewportView(bookTable);
contentPane.setLayout(gl_contentPane);
this.fillTable(new Book());//初始化图书信息
}
/**
* 归还图书函数
*/
protected void returnBook() {
String bookId = this.book_RBidTxt.getText();
String bookName = this.book_RBnameTxt.getText();
String bookPublish =this.book_RBpublishTxt.getText();
String bookWriter = this.book_RBwriterTxt.getText();
String bookStatus = this.book_RBstatusTxt.getText();
if(StringNull.isEmpty(bookId)) {
JOptionPane.showMessageDialog(null, "图书信息不能为空!");
return ;
}
Connection con = null;
try {
BookInformation bi = new BookInformation(Integer.parseInt(bookId));
Book book = new Book(Integer.parseInt(bookId));
book.setBook_status("0");//把图书状态改变为0
con = conutil.loding();
ResultSet rs = bookInformationDao.returnn(con,bi);//得到符合bookId的那一行。
//读者对比,只有借此书的读者才能还此书
if((rs.next() && rs.getString(2).equals(readerName))||((StringNull.isNotEmpty(adminName))&&rs.getString(5).equals("1"))) {
bookInformationDao.delete(con, Integer.parseInt(bookId));//删除借书表里的哪一行数据
bookDao.update(con, book);//更新图书表中的图书状态
JOptionPane.showMessageDialog(null, "归还成功!");
return ;
}else{
JOptionPane.showMessageDialog(null, "归还失败!");
return ;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
conutil.closeCon(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 接受用户ID,从其它类接受
* @param id
*/
public static void setReaderId(String name) {
readerName = name;
}
public static void setAdminId(String name) {
adminName = name;
}
/**
*  借书
*/
private void borrowBook() {
String bookId = this.book_RBidTxt.getText();
String bookName = this.book_RBnameTxt.getText();
String bookPublish = this.book_RBpublishTxt.getText();
String bookWriter = this.book_RBwriterTxt.getText();
String bookStatus = this.book_RBstatusTxt.getText();
if(StringNull.isEmpty(bookId)) {
JOptionPane.showMessageDialog(null, "图书信息不能为空!");
return;
}
if(bookStatus.equals("1")) {
JOptionPane.showMessageDialog(null, "该图书已被借走了!");
return;
}
Connection con = null;
try {
con = conutil.loding();
BookInformation bi;
if(StringNull.isNotEmpty(readerName)) {
bi = new BookInformation(Integer.parseInt(bookId), readerName, null, null, "1");//读者
}else {
bi = new BookInformation(Integer.parseInt(bookId), adminName, null, null, "1");//管理员
}
Book book =new Book(Integer.parseInt(bookId), bookName, bookWriter, bookPublish, "1");
int find = bookInformationDao.add(con, bi);
int flag = bookDao.update(con, book);
if(1 != find ||1 != flag) {
JOptionPane.showMessageDialog(null, "借阅失败!");
return;
}else {
JOptionPane.showMessageDialog(null, "借阅成功!");
return;
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "借阅失败!");
return ;
}finally {
try {
conutil.closeCon(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 添加到面板中
* @param e
*/
private void bookTableMousePressed(MouseEvent e) {
int row = bookTable.getSelectedRow();
book_RBnameTxt.setText((String)bookTable.getValueAt(row, 1));
book_RBwriterTxt.setText((String)bookTable.getValueAt(row, 2));
book_RBpublishTxt.setText((String)bookTable.getValueAt(row, 3));
book_RBstatusTxt.setText((String)bookTable.getValueAt(row, 4));
book_RBidTxt.setText((String)bookTable.getValueAt(row, 0));
}
/**
* 图书信息查询
*/
private void queryBookTable(ActionEvent e) {
//书名查询,作者,出版社
String book_name = this.book_nameTxt.getText();
String book_writer = this.book_writerTxt.getText();
String book_publish = this.book_publishTxt.getText();
Book book =new Book();
book.setBook_name(book_name);
book.setBook_writer(book_writer);
book.setBook_publish(book_publish);
this.fillTable(book);
}
/**
* 初始化图书信息
* @param book
*/
private void fillTable(Book book) {
DefaultTableModel dtm = (DefaultTableModel) bookTable.getModel();
dtm.setRowCount(0);
Connection con = null;
try {
con = conutil.loding();
ResultSet rs = bookDao.query(con, book);
while(rs.next()) {
Vector v = new Vector();
v.add(rs.getString("book_id"));
v.add(rs.getString("book_name"));
v.add(rs.getString("book_writer"));
v.add(rs.getString("book_publish"));
if(rs.getString("book_status").equals("1")) {
v.add("已借出");
}else {
v.add("未借出");
}
dtm.addRow(v);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
conutil.closeCon(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159738.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java集合List用法总结

    Java集合List用法总结转自:https://www.jianshu.com/p/25aa92f8d681Java集合作为一个Developer,Java集合类是我们在工作中运用最多的、最频繁的类。相比于数组(Array)来说,集合类的长度可变,更加适合于现代开发需求;Java集合就像一个容器,可以存储任何类型的数据,也可以结合泛型来存储具体的类型对象。在程序运行时,Java集合可以动态的进行扩展,随着元素的增加而扩大。在Java中,集合类通常存在于java.util包中。Java集合主要由2大体系构成,分别是Co

  • 通达OA工作流不可编辑

    通达OA工作流不可编辑找到表:flow_run搜索自增长ID=流水号,查看该条记录的用户是否ok找到表:flow_run_prcs搜索流水号:run_id=***查看结果的PRCS_ID数字最大的那一条记录的OP_FLAG是否为1,如果不为1则改为1即可。

  • 链表排序之选择排序法_单链表直接选择排序

    链表排序之选择排序法_单链表直接选择排序选择排序的优点在于它每次选择出最大或者最小的值,将它们进行排序此选择排序的思想在于选择出最小的节点,创建新链表,将原链表的最小节点删除,继续循环TYPE*lain(intl,TYPE*head){TYPE*first,*tail,*p_min,*min,*p;first=NULL;while(head!=NULL){

    2022年10月11日
  • matlab插值函数的优缺点,Python和Matlab插值函数的不同结果

    matlab插值函数的优缺点,Python和Matlab插值函数的不同结果我正在将代码从Matlab转换为Python2.7,在转换interp1函数时遇到问题。我看过已经贴出来的类似问题,但还没有解决。问题是新生成的值(yn)的向量的第一个值不同,而其余的几乎相同。当使用不同的插值方法时,我得到的值略有不同,但是同样的问题。目前我真的不知道为什么会这样。有没有人对此有任何了解或看到我可能犯的错误?谢谢。在变量:x=[5.5,5.46678,5….

  • 博士进高校难不难_送礼挤破头图片

    博士进高校难不难_送礼挤破头图片同一个实验室,硕士们进了大厂拿高薪,为什么博士却要挤破头进高校?高赞回答一作者:shui0908链接:https://www.zhihu.com/question/293696289/a…

  • FEC编码_无线电FEC

    FEC编码_无线电FECFEC编码:ES流:也叫基本码流,包含视频、音频或数据的连续码流.PES流:也叫打包的基本码流,是将基本码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流.TS流:也叫传输流,是由固定长度为188字节的包组成,含有独立时基的一个或多个节目,适用于误码较多的环境.在DVB-S标准中,只规定了1/2、2/3、3/4、5/6、7/8这5种FEC码率,为什么只规定这5…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号