毕业设计说明书
百货中心供应链管理系统
百货中心供应链管理系统
摘要
近年来,随着计算机技术的发展,以及信息化时代下企业对效率的需求,计算机技术与通信技术已经被越来越多地应用到各行各业中去。百货中心作为物流产业链中重要的一环,为了应对新兴消费方式的冲击,从供货到销售的各个环节也迫切地需要实现信息化、自动化。而上面所提到的这些环节,在二十世纪中期后被称为“供应链”,也是在本世纪初才在中国受到关注的一门新兴科学。
本文就百货中心供应链管理系统的设计与开发展开论述,按照软件工程开发的实际步骤,依次对该项目的可行性分析、需求分析、概要设计、详细设计、系统实现以及系统测试分别进行阐述。
在查阅了各界媒体资料、分析了国内外供应链管理系统的基础上,经过认真学习与不懈探索,利用J2EE技术和Mysql数据库,最终完成了百货中心供应链管理系统的开发,并经过一系列测试及试用,达到了最初的设计目标。
关键词:供应链,软件工程,J2EE
supply chain management system of department store
Abstract
In recent years, with the development of computer technology, and the enterprise is in great demand of efficiency in the information era, computer technology and information technology has been increasingly applied to all walks of life. Department store is an important part of logistics industry chain, in order to cope with the emerging consumer's impact, from supplying marketing, every aspect needs to implement informatization and automation urgently. These aspects mentioned above came to be known as the "supply chain" in the middle of twentieth Century, which is a new science not attached attention from China until the beginning of this century.
In this paper, the design and development of supply chain management system of department store is described and analyzed, according to the actual steps of software engineering, the project feasibility analysis, demand analysis, outline design, detailed design, system implementation and system test are described individually.
Under the base of consulting the media data, analyzing the supply chain management system at home and abroad. After study and exploration, finally the development of supply chain management system of department store is completed using J2EE technology and Mysql database. With a series of tests, the system has met the original design goals.
Key words: supply chain, software engineering,J2EE
目录
1引言11
1.1课题背景11
1.2目的和意义22
1.3研究内容和组织结构22
2开发工具及技术33
2.1开发工具33
2.2使用技术44
3可行性分析66
3.1法律的可行性66
3.2经济的可行性66
3.3技术的可行性66
4需求分析77
4.1系统功能分析77
4.1.1经理用例图77
4.1.2人事部员工用例图77
4.1.3采购部员工用例图88
4.1.4物资部员工用例图88
4.1.5销售部员工用例图99
4.2功能模块需求分析99
4.3数据流图1010
4.3.1顶层数据流图1010
4.3.2一层数据流图1010
4.4数据字典1111
4.4.1数据项的描述1111
4.4.2数据流的描述1212
4.4.3描述外部实体1414
5系统设计1515
5.1系统结构设计1515
5.2系统子模块功能介绍1515
5.3数据库设计1616
5.3.1数据库概念设计(E-R模型)1616
5.3.2数据库表结构设计1717
6系统实现2020
6.1系统登录界面2222
6.2登录成功界面2323
6.3人事管理界面2525
6.4合作公司管理界面2626
6.5采购管理界面2828
6.6库存管理界面3131
6.7销售管理界面3434
6.8经营统计界面3535
7系统测试3535
7.1测试目的3535
7.2测试方法3636
7.3测试结果3636
8总结3737
参考文献3838
致谢3939
1 引言
1.1 课题背景
随着国内物流行业的迅速发展,越来越多的企业认识到了“供应链”一词的含义以及它对整个企业物流活动的重大意义,于是,“供应链管理”也逐渐受到了大家的重视。供应链管理主要涉及到四个领域:供应、生产计划、物流、需求[1]。职能领域主要包括产品工程、产品技术保证、采购、生产控制、库存控制、仓储管理、分销管理[2]。在供应链管理中涉及到如此广泛、复杂的物流活动,要对其进行统筹、控制绝非易事,这也是我国企业目前在供应链管理中亟待解决的难题。与此同时,互联网和网络技术的进步为我们解决这一问题提供了方案,借助互联网及互联网技术,企业各个物流阶段的大量数据可以得到及时传输,并通过日益成熟的算法或处理手段实现对这些数据的准确分析,从而指导企业的物流活动或对未来做出预测。百货中心作为现在物流以及商业中的重要一环,为了应对新兴消费方式的冲击,其供应链模式自然也有统筹优化的必要,同时,Internet和网络技术的飞速发展也为供应链的管理提供了新的手段。
SCM(Supply Chain Management)系统即供应链管理系统,利用计算机和Internet的优点,将供应链中的信息流加以收集并控制,只需要少量的人工,便可实现对整个供应链进行监管[3]。
国际上研究供应链主要是开始于二战后期的物流管理,主要从多级库存以及生产-分销的角度来研究供应链的优化问题。从最初的物流管理到供应链管理,再到如今把供应链增长到战略管理来研究,花费了半个多世纪的时间。国内对供应链的研究起步较晚,国内一些企业对于供应链管理的认识比较肤浅,直到1997年以后,随着各种有关供应链方面的研究和报道增多,人们对物流领域的这一新鲜事物的关注也逐渐升温,直到今天,许多国外的知名公司如IBM、SAP都能为企业的供应链管理提供一整套的解决方案,国内近些年也出现了许多解决企业供应链管理问题的公司和软件[1]。但总体来说,对于这一门相对还很年轻的科学,我们还有很长的路要走。
随着我国经济结构调整的深入,对企业节能减排的要求更加严格,企业只有通过强化环境保护的自我约束机制,来降低产品和生产过程相关的环境污染所带来的生产经营风险。绿色供应链管理能使整个供应链的资源消耗和环境负作用最小,并能有效满足日益增长的绿色消费需求,从而提高供应链的竞争力。
因此,实施绿色供应链管理是企业发展的必然趋势,这对我国供应链管理行业提出了更高的要求。
1.2 目的和意义
对于课题-百货中心供应链管理系统,在了解了传统SCM的基础上,结合了计算机及Internet技术的优点,旨在于简化操作,提高效率,提高数据、信息的安全程度,为企业及其员工提供一个更加便捷高效的工作环境。
与传统仅仅利用表格、账目来实现对供应链的管理,基于Web的百货中心供应链管理系统具有如下优点:
1.3 研究内容和组织结构
本文主要通过对百货中心供应链管理系统进行需求分析,结合供应链管理的相关理论,设计出供应链管理系统的各个功能模块,并对其做出一定的说明指导,方便使用者进行操作。
系统的主要研究内容包括:
对完成的系统进行条件许可下的测试,对系统的安全性、稳定性、容错性进行评估。
本文组织结构:
2 开发工具及技术
2.1 开发工具
本设计主要利用MyEclipse和Tomcat服务器,加上Mysql数据库进行开发,同时使用Maven来辅助、简化开发。下面对使用到的开发工具进行简要的介绍。
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
2.2 使用技术
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言[13]。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML(标准通用标记语言的子集)网页添加动态功能,比如响应用户的各种操作, 是一种动态、弱类型、基于原型的语言,内置支持类。在HTML基础上,使用JavaScript可以开发交互式Web网页[14]。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。
3 可行性分析
在进行系统开发时,会受到来自时间、资源等多方面的限制,因此,在每一个项目开发开始之前,首先进行系统的可行性分析就显得十分重要,它可以减少项目开发的风险,避免人力、物力、财力的浪费[15]。下面将就法律、经济和技术三方面对本项目进行讨论。
3.1 法律的可行性
百货中兴供应链管理系统是自主开发的管理系统,开发过程中使用的开发工具及技术都是免费的,开源的,不存在侵权的问题,所有的源代码都是亲自编写或直接由工具自动生成,没有使用他人的项目成果或方案,因此在法律上是可行的。
3.2 经济的可行性
本系统所使用的开发工具都是开源的,为开发软件节省了大量的金钱和时间,采用的技术也是完全开放的、免费的,达到了降低成本的目的。软件对企业的硬件需求也不高,市场上的中低档计算机也可以符合使用要求,同时由于利用了互联网,比一般的供应链管理系统更加经济、效率。
3.3 技术的可行性
系统使用的开发工具是MyEclipse、Maven和Mysql数据库,工具免费且小巧,安装方便,简单易学。并且采用了目前十分流行的J2EE技术,因而有很多途径找到相关的学习资料,在大学期间我也学习了许多相关的知识,包括对于数据库和编程思想的学习,使得在这个项目中更容易上手,能够迅速投入到系统的设计开发中去。
4 需求分析
4.1 系统功能分析
经过对百货中心供销流程的了解和对供应链管理相关资料的分析,决定将系统用户分成五类不同的用例,系统应根据用例的不同职能实现不同的功能,经过分析,系统应具备人事管理、合作公司管理、采购订单管理、库存管理、销售管理、经营统计六大功能模块。具体用例图如下:
4.1.1 经理用例图
经理用例-经理应是百货中心的最高负责人之一,负责百货中心大部分的业务管理及监督工作,必要时也可以完成所有其他用例的操作,地位相当于系统管理员,具有最高权限。
图4.1 经理用例图
4.1.2 人事部员工用例图
人事部员工用例-人事部员工主要操作系统的人事管理模块,同时也可以进入经营统计模块查看。
图4.2人事部员工用例图
4.1.3 采购部员工用例图
采购部员工用例-采购部员工主要负责操作系统的合作公司管理模块和采购订单管理模块,同时也可以进入经营统计模块查看。
图4.3采购部员工用例图
4.1.4 物资部员工用例图
物资部员工用例-物资部员工主要负责操作系统的库存管理模块,同时也可以进入经营统计模块查看。
图4.4物资部员工用例图
4.1.5 销售部员工用例图
销售部员工用例-物资部员工主要负责操作系统的销售管理模块,同时也可以进入经营统计模块查看。
图4.5销售部员工用例图
4.2 功能模块需求分析
考虑到用户可能对计算机操作不是十分熟悉,本系统应具备操作简便、界面友好的特点,再结合系统分析的结论,本系统还应增加一个登录模块以实现不同用例登录系统后可以进行不同的操作,具体分析如下:
4.3 数据流图
根据之前的分析,绘制数据流图。
4.3.1 顶层数据流图
用户通过输入用户名和密码,来实现用户登录,登录失败时会给出相应的提示并留在登录页面,登录成功后可以顺利进入供应链管理系统。
图4.6 系统顶层数据流图
4.3.2 一层数据流图
成功登录的用户可以进入不同的模块完成相应的操作,根据登录用户的身份不同,可以进行的操作也会不同。
图4.7 系统第一层数据流图
4.4 数据字典
数据字典的作用是对数据流图中的各种成分进行详细说明,作为数据流图的细节补充,和数据流图一起构成完整的系统需求模型[16]。数据字典一般应包括对数据项,数据结构、数据存储和数据处理的说明。以下列出本系统的主要数据字典条目。
4.4.1 数据项的描述
表4.1 用户信息数据项描述
数据项
类型
长度
值范围
ID
数字
11
00000000000至99999999999之间
用户名
文本
255
最多255个字符
密码
文本
255
最多255个字符
表4.2 合作公司数据项描述
数据项
类型
长度
值范围
ID
数字
11
00000000000至99999999999之间
公司名
文本
255
最多255个字符
表4.3 采购订单数据项描述
数据项
类型
长度
值范围
ID
数字
11
00000000000至99999999999之间
商品名
文本
255
最多255个字符
数量
数字
11
00000000000至99999999999之间
价格
数字
双精度浮点型
表4.4 库存信息数据项描述
数据项
类型
长度
值范围
ID
数字
11
00000000000至99999999999之间
产品名
文本
255
最多255个字符
数量
数字
11
00000000000至99999999999之间
表4.5 销售信息数据项描述
数据项
类型
长度
值范围
ID
数字
11
00000000000至99999999999之间
数量
数字
11
00000000000至99999999999之间
价格
数字
双精度浮点型
4.4.2 数据流的描述
数据流名:销售商品信息
简述:统计销售商品信息
组成:产品名+销售总量
4.4.3 描述外部实体
简述:负责百货中心的销售工作
输入的数据流:销售信息
输出的数据流:销售信息、经营统计
5 系统设计
5.1 系统结构设计
按照需求分析阶段的结果,本系统的结构主要由两部分构成,首先是登录模块,之后会由登录模块中返回的结果给用户展示可以进行的操作,包括人事管理、合作公司管理、采购订单管理等六大类操作。系统结构图大致如下:
图5.1 系统结构图
5.2 系统子模块功能介绍
5.3 数据库设计
5.3.1 数据库概念设计(E-R模型)
本系统实体与其属性的关系用E-R模型表示如下(见下页):
图5.1 百货中心供应链管理系统E-R模型
5.3.2 数据库表结构设计
根据上述模型,在将其转化成关系模型后,在数据库(数据库名:chain)中创建如下5张表:
用来存储销售信息的表,用于存储百货中心商品的销售情况。包含销售单id、数量、价格、商品id、用户id、创建人、创建时间、更新人、更新时间字段。
表5.5 销售单表(tb_chain_sale)
6 系统实现
在经过了需求分析、概要设计和详细设计后,便开始了百货中心供应链管理系统的实现阶段,首先我利用Tiles结合JavaScript对页面进行布局,之后再利用Maven完成整个项目框架的搭建,利用Hibernate反向工程生成Java实体类,再使用Struts和Spring完成之前设计的业务逻辑。部分关键代码及最终程序的运行效果如下:
public String logon() { UserEntity userEntity = userService.getUserEntity(username, password); if (userEntity != null) { ActionContext.getContext().getSession().put("user", userEntity); return SUCCESS; } else { this.addActionError("用户名或者密码不正确"); return INPUT; } }
public String list() { if (userEntityPaginationBean == null) { userEntityPaginationBean = new PaginationBean<UserEntity>(); } userEntityPaginationBean = userService.pagedList(userEntityPaginationBean); return SUCCESS; }public String show() { userEntity = userService.getUserEntity(userEntity); return SUCCESS; }public String add() { return SUCCESS; }public String update() { userEntity = userService.getUserEntity(userEntity); return SUCCESS; }public String delete() { try{ userService.delete(userEntity); list(); this.addActionMessage("用户删除成功!"); } catch(Exception e){ list(); this.addActionMessage("删除失败,不能删除已登录用户!"); } return SUCCESS; }public String save() { userService.saveOrUpdateEntity(userEntity); list(); this.addActionMessage("用户操作成功!"); return SUCCESS; }
public List<Object[]> top10BestSale() { HibernateTemplate tmpl = getHibernateTemplate(); return tmpl.execute(new HibernateCallback<List<Object[]>>() { public List<Object[]> doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery query = session.createSQLQuery("select t1.real_name, sum(t2.amount) total_amount from tb_chain_user t1 " + "left join tb_chain_sale t2 on t1.USER_ID = t2.user_id " + "group by t1.real_name " + "order by total_amount desc " + "limit 0, 10"); List results = query.list(); return (List<Object[]>)results; } }); }public List<Object[]> top10BestPurchases() { HibernateTemplate tmpl = getHibernateTemplate(); return tmpl.execute(new HibernateCallback<List<Object[]>>() { @SuppressWarnings("unchecked") @Override public List<Object[]> doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery query = session.createSQLQuery("select t1.real_name, sum(t2.amount) total_amount from tb_chain_user t1 " + "left join tb_chain_purchase t2 on t1.USER_ID = t2.user_id " + "group by t1.real_name " + "order by total_amount desc " + "limit 0, 10"); List results = query.list(); return (List<Object[]>)results; } }); }public List<Object[]> top10BestProduct() { HibernateTemplate tmpl = getHibernateTemplate(); return tmpl.execute(new HibernateCallback<List<Object[]>>() { @SuppressWarnings("unchecked") @Override public List<Object[]> doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery query = session.createSQLQuery("select t1.`product`, sum(t2.`QUANTITY`) total_quantity from tb_chain_stock t1 " + "left join tb_chain_sale t2 on t1.`COO_ID` = t2.stock_id " + "group by t1.product " + "order by total_quantity desc"); List results = query.list(); return (List<Object[]>)results; } }); }
6.1 系统登录界面
项目发布后,在浏览器地址栏输入http://localhost:8080,页面会跳转到webapp目录下的index.jsp页面并发送index.action请求,未登录的用户会再发送一个login.action请求并跳转到login.jsp页面。
图6.1 系统登录界面
如果未输入用户名/密码,或输入的用户名/密码不正确,点击登录按钮后会给出出错提示,提醒重新登录。
图6.2 登录出错提示
6.2 登录成功界面
成功登录的用户会进入系统欢迎界面,整个界面是借助Tiles的帮助完成的,它让系统可以在执行不同的请求后只让页面的主题部分跳转,而网页的头、导航栏、尾部不跳转,节省了大量重复书写代码带来的开销。
根据用户的身份不同,登录后所能看到的操作选项也有所区别。
图6.4 经理登录界面
本系统中,人事部员工可以操作系统的人事管理模块,因此进入系统后只能看到人事管理的操作选项以及经营统计选项。
图6.5 人事部员工登录界面
其他部分员工登录成功界面相似,故不再附图。
6.3 人事管理界面
经理、人事部员工可以进入人事管理界面对百货中心的员工信息进行添加、删除、修改、查看功能。
图6.6 人事管理界面
图6.7 添加员工界面
图6.8 更新员工信息界面
图6.9 删除员工信息成功
当已经登录的用户想要删除自己的信息时,会给出删除失败的提示,因为已经登录的用户不能删除自己。
图6.10 删除员工信息失败
6.4 合作公司管理界面
经理、采购部员工可以登录合作公司管理界面对合作公司进行添加、删除、修改、查看操作。
图6.11 合作公司管理界面
图6.12 添加合作公司
图6.13 修改合作公司
成功删除合作公司信息后会在页面上给出绿色的成功提示信息。
图6.14 删除合作公司成功
6.5 采购管理界面
经理、采购部员工可以进入采购管理界面,对采购订单进行添加、删除、修改、查看操作。其中添加的采购商品必须来自已经有合作关系的公司。
图6.15 采购管理界面
图6.16 添加采购信息
图6.17 修改采购信息
图6.18 删除采购信息成功
图6.19 采购信息明细
在采购信息明细界面下方点击“打印”按钮,进入打印采购信息明细界面,可以将相应的采购订单详细信息保存或打印。
图6.20 打印采购信息明细
6.6 库存管理界面
经理、物资部员工可以进入库存管理界面,并添加、修改库存信息。
图6.21 库存管理界面
图6.22 添加库存信息
图6.23 修改库存信息
图6.24 库存信息明细
在库存信息明细界面下方点击“打印”按钮,进入打印库存信息明细界面,可以将相应的库存详细信息保存或打印。
图6.25 打印库存信息明细
6.7 销售管理界面
经理、销售部员工可以进入销售管理界面,并对销售信息进行添加、查看操作。
图6.26 销售管理界面
用户点击库存管理界面上的“添加销售记录”按钮进入添加销售信息界面,在本页面中输入要添加的销售信息后,点击保存,即可将新的销售信息添加进数据库中,如果有关键的信息没有正确输入,页面会给出相应的提示。
图6.27 添加销售信息
6.8 经营统计界面
所有权限的员工都可以查看百货中心的经营状况,其中统计了销售量前十的员工、采购额前十的员工和销售数目前十的商品,方便员工了解公司经营现状,帮助决策层找到公司可能存在的问题。
图6.28 经营状况统计
7 系统测试
7.1 测试目的
软件测试(software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。在整个软件生命周期中,软件测试占了很大一部分比例,它是保证软件质量的关键环节,也是降低软件开发风险的必要手段,软件测试工作应该贯穿整个项目开发的始终。
7.2 测试方法
图7.1 系统出错经过耐心的调试、测试,已经基本解决了这些错误。
7.3 测试结果
实现了所有模块的功能,修正了已经发现的所有问题、错误。但系统还有许多不完善的地方,有待实践阶段的检验和提高。
8 总结
通过这次对百货中心供应链管理系统的设计与开发,让我进一步温习了大学课堂上学到了软件工程相关的知识,也使得书本上J2EE、数据库相关的知识得到了实践的机会,同时也对Jsp、JavaScript、Maven等有了进一步的了解,通过查询相关的资料并学习,我也发现了许多不足的地方,还有更多更新更实用的技术,等着我去学习去钻研。总之,经过不懈的学习与调试,我的编程能力有了很大的提高,更重要的是,我也看到了自己仍需努力的方向。
参考文献
[1]曹俊超,戴克商.物资管理理论与实务.北京:清华大学出版社,2006.
[2]罗伯特·M·蒙兹卡.刘秉镰,李莉,刘洋译.采购与供应链管理.北京:中信出版社,2004.
[3]肯尼斯·莱桑斯,迈克尔吉林厄姆,鞠磊等译.采购与供应链管理.北京:电子工业出版社,2004.
[4] 刘京华等. Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring).北京:清华大学出版社,2010.
[5] HUNT J,LFTUS C.精通J2EE-Java企业级应用[M].北京:清华大学出版社,2004.
[6] LIANG Y D..Java语言程序设计[M].北京:机械工业出版社,2003.
[7] Angela Yochem.J2EE应用与BEA WebLogic Server[M].北京:电子工业出版社,2005.
[8]陈天河.Java数据库高级编程宝典[M].北京:电子工业出版社,2005.
[9]泰勒.JDBC数据库编程与J2EE[M].北京:电子工业出版社,2004.
[10]顾兵.XML实用技术教程[M].北京:清华大学出版社,2007.
[11]丁宝康.数据库实用教程[M].北京:清华大学出版社,2003.
[12]李.刚. 轻量级Java+EE企业应用实战(第3版).北京:电子工业出版社,2012.
[13] 陈亚辉,缪勇.Struts2+Spring+Hibernate框架技术与项目实战.北京:清华大学出版社,2012.
[14] 刘勇军,王电钢. Java EE项目应用开发:基于Struts2,Spring,Hibernate.北京:电子工业出版社,2012.
[15] 埃克尔. Java编程思想(第4版).北京:机械工业出版社,2007.
[16] 张海藩.软件工程导论[M].北京:清华大学出版社,2003.
致谢
从最初的选题到毕业说明书的完成,为期半年的毕业设计即将结束。在这里,我要特别感谢我的指导老师-郝喜老师和张卓鹏老师。从刚选题结束开始,我就遇到了许多困难,因为对供应链和百货公司的不了解,我在需求分析阶段就止步不前,首先要感谢张卓鹏老师帮我在资料查找上提供了很多帮助,让我少走了很多弯路。在一些编程技巧和功能实现上,郝喜老师也提供了不少资料,才让我能够快速攻破技术难关。没有他们严谨的治学态度和丰富的专业知识,以及耐心的指导,很难想象我的毕业设计要用多久才能完成。
最后,对所有在毕业设计时给予我帮助的老师、家人、同学、朋友表示感谢,也要感谢科技的发展给了我们更多获取信息的渠道。