Java-单机版的书店管理系统(练习设计模块和思想_系列 四(1) )

谙忆 2021-01-21 14:37:42
java 单机版 单机 java- 书店


Java-单机版的书店管理系统(练习设计模块和思想_系列 三 ): http://blog.csdn.net/qq_26525215/article/details/51099202

Java-单机版的书店管理系统(练习设计模块和思想_系列 二 ): http://blog.csdn.net/qq_26525215/article/details/51089734

Java-单机版的书店管理系统(练习设计模块和思想_系列 一 ): http://blog.csdn.net/qq_26525215/article/details/51073546

本系列四介绍说明:

主要是添加了Uuid模块,现在的uuid并不是由用户输入,而是我们通过软件内部自动生成(通过唱票模式),uuid是不会产生重复的!

还有把主界面改了下,以后会改成登录页面的(待完善)。

现在进入其他模块是通过菜单项进入的。

增加了图书模块!

注意: 每个模块先写哪个,我都是按照先后顺序来上代码的,从前往后依次写代码的。 注意是每个模块!!! 先写公共类和工具类再写模块的! 我公共类和工具类上传在最后了,你看可以直接在左上角找目录跳到那去看。 (限每个模块内部)(因为还有公共类和工具类等)

软件部分图片:

现在先看软件部分运行图片: 待完成的主界面:现在通过菜单条:模块进入其他的模块:

用户模块主界面:

图书模块主界面:

添加用户的界面: 相比上一系列,减少了uuid的输入: (其他如增删改查的界面完全没有动,这就是设计模块的好处)

添加图书的界面:

书店管理系统文件目录:

主界面代码:

main()方法:BookStore

/*
* BookStore.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.bookStore;
import java.awt.Dimension;
import java.awt.Toolkit;
import cn.hncu.bookStore.book.ui.BookListPanel;
import cn.hncu.bookStore.user.ui.ListPanel;
/**
*
* @author 陈浩翔
*/
public class BookStore extends javax.swing.JFrame {
/** Creates new form BookStore */
public BookStore() {
super("书店管理系统---CHX---联系QQ——619699629");
initComponents();
//this.setContentPane(new ListPanel(this));
this.setResizable(false);//不能缩放
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(scr.width / 5, scr.height / 5);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
menuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
openMenuItem = new javax.swing.JMenuItem();
saveMenuItem = new javax.swing.JMenuItem();
saveAsMenuItem = new javax.swing.JMenuItem();
exitMenuItem = new javax.swing.JMenuItem();
editMenu = new javax.swing.JMenu();
cutMenuItem = new javax.swing.JMenuItem();
copyMenuItem = new javax.swing.JMenuItem();
pasteMenuItem = new javax.swing.JMenuItem();
deleteMenuItem = new javax.swing.JMenuItem();
helpMenu = new javax.swing.JMenu();
contentsMenuItem = new javax.swing.JMenuItem();
aboutMenuItem = new javax.swing.JMenuItem();
jMenu1 = new javax.swing.JMenu();
jMenuItemUser = new javax.swing.JMenuItem();
jMenuItemBook = new javax.swing.JMenuItem();
jMenuItem1 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(800, 600));
jButton1.setIcon(new javax.swing.ImageIcon(
"E:\\百度云同步盘\\MyJavaWork\\myBookStore\\shudian.png")); // NOI18N
jButton1.setMaximumSize(new java.awt.Dimension(7500, 2300));
jButton1.setMinimumSize(new java.awt.Dimension(800, 600));
fileMenu.setText("File");
openMenuItem.setText("Open");
fileMenu.add(openMenuItem);
saveMenuItem.setText("Save");
fileMenu.add(saveMenuItem);
saveAsMenuItem.setText("Save As ...");
fileMenu.add(saveAsMenuItem);
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
editMenu.setText("Edit");
cutMenuItem.setText("Cut");
editMenu.add(cutMenuItem);
copyMenuItem.setText("Copy");
editMenu.add(copyMenuItem);
pasteMenuItem.setText("Paste");
editMenu.add(pasteMenuItem);
deleteMenuItem.setText("Delete");
editMenu.add(deleteMenuItem);
menuBar.add(editMenu);
helpMenu.setText("Help");
contentsMenuItem.setText("Contents");
helpMenu.add(contentsMenuItem);
aboutMenuItem.setText("About");
helpMenu.add(aboutMenuItem);
menuBar.add(helpMenu);
jMenu1.setForeground(new java.awt.Color(204, 0, 0));
jMenu1.setText("\u6a21\u5757");
jMenuItemUser.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_U,
java.awt.event.InputEvent.CTRL_MASK));
jMenuItemUser.setFont(new java.awt.Font("Dialog", 1, 14));
jMenuItemUser.setForeground(new java.awt.Color(0, 204, 0));
jMenuItemUser.setText("\u7528\u6237");
jMenuItemUser.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemUserActionPerformed(evt);
}
});
jMenu1.add(jMenuItemUser);
jMenuItemBook.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_B,
java.awt.event.InputEvent.CTRL_MASK));
jMenuItemBook.setFont(new java.awt.Font("Dialog", 1, 14));
jMenuItemBook.setForeground(new java.awt.Color(0, 204, 51));
jMenuItemBook.setText("\u56fe\u4e66");
jMenuItemBook.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemBookActionPerformed(evt);
}
});
jMenu1.add(jMenuItemBook);
jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_DELETE,
java.awt.event.InputEvent.CTRL_MASK));
jMenuItem1.setFont(new java.awt.Font("Dialog", 1, 14));
jMenuItem1.setForeground(new java.awt.Color(0, 204, 0));
jMenuItem1.setText("\u6ce8\u9500");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem1);
menuBar.add(jMenu1);
setJMenuBar(menuBar);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addComponent(
jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 800,
Short.MAX_VALUE));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addComponent(
jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 600,
Short.MAX_VALUE));
pack();
}// </editor-fold>
//GEN-END:initComponents
/**
* 注销菜单项
* @param evt
*/
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
}
/**
* 监听进入图书模块
* @param evt
*/
private void jMenuItemBookActionPerformed(java.awt.event.ActionEvent evt) {
this.setContentPane(new BookListPanel(this));
this.validate();
}
/**
* 监听进入用户模块
* @param evt
*/
private void jMenuItemUserActionPerformed(java.awt.event.ActionEvent evt) {
this.setContentPane(new ListPanel(this));
this.validate();
}
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
System.exit(0);
}//GEN-LAST:event_exitMenuItemActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BookStore().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JMenuItem aboutMenuItem;
private javax.swing.JMenuItem contentsMenuItem;
private javax.swing.JMenuItem copyMenuItem;
private javax.swing.JMenuItem cutMenuItem;
private javax.swing.JMenuItem deleteMenuItem;
private javax.swing.JMenu editMenu;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
private javax.swing.JMenu helpMenu;
private javax.swing.JButton jButton1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItemBook;
private javax.swing.JMenuItem jMenuItemUser;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenuItem openMenuItem;
private javax.swing.JMenuItem pasteMenuItem;
private javax.swing.JMenuItem saveAsMenuItem;
private javax.swing.JMenuItem saveMenuItem;
// End of variables declaration//GEN-END:variables
}

