企业进销存系统 绝对不是简单的 增删改查

进销存系统开发

企业信息系统\r\n绝对不是简单的\r\n增删改查!


这个进销存项目是我曾任职公司产品的一部分,但是那个产品展现层是用基于Swing的,数据访问层则是自己做的ORM。如果把那个东西搬过来的话同学们还要掌握Swing等,所以我用Struts2、Hibernate重写了一遍 。这个课程的目的是让同学们学习一个进销存项目,然后才是把以前学过技术融会贯通。\r\n把重点放到技术是怎么解决业务需求的!\r\n很多看似不重要的扯淡的地方其实是面试官经常问的地方,企业里面试并不会问太多技术上的东西,而是问很多关于项目的很多貌似扯淡的地方。因此需要特别注意。\r\n不要认为所有东西都要学,要培养“黑盒”的工作学习方法,以积极的心态面对新东西。


国内一流ERP产品的浓缩版,实现了所有的核心技术\r\n覆盖了开发企业级系统相关的大部分技术,能够轻松应对大部分技术问题\r\n学习此课程后你就会成为行业忽悠技术专家\r\n求职成功率非常高的实战项目

迫不及待了!先来演示一下要做的系统吧!

流程不是一成不变的


供应链管理系统(Supply Chain Managment,SCM)。另外还有一个SCM(Software Configration Managment )。\r\n进销存:进——进货、采购;销——销售;存——存储、仓储。\r\n主要的单据:入库单、出库单、盘点单(盘盈盘亏盘平)\r\n不像大家想像的,信息系统只是一个工具,并不能保证系统中记录的信息如实反映了真实的情况。盘点就是一个最典型的例子。盘点的主要动因:记账错误、丢失、腐蚀等。\r\n盘点在有的系统里被当成出入库处理:盘亏出库、盘盈入库\r\n盘点周期\r\n盘点分为:停业盘点和动态盘点。动态盘点不打断正常的出入库,在盘点完成后进行计算得出盘点结果,缺点是有可能造成盘点失误概率加大。下面讲解动态盘点算法。


要你实现动态盘点你会怎么办?


动态盘点

盘点结果是什么?


什么是帐套?帐套就是一套帐,有两个用处:一个是内外两套账,一个是年底结帐后切换帐套。\r\n基础资料:操作员、客户、供应商\r\n商品、计量单位(计量单位转换、基本计量单位、无固定转换关系的计量单位)\r\n商品资料管理、条形码\r\n演示入库、出库、生成盘点的整个流程\r\n下发安装程序


这笔记错了,其实是收入100


为什么要红冲操作?什么叫红单?红冲是为了保留痕迹。这也是会计准则要求的。

你以为这是电线杆呀,想怎么涂怎么涂!


万恶的【修改】、【删除】按钮,可爱的【确认】按钮,可恨的【反确认】按钮。病人给医生开药方。(可以和面试官交流的地方)\r\n有很多业务问题:应收、应付、坏账、商品拆零、库存预警(最大库存、最小库存)、一品多码、一品多价、多包装单位管理(有固定换算关系和没有固定换算关系的,基本计量单位)\r\n技术特点(可以和面试官交流的地方)\r\n访问量小但是数据处理量大。 IO不高,对数据库压力大,服务器计算压力大(排程运算、合并报表)\r\n数据实时性要求高、很少有缓存等要求。一定要关闭Hibernate缓存!\r\n对可操作性要求高,比如全键盘。某一知名CRM的在线使用感受\r\n安全性要求不高(靠内控)



为什么看这个?了解进销存的场景,不要穿帮。\r\n超市的总配送中心和每个分店的仓库是不一样的。每个城市都有一个大的分拣配送中心。主要是为了降低成本,市内占地成本太高,而且交通不方便。\r\n重点关注IT技术在进销存系统中的应用。分拣配送中心、自动立体库、货位、条码扫描、射频、无线技术、上位机、电子标签\r\n仓库整体演示:自动化立体仓库全局演示.flv、立体仓库-箱式全自动立体仓库作业演示.flv\r\nAVG:1‘19物流中心无人自动搬运小车运作演示.flv\r\n自动识别硬件演示:0‘31自动识别技术在物流系统中的应用演示.flv、超市配送中心分拣系统操作演示.flv\r\n耐克物流中心作业演示.flv\r\n物流自动化立体库.rm。前15分钟,入库。41分以后盘点


