J2SE图书管理系统(7)——图书添加功能

我们先在数据库里添加一个t_book表;

然后将t_book表里面的外键bookTypeId与t_booktype的主键bookTypeId相关联!

 

1.实体层:com.java.model;

新建一个图书t_book的的实体信息,包括get set方法和构造方法:

package com.java.model;

public class Book {

	private int id;//编号
	private String bookName;//图书名称
	private String author;//作者
	private String sex;//性别
	private Float price;//图书价格
	private Integer bookTypeId;//图书类别Id
	private String bookTypeName;//图书类别名称
	private String bookDesc;//备注
	
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Float getPrice() {
		return price;
	}
	public void setPrice(Float price) {
		this.price = price;
	}
	public Integer getBookTypeId() {
		return bookTypeId;
	}
	public void setBookTypeId(Integer bookTypeId) {
		this.bookTypeId = bookTypeId;
	}
	public String getBookTypeName() {
		return bookTypeName;
	}
	public void setBookTypeName(String bookTypeName) {
		this.bookTypeName = bookTypeName;
	}
	public String getBookDesc() {
		return bookDesc;
	}
	public void setBookDesc(String bookDesc) {
		this.bookDesc = bookDesc;
	}
	
	
}

 

2.数据访问层:com.java.dao; 

在数据访问层Dao里面新建图书的数据访问类BookDao,主要包含了图书添加的方法:

package com.java.dao;

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

import com.java.model.Book;

/**
 * 图书Dao类
 * @author Huke
 *
 */
public class BookDao {

	/**
	 * 图书添加
	 * @param con
	 * @param book
	 * @return
	 * @throws Exception 
	 */
	public int addBook(Connection con,Book book) throws Exception{
		String sql="insert into t_book values(null,?,?,?,?,?,?)";
		PreparedStatement pstmt=con.prepareStatement(sql);
		pstmt.setString(1, book.getBookName());
		pstmt.setString(2, book.getAuthor());
		pstmt.setString(3, book.getSex());
		pstmt.setFloat(4, book.getPrice());
		pstmt.setInt(5, book.getBookTypeId());
		pstmt.setString(6, book.getBookDesc());
		return pstmt.executeUpdate();
	}
}

 

 3.视图层:com.java.view;

首先图书添加的窗体也是一个内部窗体,我们在view里面新建一个Book_Add_InterFrm类:

右键点击view包->new->Other->WindowBuilder->Swing Designer->JInternalFrame类;

建好之后在Designer上添加一些控件:

给图书名称框进行重命名,命名为:bookName_Txt;

给图书作者框进行重命名,命名为:  author_Txt;

给图书价格框进行重命名,命名为:price_Txt;

给图书描述框进行重命名,命名为:bookDesc_Txt;

给图书类别框进行重命名,命名为:bookType_Jcb;

给作者性别框进行重命名,命名为:man_Jrb和woman_Jrb;

 

然后在主界面中MainFrm添加事件处理:

在图书管理下面的图书添加->右键->Add event handler->action->actionPerformed; 

并添加如上代码! 

 

下面写一个初始化图书类别下拉框的方法:

在Book_Add_InterFrm类里面添加一个方法fillBookType();

然后放在上面调用:

用来初始化图书下拉框里面的内容;我们测试一下: 

 

可以看到图书添加的框出来后下拉框里面有内容! 

 

下面实现图书添加的功能:

/**
	 * 图书添加事件
	 * @param evt
	 */
	private void bookAddActionPerformed(ActionEvent evt) {
		//从用户界面获取信息
		String bookName=this.bookName_Txt.getText();
		String author=this.author_Txt.getText();
		String price=this.price_Txt.getText();
		String bookDesc=this.bookDesc_Txt.getText();
		
		//判断是否为空
		if(StringUtil.isEmpty(bookName)){
			JOptionPane.showMessageDialog(null, "图书名称不能为空!");
			return;
		}
		if(StringUtil.isEmpty(author)){
			JOptionPane.showMessageDialog(null, "作者名称不能为空!");
			return;
		}
		if(StringUtil.isEmpty(price)){
			JOptionPane.showMessageDialog(null, "价格不能为空!");
			return;
		}
		
		//获取性别信息
		String sex="";
		if(man_Jrb.isSelected()){
			sex="男";
		}else if(woman_Jrb.isSelected()){
			sex="女";
		}
		
		//获取图书类别id
		BookType bookType=(BookType) bookType_Jcb.getSelectedItem();
		int bookTypeId=bookType.getId();
		
		Book book=new Book(bookName, author, sex, Float.parseFloat(price), bookTypeId, bookDesc);
		//进行数据库连接
		Connection con=null;
		try {
			con=dbUtil.getCon();
			int addNum=bookDao.addBook(con,book);
			if(addNum==1){
				JOptionPane.showMessageDialog(null, "图书添加成功!");
				resetValue();
			}else{
				JOptionPane.showMessageDialog(null, "图书添加失败!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			try {
				dbUtil.close(con);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

这里先要在实体层里面的Book类添加相应的构造方法:

 然后还要写一个添加完之后的重置表单resetValue()方法:

/**
	 * 重置表单
	 */
	private void resetValue(){
		this.bookName_Txt.setText("");
		this.author_Txt.setText("");
		this.price_Txt.setText("");
		this.man_Jrb.setSelected(true);
		this.bookDesc_Txt.setText("");
		if(this.bookType_Jcb.getItemCount()>0){
			//默认设置选中第一项
			this.bookType_Jcb.setSelectedIndex(0);
		}
	}

接着重置的功能直接调用resetValue方法就可以了!

 

测试环节:

 

我们来看看数据库里面t_book表中的内容:

可以看到图书添加成功! 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值