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

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

ListPanel类:

|

|

|

cn.hncu.bookStore.user.ui;

ListPanel类:

/*
 * ListPanel.java
 *
 * Created on __DATE__, __TIME__
 */
package cn.hncu.bookStore.user.ui;
import java.util.List;
import javax.swing.JFrame;
import cn.hncu.bookStore.user.business.ebi.UserEbi;
import cn.hncu.bookStore.user.business.factory.UserEbiFactory;
import cn.hncu.bookStore.user.vo.UserModel;
/**
 * 表现层-用户列表面板
 * 
 * @author 陈浩翔
 * @version 1.0
 */
public class ListPanel extends javax.swing.JPanel {
    private JFrame mainFrame = null;
    /** Creates new form ListPanel */
    public ListPanel(JFrame mainFrame) {
        this.mainFrame = mainFrame;
        initComponents();
        myInitData();
    }
    /**
     * 读取所有用户并添加进列表
     */
    private void myInitData() {
        UserEbi user = UserEbiFactory.getUserEbi();
        List<UserModel> list = user.getAll();
        userLists.setListData(list.toArray());
    }
    /** 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() {
        jScrollPane1 = new javax.swing.JScrollPane();
        userLists = new javax.swing.JList();
        jLabel1 = new javax.swing.JLabel();
        btnToAdd = new javax.swing.JButton();
        setMinimumSize(new java.awt.Dimension(800, 600));
        setLayout(null);
        userLists.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "" };
            public int getSize() {
                return strings.length;
            }
            public Object getElementAt(int i) {
                return strings[i];
            }
        });
        jScrollPane1.setViewportView(userLists);
        add(jScrollPane1);
        jScrollPane1.setBounds(150, 150, 480, 230);
        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 48));
        jLabel1.setForeground(new java.awt.Color(204, 0, 51));
        jLabel1.setText("User List");
        add(jLabel1);
        jLabel1.setBounds(270, 30, 260, 80);
        btnToAdd.setFont(new java.awt.Font("Dialog", 1, 18));
        btnToAdd.setText("\u6dfb\u52a0\u7528\u6237");
        btnToAdd.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnToAddActionPerformed(evt);
            }
        });
        add(btnToAdd);
        btnToAdd.setBounds(60, 420, 150, 50);
    }// </editor-fold>
    //GEN-END:initComponents
    private void btnToAddActionPerformed(java.awt.event.ActionEvent evt) {
        mainFrame.setContentPane(new AddPanel(mainFrame));
        mainFrame.validate();
    }
    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JButton btnToAdd;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JList userLists;
    // End of variables declaration//GEN-END:variables
}


UserModel类:

|

|

|

cn.hncu.bookStore.user.vo;

UserModel类:

用户值对象模块:

package cn.hncu.bookStore.user.vo;
import java.io.Serializable;
import cn.hncu.bookStore.common.UserTypeEnum;
/**
 * @author 陈浩翔
 * @version 1.0
 * 
 * <br/>
 * 用于保存用户信息的值对象<br/>
 * 1、可序列化<br/>
 * 2、私有化所有变量成员,补setter-getters方法<br/>
 * 3、写equals和hashCode方法----用主键(uuid)唯一标识码<br/>
 * 4、toString方法<br/>
 * 5,空参构造方法<br/>
 */
public class UserModel implements Serializable{
    private String uuid;//用户唯一标识码
    private String name;//用户名
    private int type;//用户类型
    private String pwd;//用户密码
    public UserModel() {
    }
    /**
     * 功能:得到uuid-用户唯一的标识码
     * 
     * @return 返回uuid-用户唯一的标识码
     */
    public String getUuid() {
        return uuid;
    }
    /**
     * 功能:设置uuid-用户唯一的标识码
     * @param uuid-用户唯一的标识码-String型参数
     */
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
    /**
     * 功能:得到用户的用户名
     * @return---name-用户名
     */
    public String getName() {
        return name;
    }
    /**
     * 功能:设置用户的用户名
     * 
     * @param name--用户设置的用户名,String型参数
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * 功能:得到用户的类型:
     *  1——表示为admin,可以进行全部操作
     *  2——表示为能操作图书模块的人员
     *  3——表示为能操作进货模块的人员
     *  4——表示为能操作销售模块的人员
     *  5——表示为能操作库存模块的人员
     * @return 用户的类型
     */
    public int getType() {
        return type;
    }
    /**
     *  功能:设置用户的类型:
     *  1——表示为admin,可以进行全部操作
     *  2——表示为能操作图书模块的人员
     *  3——表示为能操作进货模块的人员
     *  4——表示为能操作销售模块的人员
     *  5——表示为能操作库存模块的人员
     * @param type--用户的类型-int型参数
     */
    public void setType(int type) {
        this.type = type;
    }
    /**
     *功能:得到用户的密码
     * @return String型,用户的密码
     */
    public String getPwd() {
        return pwd;
    }
    /**
     * 功能:设置用户的密码
     * @param pwd--String型参数
     */
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    @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;
        UserModel other = (UserModel) 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 + "," + UserTypeEnum.getNameByType(type);
    }
}