图书模块的所有代码和类:

值对象层:

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookModel类:

package cn.hncu.bookStore.book.vo;
import java.io.Serializable;
/**
* 值对象封装
*
* @author 陈浩翔
* @version 1.0
*/
public class BookModel implements Serializable{//必须实现这个接口
private String uuid;//图书ID
private String name;//图书名字
private double inPrice;//图书的进价
private double salePrice;//图书的售价
/**
*
* @return 图书的ID
*/
public String getUuid() {
return uuid;
}
/**
*
* @param uuid ---设置图书的ID
*/
public void setUuid(String uuid) {
this.uuid = uuid;
}
/**
*
* @return 图书的名字
*/
public String getName() {
return name;
}
/**
*
* @param name--设置图书的名字
*/
public void setName(String name) {
this.name = name;
}
/**
*
* @return 得到图书的进价
*/
public double getInPrice() {
return inPrice;
}
/**
*
* @param inPrice---设置图书的进价
*/
public void setInPrice(double inPrice) {
this.inPrice = inPrice;
}
/**
*
* @return ---返回图书的售价
*/
public double getSalePrice() {
return salePrice;
}
/**
*
* @param outPrice---设置图书的售价
*/
public void setSalePrice(double salePrice) {
this.salePrice = salePrice;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
BookModel other = (BookModel) obj;
if (uuid == null) {
if (other.uuid != null)
return false;
} else if (!uuid.equals(other.uuid))
return false;
return true;
}
@Override
public String toString() {
return uuid + ", " + name + ", 进价="
+ inPrice + ", 售价" + salePrice;
}
}

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookQueryModel类:

package cn.hncu.bookStore.book.vo;
public class BookQueryModel extends BookModel{
private double inPrice2;
private double salePrice2;
public double getInPrice2() {
return inPrice2;
}
public void setInPrice2(double inPrice2) {
this.inPrice2 = inPrice2;
}
public double getSalePrice2() {
return salePrice2;
}
public void setSalePrice2(double salePrice2) {
this.salePrice2 = salePrice2;
}
}

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

数据层:

BookDao接口

package cn.hncu.bookStore.book.dao.dao;
import java.util.List;
import cn.hncu.bookStore.book.vo.BookModel;
import cn.hncu.bookStore.book.vo.BookQueryModel;
/**
*
* @author 陈浩翔
*
* @version 1.0
* 图书模块的数据层接口
*/
public interface BookDao {
/**
* 功能:创建一本图书
*
* @param bookModel---将要创建的图书数据
* @return---true表示创建成功,false表示创建失败
*/
public boolean create(BookModel book);
/**
* 功能:根据图书的唯一标识码uuid删除一本图书
*
* @param uuid---图书唯一的标识码,每本图书都不会相同
* @return---true表示删除成功,false表示删除失败
*/
public boolean delete(String uuid);
/**
* 功能:修改图书的数据资料
*
* @param user---需要修改的图书数据参数名
* @return 返回true-表示修改成功了,返回false-表示修改失败
*/
public boolean update(BookModel book);
/**
* 功能:得到所有的图书数据
*
* @return---一个BookModel集合,也就是图书的数据
*/
public List<BookModel> getAll();
/**
* 功能:按照一定的查找条件进行查找,
* <br/>
* 把满足查找条件的图书数据返回。
*
* @param bqm---被封装的查找条件
* @return---满足查找条件的图书数据集合
*/
public List<BookModel> getbyCondition(BookQueryModel bqm);
/**
* 功能:得到一个确定的图书的数据资料
*
* @param uuid---图书唯一标识码
* @return ---返回按这个唯一标识码找到的图书数据
*/
public BookModel getSingle(String uuid);
}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookDaoSerImpl类:

