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

本系列前面博客的链接:

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

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

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

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

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

介绍:

现在已经将进货模块的查询写完了,

(进货模块只有添加和查询!没有删除和修改。
因为如果能随便修改进货的时间,进货的数量等,这不是乱套了嘛)

现在完成的模块有:用户模块,图书模块,进货模块。
新增写了一个日期类,将long型数字转换成某个日期格式显示给用户看。
将string型的日期格式转换成long型数字存储。
将前面的StringComparison类进行了修改。

现在剩下的模块还有销售模块,库存模块,还有登录界面,
库存模块是需要综合销售模块和进货模块来写的。
也就是模块与模块之间需要串接了。
现在我写的这3个模块,基本上是属于和对方没什么联系的,每个模块都能独自完成自己的功能。

只亮一张进货查询的图片吧。界面不好看(^-^)勿喷噢。

增加或修改的代码:

工具类StringComparison :

package cn.hncu.bookStore.util;

/**
 * 工具类
 * 字符串比较
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class StringComparison {

    /**
     * str1和str2完全(精确查找)匹配
     * 这个精确匹配是在str2不为null且str2去掉2端空格的情况下比较的!!!
     * @param str1---被比较的字符串
     * @param str2---比较的字符串
     * @return---如果2个字符串相同或者str2全部是空格或者str2==null,就返回true,如果2个字符串不同,就返回false
     */
    public static boolean stringEquals(String str1,String str2){
        if(str2==null || str2.trim().length()<=0){
            return true;
        }
        if(!str1.equals(str2.trim())){
            return false;
        }
        return true;
    }

    /**
     * str1与str2模糊匹配
     * 这个模糊匹配也是在str2不为null且str2去掉2端空格的情况下比较的!!!
     * @param str1---被比较的字符串
     * @param str2---比较的字符串
     * @return---如果str2是str1的子串或者str2全部是空格或str2==null,就返回true,如果str2不是str1的字串,就返回false
     */
    public static boolean stringIndexOf(String str1,String str2){
        if(str2==null || str2.trim().length()<=0){
            return true;
        }

        if(str1.indexOf(str2.trim())==-1){
            return false;
        }
        return true;
    }

}

工具类DateUtil:

package cn.hncu.bookStore.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JOptionPane;

/**
 * 日期工具类
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class DateUtil {
    /**
     * 根据传入的long参数 ,把long值转换为固定的年月日格式输出
     * @param d---传入的参数
     * @return---一个字符串参数,格式为:yyyy年MM月dd日 HH:mm:ss
     */
    public static String long2String(long d){
        Date date = new Date(d);
        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String str = df.format(date);
        return str;
    }
    /*
     * 代码抽取技术:
     *   首先不要想“抽出的方法”怎么写,而是把类似的代码拷在一起,观察其中的变化部分和不变化部分。
     *   把这段代码中用到的“前面定义的变量”抽取成方法的参数--本例中为txtInDate和erroInfo,把“留给后面使用的”将在这段代码中新
     *   创建的变量定义成方法的返回值---本例为inDate。
     */

    /**
     * 根据传入的日期格式,把String型的参数转换成long型参数返回<br/>
     * 如果格式传入错误,会根据传入的erroInfo字符串弹出窗口给出提示!
     * @param txtInDate---传入的日期。
     * @param erroInfo----传入的错误提示信息
     * @return---long型的数字,如果格式转换错误,返回-1;
     */
    public static long string2Long(String txtInDate,String erroInfo){
        DateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long inDate=0;
        try {
            Date d = date.parse(txtInDate);
            inDate = d.getTime();
        } catch (ParseException e) {
            JOptionPane.showMessageDialog(null, erroInfo);
            return -1;
        }
        return inDate;
    }

}

进货模块的逻辑层实现类InMainEbo:

package cn.hncu.bookStore.in.business.ebo;

