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

简介: Java-单机版的书店管理系统(练习设计模块和思想_系列汇总)

工厂类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);
    }
}
目录
相关文章
|
4天前
|
JavaScript Java 测试技术
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
10 0
|
4天前
|
JavaScript Java 测试技术
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
20 0
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
|
4天前
|
JavaScript Java 测试技术
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
17 0
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
|
4天前
|
JavaScript Java 测试技术
基于Java的家纺用品销售管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的家纺用品销售管理系统的设计与实现(源码+lw+部署文档+讲解等)
15 0
|
4天前
|
JavaScript Java 测试技术
基于Java的教务管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的教务管理系统的设计与实现(源码+lw+部署文档+讲解等)
19 0
|
4天前
|
JavaScript Java 测试技术
基于Java的西安旅游管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的西安旅游管理系统的设计与实现(源码+lw+部署文档+讲解等)
16 0
|
4天前
|
JavaScript Java 测试技术
基于Java的学生奖惩管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的学生奖惩管理系统的设计与实现(源码+lw+部署文档+讲解等)
4 0
|
4天前
|
JavaScript Java 测试技术
基于Java的校园兼职管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的校园兼职管理系统的设计与实现(源码+lw+部署文档+讲解等)
16 0
|
4天前
|
JavaScript Java 测试技术
基于Java的实验室设备管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的实验室设备管理系统的设计与实现(源码+lw+部署文档+讲解等)
14 1
|
4天前
|
JavaScript Java 测试技术
基于Java的西藏民族大学创新学分管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的西藏民族大学创新学分管理系统的设计与实现(源码+lw+部署文档+讲解等)
14 0