【springmvc+mybatis项目实战】杰信商贸-1.项目背景
1.项目背景
杰信项目物流行业的项目,
杰信商贸是国际物流行业一家专门从事进出口玻璃器皿贸易的公司。公司总部位于十一个朝代的帝王之都西安,业务遍及欧美。随着公司不断发展壮大,旧的信息系统已无法满足公司的快速发展需求,妨碍公司成长,在此背景下,公司领导决定研发《杰信商贸综合管理平台》。
《杰信商贸综合管理平台》分三期完成。一期完成仓储管理(包括:采购单、仓库、货物、条形码、入库、出库、退货、盘点、库存、库存上限报警、统计查询)和展会管理(包括:展会管理、出单管理),形成货物统一数字化管理。二期完成货运全流程管理,包括购销合同、出货表统计、出口报运单、HOME装箱单、装箱单、委托书、发票、财务统计等。三期完成决策分析(包括:成本分析图、销售情况统计、重点客户、经营情况同期比对统计、工作绩效),为公司经营决策提供数据支持。
我们解释一下一些名词:
一期的名词:
(1)仓储管理:货物储存在仓库里,每种货物有不同的分类,想取某个商品,需要在较短时间内精确的取出。这个时候就不是简单的将货物堆叠,比如我们哪些产品卖得好,就放在门口或者好取的地方,不好卖的放在里面。
总的来说就仓储管理是对货物进行合理分配使之能够迅速获取所需货物的管理方法。
(2)采购单:从供应商手中买东西,需要一个订单
(3)条形码:给每个货物上贴一个条形码,条形码的值怎么来的?条形码的杠杠粗细和数字并不是人画的,你给它一个编号规则(如jx0000),打印一个条形码就加1。和印刷厂联系,生产我们固定规则的条形码的不干胶,等到我们录入货物信息的时候,就把条形码信息给录进去,这个时候我们数据库中的货物就有一个唯一的条形码标志。关于扫描,我们日常超市使用的扫描器很贵,千把块钱(扫描精度非常高)。对我们企业来说,不需要那么精准的扫描器,我们可以使用手持的扫描枪(很多小超市使用扫描枪,不贵几十块钱至几百)。
硬件如何我们的软件系统挂钩?假设有一个界面是扫描界面,有一个input框,条码枪插到电脑上之后是有一个驱动的,安装驱动之后,条码枪扫到货物之后就会把相应编号填到input窗中,多个货物的编码可以用逗号链接,这样点击查询按钮就可以在数据库中查询了。
这里我们不需要软硬件结合的非常紧密,这样对系统的拓展性不好。我们硬件只完成扫描条形码,条形码直接传递给业务系统。硬件的任务就是,在当前鼠标的坐标点指向的输入框中填入扫描的条形码的编号,之后进行人为干预,点击"查询"就可以了(对输入框中的条形码的编号进行数据库的查询就可以了)。
(4)入库、出库、库存(ERP进销存系统):我们的货物生产之后放入仓库,也就是商品进行存储。货物出库就是从仓库取出,减去相应数值。库存的当前值就决定了仓库里货物的数量。
(5)退货:客户不接受货物,要记录货物是否被退货,要记录退货的信息。
(6)盘点:盘点仓库和货架上的货物,货物发生丢失损坏的情况,差值超过容忍范围就要追究负责人的责任。也就是再造一个账册,与库存的账册进行比对,其差值就是货物发生丢失损坏的情况。
(7)库存上限报警:反向。在五一或者十一热销日期,我们要提前备货,在原来库存的基础上进行货物增加,一旦货物小于规定的存储值,系统就会给出提示。
(8)统计查询:提供报表。
(9)展会管理:每个公司会有展台,展台上有样品。很多公司的销售机会都是在博览会获取的,在展台上展览公司的核心产品。这个时候展会的销售人员开始记录客户想要购买的货物的信息,愿意购买的价格,用户的联系方式等。展会上的客人有一个特点,看完一家就去下一家,不可能留有时间给销售人员记录信息,这样会流失一些不应该流失的单子。咱们前面有条形码,我们现场扫描之后系统从数据库取出货物信息,然后连接打印机出一个账单就可以了。这样即专业又节省客户时间。
我们接下来的编程主要就是实现二期
我们还需要打印Excel报表,需要熟练掌握报表的生成技术。
项目要分期吗?需要,但是我们这个项目只完成二期,在以后面试讲项目经验的时候就说自己来公司只负责二期的工作。
2.【面试】拿到新框架,如何下手
当到一家新的软件公司,公司给你一个新框架,让你完成一个简单模块的CRUD操作,你怎样完成?
步骤:
1)大概浏览一下说明的文档,了解软件解决什么问题,解决用户的什么需求
2)找jar,浏览它的核心框架,核心技术freemake(看到不了解的,百度,了解它的作用即可)
3)画图,画系统架构的草图
4)系统都是分层体系,都从后往前画。
a)看数据库配置文件,了解系统所连接的数据库,账号,密码
b)持久层
c)Dao 数据库访问层
d)Service 业务层
e)Controller/action 控制层
f)Jsp 视图层
找权限管理部门表,一般都是一个单表的CRUD操作。
找到模板,仿造模板,根据草图一步一步实现
遇到新的不了解的技术,应该怎么处理?百度,了解其作用即可。然后仿写。
3.用例图(了解业务)
了解业务,UML 用例图
业界画用例图 Rational rose UML 非常强大的工具(大公司)
用例图、类图、序列图、状态图(复杂状态流转时才画)
用PowerDesigner 画数据库建模
PD,ROSE都可以生产伪代码,但在实际业务中无人问津。
下面我们在用PowerDesigner 画用例图
我们在界面中这么设置:
我们按照上面的配置点击创建之后,界面如下图
画用例图的要点
1)角色:代表系统中的一类用户
2)用例:代表业务功能
3)连线关系:哪个角色操作哪些用例
画图的目的:为了开发人员了解整个系统的概貌,当画很多细节时,就会干扰我们对图的了解。
说明:我们的系统是内部系统,使用VPN才可以访问。外网访问的话我们把需要公布的信息使用WebService来对外提供。
我们画好的用例图如下
用例图是比较粗糙的,但是可以大致浏览系统功能。
细节可以用系统功能结构图来表示
4.系统功能结构图
1)功能点(分层,主次)演化成主菜单,左侧菜单,功能点
2)了解系统的所有功能
3)按功能点分配工作
4)用户报价的依据(按模块报价)
【springmvc+mybatis项目实战】杰信商贸-1.项目背景的更多相关文章
- Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码) 转 https://blog.csdn.net/lhl1124281072/article/details/800 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-11项目日志解决方案
本文目录1. Net下日志记录2. NLog的使用 2.1 添加nuget引用NLog.Web.AspNetCore 2.2 配置文件设置 2.3 依赖配置及调用 2.4 日志 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-10项目各种全局帮助类
本文目录 1. 前沿2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装3.XmlHelper快速操作xml文档4.SerializationHe ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-9项目各种全局帮助类
本文目录 1. 前沿2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装3.XmlHelper快速操作xml文档4.SerializationHe ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-8项目加密解密方案
本文目录1. 摘要2. MD5加密封装3. AES的加密.解密4. DES加密/解密5. 总结 1. 摘要 C#中常用的一些加密和解密方案,如:md5加密.RSA加密与解密和DES加密等,Asp.N ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-7项目缓冲方案( Redis)
本文目录1. 摘要2. Redis配置3. RedisHelper4.使用实例 5. 总结 1. 摘要 由于內存存取速度远高于磁盘读取的特性,为了程序效率提高性能,通常会把常用的不常变动的数据存储在 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-3项目架构说明
本文目录1. 摘要2. 框架介绍 3. 权限管理之多一点说明4. 总结 1. 摘要 NCMVC角色权限管理框架是由最近练习Net Core时抽时间整理的系统,后续能不能发展成一个cms还要看朋友们是 ...
- 【springmvc+mybatis项目实战】杰信商贸-7.生产厂家新增
我们要实现新的功能,就是生产厂家的新增先来回顾一下系统架构图我们数据库这边已经建好表了,接下来要做的就是mapper映射 编辑FactoryMapper.xml文件,加入“添加”的逻辑配置代码块 &l ...
- 【springmvc+mybatis项目实战】杰信商贸-6.重点知识回顾
1.重点知识回顾 Maven1)覆盖仓库文件,实际企业开发,公司会架一个测试服务器,在测试服务器中架私服.我们开发人员的程序,都连接私服.当本地没有项目中要使用的jar,Myeclipse maven ...
随机推荐
- java之sleep(),join(),yield(),wait(),notify()、notifyAll()区别
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...
- Java语言实现简单的登陆注册
1.登录注册 1.1数据库设计 create table USER_INFO( id number not null, name ) not null, pass ) )insert into USE ...
- labview
1.labview适用于测试测量领域,用于快速构建PC端上位机程序 2.例子: 我的电气参数测试仪. 上位机软件比想象的做的快了十几天... 学校的创新基金可以交差了,界面还是个人比较满意了.. 上图 ...
- IOS开发,摄像头对焦状态监控
camera autofocus observer? I find the solution for my case to find when autofocus starts / ends. It' ...
- Oracle子查询之高级子查询
Oracle 高级子查询 高级子查询相对于简单子查询来说,返回的数据行不再是一列,而是多列数据. 1,多列子查询 主查询与子查询返回的多个列进行比较 查询与141号或174号员工的manager_id ...
- MySQL数据库安装配置步骤详解
MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Comple ...
- morphia 框架 mongodb内嵌查询
mongodb中存储的文档格式如下,实现查询fromdata下did和dvid为指定值的数据 { "_id": { "$oid": "553f4a9f ...
- ES6 imports用法
import defaultExport from "module-name"; import * as name from "module-name"; // ...
- python学习笔记:第4天 列表和元组
目录 基本数据类型:列表 基本数据类型:元组 补充知识 基本数据类型:列表 1. 列表的介绍 列表也是python的基础的数据类型之一,类似于Java中的数组一样,可以存放很多元素.列表是用括号括起来 ...
- Java学习笔记二十:Java中的内部类
Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...