package cn.hncu.bookStore.book.dao.impl;
import java.util.ArrayList;
import java.util.List;
import cn.hncu.bookStore.book.dao.dao.BookDao;
import cn.hncu.bookStore.book.vo.BookModel;
import cn.hncu.bookStore.book.vo.BookQueryModel;
import cn.hncu.bookStore.util.FileIoUtil;
/**
* Dao实现类
* @author 陈浩翔
*
* @version 1.0
*/
public class BookDaoSerImpl implements BookDao {
private final String FILE_NAME = "Book.txt";
@Override
public boolean create(BookModel book) {
List<BookModel> books = FileIoUtil.readFormFile(FILE_NAME);
for (BookModel model : books) {
if (model.getUuid().equals(book.getUuid())) {
return false;
}
}
books.add(book);
FileIoUtil.write2file(books, FILE_NAME);
return true;
}
@Override
public boolean delete(String uuid) {
List<BookModel> books = FileIoUtil.readFormFile(FILE_NAME);
for (BookModel model : books) {
if (model.getUuid().equals(uuid)) {
books.remove(model);
FileIoUtil.write2file(books, FILE_NAME);
return true;
}
}
return false;
}
@Override
public boolean update(BookModel book) {
List<BookModel> books = FileIoUtil.readFormFile(FILE_NAME);
for (int i=0;i<books.size();i++) {
if (books.get(i).getUuid().equals(book.getUuid())) {
books.set(i, book);
FileIoUtil.write2file(books, FILE_NAME);
return true;
}
}
return false;
}
@Override
public List<BookModel> getAll() {
return FileIoUtil.readFormFile(FILE_NAME);
}
@Override
public List<BookModel> getbyCondition(BookQueryModel bqm) {
List<BookModel> lists = getAll();
List<BookModel> results = new ArrayList<BookModel>();
for(BookModel book: lists){
if(bqm.getUuid()!=null&&bqm.getUuid().trim().length()>0){
if(!book.getUuid().equals(bqm.getUuid())){
continue;
}
}
if(bqm.getName()!=null&&bqm.getName().trim().length()>0){
if(book.getName().indexOf(bqm.getName())==-1){
continue;
}
}
if(bqm.getInPrice()>0){
if(book.getInPrice()<bqm.getInPrice()){
continue;
}
}
if(bqm.getInPrice2()>0){
if(book.getInPrice()>bqm.getInPrice2()){
continue;
}
}
if(bqm.getSalePrice()>0){
if(book.getSalePrice()<bqm.getSalePrice()){
continue;
}
}
if(bqm.getSalePrice2()>0){
if(book.getSalePrice()>bqm.getSalePrice2()){
continue;
}
}
results.add(book);
}
return results;
}
@Override
public BookModel getSingle(String uuid) {
List<BookModel> list = FileIoUtil.readFormFile(FILE_NAME);
for(BookModel book:list){
if(book.getUuid().equals(uuid)){
return book;
}
}
return null;
}
}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookDaoFactory类:

package cn.hncu.bookStore.book.dao.factory;
import cn.hncu.bookStore.book.dao.dao.BookDao;
import cn.hncu.bookStore.book.dao.impl.BookDaoSerImpl;
/**
* 工厂方法
* new一个实例
* @author 陈浩翔
* @version 1.0
*/
public class BookDaoFactory {
/**
*
* @return BookDao接口的一个实例
*/
public static BookDao getBookDao(){
return new BookDaoSerImpl();
}
}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

逻辑层:

BookEbi 接口:

package cn.hncu.bookStore.book.business.ebi;
import java.util.List;
import cn.hncu.bookStore.book.vo.BookModel;
import cn.hncu.bookStore.book.vo.BookQueryModel;
/**
*
* @author 陈浩翔
*
* @version 1.0
* 图书模块的逻辑层接口
*/
public interface BookEbi {
/**
* 功能:创建一本图书
*
* @param bookModel---将要创建的图书数据
* @return---true表示创建成功,false表示创建失败
*/
public boolean create(BookModel book);
/**
* 功能:根据图书的唯一标识码uuid删除一本图书
*
* @param uuid---图书唯一的标识码,每本图书都不会相同
* @return---true表示删除成功,false表示删除失败
*/
public boolean delete(String uuid);
/**
* 功能:修改图书的数据资料
*
* @param user---需要修改的图书数据参数名
* @return 返回true-表示修改成功了,返回false-表示修改失败
*/
public boolean update(BookModel book);
/**
* 功能:得到所有的图书数据
*
* @return---一个BookModel集合,也就是图书的数据
*/
public List<BookModel> getAll();
/**
* 功能:按照一定的查找条件进行查找,
* <br/>
* 把满足查找条件的图书数据返回。
*
* @param bqm---被封装的查找条件
* @return---满足查找条件的图书数据集合
*/
public List<BookModel> getbyCondition(BookQueryModel bqm);
/**
* 功能:得到一个确定的图书的数据资料
*
* @param uuid---图书唯一标识码
* @return ---返回按这个唯一标识码找到的图书数据
*/
public BookModel getSingle(String uuid);
}

||||||||||||||||||||||||||||||||||||||||||||||||||

BookEbo 类:

