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

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

介绍:


现在写到了进货模块了,这应该是本书店系统最难的模块了吧。


本次多写了一个工具类:

把字符串比较的代码抽取出来写了一个类了。因为需要比较的字符串比较多。


还有进货模块的值对模块,分为了4个部分。

1、进货值对象

2、进货查询值对象

3、进货明细值对象

4、进货明细查询值对象。


进货模块表现层的List模块,Add模块。


数据层模块和逻辑层模块。写好了大部分功能。

可以执行添加进货。

list界面有2个list列表,一个是进货列表,一个是进货明细列表。

这2个表示有联系的!选中进货列表的某一行时,需要在另外一个列表中显示这个进货的明细!


后期会对列表一的显示改一下的,时间会改成**年月日 ::

(取系统时间显示!)

进货人不会再只显示编号。会直接显示名字的!


后面有这次增加的代码模块,

然后,其他模块的源代码可能有部分修改,

其他模块的源代码百度云链接(CSDN上传文件好像有一天的缓冲期,我刚刚上传的,现在还找不到,只能先贴出百度云的文件的源代码链接):

(目前我的所有源代码:)

http://pan.baidu.com/s/1jHOgFqQ


展示图片:

image.png

image.png

image.png

image.png

部分的代码模块:

工具类:StringComparison类:

package cn.hncu.bookStore.util;
/**
 * 工具类
 * 字符串比较
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class StringComparison {
    /**
     * @param str1---需要比较的字符串
     * @param str2---被比较的字符串
     * @return--- 返回0 , 2个字符串相同,<br/> 
     *            返回-1,str1和str2不相同,<br/>
     *            返回1,str1是str2的子串(忽略str1两端空格)<br/>
     *            返回2,说明str1为null或者str1全部为空格<br/>
     */
    public static int stringComp(String str1,String str2){
        if(str1==null||!(str1.trim().length()>0)){
            return 2;
        }
        //字符串完全相同
        if(str1!=null&&str1.trim().length()>0){
            if(str1.equals(str2)){
                return 0;
            }
        }
        //模糊匹配(忽略两端空格)
        if(str1!=null&&str1.trim().length()>0){
            if(str2.indexOf(str1.trim())!=-1){
                return 1;
            }
        }
        return -1;
    }
}


注意一个问题:

要使用对象流读取文件:

这个类必须实现Serializable接口!!!!!

值对象模块:

进货值对象:InMainModel:

package cn.hncu.bookStore.in.vo;
import java.io.Serializable;
/**
 * 进货管理值对象封装
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class InMainModel implements Serializable, Comparable<InMainModel>{
    //进货单编号
    private String uuid;
    //进货时间
    private long inDate;
    //进货人员编号
    private String inUserId;
    /* 
       如果某个字段是外键,同时又需要在当前表中相应表现层显示出用户能看得懂
     的信息,则需要补一个专用于信息显示(给用户看)的字段。
     */
    private String inUserName;
    public String getInUserName() {
        return inUserName;
    }
    public void setInUserName(String inUserName) {
        this.inUserName = inUserName;
    }
    /**
     * 
     * @return ---返回进货单编号(String型)
     */
    public String getUuid() {
        return uuid;
    }
    /**
     * 
     * @param uuid---设置进货单编号(String型)
     */
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
    /**
     * 
     * @return---返回进货时间(long型)
     */
    public long getInDate() {
        return inDate;
    }
    /**
     * 
     * @param inDate---设置进货时间(long型)
     */
    public void setInDate(long inDate) {
        this.inDate = inDate;
    }
    /**
     * 
     * @return---返回进货人员编号(String型)
     */
    public String getInUserId() {
        return inUserId;
    }
    /**
     * 
     * @param inUserId---设置进货人员编号(String型)
     */
    public void setInUserId(String inUserId) {
        this.inUserId = inUserId;
    }
    @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;
        InMainModel other = (InMainModel) 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 + ", " + inDate
                + ", " + inUserId;
    }
    @Override
    public int compareTo(InMainModel o) {
        return Integer.parseInt(uuid)-Integer.parseInt(o.uuid);
    }
}

进货明细值对象类:InDetailModel

