




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论1.1研究背景当今社会,全球互联网的飞速发展必将使人类社会进入一个全新的信息时代。越来越多的快递信息都将通过计算机来传播和共享。人们也越来越依赖网上购物,尤其是在此次疫情期间极大的避免人与人之间的近距离接触,在某种意义上相当于为疫情防控贡献了自己的力量,物流成为了人们购物消费解决人需要的一种不可或缺的方式REF_Ref17145\r\h[1]。而快递管理系统则是为快递公司提供了一种新型的,具有极大发展能力的系统,为相关企业和公司提供快递管理系统,帮助他们简化交易流程,方便各部门管理,提高企业整体工作效率,带来更高的经济和社会收益REF_Ref10625\r\h[2]。快递管理系统有很多繁琐数据要保存,对于管理者来说是一项巨大的挑战,而在此系统中,管理员可以通过自己的账户密码登陆进入系统,及时查看并记录快递变便信息,安全高效的完成工作要求,避免了使用传统纸质信息带来的不便。减轻了受空间和时间上的约束,使业务流程变得更加快捷方便,对相关的部门岗位进行明确的职能定义,从而保证了业务流程的规范性REF_Ref11595\r\h[3]。普通用户可以通过网站内的查询功能来了解快递状态,并且可以进行增加、删除等操作来实现快递企业之间,企业与客户之间的快递信息和快递功能的共享,最终能够充分发挥企业快递信息网的优势,提高企业快递效率。1.2国内外研究现状据调查统计,我国快递行业中仅有40%的企业拥有独立的快递公司公司管理系统,绝大多数公司还在使用传统的快递信息技术,没有掌握新型快递公司管理系统的能力,快递服务系统的落后,必将导致市场的无序、弱化、不健全REF_Ref12342\r\h[4]。快递公司服务系统的不完善,必将限制占领市场的速度。快递信息发布的速度不满足快递市场发展的要求。调查指出,重视快递公司管理系统和快递信息的现代化,既要有符合市场基本要求的快递公司管理系统,也要通过此系统进一步优化自己的快递管理流程。而在欧美信息化程度较高的国家,快递信息网站也相对比较成熟。在美国,通过快递平台进行业务的重组,快递成本可大幅下降。调查数据证明,第三方企业自营快递的成本和效率远远低于一些第三方快递服务企业。使用快递公司管理系统,精简流程提高效率,提高行业竞争力REF_Ref13623\r\h[5]。因而,作为后发快递产业和快递市场大国,建立一个好的快递信息平台就显得尤为重要,应树立新观念,立足于高起点,力争实现我国快递业跨越式发展,运用信息化手段提高运输质量和运输效率,提高对客户的服务能力,从而提高核心竞争力,是快递企业应对市场竞争的必然选择。1.3前景意义创建一个快递公司管理系统,通过计算机完成各项功能如管理员进行信息管理,用户进行信息查看和添加等功能。从功能方面,快递公司管理系统有很高的安全度,保障了资料更高的安全可靠性;从实际使用情况来看,实用性更强,方便使用人员对系统更好的了解和管理,实现了对于快递管理便捷性的需求,有着良好的扩展能力,创造出一个高效便捷性、能力强、蓬勃发展的管理体系REF_Ref14560\r\h[6]。互联网像是一列快车,加速着我们改革创新的步伐REF_Ref30886\r\h[7]。快递管理将打破传统,每个企业都可以根据自己的需求来选择合适的更便捷的管理系统,提升市场开拓能力和资源整合能力,还能参考借鉴国内外优秀的快递公司的管理模式,扬长避短,逐步改善快递公司管理体系,助推企业发展。1.4论文组织结构本文总共划分为七章,内容安排如下:第一章主要是绪论的内容,对快递公司管理系统进行研究背景、研究目的和意义,及国内外研究现状的分析;第2章对系统使用的技术进行介绍。主要是对Java、JSP、MySQL数据库以及SSM的介绍;第3章是对系统进行可行性分析。主要是从技术、经济、操作可行性进行逐一分析,分析系统的优点及尽最大努力发现系统可能会出现的问题;第4章主要是系统的概要设计。分析项目设计原则、项目流程的简介、展示E-R图和数据库表对系统的初期进行一个搭建;第5章为系统详细设计。凸显系统设计目标、对系统功能模块进行阐述、具体的实现代码进行详细的说明;第6章为测试模块。对部分功能点进行测试,测试每个模块是是否与预期效果相同,功能是否实现;论文的第7章就是对本系统进行总结与未来发展的预测。
第2章系统相关技术基础2.1Java介绍Java语法类似于C语言和C++,摒弃了很多基础学者难掌握的东西,简单易上手,深受广大程序员喜欢。而且Java语言通过自己的强类型语言特性来约束程序员遵守更多的编程规定,编写的程序合理使用内存,并且可以自动回收不再被使用的内存REF_Ref15957\r\h[8]。封装性、继承性和多态性这三种特性都能被Java语言很好的实现REF_Ref16209\r\h[9]。Java语言的运行环境是通过多线程实现的,既可直接完成多线程程序的编写,又可以利用系统空闲时间执行其他操作。Java语言是完全基于对象编写的。通过Java虚拟机就可轻松完成编译运行,并且对Java语言执行一次编译,可以被多次运行。同时Java语言还不会受平台限制,极大的实现了Java语言的可移植特性REF_Ref16682\r\h[10]。2.2JSP介绍JSP的全称为JavaServerPages,多用于开发动态网页,Java语言将代码插入HTML网页中是通过JSP标签完成的,JSP标签通过<%开头,%>结尾REF_Ref17120\r\h[11]。开发者通常使用JSP开发用户界面。JSP的编写需结合XHTML代码、HTML代码、XML元素以及嵌入JSP操作和命令。JSP通过网页中的表单获得输入的数据,并访问数据库,记录用户选择的信息,然后动态的创建网页,JSP可以在不同的网页中访问、传递、控制、共享信息等功能REF_Ref17535\r\h[12],JSP的性能十分优越,可以直接将元素动态的嵌入HTML网页中。JSP拥有EJB,JDBC,JAXP,JNDI等强大的企业级APIREF_Ref18145\r\h[13]。JSP通常以最简单的方式实现最复杂的功能,对于JavaEE起着不可缺少的作用,对于企业来说也是一个完整的可应用平台。2.3MySQL数据库介绍数据库可以高效的管理各类信息资源,是一个完整信息系统的核心,数据库日渐在信息应用领域占据更重要的位置,数据库是对应用数据进行信息资源存储和管理最有效的方式。MySQL由瑞典MySQLAB公司开发的一个关系型数据库管理系统,目前属于Oracle公司REF_Ref3425\n\h[14]。MySQL并不是将所有数据放在一个整体中,而是将数据库保存在不同的表中,通过这样的管理方式,极大的提升了管理速度,也提高了数据应用的灵活性。MySQL同时具有很强的跨平台性,开源免费,可运用于多个系统中,并支持多种语言。数据库集合了一些持久的、相互关联的数据集而成,相互关联的数据集合而成,并且以一定的组织形式存放在计算机的存储介质中REF_Ref6821\n\h[15],数据库可以作为事务处理、信息管理等应用的基础。在物理概念上来讲,数据库将存储于硬盘的各种文件的有机的结合起来,有能为各种用户共享、具有最小冗余度、数据间联系密切较高的独立性特点。2.4SSM介绍SSM框架是对Spring
MVC
,Spring和MyBatis框架的整合REF_Ref5437\r\h[16]。Spring
:Spring就像是项目的粘合剂,在配置文件中实例化对象时通过使用特定的参数去调用实体类的构造方法来实例化对象。控制反转是Spring的核心思想,即让Spring框架帮你来完成实例化功能。SpringMVC:SpringMVC在项目中用来拦截用户请求,承担中介或是前台的职责的是它的核心Servlet即DispatcherServlet,用户匹配Controller时请求通过HandlerMapping,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中StrutsREF_Ref7465\r\h[17]。MyBatis:MyBatis是对JDBC的封装,它将数据库底层操作透明化。MyBatis的操作核心都是通过SQLSessionFactory实例展开的。MyBatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中每个类对数据库所需进行的SQL语句映射进行配置。在每次与数据库交互时,通过SQLSessionFactory拿到一个SQLSession,再执行SQL命令REF_Ref7706\r\h[18]。
第3章系统分析3.1可行性分析对系统进行可行性分析根本的任务就是对以后的行动方针提出建议,从开始着手前就预估这个系统是否有开发的必要或者是对某些问题是否有解决办法,如果形目在开始进行前没有进行可行性研究,当开发到一半时发现问题根本得不到解决,那么之前在这个项目上所投入的时间和精力都只能是浪费,如果问题能够或者说是值得去解决,那么应该提前准备好一个较好地解决方案,制定一个初步计划,保证系统的顺利完成REF_Ref18827\r\h[19]。3.1.3操作可行性快递公司管理系统页面简洁,功能分类清晰,目录排放规范,能够站在用户的角度考虑,数据一目了然,极大程度的方便了用户的操作,为用户节省时间。而且每个用户都有属于自己的身份信息,根据自己的身份获得权限,不但心因为操作不当造成不可挽回的失误。方便对下属的管理以及对业务的了解,对公司及快递员业务有很清楚的展示。3.1.1技术可行性本系统使用的Java语言,在当今科技技术日新月异的时代仍然占据主导地位。大多数公司或者程序项目的开发都会选用Java语言。Java语言在现在市场具有极大的需求量,开发成本低,应用面广,深受各大公司开发者的青睐。而且Java语言有能确保工作效率的优秀开发工具,也是本系统所使用的开发工具Eclipse,它是免费的开源的REF_Ref18896\r\h[20]。并且该语言在大学期间学习过,对课程有着较好的掌握,对系统的开发有很大的帮助。使用在完成快递公司管理系统开发时所使用的技术是可行的。3.1.2经济可行性经济可行性分为两个方面。一是采用了比较成熟的技术,使用Java语言编写,开发工具是Eclipse和MySQL,他们都是免费的开发工具,所以在开发过程中不会产生费用支出。第二,都说科技改变生活,快递管理系统相较于人力来说更严谨,一个管理员处理多个快递信息也更加得心应手,节约时间还更节省人力,快递管理系统带来的经济效益远比人力带来的更多。因此在经济上是可行的REF_Ref31232\r\h[21]。3.2需求分析本设计主要实现以下功能:1.管理员功能:添加分公司和分公司投递员,可选择日期查看各分公司揽件和投递数量,根据单号查询快递状态,查看管理员基本资料、修改密码、退出。如图3-1所示。图3-1管理员用例图2.分公司管理功能:管理所有分站和投递员,处理投递员的揽件快递、中转快递,查看本分公司揽件、投递和各快递员揽件数量,根据单号查看快递状态,查看管理员资料、修改密码、退出。如图3-2所示。图3-2分公司管理员用例图3.分站投递员管理功能:进行揽件,新增发件员、发件人电话、发件人地址、收件人、收件人电话、收件人地址、收件分公司、快递重量进行揽件,上传签收图片完成投递,查看投递员资料、修改密码、退出。如图3-3所示。图3-3投递员用例图4.普通用户管理功能:通过登陆页面快速查询功能输入单号可查看快件详情。如图3-4所示。图3-4普通用户用例图
第4章概要设计4.1项目设计原则系统必须保证系统内数据的完整性和准确性,而却要有足够的保密性和安全性,防止泄露客户个人隐私;系统对于用户要易上手,各项功能简单明了;还要确保系统的实时性,能与时俱进,不断完善REF_Ref19180\r\h[22]。因为这是一个快递公司管理系统,设计的初衷就是为了很好地节约时间和各种成本,因此需要考虑系统开发成本和效益。关于快递公司管理系统的基本要求,有如下几点:1.页面简洁美观:页面设计美观可以吸引更多用户,简洁可以是用户更易上手,操作便捷简单。2.具备功能:分公司管理、投递员管理、分站管理、发货管理、快递查询等功能模块。3.安全与保密要求:用户必须通过各自的账号密码登入系统,用户权限也根据用户类型进行开放。4.动态操作:主要体现在数据库的操作方面,数据的查询更新修改都可以动态的进行管理与操作。4.2系统流程分析系统流程分析是为了更好的实现业务管理目的,明确功能管理目的。完整的系统流程分析通常分为以下几步:分析系统现有的流程,确认流程目的和特点,优化系统现有的流程,整理优化后的系统流程。4.2.1登录流程系统的用户必须使用自己的账号密码进入系统,确保数据的安全性和相关权限,用户必须输入正确的账号密码才能进入操作系统页面,否则将提示登陆失败,返回登录界面重新输入。如图4-1所示。图4-1登录流程图4.2.2添加信息流程不同身份用户对于信息管理有不同的权限,可以对系统信息进行添加和删除:如果信息合法将被写入,否则退回上一步;如果确认删除,信息将无法恢复,否则将退回上一步。如图4-2所示。图4-2添加删除流程图4.3系统整体功能结构设计快递公司管理系统的实现主要实现的功能有分公司管理、分站管理、投递员管理、发货管理、统计、快递查询等模块,这些功能可以充分满足快递公司管理系统的需求。系统功能结构图如图4-3所示。图4-3系统功能结构图4.4数据库结构设计根据快递公司管理系统的功能模块划分几个实体信息,并制作E-R图进行说明,各个实体的具体描述图如下:管理员实体如图4-4所示。图4-4管理员实体图分公司实体如图4-5所示。图4-5分公司实体图快递员发货信息实体如图4-6所示。图4-6发货信息实体图快递员揽件信息实体如图4-7所示。图4-7揽件信息实体图4.5数据表将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。 分公司表分公司表主要用来存储分公司编号、名称等信息,该表结构如表4-1所示。4-1分公司表字段名类型长度Null字段描述idint11否编号namevarchar255是分公司名称isdelint11是删除标记快递信息表 快递信息表主要存放的是快递信息,例如包裹id、揽收时间、快递员信息、运转分公司、签收时间等信息,该表结构如表4-2所示。4-2快递信息表:列名类型长度Null列的描述idint11否编号pidint11是包裹idopdatevarchar255是记录日期optimevarchar255是记录时间unamevarchar255是快递员cnamevarchar255是分公司snamevarchar255是分站contentvarchar255是描述收件快递表收件快递表主要存放的是快递单号、处理时间、处理公司、收件人信息、发件人信息、快递重量、快递价格、签收图片等信息,该表结构如表4-3所示。4-3收件快递信息表:列名类型长度Null列的描述idint11否编号novarchar255是快递单号cidvarchar255是下一个处理公司sidvarchar255是下一个处理站点scidvarchar255是收件人分公司funamevarchar255是发件人姓名fphonevarchar255是发件人电话faddressvarchar255是发件人地址foptimevarchar255是处理时间sunamevarchar255是收件人姓名sphonevarchar255是收件人电话sadressvarchar255是收件人地址soptimevarchar255是签收时间weightdouble0是重量pricedouble0是价格statusvarchar255是状态picvarchar255是签收图片分站表分站表主要存放的是分公司名称、分站名称等信息。该表结构如表4-4所示。4-4分站表:列名类型长度Null列的描述idint11否编号cidint11是分公司namevarchar255是分站名称isdelint11是删除标记用户表用户表主要存放的是分公司id、分站id、用户名、密码、姓名、电话等信息,该表结构如表4-5所示。4-5用户表:列名类型长度Null列的描述idint11否编号cidint11是分公司idsidint11是分站idusernamevarchar255是用户名passwordvarchar255是密码namevarchar255是姓名phonevarchar255是电话roleint11是身份isdelint11是删除标记
第5章系统详细设计与实现5.1设计目标系统就是为了方便用户所使用,页面上看美观简洁,从后台功能上看便于用户上手操作,增加用户的工作效率。对数据库进行管理,实现对快递信息和用户信息的分类查看,便于信息的更新和删除。让系统有更强的可移植性和发展潜力。5.2登录功能用户在登录窗口输入自己的帐号信息并且选择自己的身份信息,信息正确后方可登入相应的操作界面,如图5-1所示。图5-1用户登录界面核心代码:publicStringlogin(Stringusername,Stringpassword,Integerrole, HttpServletRequestrequest){ request.getSession().setAttribute("role",role); QueryWrapper<Users>wrapper=newQueryWrapper<Users>(); wrapper.eq("username",username); wrapper.eq("password",password); wrapper.eq("role",role); wrapper.eq("isdel",0); List<Users>list=usersService.list(wrapper); if(list!=null&&list.size()>0){ Usersusers=list.get(0); request.getSession().setAttribute("users",users); return"ok"; } return"error";}5.3管理员功能模块管理员登录成功进入系统操作界面可以在线进行个人信息管理、分公司管理、分公司投递员管理、统计等模块的管理维护操作。管理员可以修改个人资料、登录密码,通过输入用户名、姓名、电话,信息填写完成选择提交进行修改个人资料,如图5-2所示。图5-2管理员操作界面核心代码:publicServerResponse<Users>add(Usersusers){ QueryWrapper<Users>wapper=newQueryWrapper<Users>(); wapper=newQueryWrapper<Users>(); wapper.eq("username",users.getUsername()); Usersu=usersService.getOne(wapper); if(u!=null){ returnnewServerResponse<Users>("1","该用户名已经存在!"); }else{ users.setIsdel(0); usersService.save(users); returnnewServerResponse<Users>("0","添加成功!"); } } @RequestMapping("update") @ResponseBody publicServerResponse<Users>update(Usersusers){ booleanflag=usersService.updateById(users); if(flag){ returnnewServerResponse<Users>("0","修改成功!"); }else{ returnnewServerResponse<Users>("1","修改失败!"); } } @RequestMapping("getById") @ResponseBody publicUsersgetById(Integerid){ Usersusers=usersService.getById(id); returnusers; } @RequestMapping("delete") @ResponseBody publicServerResponse<Users>delete(Usersusers){ users.setIsdel(1); booleanflag=usersService.updateById(users); if(flag){ returnnewServerResponse<Users>("0","删除成功!"); }else{ returnnewServerResponse<Users>("1","删除失败!"); } }}管理员通过分公司列表可以在线查看系统已有的分公司信息,并且可以对已有的分公司信息进行在线编辑或者删除等操作,同时,管理员根据所需可以在线添加新的分公司,通过输入名称进行添加,如图5-3所示。图5-3分公司管理界面核心代码: @RequestMapping("add") @ResponseBody publicServerResponse<Company>add(Companycompany){ company.setIsdel(0); companyService.save(company); returnnewServerResponse<Company>("0","操作成功!"); } @RequestMapping("update") @ResponseBody publicServerResponse<Company>update(Companycompany){ companyService.updateById(company); returnnewServerResponse<Company>("0","操作成功!"); } @RequestMapping("delete") @ResponseBody publicServerResponse<Company>delete(Companycompany){ company.setIsdel(1); booleanflag=companyService.updateById(company); if(flag){ returnnewServerResponse<Company>("0","删除成功!"); }else{ returnnewServerResponse<Company>("1","删除失败!"); }}管理员通过投递员列表进行在线查看系统已有的分公司管理员的信息内容,根据所需可以在线添加新的分公司管理员,并对已有的分公司管理员信息进行在线编辑维护或者删除等操作,如图5-4所示。图5-4投递员管理界面图核心代码:@RequestMapping("update") @ResponseBody publicServerResponse<Users>update(Usersusers){ booleanflag=usersService.updateById(users); if(flag){ returnnewServerResponse<Users>("0","修改成功!"); }else{ returnnewServerResponse<Users>("1","修改失败!"); } } @RequestMapping("getById") @ResponseBody publicUsersgetById(Integerid){ Usersusers=usersService.getById(id); returnusers; } @RequestMapping("delete") @ResponseBody publicServerResponse<Users>delete(Usersusers){ users.setIsdel(1); booleanflag=usersService.updateById(users); if(flag){ returnnewServerResponse<Users>("0","删除成功!"); }else{ returnnewServerResponse<Users>("1","删除失败!"); } }管理员通过搜索框选择输入月份可以对各公司揽件数量进行统计,并且可以根据视图查看详情,如图5-5所示。图5-5统计界面图核心代码:publicMap<String,Object>tongji(Stringtime1){ SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM"); if(StringUtils.isNullOrEmpty(time1)){ time1=format.format(newDate()); } Map<String,Object>data=newHashMap<String,Object>(); List<Map<String,Object>>csname=packService.groupbycsname(time1); data.put("csname",csname); List<Map<String,Object>>cfname=packService.groupbycfname(time1); data.put("cfname",cfname); returndata; }5.4分公司功能模块分公司登录成功进入系统操作界面可以进行个人信息管理、分站管理、投递员管理、发货管理、统计功能模块的查看、修改、维护等相应的管理操作。分公司对个人资料、登录密码进行修改,通过输入用户名、姓名、电话,信息填写完成选择提交进行修改个人资料,如图5-6所示。同时,分公司通过输入原密码、新密码、确认密码,信息填写准确无误后进行修改登录密码,如图5-7所示。图5-6分公司个人信息操作界面图核心代码:@RequestMapping("/updateuser") @ResponseBody publicServerResponse<String>updateuser(Integerid,Stringname, Stringphone,Stringsex,Stringpic,Stringage,Stringhyzk, HttpSessionsession){ booleanflag=false; Integerrole=(Integer)session.getAttribute("role"); Usersu=newUsers(); u.setId(id); u.setName(name); u.setPhone(phone); flag=usersService.updateById(u); if(flag){ returnnewServerResponse<String>("0","修改成功!"); }else{ returnnewServerResponse<String>("1","修改失败!"); } }图5-7修改登录密码界面图核心代码: @RequestMapping("/uppwd") @ResponseBody publicServerResponse<String>uppwd(Stringpassword,HttpSessionsession){ booleanflag=false; Integerrole=(Integer)session.getAttribute("role"); Usersusers=(Users)session.getAttribute("users"); users.setPassword(password); flag=usersService.updateById(users); if(flag){ returnnewServerResponse<String>("0","修改成功,请重新登录"); } returnnewServerResponse<String>("1","修改失败"); }分公司通过分站列表可以在线查看系统已有的分站信息,并且可以对已有的分站信息进行在线编辑或者删除等操作,如图5-8所示。图5-8管理分站界面核心代码:@RequestMapping("add") @ResponseBody publicServerResponse<Station>add(Stationstation){ station.setIsdel(0); stationService.save(station); returnnewServerResponse<Station>("0","操作成功!"); } @RequestMapping("update") @ResponseBody publicServerResponse<Station>update(Stationstation){ stationService.updateById(station); returnnewServerResponse<Station>("0","操作成功!"); } @RequestMapping("delete") @ResponseBody publicServerResponse<Station>delete(Stationstation){ station.setIsdel(1); booleanflag=stationService.updateById(station); if(flag){ returnnewServerResponse<Station>("0","删除成功!"); }else{ returnnewServerResponse<Station>("1","删除失败!"); } }分公司通过输入分站、用户名、密码、确认密码、姓名、电话,信息填写完成选择提交进行添加新的投递员,同时,分公司通过投递员列表可以查看已有的快递员,选择快递员查看详情,并且可以对已有的快递员进行编辑或选择删除,如图5-9所示。图5-9管理投递员界面发货管理,分公司通过信息列表可以查看所有单号的发货信息,选择单号查看详情,并且可以对已有的单号进行编辑或删除,同时,分公司还可以对新的单号进行处理,如图5-10所示。图5-10发货管理界面核心代码:publicServerResponse<Pack>update(Packpack,HttpSessionsession){ Usersusers=(Users)session.getAttribute("users"); if("中转".equals(pack.getStatus())){ Detaildetail=newDetail(); detail.setCname(companyService.getById(pack.getCid()).getName()); detail.setUname(users.getName()); detail.setOpdate(Const.getDate()); detail.setOptime(Const.getTime()); detail.setPid(pack.getId()); detail.setContent("已发往"+detail.getCname()); detailService.save(detail); }elseif("到达".equals(pack.getStatus())){ Detaildetail=newDetail(); Stationstation=stationService.getById(pack.getSid()); detail.setCname(companyService.getById(station.getCid()).getName()); detail.setSname(station.getName()); detail.setUname(users.getName()); detail.setOpdate(Const.getDate()); detail.setOptime(Const.getTime()); detail.setPid(pack.getId()); detail.setContent("已到达"+station.getName()); detailService.save(detail); }elseif("已签收".equals(pack.getStatus())){ Detaildetail=newDetail(); Stationstation=stationService.getById(pack.getSid()); detail.setCname(companyService.getById(station.getCid()).getName()); detail.setSname(station.getName()); detail.setUname(users.getName()); detail.setOpdate(Const.getDate()); detail.setOptime(Const.getTime()); detail.setPid(pack.getId()); detail.setContent("已签收,快递员:"+users.getName()); detailService.save(detail); pack.setSoptime(Const.getFullTime()); } packService.updateById(pack); returnnewServerResponse<Pack>("0","操作成功!"); }统计,分公司通过搜索框选择输入月份可以对各分站揽件数量进行统计,并且可以根据视图查看详情,如图5-11所示。图5-11统计界面图核心代码:publicMap<String,Object>tongji2(Stringtime1,Integercid){ Companycompany=companyService.getById(cid); Stringcname=company.getName(); SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM"); if(StringUtils.isNullOrEmpty(time1)){ time1=format.format(newDate()); } Map<String,Object>data=newHashMap<String,Object>(); List<Map<String,Object>>ssname=packService.groupbyssname(time1,cname); data.put("ssname",ssname); List<Map<String,Object>>sfname=packService.groupbysfname(time1,cname); data.put("sfname",sfname); List<Map<String,Object>>usname=packService.groupbyusname(time1,cname); data.put("usname",usname); List<Map<String,Object>>ufname=packService.groupbyufname(time1,cname); data.put("ufname",ufname); returndata; }5.5分站功能模块分站通过登录进入到系统操作界面,可以在线管理个人信息、发货信息,进行收件、派件操作。管理个人信息,查看修改个人资料及登陆密码。如图5-12所示。图5-12快递员信息图当快件到达本地分公司时分站快递员需要对快递进行派送,并拍照上传客户签收图片。如图5-13所示。图5-13签收图片核心代码:publicJSONObjectupfile(MultipartFilefile,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{Stringpath=request.getSession().getServletContext().getRealPath("/images");StringfileName=path+"/"+file.getOriginalFilename();file.transferTo(newFile(fileName));JSONObjectresult=newJSONObject(); result.put("errno",0); JSONArraydata=newJSONArray(); data.add(Const.ROOT+"images/"+file.getOriginalFilename()); result.put("data",data); result.put("filename",file.getOriginalFilename());returnresult;}分站根据所需可以在线添加新订单,通过填写发件人、发件人电话、发件人地址、收件人、收件人电话、收件人地址、收件分公司、重量、价格等信息完成对快件的揽收,如图5-14所示。图5-14添加揽件界面图核心代码:publicServerResponse<Pack>add(Packpack,HttpSessionsession){ pack.setNo(Const.getIds()); pack.setFoptime(Const.getFullTime());//发货时间 pack.setStatus("已揽件"); packService.save(pack); Usersusers=(Users)session.getAttribute("users"); Detaildetail=newDetail(); detail.setCname(companyService.getById(users.getCid()).getName()); detail.setSname(stationService.getById(users.getSid()).getName()); detail.setUname(users.getName()); detail.setOpdate(Const.getDate()); detail.setOptime(Const.getTime()); detail.setPid(pack.getId()); detail.setContent("已揽件,快递员:"+users.getName()); detailService.save(detail); returnnewServerResponse<Pack>("0","操作成功!"); }5.6普通用户功能模块普通用户可通过运单编号对快递信息进行查询,查看快递详情,如收件人、收件人电话、收件地址、状态、投递进度、签收时间、签收照片。如图5-13所示。图5-13运单号查询核心代码:publicServerResponse<Pack>list(Integerpage,Integerlimit,Stringno){ QueryWrapper<Pack>wrapper=newQueryWrapper<Pack>(); if(!StringUtils.isNullOrEmpty(no)){ wrapper.like("no",no); } wrapper.orderByDesc("id"); IPage<Pack>page_pack=newPage<Pack>(page,limit); page_pack=packService.page(page_pack,wrapper); intcount=(int)page_pack.getTotal(); List<Pack>list=page_pack.getRecords(); returnnewServerResponse<Pack>("0","",count,list); }
第6章系统测试6.1系统测试的目的系统测试必须结合完善的系统、硬件设备、网络链接,分别进行系统的各部分测试和反复确认测试,测试和重新比对用户和系统的需求,精确找出系统与需求之间的差距,系统自身的逻辑漏洞和性能漏洞。修改完善程序中的错误,提升程序的稳定性和流畅度REF_Ref18827\r\h[19]。系统测试的目的是发现问题并解决问题。系统测试一般分为三个阶段,测试模块阶段:此阶段需细致测试每个模块的程序;测试组装阶段:将各个模块相连接,测试各模块之间接口是否可以正常连接;测试确认阶段:整体测试系统程序,并总览整个程序是否完成预期的设计需求,使用随机数据多次测试系统稳定性。系统测试出的问题要精确解决,通过调试找出错误数据及原因,明确错误发生在代码、硬件、网络等地方,然后改正。系统测试可以理解为是基于系统整体需求的黑盒类测试方法。系统测试必须考虑到整体并且细致,测试过程中必须有严谨的测试方法和测试逻辑,测试要覆盖项目的每一部分。最后回馈用户需求,重新改正,力求完美。6.2系统主要功能测试6.2.1登录功能测试登录功能测试:以用户登录为例,对登陆功能进行测试。登录功能测试如表6-1所示。表6-1登录功能测试表测试功能测试用例预期结果实际执行结果是否与预期相符登录功能输入用户名:admin输入密码:admin成功登录并跳转页面是输入用户名:a输入密码:123456用户名或者密码错误,请重试是输入用户名:admin输入密码:用户名或者密码错误,请重试是输入用户名:a输入密码:1用户名或者密码错误,请重试是6.2.2信息修改功能测试信息修改功能测试:以管理员表为例,对管理员信息的进行修改,并进行测试。信息修改功能测试如表6-2所示。表6-2信息修改功能测试表测试功能测试用例预期结果实际执行结果是否与预期相符信息修改输入密码:123456确认密码:123电话次输入的密码不一致是输入密码:确认密码:123456电话填项,不能为空是输入密码:123456确认密码:123456电话:1786电话必须11位是输入密码:123456确认密码:123456电话改成功是6.2.3信息增加功能测试信息增加功能测试:以山东分公司为例,添加分公司管理员,并进行测试。信息增加功能测试如表6-3所示。表6-3信息查询功能测试表测试功能测试用例预期结果实际执行结果是否与预期相符信息增加选择分公司:山东分公司输入用户名:输入密码:123456确认密码:123456姓名:孔宁电话填项,不能为空是选择分公司:山东分公司输入用户名:sd002输入密码:123456确认密码:12姓名:孔宁电话次输入密码不一致是选择分公司:山东分公司输入用户名:sd002输入密码:123456确认密码:123456姓名:孔宁电话加成功是6.3兼容性测试换用谷歌及其他浏览器登录:执行结果与预期相符,测试成功,无明显差别。6.4本章小结通过对系统多个模块进行测试,结果均与预期结果相符合。系统登陆、对信息的添加修改等功能都可以正常执行,系统可运行,所有功能可正常使用,用户体验较好,但用户操作界面仍需继续优化美化,以突出操作为主,让用户体验感更强。
第7章总结与展望7.1总结此项目到此已经基本完成,经过了几个月的努力,在其中也收获满满。这段时间里也是边学习边实践,从开始的选题到做完这个项目,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年标准气体合作协议书
- 如何有效降低生产成本计划
- 高标准仓库管理工作的回顾计划
- 九年级化学上册 第二单元 课题2 氧气示范教学实录 (新版)新人教版
- 第7单元第9课时 长方体和正方体的体积和容积练习 (教案)2024-2025学年数学五年级下册青岛版
- 专题二第5课《阅读材料 使用配色网站快速建立网站的色彩搭配》教学设计
- 年度财务制度的优化与调整计划
- 如何提升班级的文明素养计划
- 2025年子女赡养老人和身后财产处理协议
- 2025年共同出资协议书模板
- 屋顶光伏发电项目EPC总承包工程招标文件
- 小米新供应商质量管理体系审核表4
- 九年级化学第十单元-课题2-酸和碱的中和反应
- 专题五 商品的价值是如何确定的
- 锅炉安全安全检查表
- 彩钢瓦雨棚施工方案
- 大型国有集团公司企业年金管理委员会章程
- 【深度学习研究国内外文献综述4000字(论文)】
- 化工过程安全管理导则AQT 3034-2022
- 肺癌教学查房心胸外科
- T-ISEAA 001-2020 网络安全等级保护测评高风险判定指引
评论
0/150
提交评论