手机进销存系统/供应链管理系统bojiangzhou

(注:本人目前大三,专业为信息管理,与编程沾边不多。而我对编程很感兴趣,从大一下期开始主要通过看书和视频自学学习java编程!)。

项目名称:手机进销存系统(MobileSCM)

主要开发技术:Struts2+Spring+ibatis+jQuery

数据库:MySql5.1(Navicat客户端管理工具)

服务器:tomcat7.0

建模工具:ER/Studio

运行系统:Linux

其他技术:报表应用iReport+jasperReport技术,应用jxl进行excel导出。

项目介绍(视频原话):本系统由某手机贸易企业定制开发,合同价格9.8万元,开发周期3个月,5人开发完成。本系统既具有一般进销存系统功能,又有客户独有的需求,通过学习本课程,可以全面了解进销存类项目。

视频评价:

①.这是我在网上找的一套视频教程,总共80集,每集60分钟左右(需要很大的耐心啊!)。项目有点老,大概是12年左右录制的,但是学到的东西很多。

③.这套视频是基于现有的、企业实际在使用的系统来讲解,从售前的与客户沟通->开发阶段->售后维护阶段,让我了解到了公司项目开发流程。不过这套视频的着重点是在开发阶段,主要讲解了系统设计、建模工具的使用、主要模块功能实现等;像与客户沟通、具体参与项目需求分析、团队分工合作等还是得工作后具体参与其中才能真正有所体会。

④.视频讲解的内容也非常详细,就一个功能而言,详细地讲解了JS,页面构成,代码编写,文件配置等等,所以也能学到很多细节性的东西,某些内容会在后面写出来。作为一个开发人员,最主要的是需要了解项目的需求,根据需求来完成代码的编写。

实际学习:

①.首先,视频中的持久层框架使用的是iBatis,我因为在学习这套视频之前不久刚学习过了MyBatis框架,所以将iBatis换成了MyBatis,ibatis、mybatis和hibernate后面会具体说一说。总的来说,框架的使用感觉是非常简单的,在此之前就已经学习过了S2SH(Struts2+Spring+Hibernate),SSM(SpringMVC+Spring+MyBatis),学框架就是学配置!。

②.在实际学习时,视频中讲解系统设计等内容时是跟着视频认真听的,涉及到代码的编写等内容大部分是先了解模块功能的需求后,先自行编写代码实现功能后再快进地看视频,代码编写相对简单,主要还是业务需求。代码写多了之后会发现(刚刚统计了下代码量<仅统计了.java和.jsp>,到现在为止,已超过11W行啦(∩_∩)),无非就是增删改查,要说难一点的就是将需求转换为逻辑实现。

④.因为讲得很详细,所以学到了以前很多没注意到的细节;在学习这套视频的同时,一方面学到了很多新知识,类似于建模工具ER/Studio的使用;另一方面也复习了以前的知识,并更加熟练地加以运用。在这期间,有些新的知识点或者解决的问题写了几篇新的博客(可以看之前的博客),有些则会在接下来的篇幅中进行总结!

2.首页

3.功能展示

菜单管理

权限管理

供应商业务

4.虚拟机运行效果(Linux)

5.工程目录结构

三、项目学习总结

1.进销存系统概述

进销存系统也称作供应链管理系统(SupplyChainManagement,SCM)。SCM基本内容:计划(决策管理层,主要体现在报表上)、采购、[制造(跟生产有关的企业)]、库存、销售、退换货管理。SCM总体为两大流程:物品流、财务流。百度百科解释:进销存系统是对企业生产经营中进货、出货、批发销售、付款等进行全程跟踪管理,从接获订单合同开始,进入物料采购、入库、领用到产品完工入库、交货、回收货款、支付原材料款等,每一步都为您提供详尽准确的数据。有效辅助企业解决业务管理、分销管理、存货管理、营销计划的执行和监控、统计信息的收集等方面的业务问题。

系统总流程图:

2.项目组成员及分工(企业开发):我想刚进公司的新人则处于开发工程师这个阶段,然后一步步往上走!

项目经理(PM):与客户沟通、进度、成本、质量的控制、资源(人力资源)协调等。

系统分析师(SA)[架构设计师/技术经理]:技术带头人,需求分析、架构设计、指导开发、重要功能开发等。

开发工程师(SE):具体模块的设计与实现。

测试工程师(TestEngineer):测试用例编写、执行测试提交BUG列表。