package cn.hncu.bookStore.in.vo;
import java.io.Serializable;
/**
 * 进货明细管理的值对象封装
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class InDetailModel implements Serializable{
    //进货明细编号
    private String uuid;
    //进货单编号
    private String inId;
    //图书编号
    private String bookId;
    //进货数量
    private int sumNum;
    //进货总金额
    private double sumMoney;
    //为把书名显示给用户看,给bookUuid添加一个bookName属性
    private String bookName;
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public String getUuid() {
        return uuid;
    }
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
    public String getInId() {
        return inId;
    }
    public void setInId(String inId) {
        this.inId = inId;
    }
    public String getBookId() {
        return bookId;
    }
    public void setBookId(String bookId) {
        this.bookId = bookId;
    }
    public int getSumNum() {
        return sumNum;
    }
    public void setSumNum(int sumNum) {
        this.sumNum = sumNum;
    }
    public double getSumMoney() {
        return sumMoney;
    }
    public void setSumMoney(double sumMoney) {
        this.sumMoney = sumMoney;
    }
    @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;
        InDetailModel other = (InDetailModel) 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 +", "+bookName + ", " + sumNum
                + "本, " + sumMoney + "元";
    }
}

进货查询值对象类:InMainQueryModel

package cn.hncu.bookStore.in.vo;
/**
 * 进货查询值对象封装
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class InMainQueryModel extends InMainModel {
    //需要查询的最大时间
    private long inDate2;
    /**
     * 
     * @return---需要查询的最大时间值
     */
    public long getInDate2() {
        return inDate2;
    }
    /**
     * 
     * @param inDate2---设置需要查询的最大时间
     */
    public void setInDate2(long inDate2) {
        this.inDate2 = inDate2;
    }
}

进货明细查询值对象类:InDetailQueryModel

package cn.hncu.bookStore.in.vo;
/**
 * 进货明细查询值对象封装
 * @author 陈浩翔
 *
 * @version 1.0
 */
public class InDetailQueryModel extends InDetailModel {
    //需要查询的最大进货数量
    private int sumNum2;
    //需要查询的最大进货金额
    private double sumMoney2;
    /**
     * 
     * @return---返回需要查询的最大进货数量
     */
    public int getSumNum2() {
        return sumNum2;
    }
    /**
     * 
     * @param sumNum2---设置需要查询的最大进货数量
     */
    public void setSumNum2(int sumNum2) {
        this.sumNum2 = sumNum2;
    }
    /**
     * 
     * @return---返回需要查询的最大进货金额
     */
    public double getSumMoney2() {
        return sumMoney2;
    }
    /**
     * 
     * @param sumMoney2---设置需要查询的最大进货金额
     */
    public void setSumMoney2(double sumMoney2) {
        this.sumMoney2 = sumMoney2;
    }
}


目录
相关文章
|
1月前
|
缓存 Java
java开发常用模块——缓存模块
java开发常用模块——缓存模块
|
5月前
|
Java API
Java之File类的详细解析及小练习
2. File类 2.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 2.2 构造方法
36 0
|
5月前
|
Java
Java之多线程的综合练习二
练习六:多线程统计并求最大值 需求: 在上一题基础上继续完成如下需求: 每次抽的过程中,不打印,抽完时一次性打印(随机)
26 0
|
26天前
|
设计模式 Java 测试技术
Java 模块解耦的设计策略
Java 模块解耦的设计策略
26 1
|
1月前
|
移动开发 前端开发 JavaScript
Java 验证码模块
Java 验证码模块
|
3月前
|
机器学习/深度学习 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-Java全排列公式
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-Java全排列公式
37 0
|
5月前
|
网络协议 Java
Java之TCP,UDP综合小练习一
4. 综合练习 练习一:多发多收 需求: 客户端:多次发送数据
27 0
|
5月前
|
Java
Java之多线程综合练习小题一
2. 多线程综合练习 练习一:售票 需求: 一共有1000张电影票,可以在两个窗口领取,假设每次领取的时间为3000毫秒,
59 0
|
5月前
|
Java
Java之Collections的综合小练习
3. 综合练习 练习1:随机点名器 需求:班级里有N个学生,实现随机点名器
29 0
|
6月前
|
Java
java模块导出与导入
java模块导出与导入
58 0