UserQueryModel类:


|

|

|


cn.hncu.bookStore.user.vo;

UserQueryModel类:

虽然没有代码,但不能不写!这是查找用户时需要的。

原因我在系列一写了。


package cn.hncu.bookStore.user.vo;
/**
 * 
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class UserQueryModel extends UserModel{
}


FileIoUtil类:

|

|

|

cn.hncu.bookStore.util;

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("数据库关闭失败!");
                }
            }
        }
    }
}


BookStore类:(含main方法)

|

|

|

cn.hncu.bookStore;

BookStore类:

用户模块的main方法在这个类中:

/*
 * BookStore.java
 *
 * Created on __DATE__, __TIME__
 */
package cn.hncu.bookStore;
import cn.hncu.bookStore.user.ui.ListPanel;
/**
 *
 * @author  陈浩翔
 */
public class BookStore extends javax.swing.JFrame {
    /** Creates new form BookStore */
    public BookStore() {
        initComponents();
        this.setContentPane(new ListPanel(this));
        this.setResizable(false);//不能缩放
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    /** 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() {
        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();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        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);
        setJMenuBar(menuBar);
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
                Short.MAX_VALUE));
        layout.setVerticalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 279,
                Short.MAX_VALUE));
        pack();
    }// </editor-fold>
    //GEN-END:initComponents
    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.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
}

今天就写到这里的,未完待续。。。

目前的添加有一个小bug,就是添加用户时,什么都不输入,

只选择用户类型,也能创建!下次我会修复的。

目录
相关文章
|
4天前
|
Java
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
21 3
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
|
4天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
17 2
|
4天前
|
小程序 Java PHP
Java毕设之高校四六级报名管理系统
Java毕设之高校四六级报名管理系统
29 3
|
1天前
|
监控 安全 NoSQL
采用java+springboot+vue.js+uniapp开发的一整套云MES系统源码 MES制造管理系统源码
MES系统是一套具备实时管理能力,建立一个全面的、集成的、稳定的制造物流质量控制体系;对生产线、工艺、人员、品质、效率等多方位的监控、分析、改进,满足精细化、透明化、自动化、实时化、数据化、一体化管理,实现企业柔性化制造管理。
15 3
|
3天前
|
算法 Java Python
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
|
4天前
|
Java 关系型数据库 MySQL
java+B/S架构医院绩效考核管理系统源码 医院绩效管理系统4大特点
医院绩效考核管理系统,采用多维度综合绩效考核的形式,针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求,对考核方案中各维度进行灵活配置,对各维度的权重、衡量标准、数据统计方式进行自定义维护。
13 0
|
4天前
|
监控 前端开发 Java
Java公立医院绩效考核管理系统 医院绩效考核系统的优势有哪些? 
医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求,以“工作量为基础的考核方案”为核心思想,结合患者满意度、服务质量、技术难度、工作效率、医德医风等管理发展目标的考核体系,形成医院的内部绩效考核与分配机制,通过信息化手段为绩效考评管理人员实施医院绩效考评工作提供了有效工具,扩展了信息管理范围,增加了信息分析的广度与深度。这不仅使绩效评价工作更加科学化、规范化和自动化,而且从根本上改变了绩效评估工作方式,实现了绩效评价数据网络化采集,评价结果透明化管理,奖金分配数据自动化生成,极大地提高了绩效评估的全面性、准确性、时效性、公正性。从而推进医院绩效管理的专业化、规范化和精细化管理,充分发挥
14 0
|
4天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
13 2
|
4天前
|
Java
个人信息管理系统【JSP+Servlet+JavaBean】(Java课设)
个人信息管理系统【JSP+Servlet+JavaBean】(Java课设)
10 0
|
4天前
|
监控 前端开发 Java
Java基于B/S医院绩效考核管理平台系统源码 医院智慧绩效管理系统源码
医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服务质量,增强患者满意度,并促进员工的专业成长
20 0