3.项目开发流程

需求分析->系统设计->开发->测试->实施及试运行->客户培训->维护

项目开发流程图:

4.系统设计主要工作内容:

①分析需求、了解环境及限制等

②总体设计、完成子系统划分,并确定子系统间关联及通信方式

③对每个子系统进行模块及子模块划分,并确定之间关联

④每个模块输入、处理流程、输出

⑤设计数据结构

⑥设计用户界面

⑦完成《概要设计说明书》

5.概要设计说明书(主要内容参考《概要设计说明书主要的内容.doc》)

概要设计的目的就是希望一个从来没有接触过的人一看就能从各个方面都对系统的作用,功能,实现方面有一个大概的了解,并为以后的各类详细设计文档提供一个指引和方向。

6.《需求规格说明书》作用及主要内容(可具体参考《LSD-软件需求规格说明书.doc》)

作用:

①项目组成员、测试人员、公司审核部门的一个参照标准

②客户验收标准

主要内容:

②变更记录

③项目概况、编写目的、目标读者、系统用户与环境等

④系统模块、总流程图等

⑤功能性需求

⑥性能性需求

7.模块设计

①分析模块流程

②根据需求确定输入、输出及处理逻辑

③设计用户界面

④面向对象的设计方法[UML(统一建模语言),时序图,状态图,类图等]

⑤以数据为中心的设计方法(数据建模)

8.MVC与分层设计(具体可网上查阅)

①MVC(Model-View-Controller):MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而达到更好的开发和维护效率。在MVC模式中,应用程序被划分成模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式(页面、界面);而控制器部分负责协调模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。MVC模式的这三个部分的职责非常明确,而且相互分离,每个部分都可以独立的改变而不影响其他部分,大大提高了应用的灵活性和重用性。

②为什么分层:便于重用、维护。

③三层结构及各层次的结构:业务逻辑层(Service):不要出现直接的数据访问;传进来一组数据,根据传进来的参数和业务逻辑的要求把业务逻辑实现,最后把要显示的数据传递出去。业务逻辑层是重用性最高的一层,是核心。

9.ER/Studio(专业的数据建模工具):

ERStudio:ERStudio是优秀的数据库建模软件,它不仅可以建立表、视图等模型,还可以建立多表间各种关系的模型,另外还可以根据模型生成表到数据库。

表关联设计:如果我们对数据库拥有完全的控制权限,创建数据库时,可以不用考虑表之间的关联,因为数据库维护关联关系会消耗一定的资源。我们可以通过程序来维护即可。

可以看看下图使用ERStudio建立的逻辑模型:我们可以通过图形界面很清晰的了解模块划分、表结构、表之间的关联(这里并没有很严谨的设计表之间的关联,主要通过程序来维护)等等。我们如果需要临时修改一个字段或是关联关系等,可以很容易的修改。而且最方便的是可以直接将该逻辑模型生成物理模型并导出sql文件,直接导入数据库就可以使用了。ERStudio连上数据库后,还可以把数据库中的表拉到可视化建模界面显示,表与表之间的联系能够清晰地展现出来。

10.编码的一些技巧

①可直接使用Spring的字符编码过滤器来设置UTF-8格式,虽然以前学过,但在实际使用时就忘了Spring还有这个功能,每次都是自己建立一个过滤器来设置字符编码。