import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import cn.hncu.bookStore.book.business.ebi.BookEbi;
import cn.hncu.bookStore.book.business.factory.BookEbiFactory;
import cn.hncu.bookStore.common.UuidModelConstance;
import cn.hncu.bookStore.common.uuid.dao.dao.UuidDao;
import cn.hncu.bookStore.common.uuid.dao.factory.UuidDaoFactory;
import cn.hncu.bookStore.in.business.ebi.InMainEbi;
import cn.hncu.bookStore.in.business.factory.InMainEbiFactory;
import cn.hncu.bookStore.in.dao.dao.InDetailDao;
import cn.hncu.bookStore.in.dao.dao.InMainDao;
import cn.hncu.bookStore.in.dao.factory.InDetailDaoFactory;
import cn.hncu.bookStore.in.dao.factory.InMainDaoFactory;
import cn.hncu.bookStore.in.vo.InDetailModel;
import cn.hncu.bookStore.in.vo.InDetailQueryModel;
import cn.hncu.bookStore.in.vo.InMainModel;
import cn.hncu.bookStore.in.vo.InMainQueryModel;

/**
 *
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class InMainEbo implements InMainEbi{
    //注入dao

    InMainDao inMainDao = InMainDaoFactory.getInMainDao();
    InDetailDao inDetailDao = InDetailDaoFactory.getInDetailDao();
    UuidDao uuidDao = UuidDaoFactory.getUuidDao();
    BookEbi bookEbi = BookEbiFactory.getBookEbi();

    @Override
    public boolean create(InMainModel inMain, List<InDetailModel> inDetails) {
        //////////1存储inMain信息///////////
        //补全inMain中的数据
        //需要:inUuid,inDate,inUserUuid   已组织:inUserUuid
        //还缺(需补):inUuid,inDate
        String inUuid = uuidDao.getNextUuid(UuidModelConstance.IN_MAIN);
        inMain.setUuid(inUuid);
        inMain.setInDate(System.currentTimeMillis());
        inMainDao.create(inMain);

         //////////2存储inDetail信息///////////
        for(InDetailModel model:inDetails){
            //补全每一个inDetail中的数据
            //需要:inDetailUuid,inMainUuid,bookUuid,sumNum,sumMoney   已组织:bookUuid,sumNum
            //还缺(需补):inDetailUuid,inMainUuid,sumMoney
            model.setUuid(uuidDao.getNextUuid(UuidModelConstance.IN_DETAIL));
            model.setInId(inUuid);

            double sumMoney = model.getSumNum() * bookEbi.getSingle(model.getBookId()).getInPrice();
            model.setSumMoney(sumMoney);
            inDetailDao.create(model);
        }
        return true;
    }

    @Override
    public Map<InMainModel, List<InDetailModel>> getAll() {
        Map<InMainModel,List<InDetailModel>> map = new TreeMap<InMainModel, List<InDetailModel>>();

        List<InMainModel> inMains = inMainDao.getAll();

        for(InMainModel inMain: inMains ){
            //查询条件值对象的创建
            InDetailQueryModel idqm = new InDetailQueryModel();
            String inUuid = inMain.getUuid();
            idqm.setInId(inUuid);

            List<InDetailModel> details = inDetailDao.getbyCondition(idqm);

            map.put(inMain, details);
        }

        return map;
    }

    @Override
    public Map<InMainModel, List<InDetailModel>> getByCondition(
            InMainQueryModel imqm, InDetailQueryModel idqm) {
        Map<InMainModel, List<InDetailModel>> map = new TreeMap<InMainModel, List<InDetailModel>>();

        List<InMainModel> list = inMainDao.getbyCondition(imqm);

        for(InMainModel inMain : list){
            idqm.setInId(inMain.getUuid());

            List<InDetailModel> details = inDetailDao.getbyCondition(idqm);
            if(details.size()!=0){
                map.put(inMain, details);
            }
        }

        return map;
    }

}

表现层查询界面的代码InQueryPanel:

这里的代码初始化的initComponents()方法是MyEclipse的Matisse from生成的。
核心代码是查询按钮的监听实现方法和myInitData()方法。

package cn.hncu.bookStore.in.ui;

import java.util.List;
import java.util.Map;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import cn.hncu.bookStore.book.business.factory.BookEbiFactory;
import cn.hncu.bookStore.book.vo.BookModel;
import cn.hncu.bookStore.in.business.factory.InMainEbiFactory;
import cn.hncu.bookStore.in.vo.InDetailModel;
import cn.hncu.bookStore.in.vo.InDetailQueryModel;
import cn.hncu.bookStore.in.vo.InMainModel;
import cn.hncu.bookStore.in.vo.InMainQueryModel;
import cn.hncu.bookStore.user.business.factory.UserEbiFactory;
import cn.hncu.bookStore.user.vo.UserModel;
import cn.hncu.bookStore.util.DateUtil;

/**
 *
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class InQueryPanel extends javax.swing.JPanel {
    private JFrame mainFrame = null;

    /** Creates new form InQueryPanel
     * @param mainFrame */
    public InQueryPanel(JFrame mainFrame) {
        this.mainFrame = mainFrame;
        initComponents();
        myInitData();
    }

    /**
     * 初始化combo Box的数据
     */
    private void myInitData() {
        //进货人组合框内数据的初始化
        List<UserModel> listUsers = UserEbiFactory.getUserEbi().getAllIn();
        for (UserModel user : listUsers) {
            combInUser.addItem(user.getName());
        }

        //图书组合框内数据的初始化
        List<BookModel> listBooks = BookEbiFactory.getBookEbi().getAll();
        for (BookModel book : listBooks) {
            combBook.addItem(book.getName());
        }
    }

    //GEN-BEGIN:initComponents
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        combBook = new javax.swing.JComboBox();
        jLabel7 = new javax.swing.JLabel();
        tfdInUuid = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        combInUser = new javax.swing.JComboBox();
        jLabel8 = new javax.swing.JLabel();
        tfdInNum = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        tfdInDate = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        tfdInDate2 = new javax.swing.JTextField();
        jLabel11 = new javax.swing.JLabel();
        tfdInNum2 = new javax.swing.JTextField();
        jLabel12 = new javax.swing.JLabel();
        tfdInDetailUuid = new javax.swing.JTextField();
        jLabel13 = new javax.swing.JLabel();
        tfdInSumMoney = new javax.swing.JTextField();
        jLabel14 = new javax.swing.JLabel();
        tfdInSumMoney2 = new javax.swing.JTextField();
        jLabel15 = new javax.swing.JLabel();
        btnQuery = new javax.swing.JButton();
        btnBack = new javax.swing.JButton();

        setMinimumSize(new java.awt.Dimension(800, 600));
        setLayout(null);

        jLabel1.setFont(new java.awt.Font("微软雅黑", 1, 36));
        jLabel1.setForeground(new java.awt.Color(204, 0, 0));
        jLabel1.setText("\u8fdb\u8d27\u67e5\u8be2");
        add(jLabel1);
        jLabel1.setBounds(290, 10, 170, 70);

        jLabel5.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel5.setText("\u56fe\u4e66:");
        add(jLabel5);
        jLabel5.setBounds(460, 240, 50, 30);

        combBook.setFont(new java.awt.Font("Dialog", 1, 18));
        combBook.setForeground(new java.awt.Color(0, 0, 255));
        combBook.setModel(new javax.swing.DefaultComboBoxModel(
                new String[] { "查询所有" }));
        add(combBook);
        combBook.setBounds(510, 240, 200, 30);

        jLabel7.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel7.setText("\u8fdb\u8d27\u5355\u7f16\u53f7:");
        add(jLabel7);
        jLabel7.setBounds(100, 90, 100, 30);
        add(tfdInUuid);
        tfdInUuid.setBounds(210, 90, 150, 30);

        jLabel4.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel4.setText("\u8fdb\u8d27\u4eba:");
        add(jLabel4);
        jLabel4.setBounds(440, 90, 80, 30);

        combInUser.setFont(new java.awt.Font("Dialog", 1, 18));
        combInUser.setForeground(new java.awt.Color(204, 204, 0));
        combInUser.setModel(new javax.swing.DefaultComboBoxModel(
                new String[] { "查询所有" }));
        add(combInUser);
        combInUser.setBounds(510, 90, 200, 30);

        jLabel8.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel8.setText("\u8fdb\u8d27\u6700\u5c0f\u6570\u91cf:");
        add(jLabel8);
        jLabel8.setBounds(80, 320, 120, 30);
        add(tfdInNum);
        tfdInNum.setBounds(210, 320, 150, 30);

        jLabel9.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel9.setText("\u683c\u5f0f\u5982: 2016-04-13");
        add(jLabel9);
        jLabel9.setBounds(190, 190, 180, 30);
        add(tfdInDate);
        tfdInDate.setBounds(210, 160, 150, 30);

        jLabel10.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel10.setText("\u8fdb\u8d27\u622a\u6b62\u65f6\u95f4:");
        add(jLabel10);
        jLabel10.setBounds(390, 160, 120, 30);
        add(tfdInDate2);
        tfdInDate2.setBounds(510, 160, 200, 30);

        jLabel11.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel11.setText("\u8fdb\u8d27\u6700\u5927\u6570\u91cf:");
        add(jLabel11);
        jLabel11.setBounds(390, 320, 120, 30);
        add(tfdInNum2);
        tfdInNum2.setBounds(510, 320, 200, 30);

        jLabel12.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel12.setText("\u8fdb\u8d27\u660e\u7ec6\u7f16\u53f7:");
        add(jLabel12);
        jLabel12.setBounds(80, 240, 120, 30);
        add(tfdInDetailUuid);
        tfdInDetailUuid.setBounds(210, 240, 150, 30);

        jLabel13.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel13.setText("\u8fdb\u8d27\u603b\u4ef7\u6700\u5c0f\u503c:");
        add(jLabel13);
        jLabel13.setBounds(60, 400, 140, 30);
        add(tfdInSumMoney);
        tfdInSumMoney.setBounds(210, 400, 150, 30);

        jLabel14.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel14.setText("\u8fdb\u8d27\u603b\u4ef7\u6700\u5927\u503c:");
        add(jLabel14);
        jLabel14.setBounds(370, 400, 140, 30);
        add(tfdInSumMoney2);
        tfdInSumMoney2.setBounds(510, 400, 200, 30);

        jLabel15.setFont(new java.awt.Font("微软雅黑", 0, 18));
        jLabel15.setText("\u8fdb\u8d27\u8d77\u59cb\u65f6\u95f4:");
        add(jLabel15);
        jLabel15.setBounds(80, 160, 120, 30);

        btnQuery.setFont(new java.awt.Font("Dialog", 1, 36));
        btnQuery.setForeground(new java.awt.Color(255, 0, 0));
        btnQuery.setText("\u67e5\u8be2");
        btnQuery.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQueryActionPerformed(evt);
            }
        });
        add(btnQuery);
        btnQuery.setBounds(160, 490, 140, 60);

        btnBack.setFont(new java.awt.Font("Dialog", 1, 36));
        btnBack.setForeground(new java.awt.Color(255, 0, 0));
        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(480, 490, 140, 60);
    }// </editor-fold>
    //GEN-END:initComponents

    private void btnQueryActionPerformed(java.awt.event.ActionEvent evt) {
        //1收集参数(且验证输入有效性)
        //进货单编号
        String inUuid = tfdInUuid.getText();
        //用户姓名
        String inUserName = combInUser.getSelectedItem().toString();
        //用户ID
        String inUserUuid =null;
        if(combInUser.getSelectedIndex()>0){
            inUserUuid = UserEbiFactory.getUserEbi().getUserByName(inUserName).getUuid();
        }

        //进货起始时间
        String txtInDate = tfdInDate.getText();
        long inDate = 0;
        if(txtInDate!=null&txtInDate.trim().length()>0){
            inDate = DateUtil.string2Long(txtInDate+" 00:00:00", "进货起始时间格式错误!");
            if(inDate==-1){
                return ;
            }
        }

        //进货截止时间
        String txtInDate2 = tfdInDate2.getText();
        long inDate2 = 0;
        if(txtInDate2!=null&txtInDate2.trim().length()>0){
            inDate2 = DateUtil.string2Long(txtInDate2+ " 23:59:59", "进货截止时间格式错误!");
            if(inDate2==-1){
                return ;
            }
        }

        //进货明细单编号
        String inDetailUuid  = tfdInDetailUuid.getText();

        //书的Uuid
        String bookUuid =null;
        if(combBook.getSelectedIndex()>0){
            String bookName = combBook.getSelectedItem().toString();
            bookUuid = BookEbiFactory.getBookEbi().getBookByName(bookName).getUuid();

        }

        //进货最小数量
        int sumNum =0;
        if(tfdInNum.getText()!=null && tfdInNum.getText().trim().length()>0){
            try {
                sumNum = Integer.parseInt( tfdInNum.getText() );
            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(mainFrame, "进货数量最小值格式错误");
                return ;
            }
        }

        //进货最大数量
        int sumNum2 =0;
        if(tfdInNum2.getText()!=null && tfdInNum2.getText().trim().length()>0){
            try {
                sumNum2 = Integer.parseInt( tfdInNum2.getText() );
            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(mainFrame, "进货数量最大值格式错误");
                return ;
            }
        }

        //进货最小总价
        double sumMoney =0;
        if(tfdInSumMoney.getText()!=null && tfdInSumMoney.getText().trim().length()>0){
            try {
                sumMoney = Double.parseDouble(tfdInSumMoney.getText());
            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(mainFrame, "进货总价最小值格式错误");
                return;
            }
        }

        //进货最大总价
        double sumMoney2 =0;
        if(tfdInSumMoney2.getText()!=null && tfdInSumMoney2.getText().trim().length()>0){
            try {
                sumMoney2 = Double.parseDouble(tfdInSumMoney2.getText());
            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(mainFrame, "进货总价最小值格式错误");
                return;
            }
        }

        //2组织参数----分别组织InMainQueryModel和InDetailQueryModel

              //组织InMainQueryModel
        InMainQueryModel imqm = new InMainQueryModel();
        imqm.setUuid(inUuid);
        imqm.setInUserId(inUserUuid);
        imqm.setInDate(inDate);
        imqm.setInDate2(inDate2);
              //组织InDetailQueryModel
        InDetailQueryModel idqm = new InDetailQueryModel();
        idqm.setUuid(inDetailUuid);
        idqm.setBookId(bookUuid);
        idqm.setSumMoney(sumMoney);
        idqm.setSumMoney2(sumMoney2);
        idqm.setSumNum(sumNum);
        idqm.setSumNum2(sumNum2);

        //3调用逻辑层
        Map<InMainModel, List<InDetailModel>> map = InMainEbiFactory.getInMainEbi().getByCondition(imqm, idqm);

        //4返回到结果页面
        mainFrame.setContentPane(new InListPanel(mainFrame,map));
        mainFrame.validate();
    }

    private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
        back();
    }

    private void back() {
        mainFrame.setContentPane(new InListPanel(mainFrame));
        mainFrame.validate();
    }

    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JButton btnBack;
    private javax.swing.JButton btnQuery;
    private javax.swing.JComboBox combBook;
    private javax.swing.JComboBox combInUser;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JTextField tfdInDate;
    private javax.swing.JTextField tfdInDate2;
    private javax.swing.JTextField tfdInDetailUuid;
    private javax.swing.JTextField tfdInNum;
    private javax.swing.JTextField tfdInNum2;
    private javax.swing.JTextField tfdInSumMoney;
    private javax.swing.JTextField tfdInSumMoney2;
    private javax.swing.JTextField tfdInUuid;
    // End of variables declaration//GEN-END:variables

}

