物流业务管理系统的设计与实现+毕业论文_第1页
物流业务管理系统的设计与实现+毕业论文_第2页
物流业务管理系统的设计与实现+毕业论文_第3页
物流业务管理系统的设计与实现+毕业论文_第4页
物流业务管理系统的设计与实现+毕业论文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南通大学毕业设计(论文) 南通大学南通大学毕业设计(论文)姓姓名:xxxx指导教师:xxxx专业:网络工程题目:物流业务管理系统的设计与实现 南通大学计算机学院第五章物流业务管理系统的实现与测试5.1开发环境服务器端:软件要求:操作系统为WindowsXP或者Windows7,需安装JDK1.6.0_25与MySQL以及ApacheTomcat,安装有Myeclipse硬件要求:内存最小为2G,硬盘最小为250G。客户端:操作系统最低为WindowsXP,至少一款浏览器,能够连接到Internet。5.2功能详细设计5.2.1流程图 5.2.2Java类的编写JavaBean是一种组件,但它质上就是一个Java类,不过它需要要遵循一些规范。通过使用JavaBeans组件,代码可以被重复使用,还可以通过可视的应用程序开发工具将Javabean编写到java程序中。此外JavaBeans简单的说就是一种写Java类的规则,在对数据库的连接和操作中,可由Javabean来执行对数据库的操作,JSP只用来接收和显示数据,这样就可以实现显示和逻辑的一定程度上的分离。此外在现实生活中它在一些小型项目的开发中应用的比较多,本系统中:BaseDao.java用于数据库的连接用于数据库连接,在页面中通过调用此javaBeans完成页面与数据库的连接,从而使得数据可以动态处理。UserDaoImol.java用于对用户名的操作,用户可以通过输入正确用户名进入相应的系统。GoodsDaoImpl.java用于对商品的处理,用户可以通过它查询修改删除商品的信息。OutStoreRequestDaoImpl.java,可以通过它查询和审核出库请求单。StoreDaoImpl.java,仓管员可以通过它查询物品库存,以此来审核出库任务单。5.2.3系统主页系统采用绿色作为主色调,页面布局采用CSS+DIV的方式,整个页面一共分为三块区域,页面顶部为系统BANNER,在页面的左侧为导航操作菜单,在页面的右侧是功能操作区代码实现:<title>物流配送管理系统查询配送通知单</title><styletype="text/css"> body{font-size:12px;margin:0px;padding:0px;background:#ccc;} a{text-decoration:none;color:#000;} .wl_container{width:1002px;margin:0pxauto;background:#fff;} .wl_head{height:122px;background:url(../images/wl_head_01.jpg)no-repeat;} .wl_separater{background:url(../images/wl_vline_04.jpg)repeat-x;margin-top:1px;color:#fff;text-align:center;line-height:2.3em;font-weight:bold;} .wl_main{height:645px;background:#01a333;float:left;} .wl_left{float:left;width:209px;margin-left:1px;margin-right:2px;display:inline;} .wl_item{display:block;width:169px;height:24px!important;height:23px;background:url(../images/wl_item_04.jpg)no-repeat;padding:9px0px0px40px!important;padding:10px0px0px40px;margin-bottom:2px;font-size:14px;font-weight:bold;} .wl_right{width:790px;height:645px;float:left;background:#fff;} .wl_foot{clear:both;background:#01a333;text-align:center;color:#fff;font-weight:bold;line-height:2em;} .wl_table{width:700px;border-collapse:collapse;border:1pxsolid#ccc;margin:30pxauto0px;} .wl_table.first{background-color:#eceff1;} .wl_tableth,.wl_tabletd{border:1pxsolid#、5.2.4用户登录为了保证系统的安全性,只有授权的用户才能进入系统的相应模块进行操作,输入正确的用户名和密码,登录成功后,可以根据用户类型选择进入相应的模块。否则系统则会提示用户“用户名或密码错误!”或“对不起,您没有权限进入本系统!”。判断此次登录是否成功,代码如下:protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ StringuserName=request.getParameter("userName"); StringuserPass=request.getParameter("userPass"); HttpSessionsession=request.getSession(); Useruser=userDao.getUserByName(userName); if(user!=null&&user.getUserPass().equals(userPass)){ session.setAttribute("loginUser",user); request.getRequestDispatcher("/index.jsp").forward(request,response); }else{ request.setAttribute("message","用户名或密码错误!"); request.getRequestDispatcher("/login.jsp").forward(request,response); }}5.2.5接单模块接单模块:该模块的主要功能是增加新的配送通知单,以及对系统中的配送通知单进行修改和查询以及审核。配送通知单审核通过之后能自动生成对应的出库请求单和运输请求单,并且供调度员在调度模块中使用。接单模块中客户可以增加配送单,输入配送单信息,选择送货地点(包含各省市信息)。这些省市信息是在后台代码中体现的,代码如下://北京市辖区名称varcity1=["东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","房山区","通州区","顺义区","门头沟区","昌平区","大兴区","怀柔区","平谷区","密云县","延庆县"];//江苏省主要城市名称varcity10=["南京市","无锡市","徐州市","常州市","苏州市","南通市","连云港市","淮安市","盐城市","扬州市","镇江市","泰州市","宿迁市"];varprovinceName=["北京市","上海市","天津市","重庆市","河北省","山西省","辽宁省","吉林省","河南省","江苏省","浙江省","安徽省","福建省","江西省","山东省","湖北省","湖南省","广东省","海南省","四川省","贵州省","云南省","陕西省","甘肃省","青海省","黑龙江省","内蒙古自治区","广西壮族自治区","西藏自治区","宁夏回族自治区","新疆维吾尔自治区","台湾省","香港特别行政区","澳门特别行政区","其它"];5.2.6调度模块调度员在此模块中能查询相应的请求单、运输工具和库存,并且可以根据库存和运力情况对出入库请求单进行相应的审核。一旦请求单被审核通过,调度员就能执行调度进而生成相应的任务单。5.2.7库存模块仓管员可以进入库存模块查询出、入库单,并且根据库存情况对出、入库单进行审核。仓管员也同时能对退换货进行检验。如果发现货物没有质量或者是包装上的问题,则将货物重新入库。如果发现确实货物有问题则把货物放入退换货库。5.2.8运输点模块运输调度员可以进入运输点模块查询相应的运输任务,派车任务以及运力情况,根据运力的类型以及数量情况对派车任务单进行审核,审核完成之后执行相应指派任务,形成运输单和派车单5.3关键技术实现5.3.1用户权限不同用户只能进入相应的系统,其中用到标志位实现权限控制。代码实现如下:if(session.getAttribute("loginUser")==null){ request.setAttribute("message","请登录"); request.getRequestDispatcher("/login.jsp").forward(request,response); }else{ intuserType=((User)session.getAttribute("loginUser")).getUserType(); intsysItem=Integer.parseInt(request.getParameter("msg")); switch(sysItem){ case1: //进入接单系统 if(userType==1||userType==2){ request.getRequestDispatcher("/jd/querydispatch").forward(request,response); }else{ request.setAttribute("privilegeMsg","对不起,您没有权限进入本系统!"); request.getRequestDispatcher("/index.jsp").forward(request,response); } break; case2: //进入调度系统 if(userType==3){ request.getRequestDispatcher("/dd/queryoutstorerequest").forward(request,response); }else{ request.setAttribute("privilegeMsg","对不起,您没有权限进入本系统!"); request.getRequestDispatcher("/index.jsp").forward(request,response); } break; case3: //进入库存系统 if(userType==4||userType==5||userType==6){ request.getRequestDispatcher("/kc/kc_execchuku.jsp").forward(request,response); }else{ request.setAttribute("privilegeMsg","对不起,您没有权限进入本系统!"); request.getRequestDispatcher("/index.jsp").forward(request,response); } break; case4: if(userType==7){ request.getRequestDispatcher("/tra/queryyl2").forward(request,response); }else{ request.setAttribute("privilegeMsg","对不起,您没有权限进入本系统!"); request.getRequestDispatcher("/index.jsp").forward(request,response); } }5.3.2审核配送单对配送单进行审核,审核通过的生成出库请求单,技术实现代码:intstate=stateDao.getStateByName("未审核").getStateId(); List<DispatchDto>listDispatchDto=dispatchDao.getDispatchByState(state); request.setAttribute("listDispatchDto",listDispatchDto); request.getRequestDispatcher("/jd/jd_shenhepeisongdan.jsp").forward(request,response); break; case2: //审核操作 for(inti=0;i<dispatchIdList.length;i++){ //获取待审核的配送通知单 Dispatchdispatch=dispatchDao.getDispatchById(Integer.parseInt(dispatchIdList[i])); StoreRefGoodstoreRefGood=storeRefGoodDao.examineDispatch(dispatch.getGoodName(),dispatch.getGoodQuantity()); //审核通过 if(storeRefGood!=null){ //修改配送通知单状态为"已审核未执行" dispatchDao.updateDispatchState(dispatch.getDispatchId(),2); //修改配送通知单状态 //生成出库请求单 OutStoreRequestoutStoreRequest=newOutStoreRequest(); outStoreRequest.setDispatchId(dispatch.getDispatchId()); outStoreRequest.setStoreId(storeRefGood.getStoreId()); outStoreRequest.setState(1); outStoreRequestDao.addOutStoreRequest(outStoreRequest); //生成出库请求单 //生成运输请求单 //获取需要运输的商品信息(数量,载重,体积),决定需要的车辆数目 GoodsDtogoodsDto=goodsDao.getGoodByGoodName(dispatch.getGoodName()).get(0); doublereqWeight=dispatch.getGoodQuantity()*Double.parseDouble(goodsDto.getGoodWeight())/2000;//需求的重量 doublereqMulk=dispatch.getGoodQuantity()*Double.parseDouble(goodsDto.getGoodBulk())/1000000;//需求的空间 //获取运输车辆类型信息 TransferToolDtotransferToolDto=transferToolDao.getTransferToolById(dispatch.getTransferTool()); TransferModeltransferModel=transferModelDao.getTransferModelById(transferToolDto.getTransferModel()); doublefactWeight=Double.parseDouble(transferModel.getTrmoWeight()); doublefactMulk=Double.parseDouble(transferModel.getTrmoMulk()); TransferRequesttransferRequest=newTransferRequest(); transferRequest.setDispatchId(dispatch.getDispatchId()); transferRequest.setTransferToolId(dispatch.getTransferTool()); transferRequest.setState(1); intrequestNum=1; while(reqWeight>factWeight||reqMulk>factMulk){ requestNum++; factWeight+=factWeight; factMulk+=factMulk; } transferRequest.setRequestNum(requestNum); transferRequestDao.addTransferRequest(transferRequest); //生成运输请求单 }else{ //审核未通过,修改配送通知单的状态为"未满足条件" dispatchDao.updateDispatchState(dispatch.getDispatchId(),3); } } break; } response.sendRedirect("querydispatch"); }}5.4系统测试5.4.1增加配送通知单如图:当输入订单号不是11位,则系统提示错误如图后台代码:("goodNameId").onblur=function(){ varxhr=createXHR(); varuri="existsgoods?"+encodeURIComponent("goodsName")+"="+encodeURIComponent($("goodNameId").value)+"&fresh="+newDate().getTime(); xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if(xhr.status==200){ varf=xhr.responseText; if(f=="0"){ //表示不存在此商品 $("btnAddDispatch").disabled=true; $("errorTip").innerHTML="必须要是已存在的商品"; $("goodNameId").focus(); $("goodNameId").select(); }elseif(f=="1"){ //表示存在此商品 $("btnAddDispatch").disabled=false; $("errorTip").innerHTML="*"; } } } }; xhr.open("get",uri,true); xhr.send(); }; functioncheckOrderId(){ varval=$("orderIdId").value; varreg=/^\d{11}$/; if(reg.test(val)){ returntrue; } alert("订单ID必须为11位数字"); $("orderIdId").select(); returnfalse; } functioncheckGoodName(){ varval=$("goodNameId").value; varreg=/^\S+$/; if(reg.test(val)){ returntrue; } $("goodNameId").select(); alert("商品名称不能为空"); returnfalse; } functioncheckQuantity(){ varval=$("goodQuantityId").value; varreg=/^\d+$/; if(reg.test(val)){ returntrue; } alert("货物数量必须为数字"); $("goodQuantityId").select(); returnfalse; } functioncheckSendName(){ varval=$("sendNameId").value; varreg=/^\S+$/; if(reg.test(val)){ returntrue; } $("sendNameId").focus(); alert("发货人改名不能为空"); returnfalse; } functioncheckSendTel(){ varval=$("sendTelId").value; varreg=/^\d{11}$/; if(reg.test(val)){ returntrue; } $("sendTelId").select(); alert("手机号应为11位"); returnfalse; } functioncheckReceName(){ varval=$("receiverNameId").value; varreg=/^\S+$/; if(reg.test(val)){ returntrue; } $("receiverNameId").focus(); alert("收货人姓名不能为空"); returnfalse; } functioncheckReceTel(){ varval=$("receiverTelId").value; varreg=/^\d{11}$/; if(reg.test(val)){ returntrue; } $("receiverTelId").select(); alert("手机号应为11位"); returnfalse; } functioncheckStreet(){ varval=$("receiverStreetId").value; varreg=/^\S+$/; if(reg.test(val)){ returntrue; } $("receiverStreetId").focus(); alert("街道地址不能为空"); returnfalse; } functioncheck(){ if(checkOrderId()&&checkGoodName()&&checkQuantity()&&checkSendName()&&checkSendTel()&&checkReceName()&&checkReceTel()&&checkStreet()){ returntrue; } returnfalse; } </script></body></html>5.4.2审核配送单5.4.3退换货1.新增商品入库(1)业务概述:仓管员执行退换货。(2)输入要素:选择货无问题,输入产品信息。如图所示图4-14新增商品入库(3)输出要素:生成入库单。2.退货商品入库(1)业务概述:仓管员执行退换货。(2)输入要素:选择货有问题,输入商品信息。如图所示:退货(3)输出要素:生成入库单。5.5故障处理本系统可能出错的情况:1.无法进入某一个系统。2.信息输入输出出错。出错处理方法及补救措施:1.根据出错的种类提示身份认证重新输入。2.系统给出错误提示。5.6小结由于各种各样的原因,在开发过程中,我遇到了许多技术上的问题,但是通过与指导老师的沟通,加上请教同学和自己的努力终于把问题一一解决了,例如:在JAVA中编码与解码的问题、AJAX的级联的实现以及手动用JS保存状态、MySql触发器以及存储过程的大量使用。本系统主要分为四个模块:接单模块、调度模块、库存模块、运输点模块。每个模块之间互相都有关系,整个系统的处理流程是先由接单模块得到一定的数据处理后,传给后面的模块,后面的模块再进行相应的处理。第6章总结与展望

由于毕业设计时间较短,本系统还有诸地方不尽如人意,比如用户界面单调不够美观,出错处理不够人性化,新增修改数据没有突出显示等,希望各位老师和同学给予评和指正。新增修改数据没有突出显示。在页面当中没有把CSS样式归类到一个外部样式表文件中,分页代码没有抽取出来放到一个统一的文件当中去。数据库表比较多,没有把状态表归为一个参数表以及系统后台Servlet当中没有把分页后台代码抽象出来。以上这些都是以后需要改进的地方。在系统前台框架上面,我通过使用DIV+CSS的方式来模拟frameset,但是没有考虑到维护的问题,导致在每个页面中都需要重复写很多超链接,右侧应该使用iframe框的,由于当初做的时候比较急,所以就没有考虑充分,这也是以后需要改进的地方。但是系统整体上采用MVC结构,使用Servlet充当控制器、JSP充当视图、系统中的实体充当模型。但是,我把业务放到了Servlet当中去实现了,没有把它单独列出来,也是为了开发时候的简便,但是后面维护就困难了,这些都是以后需要改进和注意的地方。虽然结果并不完美,但是在这个过程中我通过查过资料、上网学到了许多与专业相关的知识,也得到了老师同学的许多帮助,同时也锻炼了自己的逻辑思维能力以及解决问题的能力,我很欣慰。在整个系统开发过程中,我明白了软件开发是相当辛苦的,但成功以后的喜悦也是非常美妙的,而且我发现,当我投入的心血越多,成功以后我所获得的快乐与充实感也更多更强。所以我觉得软件开发是件很有趣的工作,现在在无锡一家对日的软件外包公司实习,从事软件开发工作,我很满足。我相信我一定会以积极、认真、上进的态度面对今后的学习和工作,做自己喜欢的工作,实现自己的价值。参考文献[1]何世明.我国电子商务物流配送模式的运作设计[J].广东商学院学报,2003(02):81-85.[2]张劲松.电子商务环境下物流模式分析及其问题研究[J].情报杂志,2006(11):13-15.[3]何宜军.MVC设计模式在Java

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论