重点关注如何用技术解决业务问题,技术细节是次要的。\r\n简化技术实现,比如没有使用DAO,而是直接在Action中写DB操作,ListUI和EditUI也是直接Copy。\r\n一个真实的进销存系统,哪怕是最简单的进销存系统也需要几个人开发几个月的时间,在课堂上不可能把每个业务功能都实现。\r\n浏览器统一都用IE,企业系统也是这么要求的。\r\n进销存系统一般都要与硬件相配合,但是我们主要是搞软件开发,所以硬件部分不做重点介绍。一般硬件都会有硬件厂商提供指令接口供调用,甚至像条码扫描枪就是一个模拟键盘。\r\n多动手、别小看。眼高手低是大敌。


MYSQL数据库、Eclipse、数据库客户端我使用QumtumDB插件,大家随意。\r\nMySQL的备份与回复,有传智特色的问题。\r\n为什么要自己写SQL脚本,而不是用Hibernate的hbm2ddl?方便实施人员,还有初始数据。实际项目中都是要提供SQL语句的,不可能让实施人员以及客户方技术人员再去学Hibernate。方便调优。以前的班的一些同学执意用hbm2ddl,到最后跟不上我的速度,在这个项目中请大家都用SQL的方式操作,这也是锻炼SQL语句的好时候,不要过度依赖工具。


使用Jetty可以免去安装Tomcat,部署简单,简化实施人员和客户技术人员的工作难度\r\n开发、调试方便,不用频繁的Deploy\r\n不依赖于IDE,不依赖于Web服务器代码可以互相拷贝。老师开发的工程可以直接拷贝到学生的电脑就可以运行,不必依赖于MyEclipse等开发工具。\r\n不用关心Jetty具体用法,当成黑盒,简单知道Jetty用法即可。


项目还是产品?\r\n在哪儿开发的问题。在客户现场。\r\n采用什么开发方式?敏捷。简单说一下什么是敏捷,并且描述一下工作场景。


与客户交流过程中的感想(出彩的地方!!!)\r\n不要直接把客户说的话翻译成代码,客户说的经常是错的,比如用户说删除不一定是Delete,也许只是Hide\r\n客户是傻帽,不要把客户当专家,他是什么都不懂所以让你给他提出方案,不要说“你想要什么功能”,而是说“我们要做这样一个功能,你看可以吗”。教育客户和引导客户。\r\n不要向用户说技术,说用户的语言。技术只是实现手段,只有解决客户的问题,软件才有价值。技术是程序员的,应用是客户的。\r\n要拥抱变化,“永远不会变的是变化”,别想着跟客户签字盖章\r\n客户是甲方、客户是大爷(甲方意识,和客户拍桌子的故事)\r\n客户内部政治,项目调研与实施不是一帆风顺的


要正确的理解用户的需求,但是一次就完全、正确理解客户需求是不可能的,要让客户积极、全面的参与,频繁迭代,这也是敏捷XP的精髓。


原型设计。Visio\r\n架构设计,技术选型。性能指标、使用什么数据库、使用什么服务器、使用什么部署方式、使用什么架构\r\n开发—测试(有的项目中是客户代为测试)—修正(修改)开发—测试……子子孙孙无穷溃也。\r\n文档(说明书)编写,验收文档编写\r\n验收。(难熬的验收前夜,重点说一下,说怎么加班熬夜改Bug)\r\n协同开发、源码管理、文档管理、进度管理\r\n后期维护


由于搭建初始工程过程烦琐,但是涉及到的知识大部分同学都非常熟悉了,所以这些工作就不浪费时间了。\r\n这也符合企业中的开发模式,通常都是由一个人开发一个初始框架,然后大家基于这个框架进行开发。(面试可能会问)\r\n初始工程包含的内容:\r\n基本的Eclipse工程,Web工程结构,Jetty代码\r\nStruts配置,Hibernate配置,Hibernate工具类PSIUtils\r\n登录界面,用户管理界面\r\n主菜单\r\n把初始工程发给大家,然后指导大家Run起来,不要小看这个过程。