12CharacterEncodingFilter3org.springframework.web.filter.CharacterEncodingFilter45encoding6UTF-878910CharacterEncodingFilter11/*12②写一个系统初始化类实现ServletContextListener来加载系统初始化需要的数据以及启动一个定时器来定时清除系统日志等功能。系统公用的东西(如系统标题)可写在配置文件里,系统初始化时就加载进来。

③系统用户表一般会设置一个用户状态,如启动,停用,删除等状态。一般来说,删除用户不会真正删除用户信息,而是设置其状态为删除状态。角色也是一样,会有一个状态信息,如果停用了就要禁止该角色下的权限。

④如果我们对数据库拥有完全的控制权限,创建数据库时,可以不用考虑表之间的关联,因为数据库维护关联关系会消耗一定的资源。我们可以通过程序来维护即可。

⑤权限系统独立出来成一个模块或项目,以方便以后可以重用。

⑥写一个BaseAction来放置一些常用的request,resposne等等,其它的action类如果要用到这些资源可以直接继承BaseAction。

⑦利用好struts的标签库。<%@tagliburi="/struts-tags"prefix="s"%>

可以用其来按需求显示某些数据或者模块。比如:......

以及利用好c标签来做页面的一些判断处理。比如:......

⑨以前一般点击某些功能简单的按钮时,会用js来实现。现在才意识到还可以这样:

例如使用input按钮来简单跳转页面:

⑩不要忘了可以自定义标签来处理某些问题,代替某些js代码以及<%=%>。与jsp页面整体统一。自定义标签一是可以自定义类继承SimpleTagSupport,在doTag方法里实现逻辑处理,此种方式需要在xml中配置tag。另一种方式是在静态类中写一个静态方法处理逻辑,此种方式需要在xml中配置function,前台的书写方式则是:${my:dateFormat(beginDate)}

以及,自定义注解、自定义拦截器、自定义标签等配合使用能更方便的编程。

字符串处理时,StringBuilder速度更快,但是线程不安全的。SringBuffer是线程安全的,速度相比较慢。

在类似于easyui这类框架下,我们点击菜单按钮跳转的页面往往是跳转到一个iframe中,但如果有这么一个业务需求:修改密码/退出系统,需要返回到首页,但如果直接让struts的result跳转到首页时,首页则显示到iframe中了,我们的需求是整个窗口刷新。这里有三种方法:

⑴js获取该按钮,利用ajax来实现,在action中处理后,返回时利用window.top.location=“”;即可。

⑵使用一个临时页面,result配置转到该页面后,立即跳转。

⑶还有一种则是,临时生成一个脚本代码跳转:这种方式就非常简单了,以前怎么就没想到呢,反正都是通过js来跳转。

out.print(“top.location=index.action”);

out.close();

注销与退出系统的区别:注销系统:清除用户信息,返回首页;退出系统:清除用户信息,关闭浏览器。

项目完成后可以将工具类留存。

11.遇到的一些小问题

②一次偶然的断网条件下,启动系统发现报了如下错误:

③一定要将action配置@Scope(value="prototype"),配置成原型模式的,否则就算你重定向也会有意向不到的问题,会将原来的数据带到新的页面去。

④MyBatis的标签:

当collection为List>的时候,而且我们要使用map的key和value,如下使用item:

(#{item.key},#{item.value})

当遍历的集合collection为Map时,要使用key和value,如下使用:

(#{key},#{roleId},#{value})

⑤登出系统时,要清空session所有信息。request.getSession().invalidate();//注:此处必须使用原始的session,不能使用框架的Map<>session,那只是个映射.

⑥表单设置为disabled="disabled"时,将无法提交该表单数据,可以设置为readonly

⑦Jstl标签可以用在js中,但只能在jsp文件的js中,外部js文件不可用。

12if("${mobType.id}"==mobileTypeId){3$("#refPrice").html("¥${mobType.buyPrice}");4}5

12.关于JSON使用的一些问题

①从服务端返回的json格式数据键/值都必须用双引号(无论是json文件,还是json数据),不要用单引号,否则会出现一些意想不到的问题,像数据解析不正确等。

看官网的说明:

②Spring的json插件:

以前一直都是使用JSONObject,JSONArray来得到json格式数据。这次发现还可以直接添加一个json插件,就可以很轻松的返回json数据了。

步奏:

⑴添加struts2-json-plugin-2.3.28.jar包

⑵修改配置文件(注意绿色的地方)

12345⑶Action中将要转化成json的数据放在全局中(成员变量)。不必在方法内像JSONObject那样转成字符串再输出。

//使用JSONObject转换数据JSONObjectjsonObject=newJSONObject();//将data转换为json格式数据Stringresult=jsonObject.fromObject(data).toString();//返回response.write(result);⑷在前台获取的时候,注意需要从data里面取出来,因为此时的data中可能包含多个数据:

function(data){

varjson=[data.key];

}

⑸插件原理:在返回到前台时,框架会自动将有get方法的成员变量转换成json格式数据返回(所以在action中不要将具体逻辑方法名带get,还有Action中的service成员也不要设置get方法,否则极容易出错。如果非要带get,可以在这个方法上加注解;@JSON(serialize=false),使其不要序列化,就不会转成json了)。

这种插件方式比使用JSONObject虽然更方便,但不容易控制,JSONObject可以控制具体输出的类容。

1JSONObjectjsonObject=newJSONObject();2//json配置3JsonConfigconfig=newJsonConfig();4//设置需要过滤掉的字段5config.setExcludes(newString[]{"subMenuList"});6//得到json数据7Stringresult=jsonObject.fromObject(menuTree,config).toString();而且使用JsonConfig可以注册转换器,比如将Date对象转换成字符串。

注册转换器:config.registerDefaultValueProcessor(target,defaultValueProcessor);

13.switch…case…

变量的使用:

switch(此处数据类型):switch后面的括号里面只能放int(byte,short,char)类型和String类型的数据

case后的数据类型不能为Integer:

14.MyBatis、iBatis、Hibernate:具体区别百度

ibatis:半自动ORM框架,需手动写sql语句;开发效率相对于hibernate较低,但是更灵活,适应性更广泛(在企业开发中,我们可能不能完全去控制数据库结构);

mybatis:MyBatis最强大的特性之一就是它的动态语句功能。其前身就是ibatis。

Hibernate:由hibernate自动生成sql语句;hibernate则需要在符合一定规范(如数据库结构必须规范)下才能发挥它的最大效用。

15.mybatis缓存:默认情况下是没有开启缓存的,除了局部的session缓存(一级缓存),可以增强变现而且处理循环依赖也是必须的。要开启二级缓存,需要在你的SQL映射文件中添加一行:

注意所有视频及资料仅供学习使用!!!

然后,说一下此时此刻的感受,通过自学学习的东西虽然有点多,但也比较杂,不能形成一套系统性的知识链;而且,越是到后面就越不想再学下去,主要是现在所学的东西没能有地方使用,有点类似于一身武艺没有用武之地的感觉。以前一直碍于学校的课程和其它的琐事没有找工作,虽然有做过一些课程上的小项目,但都不能满足我。大三马上就结束了,所以还是尽快找个工作,也只有在工作中才能用我所学,也能学到更多新东西,学习才更有动力、更有激情!

THE END
1.Java实现仓库货品管理程序——一步步打造高效库存系统!文章浏览阅读106次,点赞2次,收藏2次。嗨!小伙伴们!你是否也为仓库的货品管理发愁?不管是数量太多,还是种类太杂,人工管理仓库常常会遇到“东找找西翻翻”的状况,效率低下、易出错。别担心,今天我们就一起来用Java语言实现一个仓库货品管理程序!它能帮你更好地管理https://blog.csdn.net/weixin_66592566/article/details/143780918
2.Java进销存系统源码进销存管理系统开源blueice的技术博客Java进销存系统源码 进销存管理系统开源 海鸥云ERP–开源ERP管理系统 项目介绍 开源ERP管理系统,该系统前后端分离,包含PDA移动端扫码操作,api使用restful协议,方便二次开发,后端使用Python,Django,DRF等技术,前端代码使用AntD进行构建,包含采购管理,销售管理,库存管理等业务管理流程。移动端使用Uniapp,包含产品标签打印,出https://blog.51cto.com/u_14555/6350015
3.基于JavaSwing技术的企业进销存管理系统的设计与实现期刊[1]赵安学,胡瑞镇.基于JAVAEE的订单管理系统的设计与实现[J].科技创新与应用.2021,(4). [2]赵晓蕊,李佳豪,魏艳红.基于JAVA的农产品惠购平台的设计与实现[J].科学技术创新.2021,(23).DOI:10.3969/j.issn.1673-1328.2021.23.042. [3]谢登科,丁一.基于java的企业进销存管理系统[J].电脑与信息技术.2020,(3https://d.wanfangdata.com.cn/periodical/xdgyjjhxxh202202067
4.Eclipse+Java+Swing+Mysql实现进销存管理系统一、系统介绍 1.开发环境 开发工具:Eclipse2021 JDK版本:jdk1.8 Mysql版本:8.0.13 2.技术选型 Java+Swing+Mysql 3.系统功能 1.登录系统 2.商品管理 3.入库管理 4.出库管理 5.仓库管理 6.用户管理 二、系统展示 1.登录系统 Image 1.jpg 2.首页 https://www.jianshu.com/p/a0c02b6d924d
5.计算机毕业设计java+ssm生鲜超市进销存管理系统(源码+系统+mysql计算机毕业设计java+ssm生鲜超市进销存管理系统(源码+系统+mysql数据库+Lw文档).pdf,计算机毕业设计java+ssm?鲜超市进销存管理系统 (源码+系统+mysql数据库 +Lw?档) 项 ?介绍 ?前超市 来多, 来 普及,如何?效的管理经营超市才是成功的关键,其中对于中https://max.book118.com/html/2023/1110/7005034155006004.shtm
6.进销存Finer 进销存系统是一款面向中小企业的管理软件,基于二十多年的中小企业管理经验,由ERP领域的资深专家分析设计; 以jeecgboot(Vue2)为基础平台开发,前后端分离架构SpringBoot2.x、Ant Design&Vue、Mybatis-plus、Shiro、JWT; 具有方便快捷的定制和二次开发能力,在jeecgboot支撑下,利用其强大的代码生成器,无需写任何代https://gitee.com/FINERME/psi
7.德米萨进销存企业综合D8S企业综合管理系统进销存管理 功能/适用行业: 适用企业:集团化企业,事业行政单位,大型企业,中小型企业 价格:1万-5万元 开发商:上海德米萨信息科技有限公司 在线客服 专家咨询1319197240418531247735 软件全新技术架构: 德米萨智能办公平台全部采用当前主流的B/S技术架构,支持本地、局域网、互联网使用。且系统支持所有主流浏览器操作,从ios到https://www.xuanruanjian.com/soft/msg/64327.phtml
8.旺店通erp官网电商erp系统进销存软件成立之初,慧策最先以旺店通ERP切入商家核心管理痛点——订单管理, 之后围绕电商经营管理中的核心管理诉求,先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通ERP起步,向前向后延伸,全面布局零售企业经营,整体构建一体化智能零售解决方案,打破数据孤岛,AI植入系统,实现智能决策,助力零售企业智https://www.wangdian.cn/about
9.完整的进销存ERP管理系统源码+小程序ERP系统/进销存/仓库系统,该系统为vs2012 .net+MSSQL+小程序,包含功能: 1、电商管理 2、销售管理 3、采购管理 4、生产管理 5、仓库管理 6、财务管理 7、采购报表 8、销售报表 9、生产报表 10、仓存报表 11、资金报表 12、基础资料 注意事项: 1、开发环境为Visual Studio 2012,数据库为SQL SERVER2012R2,使https://www.iteye.com/resource/yjxiyang-13643668
10.综合行政执法系统进销存软件免费版仓库管理软件免费版一凌网SAAS服务平台是在线云服务平台,在互联网+理念推动下为用户提供各类在线云端企业管理软件。目前有综合行政执法系统、凌云ERP、销售过程管理系统、仓库管理软件免费版、云端OA、免费进销存系统等多款软件。http://www.china-saas.com/
11.基于SpringBoot库存管理系统,附源码!腾讯云开发者社区Finer进销存是一款面向中小企业的供销链管理系统,基于J2EE快速开发平台Jeecg-Boot开发,采用前后端分离架构:SpringBoot2.x,Ant Design&Vue,Mybatis-plus,Shiro,JWT。项目基于十多年的中小企业管理经验,由ERP领域的资深专家设计;产品分为基础版、标准版、企业版三个版本,可适应不同的管控流程;对于灵活多样的个性化的管理https://cloud.tencent.com/developer/article/1846276
12.淘源码Java进销存ERP管理系统源码 JAVA版WMS仓储管理系统源码 物流仓库管理系统源码 Java外卖小程序源码 点餐小程序源码带管理后台 Java协同办公OA系统源码 JAVA微信小程序商城源码带完整后台运行版 .NET源码查看更多 > ASP.NET可视化流程设计器源码 超市进销存系统管理源码 超市管理系统源码 (CS架构) http://www.ydmdd.com/
13.进销存标准版德米萨进销存软件专业版面向企业采购、销售、库存、财务、售后、人事行政等人员,提供客户管理、客户跟踪、销售管理、产品管理、供应商管理、采购管理、仓库管理、财务管理、物流管理、售后服务等业务管理功能,帮助企业全面管理进销存业务。http://www.dimix.net.cn/productinfo/1284554.html
14.Java毕业设计选题50例基于web的酒店管理系统的设计与实现 西安市商品房屋登记管理系统 香水博物馆管理系统的设计与实现 基于JSP的电影院售票系统 医院人事管理系统 基于web的 高校社团管理系统设计与实现 4.java方面的毕业论文 基于ssh的超市进销存管理系统的设计论文 基于SSH的电影评论网站的设计与实现论文 https://www.bjpowernode.com/hot/1997.html