




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
作者:尤帅物流系统开发文档物流系统开发文档1目录11. 概述22. 系统分析与总体设计32.1系统分析32.1.1需求描述32.1.2用例分析32.2总体设计42.2.1系统软件结构设计42.2.2功能模块设计52.2.3数据库设计52.2.4系统结构设计82.2.5界面设计样式102.2.6通用组件配置文件123. 功能模块的详细设计与实现123.1接单管理模块123.1.1接单管理总体结构123.1.2订单信息MVC模式的设计123.1.3接单信息实体类的实现133.1.4接单信息实体接口类143.1.5接单信息实体接口的实现类153.1.6接单信息业务逻辑类173.1.7接单信息业务逻辑类的实现类173.1.8接单信息控制类193.1.9视图层的实现243.2送货员信息管理模块253.2.1送货员信息管理总体结构263.2.2送货员信息MVC模式的设计263.2.3送货员信息实体类的实现273.2.4送货员信息实体接口类293.2.5送货员信息实体接口的实现类293.2.6送货员信息业务逻辑类323.2.7送货员信息业务逻辑类的实现类333.2.8送货员信息控制类343.2.9视图层的实现403.3送货管理模块423.3.1送货管理总体结构423.3.2送货管理MVC模式的设计423.3.3送货管理实体类的实现423.3.4送货管理实体接口类443.3.5送货管理实体接口的实现类443.3.6送货管理业务逻辑类483.3.7送货管理业务逻辑类的实现493.3.8送货管理控制类533.3.9视图层的实现583.4仓库管理模块593.4.1仓库管理总体结构593.4.2仓库管理MVC模式的设计593.4.3仓库管理实体类的实现593.4.4仓库管理实体接口类613.4.5仓库管理实体接口的实现类623.4.6仓库管理业务逻辑类673.4.7仓库管理业务逻辑类的实现673.4.8仓库管理控制类703.4.9视图层的实现743.5仓库管理模块763.5.1视图层的实现764. 系统配置784.1物流系统给的数据库配置如下:784.2引入Structs2支持791. 概述本报告对一个物流系统的分析、设计及编码实现进行了介绍。该报告说明了物流系统的需求,软件设计以及编码实现。本系统采用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)货物编号字段名是否为空长度描述1idnotint主键2Consignor_namenotVarchar(64)发货员名字3Consignor_addressnotVarchar(64)发货地址4Consignor_telnotVarchar(64)发货人电话号码5Recess_namenotVarchar(32)收货人名字6Recess_telnotVarchar(32)收货人电话号码7Recess_addressnotVarchar(32)收货人地址8Charge_methodnotVarchar(64)收费方法9costnotfloat费用10Goods_weightnotVarchar(32)货物重量11Goods_volumenotVarchar(32)货物体积12Is_signnotInt(3)是否签收13Is_costnotInt(3)是否收费14acceptornotVarchar(3)受理人送货员(t_delivery)送货员编号字段名是否为空长度描述1idnotint主键2Worker_nubnotVarchar(64)职工号3Delivery_addressnotVarchar(64)送货员家庭地址4Delivery_telnotVarchar(64)送货员电话号码5Delivery_namenotVarchar(32)送货员名字6sexnotVarchar(32)性别7agenotVarchar(32)年龄8Id_carnotVarchar(64)身份证号9Delivery_areanotfloat送货范围入库明细表(t_warehousing_detail)入库明细表编号字段名是否为空长度描述1idnotint主键2Warehousing_datenotVarchar(64)入库时间3Send_idnotint送货单号4Warehouse_managernotVarchar(64)仓库管理员5Warehousing_areanotVarchar(32)入库存放区分拣明细表(t_manage_detail)入库明细表编号字段名是否为空长度描述1idnotint主键2manage_datenotVarchar(64)分拣时间3Send_idnotint送货单号4Manage_namenotVarchar(64)分拣员5areanotVarchar(32)目的地区域送货明细表(t_detail)送货明细表编号字段名是否为空长度描述1idnotint主键2Send_datenottime送货时间3Send_idnotint送货单号4Charge_methodnotVarchar(64)收费方法5Consignor_namenotVarchar(32)发货员名字6Delivery_namenotVarchar(32)送货员名字7Real_costnotVarchar(32)实收费用8Send_statusnotVarchar(64)送货状态9Sign_nameVarchar(64)签收人姓名10Is_signVarchar(64)是否签收费用结算表(t_settlement)送货明细表编号字段名是否为空长度描述1idnotint主键2settlement_datenottime结算时间3Send_idnotint送货职工号4Send_nubnotVarchar(64)送货数量5Lose_debitsnotVarchar(32)损耗扣款6Real_moneynotVarchar(32)实发总数7Total_commissionnotVarchar(32)提成总数8salarynotVarchar(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.daoSendFoodsDao.java接单信息管理相关实体接口实现类org.logistic.dao.implSendFoodsDao,impl.java接单信息管理相关实体类org.logistic.entitySendFoods.java接单信息管理相关实体类的配置org.logistic.entitySendFoods.hbm.xmlV接单信息管理逻辑类org.logistic.serviceSendFoodsService.java接单信息管理的逻辑实现类org.logistic.service.implSendFoodsService,impl.java接单信息管理相关实体类org.logistic.actionSendFoodsAction.javaC接单输入页面logisticsSysjspSend_foods_Add.jsp接单信息列表页面logisticsSysjspSend_foods_list.jsp接单信息编辑页面logisticsSysjspSend_foods_update.jsp接单入库页面logisticsSysjspwarehourse.jsp3.1.3接单信息实体类的实现SendFoods.javapublic 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 3.1.4接单信息实体接口类SendFoodDao.javapublic interface SendFoodsDao extends IBaseDaopublic boolean warehouse(WarehousingDetail warehousingDetail);public String getHQL(SendFoods sendFoods);3.1.5接单信息实体接口的实现类SendFoodDaoImpl.javapublic class SendFoodsDaoImpl extends HibernateSession implements SendFoodsDao public boolean delete(int id) return super.deleteEntityBean(SendFoods.class,id); SuppressWarnings(unchecked)public List 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 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 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.javapublic interface SendFoodsService public boolean delete(int id);public List findAll(String table);public List 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.javapublic class SendFoodsServiceImpl implements SendFoodsService private SendFoodsDao sendFoodsDao = new SendFoodsDaoImpl();public boolean delete(int id) return sendFoodsDao.delete(id);public List findAll(String table) return sendFoodsDao.findAll(table);public List 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 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.javapublic 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 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 getSendFoodsList() return sendFoodsList;public void setSendFoodsList(List 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;/* * 获取货物单并分页 * return */ public String getAllSendFoods() /分页的pageBean,参数pageSize表示每页显示记录数,page为当前页 try SendFoods s=setSelectValue(); pageBean = sendFoodsService.queryForPage(pageSize, page,s); catch (Exception e) e.printStackTrace(); return SUCCESS; private SendFoods setSelectValue() SendFoods sendFoods=new SendFoods(); /网上比较方法 if(text.length() =0 ) return null; if(select.length()0) if(select.equals(consignorName) sendFoods.setConsignorName(text); else if(select.equals(consignorTel) sendFoods.setConsignorTel(text); else if(select.equals(isSign) if(text.equals(是) sendFoods.setIsSign(true); else if(text.equals(否) sendFoods.setIsSign(false); else if(select.equals(acceptor) sendFoods.setAcceptor(text); else if(select.equals(recessTel) sendFoods.setRecessTel(text); return sendFoods; return null; /* * 添加货物单 * return */ public String add() try sendFoodsService.save(sendFoods); catch (Exception e) e.printStackTrace(); return SUCCESS; /* * 通过ID找货物单 * return */ public String findById() try sendFoodsList = sendFoodsService.findById(Integer.parseInt(id); catch (NumberFormatException e) e.printStackTrace(); return SUCCESS; /* * 货物信息修改 * return */ public String update() try sendFoodsService.update(sendFoods); catch (NumberFormatException e) e.printStackTrace(); return SUCCESS; /* * 货物信息删除 * return */ public String delete() try sendFoodsService.delete(Integer.parseInt(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南昌医学院《行政组织学》2023-2024学年第二学期期末试卷
- 河南财政金融学院《数据挖掘技术》2023-2024学年第二学期期末试卷
- 晋城职业技术学院《液压与气压传动A》2023-2024学年第二学期期末试卷
- 阳江职业技术学院《模拟电子技术课程设计》2023-2024学年第二学期期末试卷
- 可克达拉职业技术学院《公务员制度》2023-2024学年第二学期期末试卷
- 淮南师范学院《商业银行业务与经营实务》2023-2024学年第二学期期末试卷
- 郑州工业应用技术学院《纤维素功能化》2023-2024学年第二学期期末试卷
- 黑龙江旅游职业技术学院《地图编绘与计算机制图》2023-2024学年第二学期期末试卷
- 河南科技职业大学《建筑专业法规》2023-2024学年第二学期期末试卷
- 江西医学高等专科学校《CAD》2023-2024学年第二学期期末试卷
- 井下动火安全技术措施
- 理解词语句子的方法PPT
- 热线心理咨询技术-课件
- 碰撞与冲击动力学
- 全等三角形第一课时课件
- 歌曲《我们》歌词
- 颈部肿块诊断及鉴别诊断课件
- 汽车前保险杠结构及安全能分析学士学位参考
- 配电室八项制度(八张)
- 清算方案模板9篇
- 个体诊所药品管理制度-范文
评论
0/150
提交评论