目前我的本系列所有源代码已打包上传至百度云:
http://pan.baidu.com/s/1nv5ZZwX
2016.4.19

时间: 2024-10-04 15:40:10

Java-单机版的书店管理系统(练习设计模块和思想_系列 七 )的相关文章

Java设计模块系列之书店管理系统单机版(二)_java

Java-单机版的书店管理系统(练习设计模块和思想_系列 一 ): http://www.jb51.net/article/91004.htm 介绍 小提示:上面一点有一个目录,可以快速定位到自己需要看的类. 今天对前面的代码有了小小的修改,让代码更加完善了一点. 至于用户唯一标识码uuid,会在以后修改成程序内部生成的, 现在的uuid还是由用户自己设置. 今天对这个程序,添加了用户界面的表现层的一部分,增加了公共类 枚举, 下面贴出目前我写的这个程序的全部代码:我会逐渐的写完这个程序的,请大

Java设计模块系列之书店管理系统单机版(一)_java

书店管理系统: 项目练习目标 : 1.Java应用程序基本分析 2.培养面向对象编程的基本思想 3.Java基本设计模式综合应用 4.掌握分层和接口的基本设计 5.构建合理的Java应用程序包结构 6.综合应用JSE所学习的知识 7.在应用中合理使用集合框架 8.在应用中综合使用swing的常用组件 9.基本的表现层的实现机制 10.IO流和文件的基本操作 11.培养良好的Java编程习惯 12.培养调试Java程序的能力,培养改错的能力 项目功能需求 : 1.能进行操作用户的注册,修改基本信息