package cn.hncu.bookStore.book.business.ebo;
import java.util.List;
import cn.hncu.bookStore.book.business.ebi.BookEbi;
import cn.hncu.bookStore.book.dao.dao.BookDao;
import cn.hncu.bookStore.book.dao.factory.BookDaoFactory;
import cn.hncu.bookStore.book.vo.BookModel;
import cn.hncu.bookStore.book.vo.BookQueryModel;
import cn.hncu.bookStore.common.UuidModelConstance;
import cn.hncu.bookStore.common.uuid.dao.factory.UuidDaoFactory;
import cn.hncu.bookStore.common.uuid.dao.impl.UuidDaoSerImpl;
/**
* 实现类
* @author 陈浩翔
*
* @version 1.0
*/
public class BookEbo implements BookEbi {
//注入
BookDao dao = BookDaoFactory.getBookDao();
@Override
public boolean create(BookModel book) {
//如果表现层中对book对象的数据没有封装完整,那么在这里要为它补全
//调用uuid模块的dao层来自动获取当前book对象的uuid
String uuid = UuidDaoFactory.getUuidDao().getNextUuid(UuidModelConstance.BOOK);
book.setUuid(uuid);
return dao.create(book);
}
@Override
public boolean delete(String uuid) {
return dao.delete(uuid);
}
@Override
public boolean update(BookModel book) {
return dao.update(book);
}
@Override
public List<BookModel> getAll() {
return dao.getAll();
}
@Override
public List<BookModel> getbyCondition(BookQueryModel bqm) {
return dao.getbyCondition(bqm);
}
@Override
public BookModel getSingle(String uuid) {
return dao.getSingle(uuid);
}
}

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookEbiFactory 类:

package cn.hncu.bookStore.book.business.factory;
import cn.hncu.bookStore.book.business.ebi.BookEbi;
import cn.hncu.bookStore.book.business.ebo.BookEbo;
/**
* 工厂方法
*new 一个实例
* @author 陈浩翔
* @version 1.0
*/
public class BookEbiFactory {
public static BookEbi getBookEbi(){
return new BookEbo();
}
}

表现层:

BookListPanel 类:图书列表界面

/*
* BookListPanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.bookStore.book.ui;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.bookStore.book.business.factory.BookEbiFactory;
import cn.hncu.bookStore.book.vo.BookModel;
/**
*
* @author __USER__
*/
public class BookListPanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
/** Creates new form BookListPanel */
public BookListPanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
initComponents();
myInitData();
}
public BookListPanel(JFrame mainFrame, List<BookModel> results) {
this.mainFrame=mainFrame;
initComponents();
bookLists.setListData(results.toArray());
}
private void myInitData() {
List<BookModel> lists = BookEbiFactory.getBookEbi().getAll();
bookLists.setListData(lists.toArray());
}
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
bookLists = new javax.swing.JList();
jLabel1 = new javax.swing.JLabel();
btnToAdd = new javax.swing.JButton();
btnToDelete = new javax.swing.JButton();
btnToUpdate = new javax.swing.JButton();
btnToQuery = new javax.swing.JButton();
setMinimumSize(new java.awt.Dimension(800, 600));
setPreferredSize(new java.awt.Dimension(800, 600));
setLayout(null);
bookLists.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "" };
public int getSize() {
return strings.length;
}
public Object getElementAt(int i) {
return strings[i];
}
});
jScrollPane1.setViewportView(bookLists);
add(jScrollPane1);
jScrollPane1.setBounds(170, 80, 480, 230);
jLabel1.setFont(new java.awt.Font("Dialog", 1, 48));
jLabel1.setForeground(new java.awt.Color(204, 0, 51));
jLabel1.setText("\u56fe\u4e66\u5217\u8868");
add(jLabel1);
jLabel1.setBounds(300, 0, 260, 80);
btnToAdd.setFont(new java.awt.Font("Dialog", 1, 24));
btnToAdd.setForeground(new java.awt.Color(0, 102, 102));
btnToAdd.setText("\u6dfb\u52a0\u56fe\u4e66");
btnToAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnToAddActionPerformed(evt);
}
});
add(btnToAdd);
btnToAdd.setBounds(160, 350, 150, 50);
btnToDelete.setFont(new java.awt.Font("Dialog", 1, 24));
btnToDelete.setForeground(new java.awt.Color(0, 102, 102));
btnToDelete.setText("\u5220\u9664\u56fe\u4e66");
btnToDelete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnToDeleteActionPerformed(evt);
}
});
add(btnToDelete);
btnToDelete.setBounds(510, 350, 150, 50);
btnToUpdate.setFont(new java.awt.Font("Dialog", 1, 24));
btnToUpdate.setForeground(new java.awt.Color(0, 102, 102));
btnToUpdate.setText("\u4fee\u6539\u56fe\u4e66");
btnToUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnToUpdateActionPerformed(evt);
}
});
add(btnToUpdate);
btnToUpdate.setBounds(160, 450, 150, 50);
btnToQuery.setFont(new java.awt.Font("Dialog", 1, 24));
btnToQuery.setForeground(new java.awt.Color(0, 102, 102));
btnToQuery.setText("\u67e5\u627e\u56fe\u4e66");
btnToQuery.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnToQueryActionPerformed(evt);
}
});
add(btnToQuery);
btnToQuery.setBounds(510, 450, 150, 50);
}// </editor-fold>
//GEN-END:initComponents
private void btnToQueryActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new BookQueryPanel(mainFrame));
mainFrame.validate();
}
private void btnToUpdateActionPerformed(java.awt.event.ActionEvent evt) {
BookModel book = (BookModel) bookLists.getSelectedValue();
if(book==null){
JOptionPane.showMessageDialog(mainFrame, "请选择要修改的图书!");
return ;
}
String uuid = book.getUuid();
mainFrame.setContentPane(new BookUpdatePanel(mainFrame,uuid));
mainFrame.validate();
}
private void btnToDeleteActionPerformed(java.awt.event.ActionEvent evt) {
BookModel book = (BookModel) bookLists.getSelectedValue();
//System.out.println(book);
if(book==null){
JOptionPane.showMessageDialog(mainFrame, "请选择要删除的图书!");
return ;
}
String uuid = book.getUuid();
mainFrame.setContentPane(new BookDeletePanel(mainFrame,uuid));
mainFrame.validate();
}
private void btnToAddActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new BookAddPanel(mainFrame));
mainFrame.validate();
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JList bookLists;
private javax.swing.JButton btnToAdd;
private javax.swing.JButton btnToDelete;
private javax.swing.JButton btnToQuery;
private javax.swing.JButton btnToUpdate;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration//GEN-END:variables
}

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookAddPanel 类:添加界面:

/*
* BookAddPanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.bookStore.book.ui;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.bookStore.book.business.ebi.BookEbi;
import cn.hncu.bookStore.book.business.factory.BookEbiFactory;
import cn.hncu.bookStore.book.vo.BookModel;
/**
*
* @author 陈浩翔
*
* @version 1.0
*/
public class BookAddPanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
/** Creates new form BookAddPanel
* @param mainFrame */
public BookAddPanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
tfdName = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
btnAdd = new javax.swing.JButton();
btnBack = new javax.swing.JButton();
tfdInPrice = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
tfdSalePrice = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(800, 600));
setLayout(null);
jLabel1.setFont(new java.awt.Font("微软雅黑", 1, 48));
jLabel1.setForeground(new java.awt.Color(204, 0, 0));
jLabel1.setText("\u6dfb\u52a0\u56fe\u4e66");
add(jLabel1);
jLabel1.setBounds(280, 40, 230, 80);
tfdName.setFont(new java.awt.Font("Dialog", 1, 18));
tfdName.setAutoscrolls(false);
add(tfdName);
tfdName.setBounds(280, 170, 150, 30);
jLabel4.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel4.setText("\u56fe\u4e66\u540d\u79f0:");
add(jLabel4);
jLabel4.setBounds(180, 170, 90, 30);
btnAdd.setFont(new java.awt.Font("Dialog", 1, 24));
btnAdd.setForeground(new java.awt.Color(0, 204, 204));
btnAdd.setText("\u6dfb\u52a0");
btnAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddActionPerformed(evt);
}
});
add(btnAdd);
btnAdd.setBounds(140, 440, 120, 60);
btnBack.setFont(new java.awt.Font("Dialog", 1, 24));
btnBack.setForeground(new java.awt.Color(0, 204, 204));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(520, 440, 120, 60);
tfdInPrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdInPrice.setAutoscrolls(false);
add(tfdInPrice);
tfdInPrice.setBounds(280, 250, 150, 30);
jLabel5.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel5.setText("\u8fdb\u8d27\u4ef7\u683c\uff1a");
add(jLabel5);
jLabel5.setBounds(180, 250, 90, 30);
tfdSalePrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdSalePrice.setAutoscrolls(false);
add(tfdSalePrice);
tfdSalePrice.setBounds(280, 330, 150, 30);
jLabel6.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel6.setText("\u552e\u8d27\u4ef7\u683c\uff1a");
add(jLabel6);
jLabel6.setBounds(180, 330, 90, 30);
}// </editor-fold>
//GEN-END:initComponents
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
back();
}
private void back() {
mainFrame.setContentPane(new BookListPanel(mainFrame));
mainFrame.validate();
}
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
//1收集参数
String name = tfdName.getText();
double inPrice = 0;
double salePrice = 0;
try {
inPrice = Double.parseDouble(tfdInPrice.getText());
salePrice = Double.parseDouble(tfdSalePrice.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(mainFrame, "价格的格式错误,请重新输入!");
return;
}
if (name.equals("") || name.equals(null)) {
JOptionPane.showMessageDialog(mainFrame, "用户名为空,请重新输入!");
return;
}
//2组织参数
BookModel book = new BookModel();
book.setName(name);
book.setInPrice(inPrice);
book.setSalePrice(salePrice);
//3调用逻辑层
BookEbi ebi = BookEbiFactory.getBookEbi();
//4根据调用返回结果导向不同页面
if (ebi.create(book)) {
back();
} else {
JOptionPane.showMessageDialog(null, "该图书已经存在!");
}
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnAdd;
private javax.swing.JButton btnBack;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JTextField tfdInPrice;
private javax.swing.JTextField tfdName;
private javax.swing.JTextField tfdSalePrice;
// End of variables declaration//GEN-END:variables
}

||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookDeletePanel 类:删除界面:

/*
* BookDeletePanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.bookStore.book.ui;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.bookStore.book.business.ebi.BookEbi;
import cn.hncu.bookStore.book.business.factory.BookEbiFactory;
import cn.hncu.bookStore.book.vo.BookModel;
/**
*
* @author 陈浩翔
*
* @version 1.0
*/
public class BookDeletePanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
private String uuid = null;
/** Creates new form BookDeletePanel
* @param mainFrame
* @param uuid */
public BookDeletePanel(JFrame mainFrame, String uuid) {
this.mainFrame = mainFrame;
this.uuid = uuid;
initComponents();
myInitData();
}
private void myInitData() {
BookModel book = BookEbiFactory.getBookEbi().getSingle(uuid);
//System.out.println(book);
tfdName.setText(book.getName());
tfdName.setEditable(false);
tfdUuid.setText(book.getUuid());
tfdUuid.setEditable(false);
tfdInPrice.setText(String.valueOf(book.getInPrice()));
tfdInPrice.setEditable(false);
tfdSalePrice.setText(String.valueOf(book.getSalePrice()));
tfdSalePrice.setEditable(false);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
tfdName = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
tfdUuid = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
btnDelete = new javax.swing.JButton();
btnBack = new javax.swing.JButton();
tfdInPrice = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
tfdSalePrice = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(800, 600));
setLayout(null);
jLabel1.setFont(new java.awt.Font("微软雅黑", 1, 48));
jLabel1.setForeground(new java.awt.Color(204, 0, 0));
jLabel1.setText("\u5220\u9664\u56fe\u4e66");
add(jLabel1);
jLabel1.setBounds(280, 40, 230, 80);
tfdName.setFont(new java.awt.Font("Dialog", 1, 18));
tfdName.setAutoscrolls(false);
add(tfdName);
tfdName.setBounds(480, 190, 150, 30);
jLabel3.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel3.setText("uuid:");
add(jLabel3);
jLabel3.setBounds(130, 190, 50, 30);
tfdUuid.setFont(new java.awt.Font("Dialog", 1, 12));
add(tfdUuid);
tfdUuid.setBounds(200, 190, 110, 30);
jLabel4.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel4.setText("\u56fe\u4e66\u540d\u79f0:");
add(jLabel4);
jLabel4.setBounds(380, 190, 90, 30);
btnDelete.setFont(new java.awt.Font("Dialog", 1, 24));
btnDelete.setForeground(new java.awt.Color(0, 204, 204));
btnDelete.setText("\u5220\u9664");
btnDelete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDeleteActionPerformed(evt);
}
});
add(btnDelete);
btnDelete.setBounds(140, 440, 120, 60);
btnBack.setFont(new java.awt.Font("Dialog", 1, 24));
btnBack.setForeground(new java.awt.Color(0, 204, 204));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(520, 440, 120, 60);
tfdInPrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdInPrice.setAutoscrolls(false);
add(tfdInPrice);
tfdInPrice.setBounds(200, 300, 150, 30);
jLabel5.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel5.setText("\u8fdb\u8d27\u4ef7\u683c\uff1a");
add(jLabel5);
jLabel5.setBounds(100, 300, 90, 30);
tfdSalePrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdSalePrice.setAutoscrolls(false);
add(tfdSalePrice);
tfdSalePrice.setBounds(480, 300, 150, 30);
jLabel6.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel6.setText("\u552e\u8d27\u4ef7\u683c\uff1a");
add(jLabel6);
jLabel6.setBounds(380, 300, 90, 30);
}// </editor-fold>
//GEN-END:initComponents
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
back();
}
private void back() {
mainFrame.setContentPane(new BookListPanel(mainFrame));
mainFrame.validate();
}
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
//1收集参数
//2组织参数
//3调用逻辑层
//4根据调用返回结果导向不同页面
boolean isFlag = BookEbiFactory.getBookEbi().delete(uuid);
if (isFlag) {
back();
} else {
JOptionPane.showMessageDialog(null, "该图书已经不存在!");
}
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnBack;
private javax.swing.JButton btnDelete;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JTextField tfdInPrice;
private javax.swing.JTextField tfdName;
private javax.swing.JTextField tfdSalePrice;
private javax.swing.JTextField tfdUuid;
// End of variables declaration//GEN-END:variables
}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookQueryPanel 类:查询界面:

/*
* BookQueryPanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.bookStore.book.ui;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.bookStore.book.business.ebi.BookEbi;
import cn.hncu.bookStore.book.business.factory.BookEbiFactory;
import cn.hncu.bookStore.book.vo.BookModel;
import cn.hncu.bookStore.book.vo.BookQueryModel;
/**
*
* @author 陈浩翔
*
* @version 1.0
*/
public class BookQueryPanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
/** Creates new form BookQueryPanel
* @param mainFrame */
public BookQueryPanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
tfdName = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
tfdUuid = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
btnQuery = new javax.swing.JButton();
btnBack = new javax.swing.JButton();
tfdInPrice = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
tfdSalePrice = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
tfdInPrice2 = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
tfdSalePrice2 = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(800, 600));
setLayout(null);
jLabel1.setFont(new java.awt.Font("微软雅黑", 1, 48));
jLabel1.setForeground(new java.awt.Color(204, 0, 0));
jLabel1.setText("\u67e5\u627e\u56fe\u4e66");
add(jLabel1);
jLabel1.setBounds(280, 40, 230, 80);
tfdName.setFont(new java.awt.Font("Dialog", 1, 18));
tfdName.setAutoscrolls(false);
add(tfdName);
tfdName.setBounds(520, 190, 150, 30);
jLabel3.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel3.setText("uuid:");
add(jLabel3);
jLabel3.setBounds(130, 190, 50, 30);
tfdUuid.setFont(new java.awt.Font("Dialog", 1, 12));
add(tfdUuid);
tfdUuid.setBounds(200, 190, 150, 30);
jLabel4.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel4.setText("\u56fe\u4e66\u540d\u79f0:");
add(jLabel4);
jLabel4.setBounds(420, 190, 90, 30);
btnQuery.setFont(new java.awt.Font("Dialog", 1, 24));
btnQuery.setForeground(new java.awt.Color(0, 204, 204));
btnQuery.setText("\u67e5\u627e");
btnQuery.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnQueryActionPerformed(evt);
}
});
add(btnQuery);
btnQuery.setBounds(140, 470, 120, 60);
btnBack.setFont(new java.awt.Font("Dialog", 1, 24));
btnBack.setForeground(new java.awt.Color(0, 204, 204));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(490, 470, 120, 60);
tfdInPrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdInPrice.setAutoscrolls(false);
add(tfdInPrice);
tfdInPrice.setBounds(200, 280, 150, 30);
jLabel5.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel5.setText("\u8fdb\u8d27\u6700\u4f4e\u4ef7\u683c\uff1a");
add(jLabel5);
jLabel5.setBounds(60, 280, 130, 30);
tfdSalePrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdSalePrice.setAutoscrolls(false);
add(tfdSalePrice);
tfdSalePrice.setBounds(200, 370, 150, 30);
jLabel6.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel6.setText("\u552e\u8d27\u6700\u4f4e\u4ef7\u683c\uff1a");
add(jLabel6);
jLabel6.setBounds(60, 370, 130, 30);
tfdInPrice2.setFont(new java.awt.Font("Dialog", 1, 18));
tfdInPrice2.setAutoscrolls(false);
add(tfdInPrice2);
tfdInPrice2.setBounds(520, 280, 150, 30);
jLabel11.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel11.setText("\u8fdb\u8d27\u6700\u9ad8\u4ef7\u683c\uff1a");
add(jLabel11);
jLabel11.setBounds(380, 280, 130, 30);
tfdSalePrice2.setFont(new java.awt.Font("Dialog", 1, 18));
tfdSalePrice2.setAutoscrolls(false);
add(tfdSalePrice2);
tfdSalePrice2.setBounds(520, 370, 150, 30);
jLabel12.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel12.setText("\u552e\u8d27\u6700\u9ad8\u4ef7\u683c\uff1a");
add(jLabel12);
jLabel12.setBounds(380, 370, 130, 30);
}// </editor-fold>
//GEN-END:initComponents
protected void btnQueryActionPerformed(ActionEvent evt) {
//1收集参数
String uuid = tfdUuid.getText();
String name = tfdName.getText();
double inPrice = 0;
double inPrice2 = 0;
double salePrice = 0;
double salePrice2 = 0;
if (tfdInPrice.getText() != null
&& tfdInPrice.getText().trim().length() > 0) {
try {
inPrice = Double.parseDouble(tfdInPrice.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(mainFrame, "最低进价输入格式错误!");
return;
}
}
if (tfdInPrice2.getText() != null
&& tfdInPrice2.getText().trim().length() > 0) {
try {
inPrice2 = Double.parseDouble(tfdInPrice2.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(mainFrame, "最高进价输入格式错误!");
return;
}
}
if (tfdSalePrice.getText() != null
&& tfdSalePrice.getText().trim().length() > 0) {
try {
salePrice = Double.parseDouble(tfdSalePrice.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(mainFrame, "最低进价输入格式错误!");
return;
}
}
if (tfdSalePrice2.getText() != null
&& tfdSalePrice2.getText().trim().length() > 0) {
try {
salePrice2 = Double.parseDouble(tfdSalePrice2.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(mainFrame, "最低进价输入格式错误!");
return;
}
}
//2组织参数
BookQueryModel bqm = new BookQueryModel();
bqm.setUuid(uuid);
bqm.setName(name);
bqm.setInPrice(inPrice);
bqm.setInPrice2(inPrice2);
bqm.setSalePrice(salePrice);
bqm.setSalePrice2(salePrice2);
//3调用逻辑层
BookEbi ebi = BookEbiFactory.getBookEbi();
List<BookModel> results = ebi.getbyCondition(bqm);
//4根据调用返回结果导向不同页面
mainFrame.setContentPane(new BookListPanel(mainFrame, results));
mainFrame.validate();
}
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
back();
}
private void back() {
mainFrame.setContentPane(new BookListPanel(mainFrame));
mainFrame.validate();
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnBack;
private javax.swing.JButton btnQuery;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JTextField tfdInPrice;
private javax.swing.JTextField tfdInPrice2;
private javax.swing.JTextField tfdName;
private javax.swing.JTextField tfdSalePrice;
private javax.swing.JTextField tfdSalePrice2;
private javax.swing.JTextField tfdUuid;
// End of variables declaration//GEN-END:variables
}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||

BookUpdatePanel类:修改界面:

/*
* BookUpdatePanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.bookStore.book.ui;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.bookStore.book.business.ebi.BookEbi;
import cn.hncu.bookStore.book.business.factory.BookEbiFactory;
import cn.hncu.bookStore.book.vo.BookModel;
/**
*
* @author 陈浩翔
*
* @version 1.0
*/
public class BookUpdatePanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
private String uuid = null;
/** Creates new form BookUpdatePanel
* @param uuid
* @param mainFrame */
public BookUpdatePanel(JFrame mainFrame, String uuid) {
this.mainFrame = mainFrame;
this.uuid = uuid;
initComponents();
myInitData();
}
private void myInitData() {
BookModel book = BookEbiFactory.getBookEbi().getSingle(uuid);
tfdUuid.setText(uuid);
tfdUuid.setEditable(false);
tfdName.setText(book.getName());
tfdInPrice.setText(String.valueOf(book.getInPrice()));
tfdSalePrice.setText(String.valueOf(book.getSalePrice()));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
tfdName = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
tfdUuid = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
btnUpdata = new javax.swing.JButton();
btnBack = new javax.swing.JButton();
tfdInPrice = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
tfdSalePrice = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(800, 600));
setLayout(null);
jLabel1.setFont(new java.awt.Font("微软雅黑", 1, 48));
jLabel1.setForeground(new java.awt.Color(204, 0, 0));
jLabel1.setText("\u4fee\u6539\u56fe\u4e66");
add(jLabel1);
jLabel1.setBounds(280, 40, 230, 80);
tfdName.setFont(new java.awt.Font("Dialog", 1, 18));
tfdName.setAutoscrolls(false);
add(tfdName);
tfdName.setBounds(480, 190, 150, 30);
jLabel3.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel3.setText("uuid:");
add(jLabel3);
jLabel3.setBounds(130, 190, 50, 30);
tfdUuid.setFont(new java.awt.Font("Dialog", 1, 12));
add(tfdUuid);
tfdUuid.setBounds(200, 190, 110, 30);
jLabel4.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel4.setText("\u56fe\u4e66\u540d\u79f0:");
add(jLabel4);
jLabel4.setBounds(380, 190, 90, 30);
btnUpdata.setFont(new java.awt.Font("Dialog", 1, 24));
btnUpdata.setForeground(new java.awt.Color(0, 204, 204));
btnUpdata.setText("\u4fee\u6539");
btnUpdata.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnUpdataActionPerformed(evt);
}
});
add(btnUpdata);
btnUpdata.setBounds(140, 440, 120, 60);
btnBack.setFont(new java.awt.Font("Dialog", 1, 24));
btnBack.setForeground(new java.awt.Color(0, 204, 204));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(520, 440, 120, 60);
tfdInPrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdInPrice.setAutoscrolls(false);
add(tfdInPrice);
tfdInPrice.setBounds(200, 300, 150, 30);
jLabel5.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel5.setText("\u8fdb\u8d27\u4ef7\u683c\uff1a");
add(jLabel5);
jLabel5.setBounds(100, 300, 90, 30);
tfdSalePrice.setFont(new java.awt.Font("Dialog", 1, 18));
tfdSalePrice.setAutoscrolls(false);
add(tfdSalePrice);
tfdSalePrice.setBounds(480, 300, 150, 30);
jLabel6.setFont(new java.awt.Font("微软雅黑", 0, 18));
jLabel6.setText("\u552e\u8d27\u4ef7\u683c\uff1a");
add(jLabel6);
jLabel6.setBounds(380, 300, 90, 30);
}// </editor-fold>
//GEN-END:initComponents
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
back();
}
private void back() {
mainFrame.setContentPane(new BookListPanel(mainFrame));
mainFrame.validate();
}
private void btnUpdataActionPerformed(java.awt.event.ActionEvent evt) {
//1收集参数
String name = tfdName.getText();
double inPrice = 0;
double salePrice = 0;
try {
inPrice = Double.parseDouble(tfdInPrice.getText());
salePrice = Double.parseDouble(tfdSalePrice.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(mainFrame, "价格的格式错误,请重新输入!");
return;
}
if (name.equals("") || name.equals(null)) {
JOptionPane.showMessageDialog(mainFrame, "用户名为空,请重新输入!");
return;
}
//2组织参数
BookModel book = new BookModel();
book.setName(name);
book.setUuid(uuid);
book.setInPrice(inPrice);
book.setSalePrice(salePrice);
//3调用逻辑层
BookEbi ebi = BookEbiFactory.getBookEbi();
//4根据调用返回结果导向不同页面
if (ebi.update(book)) {
back();
} else {
JOptionPane.showMessageDialog(null, "该图书已经存在!");
}
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnBack;
private javax.swing.JButton btnUpdata;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JTextField tfdInPrice;
private javax.swing.JTextField tfdName;
private javax.swing.JTextField tfdSalePrice;
private javax.swing.JTextField tfdUuid;
// End of variables declaration//GEN-END:variables
}

工具类:

FileIoUtil 类:数据读取:

package cn.hncu.bookStore.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
/**
* 用户的公用数据读取写入类
* @author 陈浩翔
*
* @version 1.0
*/
public class FileIoUtil {
public FileIoUtil() {
}
/**
* 从数据库中读取所有的数据并返回出来
*
* @param fileName:(数据表对应的文件名字)
* @return 所有表的记录!
*/
@SuppressWarnings("unchecked")//压警告
public static<E> List<E> readFormFile(String fileName){
List<E> list = new ArrayList<E>();
final File file = new File(fileName);
ObjectInputStream in =null;
if(!file.exists()){
//JOptionPane.showMessageDialog(null, "数据表不存在!");
return list;
}
try {
in = new ObjectInputStream(new FileInputStream(fileName));
try {
list = (List<E>) in.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(in!=null){
try {
in.close();
} catch (IOException e) {
throw new RuntimeException("数据库关闭失败");
}
}
}
return list;
}
/**
* 写入一个list集合进入数据文件fileName
*
* @param list(需要存储的数据集合)
* @param fileName(写入到哪个文件的文件名字)
*/
public static<E> void write2file(List<E> list, String fileName){
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(new FileOutputStream(fileName));
out.writeObject(list);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(out!=null){
try {
out.close();
} catch (IOException e) {
throw new RuntimeException("数据库关闭失败!");
}
}
}
}
}

最后说明:

因为感觉实在是太长了,我系列四又分了2个小模块。 还有Uuid模块和用户模块和公共类,我会在Java-单机版的书店管理系统(练习设计模块和思想_系列 四(2) )贴出全部代码。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[谙忆]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1777339

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云