工厂类LoginEbiFactory:
package cn.hncu.bookStore.login.business.factory; import cn.hncu.bookStore.login.business.ebi.LoginEbi; import cn.hncu.bookStore.login.business.ebo.LoginEbo; /** * 登录模块的工厂类 * @author 陈浩翔 * * @version 1.0 2016-4-20 */ public class LoginEbiFactory { /** * 工厂方法 * @return */ public static LoginEbi getLoginEbi(){ return new LoginEbo(); } }
表现层登录界面LoginPanel:
/* * LoginPanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.login.ui; import javax.swing.JOptionPane; import cn.hncu.bookStore.BookStore; import cn.hncu.bookStore.common.UserTypeEnum; import cn.hncu.bookStore.login.business.factory.LoginEbiFactory; import cn.hncu.bookStore.user.business.factory.UserEbiFactory; import cn.hncu.bookStore.user.vo.UserModel; /** * * @author 陈浩翔 * * @version 1.0 2016-4-20 */ public class LoginPanel extends javax.swing.JPanel { private BookStore mainFrame = null; /** Creates new form LoginPanel */ public LoginPanel(BookStore mainFrame) { this.mainFrame = mainFrame; initComponents(); } //GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); tfdName = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); tfpPwd = new javax.swing.JPasswordField(); btnLogin = new javax.swing.JButton(); btnHelp = new javax.swing.JButton(); setMinimumSize(new java.awt.Dimension(800, 600)); setLayout(null); jLabel1.setFont(new java.awt.Font("Dialog", 1, 48)); jLabel1.setForeground(new java.awt.Color(255, 51, 0)); jLabel1.setText("\u767b\u5f55"); add(jLabel1); jLabel1.setBounds(320, 20, 140, 120); jLabel2.setFont(new java.awt.Font("宋体", 1, 24)); jLabel2.setForeground(new java.awt.Color(51, 0, 255)); jLabel2.setText("\u5bc6 \u7801:"); add(jLabel2); jLabel2.setBounds(210, 330, 80, 40); tfdName.setFont(new java.awt.Font("微软雅黑", 1, 24)); add(tfdName); tfdName.setBounds(310, 220, 190, 40); jLabel3.setFont(new java.awt.Font("宋体", 1, 24)); jLabel3.setForeground(new java.awt.Color(51, 0, 255)); jLabel3.setText("\u7528\u6237\u540d:"); add(jLabel3); jLabel3.setBounds(200, 220, 120, 40); tfpPwd.setFont(new java.awt.Font("宋体", 1, 24)); add(tfpPwd); tfpPwd.setBounds(310, 330, 190, 40); btnLogin.setFont(new java.awt.Font("Dialog", 1, 24)); btnLogin.setForeground(new java.awt.Color(51, 0, 255)); btnLogin.setText("\u767b\u5f55"); btnLogin.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnLoginActionPerformed(evt); } }); add(btnLogin); btnLogin.setBounds(150, 440, 120, 70); btnHelp.setFont(new java.awt.Font("Dialog", 1, 24)); btnHelp.setForeground(new java.awt.Color(0, 0, 255)); btnHelp.setText("\u5e2e\u52a9"); btnHelp.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnHelpActionPerformed(evt); } }); add(btnHelp); btnHelp.setBounds(450, 440, 130, 70); }// </editor-fold> //GEN-END:initComponents private void btnHelpActionPerformed(java.awt.event.ActionEvent evt) { mainFrame.setContentPane(new LoginHelp(mainFrame)); mainFrame.validate(); } private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) { //1收集 String name = tfdName.getText(); String pwd = new String(tfpPwd.getPassword()); if(name.equals("admin")&&pwd.equals("123456")){ mainFrame.getjMenuItemUser().setEnabled(true); mainFrame.getjMenuItemBook().setEnabled(true); mainFrame.getjMenuItemIn().setEnabled(true); mainFrame.getjMenuItemOut().setEnabled(true); mainFrame.getjMenuItemStock().setEnabled(true); mainFrame.setContentPane(new LoginWelcomePanel()); mainFrame.validate(); } //2组织---没有值对象,不组织了 //3调用逻辑层 String result = LoginEbiFactory.getLoginEbi().login(name, pwd); //4返回到结果页面 if (result != null) { JOptionPane.showMessageDialog(mainFrame, result); return; } //接下来,登录成功的情况 //把该用户类型所对应的模块点亮 UserModel user = UserEbiFactory.getUserEbi().getUserByName(name); //超级管理员,点亮所有模块 if (user.getType() == UserTypeEnum.ADMIN.getType()) { mainFrame.getjMenuItemUser().setEnabled(true); mainFrame.getjMenuItemBook().setEnabled(true); mainFrame.getjMenuItemIn().setEnabled(true); mainFrame.getjMenuItemOut().setEnabled(true); mainFrame.getjMenuItemStock().setEnabled(true); } //图书管理员,点亮图书模块 if (user.getType() == UserTypeEnum.BOOK.getType()) { mainFrame.getjMenuItemBook().setEnabled(true); } //进货管理员,点亮进货模块 if (user.getType() == UserTypeEnum.IN.getType()) { mainFrame.getjMenuItemIn().setEnabled(true); } //销售管理员,点亮销售模块 if (user.getType() == UserTypeEnum.OUT.getType()) { mainFrame.getjMenuItemOut().setEnabled(true); } //库存管理员,点亮库存模块 if (user.getType() == UserTypeEnum.STOCK.getType()) { mainFrame.getjMenuItemStock().setEnabled(true); } mainFrame.setContentPane(new LoginWelcomePanel()); mainFrame.validate(); } //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JButton btnHelp; private javax.swing.JButton btnLogin; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JTextField tfdName; private javax.swing.JPasswordField tfpPwd; // End of variables declaration//GEN-END:variables }
表现层欢迎界面LoginWelcomePanel:
/* * LoginWelcomePanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.login.ui; /** * * @author 陈浩翔 * * @version 1.0 2016-4-20 */ public class LoginWelcomePanel extends javax.swing.JPanel { /** Creates new form LoginWelcomePanel */ public LoginWelcomePanel() { 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(); setMinimumSize(new java.awt.Dimension(800, 600)); setLayout(null); jLabel1.setFont(new java.awt.Font("Dialog", 1, 36)); jLabel1.setForeground(new java.awt.Color(255, 0, 0)); jLabel1.setText("\u6b22\u8fce\u767b\u5f55\uff0c\u592a\u9633\u6bcf\u5929\u90fd\u662f\u65b0\u7684\uff01\uff01"); add(jLabel1); jLabel1.setBounds(100, 190, 590, 170); }// </editor-fold> //GEN-END:initComponents //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JLabel jLabel1; // End of variables declaration//GEN-END:variables }
表现层帮助界面LoginHelp:
/* * LoginHelp.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.login.ui; import javax.swing.JFrame; import cn.hncu.bookStore.BookStore; /** * * @author 陈浩翔 * * @version 1.0 2016-4-20 */ public class LoginHelp extends javax.swing.JPanel { private JFrame mainFrame = null; /** Creates new form LoginHelp * @param mainFrame */ public LoginHelp(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(); setMinimumSize(new java.awt.Dimension(800, 600)); setLayout(null); jLabel1.setFont(new java.awt.Font("Dialog", 1, 14)); jLabel1.setText("\u5982\u679c\u4f60\u4e0d\u5c0f\u5fc3\u628a\u7528\u6237\u6587\u4ef6\u5220\u9664\u4e86\uff0c\u53ef\u4ee5\u5229\u7528admin\u8d85\u7ea7\u7ba1\u7406\u5458\u767b\u5f55\uff0c\u5bc6\u7801\u4e3a:123456"); add(jLabel1); jLabel1.setBounds(90, 250, 590, 80); }// </editor-fold> //GEN-END:initComponents //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JLabel jLabel1; // End of variables declaration//GEN-END:variables }
库存模块:Stock
数据层接口StockDao:
package cn.hncu.bookStore.stock.dao.dao; import java.util.List; import cn.hncu.bookStore.stock.vo.StockModel; import cn.hncu.bookStore.stock.vo.StockQueryModel; /** * 库存模块的数据层接口 * @author 陈浩翔 * * @version 1.0 2016-4-20 */ public interface StockDao { /** * 创建一个库存对象 * @param stock * @return */ public boolean create(StockModel stock); /** * * @return 返回所有的库存对象数据 */ public List<StockModel> getAl(); /** * 根据uuid -- 修改为传入的库存对象 * @param stock * @return */ public boolean update(StockModel stock); /** * 查询 符合条件 的 库存对象集合 * @param sqm---查询条件 * @return---符合条件的库存对象集合 */ public List<StockModel> getByCondition(StockQueryModel sqm); /** * 根据uuid查找当前的uuid对应的库存对象 * @param uuid * @return */ public StockModel getSingle(String uuid); }
数据层实现类StockDaoImpl:
package cn.hncu.bookStore.stock.dao.impl; import java.util.ArrayList; import java.util.List; import cn.hncu.bookStore.stock.dao.dao.StockDao; import cn.hncu.bookStore.stock.vo.StockModel; import cn.hncu.bookStore.stock.vo.StockQueryModel; import cn.hncu.bookStore.util.FileIoUtil; import cn.hncu.bookStore.util.StringComparison; /** * 库存模块数据层的实现类 * @author 陈浩翔 * * @version 1.0 2016-4-20 */ public class StockDaoImpl implements StockDao{ private final String FILE_NAME = "Stock.txt"; @Override public boolean create(StockModel stock) { List<StockModel> lists = FileIoUtil.readFormFile(FILE_NAME); for(StockModel model :lists){ if(model.getUuid().equals(stock.getUuid())){ return false; } } lists.add(stock); FileIoUtil.write2file(lists, FILE_NAME); return true; } @Override public List<StockModel> getAl() { return FileIoUtil.readFormFile(FILE_NAME); } @Override public boolean update(StockModel stock) { List<StockModel> lists = FileIoUtil.readFormFile(FILE_NAME); for(int i=0;i<lists.size();i++){ if(lists.get(i).getUuid().equals(stock.getUuid())){ lists.set(i, stock); FileIoUtil.write2file(lists, FILE_NAME); return true; } } return false; } @Override public List<StockModel> getByCondition(StockQueryModel sqm) { List<StockModel> lists = FileIoUtil.readFormFile(FILE_NAME); List<StockModel> results = new ArrayList<StockModel>(); for(StockModel model : lists){ //卫条件 //比较库存ID if(!StringComparison.stringEquals(model.getUuid(), sqm.getUuid())){ continue; } //比较图书ID if(!StringComparison.stringEquals(model.getBookUuid(), sqm.getBookUuid())){ continue; } //库存查询最小数量 if(sqm.getSumNum()>0){ if(sqm.getSumNum()>model.getSumNum()){ continue; } } //库存查询最大数量 if(sqm.getSumNum2()>0){ if(sqm.getSumNum2()<model.getSumNum()){ continue; } } results.add(model); } return results; } @Override public StockModel getSingle(String uuid) { List<StockModel> lists = FileIoUtil.readFormFile(FILE_NAME); for(StockModel model : lists){ if(model.getUuid().equals(uuid)){ //找到uuid相同,直接返回库存对象 return model; } } return null; } }
逻辑层实现类StockEbo:
package cn.hncu.bookStore.stock.business.ebo; import java.util.List; import cn.hncu.bookStore.stock.business.ebi.StockEbi; import cn.hncu.bookStore.stock.dao.dao.StockDao; import cn.hncu.bookStore.stock.dao.factory.StockDaoFactory; import cn.hncu.bookStore.stock.vo.StockModel; import cn.hncu.bookStore.stock.vo.StockQueryModel; /** * 库存逻辑层实现类 * @author 陈浩翔 * * @version 1.0 2016-4-20 */ public class StockEbo implements StockEbi{ //注入 dao StockDao dao = StockDaoFactory.getStockDao(); @Override public List<StockModel> getAll() { return dao.getAl(); } @Override public List<StockModel> getByCondition(StockQueryModel sqm) { return dao.getByCondition(sqm); } }