Java设计模块系列之书店管理系统单机版(三)_java

介绍 今天对系列二的一个添加用户的输入小bug进行了解决, 增加了用户模块的,删除用户,和修改用户模块. 下面的代码是相对于系列二来说进行了修改或者是增加的类. 先看AddPanel类的修改: 在收集参数的时候进行防范就可防止那个bug了. cn.hncu.bookStore.user.ui; AddPanel类:(添加用户模块) /* * AddPanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.u

java书店系统毕业设计 用户模块(2)_java

本文实例为大家分享了java书店系统毕业设计第二篇,供大家参考,具体内容如下 1.用户管理(user.txt) 字段名和顺序 说明:其中的type为int类型,用来表示操作用户的类型. 1--表示为admin,可以进行全部操作 2--表示为能操作图书模块的人员 3--表示为能操作进货模块的人员 4--表示为能操作销售模块的人员 5--表示为能操作库存模块的人员 type用了枚举实现 package cn.hncu.bookStore.user.common; public enum UserTy

技术-高校校园车辆出管理系统的设计与实现,用JAVA 开发软件

问题描述 高校校园车辆出管理系统的设计与实现,用JAVA 开发软件 如何 基于ETC技术来实现? 项目描述: 1.校园注册车辆信息的维护 2.注册车辆进出校园的自动识别与放行 3.非注册车辆进入校园的拿卡登记与校园的计时收费 解决方案 我回头给你一个程序,等待. 解决方案二: 路过 可以问问系统集成的朋友

java书店系统毕业设计 用户模块(3)_java

本文实例为大家分享了java书店系统毕业设计第3篇,供大家参考,具体内容如下 import java.util.List; import javax.swing.JFrame; import javax.swing.JOptionPane; import cn.hncu.bookStore.user.business.factory.UserEbiFactory; import cn.hncu.bookStore.user.vo.UserModel; /** * * @author __USER

j2ee-人事管理系统数据库设计

问题描述 人事管理系统数据库设计 老师让设计个人事管理系统数据库,用J2EE和My SQL 做,交代码,有经验的大神求救呀,最好有步骤.没学过学了数据库,没设计过,不会J2EE 解决方案 网上有很多类似这种管理系统的java EE工程,下几个来看看.整个工程也就从上至下分为表现层,业务逻辑层,数据访问层,持久化层这四个层,分析功 能需求时自上而下分析,实际做工程时则自下而上搭建.j2ee框架的话,选择springMVC+mybatis即可,mybatis有自动生成的代码mybatis-gener

基于ASP的收发文管理系统的设计与实现

摘要 网络办公已是现代企业发展的大势所趋.本文主要阐述了基于B/S结构的收发文管理系统的功能模块以及如何使用ASP和SQL Server解决一些相关的技术,其中包括系统的安全性问题. 引言 传统的手工办公方式已经无法满足现代办公的需求,收发文管理系统作为提高工作效率.规范办公制度,增强办公的透明性,实现信息.文档资源的统一管理,方便领导决策,逐步实现无纸化办公的重要工具,越来越受到人们的重视. 我们选择B/S三层结构,后台数据库采用SQL Server,WEB服务器运行微软的IIS,以ASP(A

基于RBAC模型的权限管理系统的设计和实现

摘要:提出了基于RBAC模型的权限管理系统的设计和实现方案.介绍了采用的J2EE架构的多层体系结构设计,阐述了基于角色的访问控制RBAC模型的设计思想,并讨论了权限管理系统的核心面向对象设计模型,以及权限访问.权限控制和权限存储机制等关键技术. 关键词:权限管理系统:角色:访问控制:RBAC模型:J2EE:LDAP 0 引言 管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁.构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的.权限管理系统是管理信息系统中可代码重