版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、作者:尤帅物流系统开发文档1错误!未定义书签。物流系统开发文档 目录1. 概述12. 系统分析与总体设计 32.1系统分析33322总体设计44446673. 功能模块的详细设计与实现 73.1接单管理模块777799111213173.2送货员信息管理模块 181818192121232425303.3送货管理模块3030 30 31 31 31 31 31 323.4 仓库管理模块 32 32 32 32 32 32 32 32 32 333.5 仓库管理模块 33 334. 系统配置 334.1 物流系统给的数据库配置如下: 334.2 引入 Structs2 支持 341. 概述本报告
2、对一个物流系统的分析、设计及编码实现进行了介绍。该 报告说明了物流系统的需求,软件设计以及编码实现。本系统采用 J2EE 进行实现,采用 MVC 模式设计结构,采用Struts2+Hibernate框架 +MSQL 数据库系统2. 系统分析与总体设计2.1 系统分析2.1.1 需求描述物流系统是用于物流公司处理物流与配送的业务,这个系统主要 具有以下功能:1)仓库管理员揽货点节后用户的货物、称重、打包、填单、收费, 用于系统管理员将信息输入计算机中,要求将送货单号扫描入数据 库。2)送货员到各个网点接送货物,将货物集中到物流仓库。3)仓库管理员每天将集中的货物根据送达目的地不同而分拣成不同 区
3、域。有送货员分别送到不同的地方或收货人手中。4)各个阶段均由系统管理员通过扫描进入数据库。5)客户可以根据送货单号查询到货物状态6)财务部分根据送货单的信息处理收货以及各相关人的结算。2.1.2 用例分析用例图是用来显示外部参与者与系统的交互吗,能够更直观的描 述系统的功能。从角色来看,物流系统主要分为 5 个角色,分别是: 系统管理员、客户、送货员、仓库管理员、签收人。下图为物流系统 的用例图2.2总体设计系统软件结构设计功能模块设计子系统模块名子功能描述后台订单管理模块订单信息输入管理员输入订单信息订单查询管理员查询订单信息订单信息更新管理员更新订单信息送货员信息管理模块送货员信息输入管理
4、员输入送货员信 息送货员信息更新管理员更新送货员信 息送货员信息查询管理员查询送货员信 息工资结算管理员结算查询送货 员的工资送货管理模块送货明细管理员查询送货明细 信息订单签收送货员送货,让客户 签收订单支付客户付款送货员工资结算管理员结算送货员的 工资仓库管理模块货物信息输入管理员输入货物信息货物分拣管理员进行货物分拣 处理货物发送管理员把货物让送货 员发送货物信息更新管理员更新货物信息数据库设计货物单(t se nd foods)货物编号字段名是否为空长度描述1idnotint主键2Con sig nor n amenotVarchar(64)发货员名字3Con sig no r_add
5、ressnotVarchar(64)发货地址4Con sig no r_telnotVarchar(64)发货人电话号码5Recess_ namenotVarchar(32)收货人名字6Recess_telnotVarchar(32)收货人电话号码7Recess addressnotVarchar(32)收货人地址8Charge methodnotVarchar(64)收费方法9costnotfloat费用10Goods weightnotVarchar(32)货物重量11Goods volumenotVarchar(32)货物体积12Is sig nnotInt(3)是否签收13Is cos
6、tnotInt(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 areanotfl
7、oat送货范围入库明细表(t warehousing detail)入库明细表编号字段名是否为空长度描述1idnotint主键2Warehous in g datenotVarchar(64)入库时间3Se nd idnotint送货单号4Warehouse ma nagernotVarchar(64)仓库管理员5Warehousing areanotVarchar(32)入库存放区分拣明细表(t manage detail)入库明细表编号字段名是否为空长度描述1idnotint主键2man age datenotVarchar(64)分拣时间3Send idnotint送货单号4Man ag
8、e n amenotVarchar(64)分拣员5areanotVarchar(32)目的地区域送货明细表(t detail)送货明细表I编号字段名是否为空长度描述1idnotint主键2Sen d_datenottime送货时间3Se nd_idnotint送货单号4Charge_methodnotVarchar(64)收费方法5Con sig nor n amenotVarchar(32)发货员名字6Delivery, namenotVarchar(32)送货员名字7Real_costnotVarchar(32)实收费用8Sen d statusnotVarchar(64)送货状态9Sig
9、 n n ameVarchar(64)签收人姓名10Is sig nVarchar(64)是否签收费用结算表(t settleme nt)送货明细表编号字段名是否为空长度描述1idnotint主键2settleme nt datenottime结算时间3Se nd idnotint送货职工号4Send nubnotVarchar(64)送货数量5Lose debitsnotVarchar(32)损耗扣款6Real moneynotVarchar(32)实发总数7Total commissi onnotVarchar(32)提成总数8salarynotVarchar(64)底薪物流系统数据库表及
10、其关系224系统结构设计系统采用分层结构,整体上分为4层:视图层、控制层、业务逻辑层和数据访问层项目名称为logisticsSys。数据访问层与业务逻辑层采用SH框架的Struts2+Hibernate技术实现。视图层和控制层采用JSP技术实现。包名说明控制类包数据访问层接口包数据访问层实现类包数据模型类包,实体包业务逻辑层接口包业务逻辑层实现类配置文件包logisticsSys包的划分WebRoot文件的划分界面设计样式该部分为界面设计的公共部分,给界面提供样式。226通用组件配置文件3. 功能模块的详细设计与实现3.1接单管理模块接单管理总体结构订单信息MVC模式的设计层次功能所在的包/位
11、置程序M接单信息管理相 关实体接口类Sen dFoodsDao.ja va接单信息管理相关实体接口实现类mplSen dFoodsDao,i mpl.java接单信息管理相 关实体类Sen dFoods.java接单信息管理相关实体类的配置V接单信息管理逻 辑类Sen dFoodsService.java接单信息管理的 逻辑实现类Sen dFoodsServic e,impl.java接单信息管理相 关实体类Sen dFoodsActio n .javaC接单输入页面logisticsSysjspSen d_foods_Add .jsp接单信息列表页面logisticsSysjspSen d_
12、foods_list.j sp接单信息编辑页 面logisticsSysjspSen d_foods_upd ate.jsp接单入库页面logisticsSysjspwarehourse.jsp接单信息实体类的实现Sen dFoods.javaprivateint id ;privateStringconsignorNameprivateStringconsignorAddressprivateStringconsignorTel ;privateStringrecessName ;privateStringrecessTel ;privateStringchargeMethod ;priva
13、tefloatcost ;privateStringgoodsWeight ;privateStringgoodsVolume ;privatebooleanisSign ;privatebooleanisCost ;privateStringacceptor ;private<?xml versiStringrecessAddresson ="1.0"encoding ="UTpublic class SendFoods ?><! DOCTYPEhibernate-mapping PUBLIC "-/Hibernate/Hiberna
14、te Mapping DTD 3.0/EN" >>="t_send_foods" ><hibernate-mapping <class name= table <id name="id" <generator </ id >/><property name="consignorName" name="consignor_name" ></ column ></ property <property name=&
15、quot;consignor_address"</ property<propertyname="consignorAddress"></ column >>name="consignorTel"><column><column><columntype ="int" unsaved-value ="null" > class ="identity"name="consignor_tel"
16、></ column ></ property >><column<property name="recessName" name="recess_name" ></ column ></ property >><column<property name="recessAddress" name="recess_address" ></ column ></ property ><pr
17、operty name="recessTel" ><column name="recess_tel" ></ column ></ property ><property name="cost" ><column name="cost" ></ column ></ property >vpropertyn ame="chargeMethod"><colu mnname="charge
18、_method"></ column ></ property >vpropertyn ame="goodsWeight"><colu mnname="goods_weight"></ column ></ property >vpropertyn ame="goodsVolume" ><colu mnname="goods_volume" ></ column >v/ property vpropert
19、y>n ame="isSig n">vcolu mnn ame="is_sig n">v/ column>v/ property>vpropertyn ame="isCost">vcolu mnn ame="is_cost">v/ column>v/ property>vpropertyn ame="acceptor">v/ property ></ class ></ hibernate-mapping>
20、接单信息实体接口类Sen dFoodDao.javapublicin terfaceSen dFoodsDao exte nds IBaseDaovSe ndFoods>publicboolean warehouse(WarehousingDetail warehousingDetail);public String getHQL(Se ndFoods sen dFoods);接单信息实体接口的实现类Sen dFoodDaoImpl.javapublic class SendFoodsDaoImplextends HibernateSessionimplementsSendFoodsDa
21、o publicboolean delete( int id) return super . deleteEntityBean(SendFoods. class ,id);SuppressWarnings ( "unchecked")publicListvSe ndFoodsfin dAll(Stri ng sen dFoods) return super . getQueryList ("from " +sendFoods);publicboolean save(SendFoods sendFoods) return super .insertEnti
22、tyBean(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);分页查询paramhql 查询的
23、条件 paramoffset 开始记录 paramlength 一次查询几条记录 return*/SuppressWarnings ( "unchecked" )intpublic List<SendFoods> findBySQLForPage(String hql, int offset, length) return super . getQueryList (hql, offset, length);* 查询所有记录数* return 总记录数*/public int getAllRowCount(String hql) return super . g
24、etQueryList (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=
25、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+= " wheres.c o
26、n sig no rName='"+se ndFoods.getC on sig no rName()+""'else if (se ndFoods.getC on sig no rTel()!=n ull )hql+= " wheres.c on sig no rTel='"+se ndFoods.getC on sig no rTel()+""'else if (sendFoods.getAcceptor()!=null )hql+= " where s.acceptor=
27、9;" +se ndFoods.getAcceptor()+ else if (sendFoods.getRecessTel()!=null )hql+= " wheres.recessTel='" +se ndFoods.getRecessTel()+""'else if (sendFoods.getlsSign()hql+= " where s.isSig n=1"else hql+= " where s.isSig n=0"return hql;接单信息业务逻辑类Sen dFoods
28、Service.javapublicin terfaceSen dFoodsService publicboolean delete( int id);public List<Se ndFoods> fin dAll(Stri ng table);public List<Se ndFoods> fin dByld( int id);publicboolean save(SendFoods sendFoods);publicboolea n update(Se ndFoods sen dFoods);public PageBea n queryForPage( int p
29、ageSize, int curre ntPage,Se ndFoods sen dFoods);public int getAIIRowCount(String hql);publicboolean warehouse(WarehousingDetail warehousingDetail);接单信息业务逻辑类的实现类Sen dFoodsServicelmpl.javapublic class Sen dFoodsServicelmpI impleme nts Sen dFoodsService privateSen dFoodsDao sen dFoodsDao = new Sen dFo
30、odsDaolmpl();publicboolean delete( int id) return sendFoodsDao .delete(id);public List<Se ndFoods> fin dAll(Stri ng table) return sendFoodsDao .findAll(table);public List<Se ndFoods> fin dByld(int id) returnsendFoodsDao .findById(id);publicboolean save(SendFoods sendFoods) returnsendFood
31、sDao .save(sendFoods);publicboolea n update(Se ndFoods sen dFoods) sendFoodsDao .findById(sendFoods.getld(); return sendFoodsDao .update(sendFoods);public Sen dFoodsDao getSe ndFoodsDao() returnsendFoodsDao ;public void setSendFoodsDao(SendFoodsDao sendFoodsDao) this . sendFoodsDao = sendFoodsDao;/*
32、 分页查询* paramhql 查询的条件* paramoffset开始记录* paramle ngth次查询几条记录* return*/public PageBea n queryForPage(int pageSize, int page,Se ndFoodssen dFoods) String hql =sendFoodsDao .getHQL(sendFoods);/ 查询语句int allRow =sendFoodsDao .getAllRowCount(hql);/ 总记录数int totalPage = PageBean.countTotalPage(pageSize, allR
33、ow);/总页数/当前页开始记录final int length = pageSize;/ 每页记录数(page);一页"的记final int currentPage = PageBean.countCurrentPageListvSe ndFoods> list =sendFoodsDao .findBySQLForPage(hql,offset, length);/"录/把分页信息保存到Bean中PageBea n pageBea n =new PageBea n();pageBea n. setPageSize(pageSize);pageBea n. set
34、Curre ntPage(curre ntPage);pageBea n.setAIIRow(allRow);pageBea n. setTotalPage(totalPage);pageBea n. setList(list);pageBea n.i nit();retur npageBea n;/* 查询所有记录数* return 总记录数*/public int getAllRowCount(String hql) return sendFoodsDao .getAllRowCount(hql);/进库publicboolean warehouse(WarehousingDetail w
35、arehousingDetail) return sendFoodsDao .warehouse(warehousingDetail);接单信息控制类SendFoodsAction .javapublic class Sen dFoodsActi onexte nds Acti on Support private static final long serialVers ion UID = 1L; private Sen dFoodsService sen dFoodsService = new Sen dFoodsServicelmpl();privateintpage = 1;priva
36、teintpageSize = 10;privatePageBean pageBean ;/包含分布信息的beanprivateSendFoods sendFoods ;privateListvSe ndFoods> sen dFoodsList;privateStringselect =""privateStringtext =""privateWarehous in gDetailwarehous in gDetail;private String id ;public WarehousingDetail getWarehousingDetai
37、l() return warehousingDetail ;public void setWarehousingDetail(WarehousingDetail warehousingDetail) this . warehousingDetail = warehousingDetail;public List<SendFoods> getSendFoodsList() return sendFoodsList ;public void setSendFoodsList(List<SendFoods> sendFoodsList) this . sendFoodsLis
38、t = 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 . s
39、endFoods = 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 pageSiz
40、e ;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*/,page 为当前页pageSizepublic String getAllSendFoods()/
41、分页的 pageBean, 参数 pageSize 表示每页显示记录数 try SendFoods s=setSelectValue();pageBean = sendFoodsService .queryForPage( page ,s); catch (Exception e) e.printStackTrace();return SUCCESS;private SendFoods setSelectValue()SendFoods sendFoods= new SendFoods();/ 网上比较方法if ( text .length() =0 ) return null ;if ( s
42、elect .length()>0)if ( select .equals( "consignorName" ) sendFoods.setConsignorName( text );else if ( select .equals( "consignorTel" )sendFoods.setConsignorTel( text );elseifif ( select .equals( "isSign" )( text .equals( " 是 ")true );else if ( text .equals(
43、 sendFoods.setIsSign( else if ( select .equals( sendFoods.setAcceptor( else if ( select .equals( sendFoods.setRecessTel( return sendFoods; return null ;IIII否")falseacceptor" text );IIrecessTel" text ););)/*添加货物单return*/ public String add() try sendFoodsService .save( sendFoods ); catc
44、h (Exception e) e.printStackTrace();return SUCCESS;/*通过 ID 找货物单 returnsendFoods.setIsSign(*/public String findById()try sendFoodsList = sendFoodsService .findById(Integer. parseInt ( id );catch (NumberFormatException e) e.printStackTrace();return SUCCESS;/*货物信息修改return*/ public String update() try s
45、endFoodsService .update( sendFoods ); catch (NumberFormatException e) e.printStackTrace();/*return SUCCESS;货物信息删除 return*/ public String delete() try sendFoodsService .delete(Integer. parseInt ( id ); catch (NumberFormatException e) e.printStackTrace();/*return SUCCESS;入库 return*/public String wareh
46、ouse() try sendFoodsService .warehouse( warehousingDetail ); catch (Exception e) e.printStackTrace(); return SUCCESS;视图层的实现订单信息输入页面 订单列表页面 点单入库页面3.2送货员信息管理模块321送货员信息管理总体结构送货员信息MVC模式的设计层次功能所在的包/位置程序M送货员和送货员 工资信息管理相 关实体接口类DeliveryDao.java Settleme ntDao.ja va送货员和送货员 工资信息管理相 关实体接口实现 类org.lo gisDelivery
47、DaoImpl .javaSettleme ntDaolmpl.java送货员和送货员 工资管理相关实 体类Delivery.javaSettleme nt.java送货员和送货员 工资管理相关实 体类的配置V送货员和送货员 工资管理逻辑类DeliveryService.j avaSettleme ntServic e.java送货员和送货员 工资管理的逻辑 实现类Settleme ntServic eImpl.java Sen dFoodsServic eImpl.java送货员和送货员 工资管理相关实 体类DeliveryActio n.j avaSettleme ntActio n .j
48、avaC送货员输入页面logisticsSysjspdelivery Add.jsp送货员信息列表 页面logisticsSysjspdelivery_list.jsp送货员信息编辑 页面logisticsSysjspdelivery_update.jsp送货员入库页面logisticsSysjspWages list.jsp323送货员信息实体类的实现Delivery.java public class Delivery privateint id ;privateStri ngworkerNub ;privateStri ngdeliveryAddressprivateStri ngdel
49、iveryTel;privateStri ngdeliveryName ;privateStri ngsex ;privateIn tegerage;privateStri ngidCard ;privateStri ngdeliveryArea ;v?xml version ="1.0"en codi ng ="UTF-8"?><! DOCTYPEhibernate-mapping PUBLIC"-/Hibernate/Hibernate Mappi ng DTD 3.0/EN"><hiber nate-ma
50、pp ing>vclassn ame= table ="t_delivery" ><id n ame="id"type ="i nt"un saved-value=" null">vge nerator class ="ide ntity"/></ id >vproperty n ame="workerNub" >vcolumn name="worker nub"></ column >&l
51、t;/ property > vproperty n ame="deliveryAddress" >vcolumn name="delivery_address">v/ column >v/ property >vproperty n ame="deliveryTel" vcolu mn n ame="delivery_tel" v/ property > vproperty n ame="deliveryName">>v/ column >
52、vcolumn name="delivery_name">v/ column >v/ property >vproperty n ame="sex" >vcolumn name="sex" >v/ column >v/ property >vpropertyn ame="age" >vcolumn name="age" >v/ column > v/ property >vpropertyn ame="idCard&qu
53、ot; >vcolu mn n ame="id_card" v/ property >>v/ column ><property name="deliveryArea" ><column name="delivery_area" ></ column > </ property ></ class ></ hibernate-mapping >送货员工资public class Settlement privateintid ;privat
54、eDatesettlementDateprivateintdeliveryId ;privateintsendNub ;privatefloatloseDebits ;privatefloatrealMonney ;privatefloattotalCommissionprivatefloatsalary ;<?xml version ="1.0" encoding ="UTF-8" ?><! DOCTYPEhibernate-mapping PUBLIC"-/Hibernate/Hibernate Mapping DTD 3
55、.0/EN"<hibernate-mapping ><classname= table="t_settlement"<id name="id" type ="int"unsaved-value="null"<generator class ="identity" /></ id > <property name="settlementDate" ><column name="settleme
56、nt_date" ></ column > </ property ><property name="deliveryId" ><column name="delivery_id" ></ column > </ property ><property name="sendNub" ><column name="send_nub" ></ column > </ property >
57、; <property name="loseDebits" > <column name="lose_debits" ></ column > </ property ><property name="realMonney" > <column name="real_monney" ></ column ></ property ><property name="totalCommission" > <column name="total_commission" ></
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 零售业门店经理的招聘与应聘要点
- 护理团队建设中的团队角色认知
- 护理团队专业成长
- 听力检测的职业道德
- 护理应急预案演练情景模拟
- DB35-T 2294-2026 海峡两岸共通 直升机救生作业要求
- 统编版道德与法治四年级下册第2课说话要算数 第一课时教学设计
- 2026届高三语文作文导写范文5篇
- 护理服务标准化建设与实践
- 俄语专业女生就业指南
- 2026吐鲁番高昌区招聘社区工作者36人笔试备考试题及答案解析
- (一模)包头市2026年高三第一次模拟考试历史试卷(含答案)
- 成人肠内营养耐受不良识别与防治专家共识2026
- 1.身心健康很重要(教学课件)统编版道德与法治二年级下册
- 2025-2026学年春季第二学期中小学总务处工作计划
- 血透室发生地震应急预案演练
- 多囊卵巢综合征诊疗指南(2025年版)
- 公司监事会档案管理制度
- 光伏网络安全培训
- TCSES88-2023建设项目竣工环境保护设施验收技术规范污染影响类总则
- 行政岗位任职资格分级标准详解
评论
0/150
提交评论