欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

物流系统课程设计实验报告

  • 资源ID:35468623       资源大小:336KB        全文页数:19页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

物流系统课程设计实验报告

上 海 电 力 学 院课程设计(大型作业)任务书设计名称 软件设计实训 物流系统 院 (系) 计算机科学与技术学院 专 业 软件工程 班 级 学生姓名 学 号 指导老师签名: 专业负责人签名: 学生签名: 1需求分析1.1编写目的物流系统即将启动实施,为了使该系统更好的服务于客户与快递公司之间的沟通和交流,提高工作效率及管理水平,同时系统在功能上积极配合用户的需求,使其摆脱繁重不堪效率低缓的手工操作,规范物流信息的管理工作,我们对该物流系统的功能进行了详细的区分和设定,该软件需求说明书也是与用户沟通的一个桥梁,也是系统分析员和程序设计员了解业务项目和功能设置的一个途径。本系统开发目标是开发一个基本的物流系统,涵盖物流查询、物流管理等基本操作。基本用户可以按照运单号进行查询,无需注册登录等繁琐的信息。管理登录后可以进行密码修改,密码修改是为了保证管理在本网站的安全性,便于物流管理管理。另外,管理者还可以填写快递单(物流信息)。如果数据量很大可以导入物流信息,还可以管理到达该站点的物流信息,实行中转操作。也可以确认快递单的是否签收。系统分为这几个主要模块,整个系统要求操作方便简单,功能完善,具备商业化气息,除了提供软件程序外还需提供比较完整的开发文档。1.2背景随着市场经济的飞速发展,市场格局已经发生了翻天覆地的变化,即由卖方市场转变为买方市场。 面对越来越精明的消费者,质量、价格己不仅仅是市场决胜的唯一因素,也不再是衡量“客户满意度的唯一标准, ”服务“已经成为了现代企业最为重视的课题之一。谁能为用户提供更好的服务,谁就能获得更高的客户满意度, 也就能赢得更多的市场。而强化、完善和不断提高服务质量的同时,降低服务成本成为与产品、质量同等重要的问题。身处于21世纪的今天,人们购买物品的渠道已经不再仅仅是局限于面对面的当场交易,而是开始延伸到了网络上。人们通过网络进行交易活动的现象越来越普遍,这也刺激了一大批的购物网站如雨后春笋般不断出现并发展壮大,其中就有大家耳熟能详的当当网、京东、淘宝、亚马逊等知名购物网站。网上购物已经是一种必然趋势,因此商品的快递运输也成了网上购物的主要产物。网络的飞速发展、网上商城的逐步普及使得快递公司的市场份额逐渐扩大。顺风顺水物流公司以顾客至上,速度第一的公司姿态 屹立在了众多快递公司之中。凭着多年的努力以及顾客的信赖,我公司已经在众多快递公司中脱颖而出,成为了许多顾客寄送快递的首选。 我们也将一鼓作气的运作下去,不忘我们公司的初衷,顾客永远是我们的上帝。软件系统的名称:物流系统任务提出者:软件设计实训相关教师开发者: 用户:快递公司管理员以及买寄快递收快递的客户1.3定义物流查询:查询自己运单号的物流信息公司简介:介绍公司概况公司新闻:介绍公司现阶段的大事信息导入:包含两种导入形式,其中包含填写快递单、公司导入两种方式。中转快递:中转快递是源发地到目的地路径上的节点,负责运送货物的分发方 向。2任务概述2.1目标为了成功开发出适用于快递公司关于物流系统的管理方案,并高效率、规范化的物流系统这一关乎广大商户能否网上运营的一个重要流程。基于此目的的完整的综合的物流系统:物流查询,物流导入管理,物流中转管理,物流签收管理。致力于为广大客户以及快递公司提供一个高速、高效的集成管理解决方案。2.2用户的特点本软件的最终用户是接收快递的顾客们,这类群体一般规模较大,用户涉及较广,其管理也较严格、科学。这类用户一般经常在网速买东西,经验一般比较多,具有一定的计算机操作技能。其中,本系统的最终用户主要有2种角色:需要查询物流的顾客:图1、顾客查询用例图管理人员:图2、管理人员系统用例图2.3UML活动关系图下图是具体的UML活动关系图,包含各用户进入物流系统时可以进行的操作:图3、UML活动关系图物流系统2.4各用户的模块划分管理人员客户商户物流系统物流系统密码修改签收确认快递中转物流信息导入物流查询公司信息导入物流信息导入物流信息导入图4、物流系统功能模块划分图 商户用户模块 物流信息的查询1. 输入运单号查询物流信息 管理人员模块 信息导入1. 公司信息的基本导入(使用Excel表导入):公司信息2. 物流信息的填写:填写快递单 中转快递1. 对所到达该站但并为送到目的地的快递实行中转服务。 查看是否收货1.若货物在本站已经送到了目的地,且用户拿到货物,管理人员做已收获标注。若未能收获,写明原因 修改密码1. 修改公司的登录密码:确保信息安全性3功能设计 (1)物流查询:该功能将需要用户输入公司所给的运单号,格式必须为10位,若错误输入应该有错误提示。(2)管理登陆:该功能将需要管理员填写登陆信息(用户名,用户密码),若填写错误应有错误提示。(3)公司导入:该功能可以让总公司导入分公司的功能。(4)快递填写:该功能可以让管理员填写运单信息,若填写格式有错误应给予提示。(5)快递中转:该功能可以让每一家公司管理其到达自己公司的商品,实行直接派送和中转服务。(6)快递签收:该功能要求管理员确认到达本站的签收情况,若是本站的货物且顾客已经签收了该物品,则注明成功签收字样,若不能成功签收,写明具体原因。(6)密码修改:该功能需要管理员输入原来密码,然后可以自己设定密码(规定密码为最多20位的字符,汉字除外)。(7)公司简介:该功能要求通过简单的介绍,说明公司的起源以及现在的大致规模以及公司所在地和联系方式。4数据库设计公司表:companys列名数据类型长度是否为空是否主键描述CidChar12否是公司编号CnameVarchar50否否公司名称CphoneChar11否否公司电话CpwdChar20否否公司密码CtypeChar10否否公司类型UpChar10可否公司上级商品表:goods列名数据类型长度是否为空是否主键描述GidChar12否是商品编号DesnameVarchar100否否目的地WidChar10否否运单号LnameVarchar10否否联系人姓名LphoneChar11否否联系人电话订单跟踪详情表:details列名数据类型长度是否为空是否主键描述TimeDatetime否否时间CnameVarchar50否否公司名称NnameVarchar50可否下一站名称WidChar10否否运单号CphoneChar11否否公司电话经过站点表:pass列名数据类型长度是否为空是否主键描述CnameVarchar50否否公司名称WidChar10否是运单号签收信息表:列名数据类型长度是否为空是否主键描述WidChar10否否运单号StateChar2否否签收状态DescribeVarchar50 可否签收描述LastVarchar20否否最终站5程序运行部分截图及相关代码1)主界面及相关代码:图5、系统运行主界面调用CSS:<link href="css/style.css" rel="stylesheet" type="text/css" />Javascript:<script> function checkform() var wid=document.form1.wid; var size=document.form1.wid.value.length; if(wid.value="") alert("请输入运单编号!"); return false; if(size!=16) alert("运单编号不是16位,请重新输入!"); return false; return true; </script>超链接:<a class="menu-link" href="index.jsp">公司首页</a><a class="menu-link" href="login.jsp">系统登录</a><a class="menu-link" href="introduction.jsp">公司简介</a>Form表单:<form action="query.jsp" name=form1 method="post" onsubmit="return checkform();"> <font face="楷体" size=5 color=orange>物流查询:</font><br /> &nbsp;<br /> <h1>请输入运单编号:</h1> <textarea rows="4" cols="30" name="wid" title="*请输入16位运单号" ></textarea><br /> <input type=submit value="查询物流信息" /> </form> 2)物流查询操作:图6、查询物流查询接收界面: <% String wid=request.getParameter("wid"); boolean b=false; b=DetailDao.validateExist(wid); %><% if(b) %> <h1>您的物流信息如下:</h1> <% List<Detail> lt= DetailDao.QueryByWid(wid);for(int i=0;i<lt.size();i+)String time=lt.get(i).getTime().substring(0,19); String cname=lt.get(i).getCname();String nname=lt.get(i).getNname();String cphone=lt.get(i).getCphone(); out.println(" "+time+" "+" 您的物品由【"+cname+"】(联系电话:"+cphone+")发出,<br />&nbsp;&nbsp;下一站【"+nname+"】<br />"); boolean c=CompleteDao.Exist(wid); if(c) List<Complete> lit=CompleteDao.QueryAll(wid); Complete com=new Complete(); com=(Complete)lit.get(0); String state=com.getState(); String last=lit.get(0).getLast().toString(); String des=lit.get(0).getDescribe().toString(); if("1".equals(state) out.println(" 您的物品已在【"+last+"】站成功签收"); if("0".equals(state) out.println(" 您的物品逾期不收,末站【"+last+"】站,未签收原因:"+des); else out.println("<center><font face=楷体 size=5 color=red>您输入的运单编号不存在!</font></center>"); %>运单号判断方法:public static boolean validateExist(String wid) ArrayList <Detail> c=new ArrayList<Detail>(); c=(ArrayList<Detail>) DetailDao.QueryByWid(wid); boolean b=false; if(c.size()=0) b=false; if(c.size()>0)b=true; return b; 签收判断:public static boolean Exist(String wid) ArrayList<Complete> al=new ArrayList<Complete> (); al=(ArrayList<Complete>) CompleteDao.QueryAll(wid); boolean b=false; if(al.size()=0) b= false; else b= true; return b; 4)管理登录界面:登录失败:成功登录:图7、管理登录5)填写快递单:图8、快递单填写Form表单:<h1>&nbsp;</h1> <h1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;填写快递单:</h1> <center> <form action="insertServ" method="post" name=form1 onsubmit="return check();"> <table> <tr><td>运单编号:</td><td><input type=hidden name="wid" value=<%=y1 %> /><%=y1 %></td></tr> <tr><td>商品编号:</td><td><input type=text name="gid" /></td></tr> <tr><td>联系人姓名:</td><td><input type=text name="lname"/></td></tr> <tr><td>联系人电话:</td><td><input type=text name="lphone"/></td></tr> <tr><td>目的地:</td><td><input type=text name="des"/></td></tr> <tr><td>下一站:</td><td><select name="nname"> <% for(int i=0;i<alt.size();i+) String cn=alt.get(i).getCname(); %> <option value=<%=cn %>><%=cn %></option> <% %> </select></td></tr> <tr><td><input type=hidden name="cid" value=<%=cid %> /></td></tr> <tr><td><input type=submit value="分配" /> </td><td> <input type=reset value="重置"/></td></tr> </table> </form> </center>运单号随机生成:<%Object c=application.getAttribute("count");if(c!=null)int x=Integer.parseInt(c.toString();x+;application.setAttribute("count",x+"");elseapplication.setAttribute("count","1"); String cs=application.getAttribute("count").toString(); Calendar cal = Calendar.getInstance(); Integer day = cal.get(Calendar.DATE); Integer month = cal.get(Calendar.MONTH) + 1; Integer year = cal.get(Calendar.YEAR); String d=year.toString()+month.toString()+day.toString();List<Good> list=GoodsDao.QueryAll();Integer n;n=list.size();System.out.println(n);System.out.println(n);String s=n.toString();String h="SF"String y=h+d+s+cs;String y1=GoodsDao.CreateWid(y);%>6)快递单转运:上海分拨中心签收,转往浦东分拨中心:浦东分拨中心签收,转往浦东六灶:浦东六灶接收,转往南汇大学城:到达目的地:成功签收:签收失败:注明签收失败理由中转操作: <h1>&nbsp;</h1> <center> <table border="1" width=90% > <tr><th>运单编号</th><th>目的地</th><th>联系人姓名</th><th>联系人电话</th><th>操作</th><th>是否到站签收</th></tr> <% for(int i=0;i<lt.size();i+) String wid=lt.get(i).getWid(); boolean b=false; b=CompleteDao.NotExist(wid); if(b) List <Good> l=GoodsDao.QueryByWid(wid); String des=l.get(0).getDesname(); String lname=l.get(0).getLname(); String lphone=l.get(0).getLphone(); %> <tr> <td><%=wid %></td> <td><%=des %></td> <td><%=lname %></td> <td><%=lphone %></td> <td> <% if(wid.equals(wids) out.println("<td><a href=Passing.jsp?wid=" +wid+">配送</a>"); else %> <form action="passing.jsp" method=post> <input type=hidden name=wid value=<%=wid %> /> <input type=hidden name=cname value=<%=cname %> /> <input type=hidden name=cid value=<%=cid %> /> <select name=nname> <% for(int j=0;j<alt.size();j+) String cn=alt.get(j).getCname(); %> <option value=<%=cn %>><%=cn %></option> <% %> </select> <input type=submit value="配送" /> </form> <% %></td> <td><a href="complete.jsp?wid=<%=wid %>&last=<%=cname %>">签收</a> <a href="receivefail.jsp?wid=<%=wid %>&last=<%=cname %>">签收失败?</a></td> </tr> <% %> <% %> </table> </center>运送中操作:<% String cid=request.getParameter("cid");System.out.println(cid+"cid"); String wid=request.getParameter("wid"); System.out.println(wid+"wid"); String nname=request.getParameter("nname"); nname=new String(nname.getBytes("iso-8859-1"),"utf-8"); String cname=request.getParameter("cname"); cname=new String(cname.getBytes("iso-8859-1"),"utf-8"); String cphone=CompanyDao.QueryByCid(cid).get(0).getCphone(); String time=CompanyDao.getDate();boolean b=false; if(true) DetailDao.insertDetail(time, cname, nname, wid, cphone); PassDao.DeletePass(cname,wid); PassDao.insertPass(nname, wid); b=true; if(b) response.sendRedirect("pass.jsp"); %>public static void insertDetail(String time,String cname,String nname,String wid,String cphone) String sql="insert into details values("+time+","+cname+","+nname+","+wid+","+cphone+")" DBHelper.executeUpdate(sql); 签收操作:<%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><%String wid=request.getParameter("wid");String last=request.getParameter("last");last =new String(last.getBytes("iso-8859-1"),"utf-8");String state="1"CompleteDao.insertComp(wid,state,last);response.sendRedirect("arrive.jsp"); %>public static void insertComp(String wid,String state,String last) String sql="insert into complete values ("+wid+","+state+","+null+","+last+")" DBHelper.executeUpdate(sql); 签收失败操作:<form action="insertComplete" method=post> 物资编号:<input type=hidden name="wid" value=<%=wid %> /> <%=wid %> <textarea rows="4" cols="30" name="des"></textarea> <input type=hidden name="last" value=<%=cname %> /> <input type=submit value="提交" /> <input type=reset value="重置" /> </form>String wid=request.getParameter("wid"); System.out.println(wid); String last=request.getParameter("last"); last=new String(last.getBytes("iso-8859-1"),"utf-8"); System.out.println(last); String des=request.getParameter("des"); des=new String(des.getBytes("iso-8859-1"),"utf-8"); System.out.println(des); String state="0" CompleteDao.insert(wid, state, des, last); response.sendRedirect("pass.jsp");public static void insert(String wid,String state,String des,String last) String sql="insert into complete values ("+wid+","+state+","+des+","+last+")" DBHelper.executeUpdate(sql); 6个人小结 这次我做的是快递公司物流转运这方面的系统,主要实现了一个快件从到达快递公司开始时如何一步一步到达客户手中的以及用户如需要查看物流信息,是如何显示的。这次大作业是给予java EE的jsp&javaBean&Servlet三层模式编写的。本次项目启动是遵循软件工程方式一步一步做的,比以往的纯编程效率提高了很多,错误减少了许多。当然,编写的同时也遇到新的问题也是很难避免的。空指正异常一直是困扰我的主要因素,每次编程的时候都会遇到这种问题。空指针说明参数在传输过程中遇到了不正确的变量,解决办法首先应该看看变量声明一致不。还有就是如何实现物流的转站操作,开始想的是有几个公司就建几个表,但是数据冗余就太多了,后来想到的就是利用循环来做,虽然不太规范但是解决了数据冗余的问题。其次,就是运单号的自动生成,也出现了检索数据库的问题,导致数据接收缓慢,后来比较了几个方法最后改进终于解决了这个问题。还有就是数据导入的问题,不能把一个Excel表直接导入数据库中,而是先把表格中的内容转换为数据,然后导入数据库。总之,编程过程中遇到了大大小小很多问题,最后都一一解决或改进了。通过这次项目,无论是设计还是编程,调试方面,我都增进了许多。

注意事项

本文(物流系统课程设计实验报告)为本站会员(仙***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!