收藏 分销(赏)

物流系统开发文档.doc

上传人:pc****0 文档编号:7595443 上传时间:2025-01-10 格式:DOC 页数:81 大小:5.85MB
下载 相关 举报
物流系统开发文档.doc_第1页
第1页 / 共81页
物流系统开发文档.doc_第2页
第2页 / 共81页
点击查看更多>>
资源描述
作者:尤帅 物流系统开发文档 物流系统开发文档 1 目录 1 1. 概述 2 2. 系统分析与总体设计 3 2.1系统分析 3 2.1.1需求描述 3 2.1.2用例分析 3 2.2总体设计 4 2.2.1系统软件结构设计 4 2.2.2功能模块设计 5 2.2.3数据库设计 5 2.2.4系统结构设计 8 2.2.5界面设计样式 10 2.2.6通用组件配置文件 12 3. 功能模块的详细设计与实现 12 3.1接单管理模块 12 3.1.1接单管理总体结构 12 3.1.2订单信息MVC模式的设计 12 3.1.3接单信息实体类的实现 13 3.1.4接单信息实体接口类 14 3.1.5接单信息实体接口的实现类 15 3.1.6接单信息业务逻辑类 17 3.1.7接单信息业务逻辑类的实现类 17 3.1.8接单信息控制类 19 3.1.9视图层的实现 24 3.2送货员信息管理模块 25 3.2.1送货员信息管理总体结构 26 3.2.2送货员信息MVC模式的设计 26 3.2.3送货员信息实体类的实现 27 3.2.4送货员信息实体接口类 29 3.2.5送货员信息实体接口的实现类 29 3.2.6送货员信息业务逻辑类 32 3.2.7送货员信息业务逻辑类的实现类 33 3.2.8送货员信息控制类 34 3.2.9视图层的实现 40 3.3送货管理模块 42 3.3.1送货管理总体结构 42 3.3.2送货管理MVC模式的设计 42 3.3.3送货管理实体类的实现 42 3.3.4送货管理实体接口类 44 3.3.5送货管理实体接口的实现类 44 3.3.6送货管理业务逻辑类 48 3.3.7送货管理业务逻辑类的实现 49 3.3.8送货管理控制类 53 3.3.9视图层的实现 58 3.4仓库管理模块 59 3.4.1仓库管理总体结构 59 3.4.2仓库管理MVC模式的设计 59 3.4.3仓库管理实体类的实现 59 3.4.4仓库管理实体接口类 61 3.4.5仓库管理实体接口的实现类 62 3.4.6仓库管理业务逻辑类 67 3.4.7仓库管理业务逻辑类的实现 67 3.4.8仓库管理控制类 70 3.4.9视图层的实现 74 3.5仓库管理模块 76 3.5.1视图层的实现 76 4. 系统配置 78 4.1物流系统给的数据库配置如下: 78 4.2引入Structs2支持 79 1. 概述 本报告对一个物流系统的分析、设计及编码实现进行了介绍。该报告说明了物流系统的需求,软件设计以及编码实现。 本系统采用J2EE进行实现,采用MVC模式设计结构,采用Struts2+Hibernate框架+MSQL数据库系统。 2. 系统分析与总体设计 2.1系统分析 2.1.1需求描述 物流系统是用于物流公司处理物流与配送的业务,这个系统主要具有以下功能: 1) 仓库管理员揽货点节后用户的货物、称重、打包、填单、收费,用于系统管理员将信息输入计算机中,要求将送货单号扫描入数据库。 2) 送货员到各个网点接送货物,将货物集中到物流仓库。 3) 仓库管理员每天将集中的货物根据送达目的地不同而分拣成不同区域。有送货员分别送到不同的地方或收货人手中。 4) 各个阶段均由系统管理员通过扫描进入数据库。 5) 客户可以根据送货单号查询到货物状态 6) 财务部分根据送货单的信息处理收货以及各相关人的结算。 2.1.2用例分析 用例图是用来显示外部参与者与系统的交互吗,能够更直观的描述系统的功能。从角色来看,物流系统主要分为5个角色,分别是:系统管理员、客户、送货员、仓库管理员、签收人。下图为物流系统的用例图。 2.2总体设计 2.2.1系统软件结构设计 2.2.2功能模块设计 子系统 模块名 子功能 描述 后台 订单管理模块 订单信息输入 管理员输入订单信息 订单查询 管理员查询订单信息 订单信息更新 管理员更新订单信息 送货员信息管理模块 送货员信息输入 管理员输入送货员信息 送货员信息更新 管理员更新送货员信息 送货员信息查询 管理员查询送货员信息 工资结算 管理员结算查询送货员的工资 送货管理模块 送货明细 管理员查询送货明细信息 订单签收 送货员送货,让客户签收 订单支付 客户付款 送货员工资结算 管理员结算送货员的工资 仓库管理模块 货物信息输入 管理员输入货物信息 货物分拣 管理员进行货物分拣处理 货物发送 管理员把货物让送货员发送 货物信息更新 管理员更新货物信息 2.2.3数据库设计 货物单 (t_send_foods)货物 编号 字段名 是否为空 长度 描述 1 id not int 主键 2 Consignor_name not Varchar(64) 发货员名字 3 Consignor_address not Varchar(64) 发货地址 4 Consignor_tel not Varchar(64) 发货人电话号码 5 Recess_name not Varchar(32) 收货人名字 6 Recess_tel not Varchar(32) 收货人电话号码 7 Recess_address not Varchar(32) 收货人地址 8 Charge_method not Varchar(64) 收费方法 9 cost not float 费用 10 Goods_weight not Varchar(32) 货物重量 11 Goods_volume not Varchar(32) 货物体积 12 Is_sign not Int(3) 是否签收 13 Is_cost not Int(3) 是否收费 14 acceptor not Varchar(3) 受理人 送货员 (t_delivery)送货员 编号 字段名 是否为空 长度 描述 1 id not int 主键 2 Worker_nub not Varchar(64) 职工号 3 Delivery_address not Varchar(64) 送货员家庭地址 4 Delivery_tel not Varchar(64) 送货员电话号码 5 Delivery_name not Varchar(32) 送货员名字 6 sex not Varchar(32) 性别 7 age not Varchar(32) 年龄 8 Id_car not Varchar(64) 身份证号 9 Delivery_area not float 送货范围 入库明细表 (t_warehousing_detail)入库明细表 编号 字段名 是否为空 长度 描述 1 id not int 主键 2 Warehousing_date not Varchar(64) 入库时间 3 Send_id not int 送货单号 4 Warehouse_manager not Varchar(64) 仓库管理员 5 Warehousing_area not Varchar(32) 入库存放区 分拣明细表 (t_manage_detail)入库明细表 编号 字段名 是否为空 长度 描述 1 id not int 主键 2 manage_date not Varchar(64) 分拣时间 3 Send_id not int 送货单号 4 Manage_name not Varchar(64) 分拣员 5 area not Varchar(32) 目的地区域 送货明细表 (t_detail)送货明细表 编号 字段名 是否为空 长度 描述 1 id not int 主键 2 Send_date not time 送货时间 3 Send_id not int 送货单号 4 Charge__method not Varchar(64) 收费方法 5 Consignor_name not Varchar(32) 发货员名字 6 Delivery_name not Varchar(32) 送货员名字 7 Real_cost not Varchar(32) 实收费用 8 Send_status not Varchar(64) 送货状态 9 Sign_name Varchar(64) 签收人姓名 10 Is_sign Varchar(64) 是否签收 费用结算表 (t_settlement)送货明细表 编号 字段名 是否为空 长度 描述 1 id not int 主键 2 settlement_date not time 结算时间 3 Send_id not int 送货职工号 4 Send_nub not Varchar(64) 送货数量 5 Lose_debits not Varchar(32) 损耗扣款 6 Real_money not Varchar(32) 实发总数 7 Total_commission not Varchar(32) 提成总数 8 salary not Varchar(64) 底薪 物流系统数据库表及其关系 2.2.4系统结构设计 系统采用分层结构,整体上分为4层:视图层、控制层、业务逻辑层和数据访问层 项目名称为logisticsSys。数据访问层与业务逻辑层采用SH框架的Struts2+Hibernate技术实现。视图层和控制层采用JSP技术实现。 包名 说明 org.logistic.action 控制类包 org.logistic.dao 数据访问层接口包 org.logistic.dao.impl 数据访问层实现类包 org.logistic.entity 数据模型类包,实体包 org.logistic.service 业务逻辑层接口包 org.logistic.service.impl 业务逻辑层实现类 org.logistic.util 配置文件包 logisticsSys包的划分 WebRoot 文件的划分 2.2.5界面设计样式 该部分为界面设计的公共部分,给界面提供样式。 2.2.6通用组件配置文件 3. 功能模块的详细设计与实现 3.1接单管理模块 3.1.1接单管理总体结构 3.1.2订单信息MVC模式的设计 层次 功能 所在的包/位置 程序 M 接单信息管理相关实体接口类 org.logistic.dao SendFoodsDao.java 接单信息管理相关实体接口实现类 org.logistic.dao.impl SendFoodsDao,impl.java 接单信息管理相关实体类 org.logistic.entity SendFoods.java 接单信息管理相关实体类的配置 org.logistic.entity SendFoods.hbm.xml V 接单信息管理逻辑类 org.logistic.service SendFoodsService.java 接单信息管理的逻辑实现类 org.logistic.service.impl SendFoodsService,impl.java 接单信息管理相关实体类 org.logistic.action SendFoodsAction.java C 接单输入页面 logisticsSys\jsp Send_foods_Add.jsp 接单信息列表页面 logisticsSys\jsp Send_foods_list.jsp 接单信息编辑页面 logisticsSys\jsp Send_foods_update.jsp 接单入库页面 logisticsSys\jsp warehourse.jsp 3.1.3接单信息实体类的实现 SendFoods.java public class SendFoods { private int id; private String consignorName; private String consignorAddress; private String consignorTel; private String recessName; private String recessTel; private String chargeMethod; private float cost; private String goodsWeight; private String goodsVolume; private boolean isSign; private boolean isCost; private String acceptor; private String recessAddress; } SendFoods.hbm.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " <hibernate-mapping> <class name="org.logistic.entity.SendFoods" table="t_send_foods"> <id name="id" type="int" unsaved-value="null"> <generator class="identity"/> </id> <property name="consignorName"><column name="consignor_name"></column> </property> <property name="consignorAddress" ><column name="consignor_address"></column> </property> <property name="consignorTel"><column name="consignor_tel"></column> </property> <property name="recessName" ><column name="recess_name"></column> </property> <property name="recessAddress" ><column name="recess_address"></column> </property> <property name="recessTel"><column name="recess_tel"></column> </property> <property name="cost"><column name="cost"></column> </property> <property name="chargeMethod"><column name="charge_method"></column> </property> <property name="goodsWeight"><column name="goods_weight"></column> </property> <property name="goodsVolume"><column name="goods_volume"></column> </property> <property name="isSign"><column name="is_sign"></column> </property> <property name="isCost"><column name="is_cost"></column> </property> <property name="acceptor"></property> </class> </hibernate-mapping> 3.1.4接单信息实体接口类 SendFoodDao.java public interface SendFoodsDao extends IBaseDao<SendFoods>{ public boolean warehouse(WarehousingDetail warehousingDetail); public String getHQL(SendFoods sendFoods); } 3.1.5接单信息实体接口的实现类 SendFoodDaoImpl.java public class SendFoodsDaoImpl extends HibernateSession implements SendFoodsDao { public boolean delete(int id) { return super.deleteEntityBean(SendFoods.class,id); } @SuppressWarnings("unchecked") public List<SendFoods> findAll(String sendFoods) { return super.getQueryList("from "+sendFoods); } public boolean save(SendFoods sendFoods) { return super.insertEntityBean(sendFoods); } public boolean update(SendFoods sendFoods) { return super.updateEntityBean(sendFoods); } @SuppressWarnings("unchecked") public List<SendFoods> findById(int id) { String sql = "from SendFoods where id="+id; return super.getQueryList(sql); } /** * 分页查询 * @param hql 查询的条件 * @param offset 开始记录 * @param length 一次查询几条记录 * @return */ @SuppressWarnings("unchecked") public List<SendFoods> findBySQLForPage(String hql, int offset, int length) { return super.getQueryList(hql, offset, length); } /** * 查询所有记录数 * @return 总记录数 */ public int getAllRowCount(String hql) { return super.getQueryList(hql).size(); } public boolean warehouse(WarehousingDetail warehousingDetail) { String hql1="from WarehousingDetail w where w.sendId='"+warehousingDetail.getSendId()+"'"; WarehousingDetail w=(WarehousingDetail)super.getEntityBean(hql1); //如果查询有结果,则入库失败 if(w==null){ warehousingDetail.setWarehousingDate(new Date()); return super.insertEntityBean(warehousingDetail); } return false; } public String getHQL(SendFoods sendFoods){ String hql = "from SendFoods s"; //查询语句 if(sendFoods!=null){ if(sendFoods.getConsignorName()!=null){ hql+=" where s.consignorName='"+sendFoods.getConsignorName()+"'"; } else if(sendFoods.getConsignorTel()!=null){ hql+=" where s.consignorTel='"+sendFoods.getConsignorTel()+"'"; } else if(sendFoods.getAcceptor()!=null){ hql+=" where s.acceptor='"+sendFoods.getAcceptor()+"'"; } else if(sendFoods.getRecessTel()!=null){ hql+=" where s.recessTel='"+sendFoods.getRecessTel()+"'"; } else { if(sendFoods.getIsSign()){ hql+=" where s.isSign=1"; } else{ hql+=" where s.isSign=0"; } } } return hql; } } 3.1.6接单信息业务逻辑类 SendFoodsService.java public interface SendFoodsService { public boolean delete(int id); public List<SendFoods> findAll(String table); public List<SendFoods> findById(int id); public boolean save(SendFoods sendFoods); public boolean update(SendFoods sendFoods); public PageBean queryForPage(int pageSize,int currentPage,SendFoods sendFoods); public int getAllRowCount(String hql); public boolean warehouse(WarehousingDetail warehousingDetail); } 3.1.7接单信息业务逻辑类的实现类 SendFoodsServiceImpl.java public class SendFoodsServiceImpl implements SendFoodsService { private SendFoodsDao sendFoodsDao = new SendFoodsDaoImpl(); public boolean delete(int id) { return sendFoodsDao.delete(id); } public List<SendFoods> findAll(String table) { return sendFoodsDao.findAll(table); } public List<SendFoods> findById(int id) { return sendFoodsDao.findById(id); } public boolean save(SendFoods sendFoods) { return sendFoodsDao.save(sendFoods); } public boolean update(SendFoods sendFoods) { sendFoodsDao.findById(sendFoods.getId()); return sendFoodsDao.update(sendFoods); } public SendFoodsDao getSendFoodsDao() { return sendFoodsDao; } public void setSendFoodsDao(SendFoodsDao sendFoodsDao) { this.sendFoodsDao = sendFoodsDao; } /** * 分页查询 * @param hql 查询的条件 * @param offset 开始记录 * @param length 一次查询几条记录 * @return */ public PageBean queryForPage(int pageSize, int page,SendFoods sendFoods) { String hql = sendFoodsDao.getHQL(sendFoods); //查询语句 int allRow = sendFoodsDao.getAllRowCount(hql); //总记录数 int totalPage = PageBean.countTotalPage(pageSize, allRow); //总页数 final int offset = PageBean.countOffset(pageSize, page); //当前页开始记录 final int length = pageSize; //每页记录数 final int currentPage = PageBean.countCurrentPage(page); List<SendFoods> list = sendFoodsDao.findBySQLForPage(hql,offset, length); //"一页"的记录 //把分页信息保存到Bean中 PageBean pageBean = new PageBean(); pageBean.setPageSize(pageSize); pageBean.setCurrentPage(currentPage); pageBean.setAllRow(allRow); pageBean.setTotalPage(totalPage); pageBean.setList(list); pageBean.init(); return pageBean; } /** * 查询所有记录数 * @return 总记录数 */ public int getAllRowCount(String hql) { return sendFoodsDao.getAllRowCount(hql); } //进库 public boolean warehouse(WarehousingDetail warehousingDetail) { return sendFoodsDao.warehouse(warehousingDetail); } } 3.1.8接单信息控制类 SendFoodsAction.java public class SendFoodsAction extends ActionSupport { private static final long serialVersionUID = 1L; private SendFoodsService sendFoodsService = new SendFoodsServiceImpl(); private int page = 1; private int pageSize = 10; private PageBean pageBean; //包含分布信息的bean private SendFoods sendFoods; private List<SendFoods> sendFoodsList; private String select=""; private String text=""; private WarehousingDetail warehousingDetail; private String id; public WarehousingDetail getWarehousingDetail() { return warehousingDetail; } public void setWarehousingDetail(WarehousingDetail warehousingDetail) { this.warehousingDetail = warehousingDetail; } public List<SendFoods> getSendFoodsList() { return sendFoodsList; } public void setSendFoodsList(List<SendFoods> sendFoodsList) { this.sendFoodsList = sendFoodsList; } public String getSelect() { return select; } public void setSelect(String select) { this.select = select; } public String getId() { return id; } public void setId(String id) { this.id = id; } public SendFoods getSendFoods() { return sendFoods; } public void setSendFoods(SendFoods sendFoods) { this.sendFoods = sendFoods; } public void setSendFoodsService(SendFoodsService sendFoodsService) { this.sendFoodsService = sendFoodsService; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public PageBean getPageBean() { return pageBean; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public void setPageBean(PageBean pageBean) { this.pageBean = pageBean; } public String getText() { return text; } public void setText(String text) { this.text = text; } /** * 获取货物单并分页
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服