目录
1.系统可行性分析
1.1技术可行性分析
主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。图书馆管理系统的工作主要是在读者和图书馆之间架起一座桥梁,能相互沟通信息和处理信息。这一特点非常适合计算机特点,通过网络internet技术,发挥计算机的信息传输速度快、准确度高的优势。计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。
1.2经济可行性分析
根据上述的系统功能分析可将本系统划分成十个模块,以下对各个模块进行系统用例分析。
1.投资:
(1)研究(需求的研究和设计的研究);
(2)开发计划与测量基准的研究;
(3)数据库的建立;
(4)检查费用和技术管理性费用;
(5)培训费、旅差费以及开发安装人员所需要的一次性支出;
(6)设备的租金和维护费用;
(7)软件的租金和维护费用;
(8)数据通讯方面的租金和维护费用;
2.收益:
在整个生命期内由于运行所建议系统而导致的按月的、按年的能用人民币数目表示的收益,包括开支的减少和避免。尤其是一些不定量的收益,因为并不是谋利系统,是为老师和学生服务的系统,间接提高学校的名誉和提高对外界的形象分值,间接带来不可估量的效益。
1.3社会因素方面的可行性分析
法律因素:由于所有软件都用正版,技术资料都由提出方保管,数据信息均可保证合法来源。所以,在法律方面是可行的。
2.系统需求分析
2.1 系统功能需求分析
2.1.1 功能分析
为实现门店规模化发展的需求,本系统需要支持多门店管理和员工管理,为了提高运营和管理效率,本系统将销售端和管理端整合,提供一站式服务。
后端具体功能如下:
ADMIN登录:验证账号密码是否正确,并检查用户是否为管理员权限。
员工信息维护:维护每个店铺的员工信息。
员工登录:验证账号密码是否正确,并检查用户是否为用户权限。
销售模块:员工登录成功后进入销售界面,包括查询商品价格功能,查询商品库存、计算找零、销售商品功能。
店铺信息维护:多门店核心模块,维护店铺信息,管理员可创建多个店铺信息。
商品信息维护:维护每个店铺内的商品信息。
盘点信息维护:维护每个店铺的盘点信息,用于核查实际库存。
员工订单维护:维护员工所在店铺的订单信息,销售操作失误时可通过本模块删除或修改。
ADMIN订单维护:维护每个店铺的订单信息,可删除修改旗下店铺所有订单信息。
数据统计功能:统计每个店铺销售数据、库存数据,支持实际统计和历史统计。
访问拦截与权限控制功能:拦截所有请求,符合接口访问规则才放行。
前端具体功能如下:
登录页面:输入账号密码,登录进入系统。
员工信息维护页面:本页面能够维护每个店铺的员工信息。
销售页面:本页面能够查询商品价格功能,查询商品库存、计算找零、销售商品功能。
店铺信息维护页面:本页面能够维护店铺信息。
商品信息维护页面:本页面能够维护每个店铺内的商品信息。
盘点信息维护页面:本页面能够维护每个店铺的盘点信息,用于核查实际库存。
员工订单维护页面:本页面能够维护员工所在店铺的订单信息,销售操作失误时可通过在本页面进行删除或修改操作。
ADMIN订单维护页面:本页面能够维护每个店铺的订单信息,可删除修改旗下店铺所有订单信息。
数据统计页面:本页面能够显示每个店铺销售数据、库存数据,支持实际统计和历史统计。
2.1.2 系统用例分析
根据上述的系统功能分析可将本系统划分成十个模块,以下对各个模块进行系统用例分析。
1.员工信息维护模块
该模块用于管理员维护每个店铺的员工信息,包括了插入、删除、修改、查询员工以及登录功能。该用例图的模型如图1.1所示。
2.店铺信息维护模块
该模块用于维护店铺信息,包括插入,删除,修改,查询店铺功能。该用例图的模型如图1.2所示。
图1.2店铺管理用例图
3.商品信息维护模块
该模块用于维护每个店铺的商品信息,包括插入、删除、修改、查询商品。该功能的用例图模型如图1.3所示。
图1.3商品管理用例图
4.库存信息维护模块
该模块用于维护每个店铺的库存信息,包括插入,删除,修改,查询库存。该功能的用例图模型如图1.4所示。
图1.4库存管理用例图
5.管理员订单维护模块
该模块用于维护每个店铺的订单信息,包括删除、修改、查询订单。该功能的用例图模型如图1.5所示。
6.员工订单维护模块
该模块用于维护员工所属店铺的订单信息,包括插入、删除、修改、查询订单。该功能的用例图模型如图1.6所示。
图1.6员工订单管理用例图
7.盘点信息维护模块
该模块用于维护每个店铺的盘点信息,包括盘点库存、插入、修改、删除盘、查询盘点记录。该功能的用例图模型如图1.7所示。
图1.7盘点管理用例图
8.数据统计模块
该模块用于统计店铺销量、库存数据,包括查询实时销量及库存、查询历史销量及库存。该功能的用例图模型如图1.8所示。
图1.8数据统计用例图
9.销售管理模块
该模块用于销售商品,包括查询商品价格、查询商品库存、计算找零、销售商品。该功能的用例图模型如图1.9所示。
图1.9销售管理用例图
10.访问拦截与权限控制模块
该模块用于拦截所有请求,符合接口访问规则才放行,包括管理员登录、员工登录、访问拦截、权限控制。该功能的用例图模型如图1.10所示。
图1.10访问拦截与权限控制用例图
2.2 系统非功能需求分析
2.2.1 运行需求分析
本系统可运行在Window或Linux系统,服务器硬件最低要求1核2G,带宽1M,以保障流畅运行,并且需要Mysql5.7及以上版本、JRE1.8环境支持。前端用浏览器就能使用。
本系统对硬件要求较低,适合大部分设备运行。
2.2.2 性能需求分析
本系统所有接口请求时间会控制在1秒内,除非发生异常或受数据库性能限制。并且支持多线程并发访问,本系统通过事务、锁保证并发安全。
本系统在低配置硬件中也能流程运行,满足一般门店使用需求。
2.2.3 界面需求分析
本系统前端界面使用Layui设计,简洁、美观、大方、功能清晰有序,易于上手对操作人员要求低。
2.2.4 其他需求分析
保密性需求:
数据库中的密码采用SHA3加密存储,避免密码泄露,数据库密码采用强密钥,防止数据泄露。
安全性需求:
员工无法访问管理员接口,管理员也无法访问员工接口,从而实现权限隔离,避免越权操作。
可靠性需求:
使用Hibernate Validate校验前端数据,使用事务、锁保证并发安全,使用统一异常处理拦截异常。保证系统正常运行。
3.系统设计
3.1 系统总体设计
3.1.1 需求规定
1.员工管理
员工管理由管理员进行操作,用户要先以管理员身份登录本系统后方可使用创建员工账号、修改员工信息、删除员工账号、查询员工账号列表功能。
输入:员工编号、店铺编号、员工姓名、手机号、账号、密码。
处理过程描述:先检查用户是否具有管理员身份,然后让用户选择店铺,再显示此店铺的员工信息列表,用户可在列表上进行删除或修改操作,也可以新建员工账号,并保存信息到数据库。
输出:操作成功或失败的提示信息或查询结果。
2.店铺管理
店铺管理由管理员进行操作。
输入:编号、店铺名、经度、维度、地址名。
处理过程描述:先检查用户是否具有管理员身份,再显示此用户的所有店铺信息列表,用户可在列表上进行删除或修改操作,也可以新建店铺,并保存信息到数据库。
输出:操作成功或失败的提示信息或查询结果。
3.商品管理
商品管理由管理员进行操作,用户要先以管理员身份登录本系统后方可使用创建商品、修改商品信息、删除商品、查询商品信息列表功能。
输入:商品编号、店铺编号、商品名、商品价格。
处理过程描述:先检查用户是否具有管理员身份,然后让用户选择店铺,再显示此店铺的商品信息列表,用户可在列表上进行删除或修改操作,也可以新建商品信息,并保存信息到数据库。
输出:操作成功或失败的提示信息或查询结果。
4.库存管理
库存管理由管理员进行操作,用户要先以管理员身份登录本系统后方可使用添加库存、修改库存、删除库存、查看商品库存列表功能。
输入:库存编号、店铺编号、商品编号、库存数量。
处理过程描述:先检查用户是否具有管理员身份,然后让用户选择店铺,再显示此店铺的库存信息列表,用户可在列表上进行删除或修改操作,也可以新建库存信息,如果是新建、修改操作,还需选择商品,对指定商品进行操作,并把数据保存到数据库。
输出:操作成功或失败的提示信息或查询结果。
5.管理员订单管理
管理员订单管理由管理员进行操作,用户要先以管理员身份登录本系统后方可使用修改订单信息、删除订单、查看订单列表功能。
输入:订单编号、订单详情编号、店铺编号、购买数量、单价、时间段。
处理过程描述:先检查用户是否具有管理员身份,然后让用户选择店铺并输入时间段,再根据时间段筛选并显示此店铺的订单列表,用户可在列表上进行删除或修改操作,并把数据保存到数据库。
输出:操作成功或失败的提示信息或查询结果。
6.员工订单管理
员工订单管理由员工进行操作,用户要先以员工身份登录本系统后方可使用修改订单信息、删除订单、查看订单列表功能。
输入:订单编号、订单详情编号、购买数量、单价、时间段。
处理过程描述:先检查用户是否具有员工身份,然后让用户输入时间段,再根据时间段筛选并员工所在店铺的订单列表,用户可在列表上进行删除或修改操作,并把数据保存到数据库。
输出:操作成功或失败的提示信息或查询结果。
7.盘点管理
盘点管理由管理员进行操作,用户要先以管理员身份登录本系统后方可使用提交盘点、修改盘点信息、删除盘点、查看盘点记录列表功能。
输入:盘点编号、店铺编号、商品条形码、盘点数量、时间段。
处理过程描述:先检查用户是否具有管理员身份,然后让用户选择店铺并输入时间段,再根据时间段筛选并显示此店铺的盘点记录列表,用户可在列表上进行删除或修改操作,也可新建盘点记录,并把数据保存到数据库。
输出:操作成功或失败的提示信息或查询结果。
8.数据统计
数据统计由管理员进行操作,用户要先以管理员身份登录本系统后方可使用查询实时销量及库存、查询历史销量及库存功能。
输入:店铺编号、时间段。
处理过程描述:先检查用户是否具有管理员身份,然后让用户选择店铺并输入时间段,再根据时间段筛选并显示此店铺的历史销量及库存,如果是查询实时销量及库存,则只选择店铺即可。
输出:操作成功或失败的提示信息或查询结果。
9.销售
销售由员工进行操作,用户要先以管理员身份登录本系统后方可使用查询商品信息、计算找零、提交订单功能。
输入:商品条形码,商品编号,商品单价,购买数量。
处理过程描述:先检查用户是否具有员工身份,然后让用户输入条形码,再根据条形码查询商品信息并添加到销售列表,用户可在列表进行修改或删除操作,最后提交订单并保存到数据库。
输出:操作成功或失败的提示信息或查询结果。
10.访问拦截与权限控制
访问拦截与权限控制是系统的安全模块,此模块负责拦截未登录请求、越权请求,保证接口的合法调用。
输入:无。
处理过程描述:先检查请求是否携带Cookie,再取Cookie中的信息判断是否已登录,是否具有接口所要求的权限,如:管理员权限、员工权限。
输出:如果未登录,跳转至登录页,如果无权访问,提示无权访问信息。
3.1.2 运行环境
操作系统:Window10或Centos8。
处理器:1核2G。
带宽:1M。
数据库:Mysql5.7。
Java环境:JDK1.8。
3.1.3 总体结构
多门店零售系统由十个模块组成,分别是店铺管理模块、员工管理模块、商品管理模块、库存管理模块、管理员订单管理模块、员工订单管理模块、盘点管理模块、数据统计模块、销售模块、访问拦截与权限控制模块。
从总体结构中可了解到本系统的大致功能,多门店零售系统的总体结构如图2.9所示。
图2.9系统总体结构图
3.1.4 模块与功能需求的关系
本节介绍每个模块所实现的功能需求,以用户需求为导向进行开发,每个模块分工明确,共同组成了一个完整的系统,多门店零售系统各个模块对应的功能需求如表2.1所示。
表2.1 模块与功能需求关系表
模块名 | 功能需求 |
员工管理 | 维护员工信息,创建员工账号 |
店铺管理 | 维护店铺信息,实现多门店管理 |
商品管理 | 维护商品信息,多门店共用 |
库存管理 | 维护库存信息,针对指定门店 |
盘点管理 | 维护盘点信息,针对指定门店 |
管理员订单管理 | 维护管理员订单,可以维护所有店铺 |
员工订单管理 | 维护员工订单,只能维护员工所在店铺 |
销售 | 查询商品信息,找零,生成订单 |
数据统计 | 查询实时、历史销量及库存 |
访问拦截与权限控制 | 登录、接口权限隔离 |
3.2 系统功能设计
本节介绍多门店零售系统的功能模块,并简要说明每个功能模块的用途。
3.2.1 员工管理模块
员工管理子模块用于管理员维护每个店铺的员工信息,通过此模块创建员工账号并提供给员工,员工就可以登录本系统的销售端对店铺内的商品进行销售。模块子功能为:添加员工、修改员工、删除员工、查询员工。
3.2.2 店铺管理模块
店铺管理子模块是实现多门店管理的核心,许多模块都依赖本模块,管理员通过此模块创建多个店铺,每个店铺的员工、库存、商品、订单等信息独立而不互相干扰,并且管理员可同时管理不同店铺的数据。模块子功能为:添加店铺、修改店铺、删除店铺、查询店铺。
3.2.3 商品管理模块
商品管理子模块可添加、删除、修改、查询商品,商品主要有商品名、价格、序列号等信息,商品在多个店铺中共享,但只有管理员给某商品设置库存,此商品才真正被添加到店铺中。模块子功能为:添加商品、修改商品、删除商品、查询商品。
3.2.4 库存管理模块
库存管理子模块用于维护商品库存信息,通过商品模块可查询现有商品,通过库存管理模块设置商品库存,该商品就会被添加到店铺中。模块子功能为:添加库存、修改库存、清空库存、查询库存。
3.2.5 管理员订单管理模块
管理员订单管理子模块用于维护每个店铺的订单信息,支持时间段筛选,如果订单有误,可通过此模块进行修正。模块子功能为:添加订单、修改订单、删除订单、查询订单。
3.2.6 员工订单管理模块
员工订单管理子模块用于维护员工所属店铺的订单信息,一般用于纠正或删除错误订单。模块子功能为:添加订单、修改订单、删除订单、查询订单。
3.2.7 盘点管理模块
盘点管理子模块用于管理员盘点店铺中各个商品的库存,通过此模块可随时检查库存异常并修正,是排查错误的重要手段。并提供历史盘点记录查询功能,以供日后修正使用。模块子功能为:盘点库存、添加盘点记录、修改盘点记录、删除盘点记录、查询盘点记录。
3.2.8 数据统计模块
数据统计子模块用于管理员查询实时销量、库存,历史销量、库存,然后根据统计数据调整商品库存、价格。查询实时销量及库存。模块子功能为:查询历史销量及库存、查询实时销量及库存。
3.2.9 销售模块
销售子模块用于员工销售所属店铺的商品,此模块提供了计算找零、查询商品价格、查询商品库存等核心功能,可以简化销售流程,减少出错。模块子功能为:查询商品价格、查询商品库存、计算找零、销售商品。
3.2.10 访问拦截与权限控制模块
访问拦截与权限控制子模块用于拦截请求,认证通过后再放行,该模块是多门店零售系统安全性的保证,本模块实现了员工和管理员的接口分离,模块子功能为:管理员登录、员工登录、访问拦截、权限控制。
3.3 数据库设计
数据库设计阶段主要考虑如何存储系统所需的数据,设计良好的表结构和适当的使用索引可以很大程度上提高系统的性能和系统所能存储的数据量。同时在数据库设计时也要遵循一些规范,这样可以降低后期维护的难度。
3.3.1 E-R图设计
1、总体E-R图
本系统共有八个表,分别是:店铺表、用户表、商品表、库存表、库存日志表、盘点表、订单表、订单详情表,具体关系如图2.10所示。
图2.10 总体E-R图
2.店铺表主要有店铺名,经度,维度,地址名等字段。店铺表E-R图,如图2.11所示。
图2.11店铺表E-R图
3.用户表主要有姓名、账号、密码、是否为管理员、所属店铺、手机号等字段。用户表E-R图,如图2.12所示。
图2.12用户表E-R图
4.订单表主要有店铺编号、用户编号、创建时间等字段。订单表E-R图,如图2.13所示。
图2.13订单表E-R图
5.订单详情表主要有订单编号、商品编号、正常价格、实际价格、数量、创建时间等字段。订单详情表E-R图,如图2.14所示。
图2.14订单详情表E-R图
6.商品表主要有商品名、价格、条形码等字段。商品表E-R图,如图4.15所示。
图2.15商品表E-R图
7.盘点表主要有店铺编号、商品编号、数量、创建时间等字段。盘点表E-R图,如图2.16所示。
图2.16盘点表E-R图
8.库存日志表主要有店铺编号、商品编号、数量、创建时间等字段。库存日志表E-R图,如图2.17所示。
图2.17库存日志表E-R图
9.库存表主要有店铺编号、商品编号、数量、创建时间等字段。库存表E-R图,如图2.18所示。
图2.18库存表E-R图
3.3.2 表设计
本系统采用Mysql5.7作为数据库,所有表使用InnoDB引擎,其提供了事务和行锁支持,具体表设计如下。
1.用户表
用户表用于保存员工信息,字段为编号、姓名、手机号、账号、密码、是否为管理员、店铺id,具体内容如表2.2所示。
表2.2用户表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
name | varchar | 255 | × | 否 | 姓名 |
phone | varchar | 255 | × | 否 | 手机号 |
user | varchar | 255 | × | 否 | 账号 |
password | varchar | 255 | × | 否 | 密码 |
isAdmin | varchar | 255 | × | 否 | 是否为管理员 |
storeId | int | 11 | × | 否 | 店铺id |
2.订单表
订单表用于保存商品销售记录,字段为编号、用户id、店铺id、时间,具体内容如表2.3所示。
表2.3订单表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
userId | int | 11 | × | 否 | 用户id |
storeId | int | 11 | × | 否 | 店铺id |
time | datetime | 0 | × | 否 | 时间 |
3.店铺表
店铺表用于保存店铺信息,字段为编号、店铺名、经度、维度、地址名,具体内容如表2.4所示。
表2.4店铺表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
storeName | varchar | 255 | × | 否 | 店铺名 |
x | decimal | 10,7 | × | 否 | 经度 |
y | decimal | 10,7 | × | 否 | 纬度 |
address | varchar | 255 | × | 否 | 地址名 |
4.订单详情表
订单详情表用于保存订单详细信息,字段为编号、订单id、商品id、正常价格、实际价格、时间,具体内容如表2.5所示。
表2.5订单详情表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
orderId | int | 11 | × | 否 | 订单id |
commodityId | int | 11 | × | 否 | 商品id |
actualPrice | float | 10 | × | 否 | 正常价格 |
quantity | int | 11 | × | 否 | 实际价格 |
time | datetime | 0 | × | 否 | 时间 |
5.商品表
商品表用于保存商品信息,字段为编号、商品名、价格、条形码,具体内容如表2.6所示。
表2.6商品表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
name | varchar | 255 | × | 否 | 商品名 |
price | float | 10 | × | 否 | 价格 |
barcode | varchar | 255 | × | 否 | 条形码 |
6.盘点表
盘点记录表用于保存库存盘点记录,字段为编号、店铺id、商品id、数量、时间,具体内容如表2.7所示。
表2.7盘点表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
storeId | int | 11 | × | 否 | 店铺id |
commodityId | int | 11 | × | 否 | 商品id |
quantity | int | 11 | × | 否 | 数量 |
time | datetime | 0 | × | 否 | 时间 |
7.库存日志表
库存日志表用于保存库存变化日志,本表可在排查错误时发挥重要作用,字段为编号、店铺id、商品id、数量、时间,具体内容如表2.8所示。
表2.8库存日志表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
storeId | int | 11 | × | 否 | 店铺id |
commodityId | int | 11 | × | 否 | 商品id |
quantity | int | 11 | × | 否 | 数量 |
time | datetime | 0 | × | 否 | 时间 |
8.库存表
库存表字段为编号、店铺id、商品id、数量、时间,具体内容如表2.9所示。
表2.9库存表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 11 | × | 是 | 编号 |
storeId | int | 11 | × | 否 | 店铺id |
commodityId | int | 11 | × | 否 | 商品id |
quantity | int | 11 | × | 否 | 数量 |
time | datetime | 0 | × | 否 | 时间 |
3.3.3 功能模块与表的关系
本系统各个功能模块与数据库表的对应关系如下表2.10所示。
表2.10功能模块对应表
功能名称 | 数据表 |
员工管理模块 | 用户表 |
访问拦截与权限控制模块 | 用户表 |
店铺管理模块 | 店铺表 |
商品管理模块 | 商品表 |
库存管理模块 | 库存表 |
管理员订单管理模块 | 订单表、订单详情表 |
员工订单管理模块 | 订单表、订单详情表 |
盘点管理模块 | 盘点记录表 |
数据统计模块 | 订单表、库存表 |
销售模块 | 订单表、订单详情表、商品表 |