基于SpringBoot的超市信息管理系
✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
🍅文末获取项目下载方式🍅
一、项目背景介绍:
随着我国经济的不断发展,许多零售企业在发展过程中面临着业务不断增长,而管理水平相对滞后的困境。尤其是许多企业在逐年经营过程中,积累了大量历史数据,但是信息比较分散、相互独立。在信息技术迅猛发展的今天,处于竞争性行业的中小型零售企业如何在未来的市场竞争中借助信息化实时掌握营销动态,不断提升服务水平,提高资源配置水平和核心竞争力,成为他们不得不面对的问题。
在零售企业中引入超市信息管理系统,利用收银机将超市中各种商品的进货、退货、销售等信息输入电脑,使得经营管理者能够及时掌控经营信息,作出合适的各种采购及货物库存决策。
超市信息管理系统,可完成商品采购订货、销售、盘点库存、财务分析等管理功能,并对商品的购销存状态实时跟踪记录。本论文主要介绍超市信息管理系统中的系统登录、商品录入、库存管理、商品销售等部分内容,以展现设计一个完整信息管理系统的思路和步骤。
二、项目技术简介:
- JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
- Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
- SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
- Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。 - Thymeleaf:thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。
Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。
6. Redis:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
三、系统功能模块介绍:
四、数据库设计:
1:‘销售账单表’(bill)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 账单项目编号 |
product_id | varchar | NULL | 商品编号 |
product_name | varchar | NULL | 商品名称 |
category_id | bigint | NULL | 分类编号 |
category_name | varchar | NULL | 所属分类 |
purchase_price | decimal | NULL | 进货价 |
sale_price | decimal | NULL | 销售价 |
profits | decimal | NULL | 净利润 |
number | bigint | NULL | 购买数量 |
create_time | datetime | NULL | 创建日期 |
2:‘代码生成业务表’(gen_table)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
table_id | bigint | NULL | 编号 |
table_name | varchar | NULL | 表名称 |
table_comment | varchar | NULL | 表描述 |
sub_table_name | varchar | NULL | 关联子表的表名 |
sub_table_fk_name | varchar | NULL | 子表关联的外键名 |
class_name | varchar | NULL | 实体类名称 |
tpl_category | varchar | NULL | 使用的模板(crud单表操作 tree树表操作 sub主子表操作) |
package_name | varchar | NULL | 生成包路径 |
module_name | varchar | NULL | 生成模块名 |
business_name | varchar | NULL | 生成业务名 |
function_name | varchar | NULL | 生成功能名 |
function_author | varchar | NULL | 生成功能作者 |
gen_type | char | NULL | 生成代码方式(0zip压缩包 1自定义路径) |
gen_path | varchar | NULL | 生成路径(不填默认项目路径) |
options | varchar | NULL | 其它生成选项 |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
3:‘代码生成业务表字段’(gen_table_column)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
column_id | bigint | NULL | 编号 |
table_id | varchar | NULL | 归属表编号 |
column_name | varchar | NULL | 列名称 |
column_comment | varchar | NULL | 列描述 |
column_type | varchar | NULL | 列类型 |
java_type | varchar | NULL | JAVA类型 |
java_field | varchar | NULL | JAVA字段名 |
is_pk | char | NULL | 是否主键(1是) |
is_increment | char | NULL | 是否自增(1是) |
is_required | char | NULL | 是否必填(1是) |
is_insert | char | NULL | 是否为插入字段(1是) |
is_edit | char | NULL | 是否编辑字段(1是) |
is_list | char | NULL | 是否列表字段(1是) |
is_query | char | NULL | 是否查询字段(1是) |
query_type | varchar | NULL | 查询方式(等于、不等于、大于、小于、范围) |
html_type | varchar | NULL | 显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件) |
dict_type | varchar | NULL | 字典类型 |
sort | int | NULL | 排序 |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
4:‘商品表’(product)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
auto_id | int | NULL | 商品分类编号 |
id | varchar | NULL | 条形码 |
category_id | bigint | NULL | 商品分类编号 |
provider_id | bigint | NULL | 供应商编号 |
name | varchar | NULL | 商品名称 |
factory_address | varchar | NULL | 生产地址 |
purchase_price | decimal | NULL | 进货价 |
sale_price | decimal | NULL | 销售价 |
stock | int | NULL | 库存 |
5:‘商品分类表’(product_category)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | 商品分类编号 |
name | varchar | NULL | 商品分类名称 |
6:‘供应商表’(product_provider)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 供应商编号 |
name | varchar | NULL | 供应商名称 |
contact_name | varchar | NULL | 联系人姓名 |
contact_phone | varchar | NULL | 联系人电话 |
address | varchar | NULL | 供应商地址 |
7:‘Blob类型的触发器表’(qrtz_blob_triggers)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
trigger_name | varchar | NULL | qrtz_triggers表trigger_name的外键 |
trigger_group | varchar | NULL | qrtz_triggers表trigger_group的外键 |
blob_data | blob | NULL | 存放持久化Trigger对象 |
8:‘日历信息表’(qrtz_calendars)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
calendar_name | varchar | NULL | 日历名称 |
calendar | blob | NULL | 存放持久化calendar对象 |
9:‘Cron类型的触发器表’(qrtz_cron_triggers)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
trigger_name | varchar | NULL | qrtz_triggers表trigger_name的外键 |
trigger_group | varchar | NULL | qrtz_triggers表trigger_group的外键 |
cron_expression | varchar | NULL | cron表达式 |
time_zone_id | varchar | NULL | 时区 |
10:‘已触发的触发器表’(qrtz_fired_triggers)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
entry_id | varchar | NULL | 调度器实例id |
trigger_name | varchar | NULL | qrtz_triggers表trigger_name的外键 |
trigger_group | varchar | NULL | qrtz_triggers表trigger_group的外键 |
instance_name | varchar | NULL | 调度器实例名 |
fired_time | bigint | NULL | 触发的时间 |
sched_time | bigint | NULL | 定时器制定的时间 |
priority | int | NULL | 优先级 |
state | varchar | NULL | 状态 |
job_name | varchar | NULL | 任务名称 |
job_group | varchar | NULL | 任务组名 |
is_nonconcurrent | varchar | NULL | 是否并发 |
requests_recovery | varchar | NULL | 是否接受恢复执行 |
11:‘任务详细信息表’(qrtz_job_details)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
job_name | varchar | NULL | 任务名称 |
job_group | varchar | NULL | 任务组名 |
description | varchar | NULL | 相关介绍 |
job_class_name | varchar | NULL | 执行任务类名称 |
is_durable | varchar | NULL | 是否持久化 |
is_nonconcurrent | varchar | NULL | 是否并发 |
is_update_data | varchar | NULL | 是否更新数据 |
requests_recovery | varchar | NULL | 是否接受恢复执行 |
job_data | blob | NULL | 存放持久化job对象 |
12:‘存储的悲观锁信息表’(qrtz_locks)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
lock_name | varchar | NULL | 悲观锁名称 |
13:‘暂停的触发器表’(qrtz_paused_trigger_grps)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
trigger_group | varchar | NULL | qrtz_triggers表trigger_group的外键 |
14:‘调度器状态表’(qrtz_scheduler_state)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
instance_name | varchar | NULL | 实例名称 |
last_checkin_time | bigint | NULL | 上次检查时间 |
checkin_interval | bigint | NULL | 检查间隔时间 |
15:‘简单触发器的信息表’(qrtz_simple_triggers)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
trigger_name | varchar | NULL | qrtz_triggers表trigger_name的外键 |
trigger_group | varchar | NULL | qrtz_triggers表trigger_group的外键 |
repeat_count | bigint | NULL | 重复的次数统计 |
repeat_interval | bigint | NULL | 重复的间隔时间 |
times_triggered | bigint | NULL | 已经触发的次数 |
16:‘同步机制的行锁表’(qrtz_simprop_triggers)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
trigger_name | varchar | NULL | qrtz_triggers表trigger_name的外键 |
trigger_group | varchar | NULL | qrtz_triggers表trigger_group的外键 |
str_prop_1 | varchar | NULL | String类型的trigger的第一个参数 |
str_prop_2 | varchar | NULL | String类型的trigger的第二个参数 |
str_prop_3 | varchar | NULL | String类型的trigger的第三个参数 |
int_prop_1 | int | NULL | int类型的trigger的第一个参数 |
int_prop_2 | int | NULL | int类型的trigger的第二个参数 |
long_prop_1 | bigint | NULL | long类型的trigger的第一个参数 |
long_prop_2 | bigint | NULL | long类型的trigger的第二个参数 |
dec_prop_1 | decimal | NULL | decimal类型的trigger的第一个参数 |
dec_prop_2 | decimal | NULL | decimal类型的trigger的第二个参数 |
bool_prop_1 | varchar | NULL | Boolean类型的trigger的第一个参数 |
bool_prop_2 | varchar | NULL | Boolean类型的trigger的第二个参数 |
17:‘触发器详细信息表’(qrtz_triggers)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sched_name | varchar | NULL | 调度名称 |
trigger_name | varchar | NULL | 触发器的名字 |
trigger_group | varchar | NULL | 触发器所属组的名字 |
job_name | varchar | NULL | qrtz_job_details表job_name的外键 |
job_group | varchar | NULL | qrtz_job_details表job_group的外键 |
description | varchar | NULL | 相关介绍 |
next_fire_time | bigint | NULL | 上一次触发时间(毫秒) |
prev_fire_time | bigint | NULL | 下一次触发时间(默认为-1表示不触发) |
priority | int | NULL | 优先级 |
trigger_state | varchar | NULL | 触发器状态 |
trigger_type | varchar | NULL | 触发器的类型 |
start_time | bigint | NULL | 开始时间 |
end_time | bigint | NULL | 结束时间 |
calendar_name | varchar | NULL | 日程表名称 |
misfire_instr | smallint | NULL | 补偿执行的策略 |
job_data | blob | NULL | 存放持久化job对象 |
18:‘参数配置表’(sys_config)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
config_id | int | NULL | 参数主键 |
config_name | varchar | NULL | 参数名称 |
config_key | varchar | NULL | 参数键名 |
config_value | varchar | NULL | 参数键值 |
config_type | char | NULL | 系统内置(Y是 N否) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
19:‘部门表’(sys_dept)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
dept_id | bigint | NULL | 部门id |
parent_id | bigint | NULL | 父部门id |
ancestors | varchar | NULL | 祖级列表 |
dept_name | varchar | NULL | 部门名称 |
order_num | int | NULL | 显示顺序 |
leader | varchar | NULL | 负责人 |
phone | varchar | NULL | 联系电话 |
varchar | NULL | 邮箱 | |
status | char | NULL | 部门状态(0正常 1停用) |
del_flag | char | NULL | 删除标志(0代表存在 2代表删除) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
20:‘字典数据表’(sys_dict_data)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
dict_code | bigint | NULL | 字典编码 |
dict_sort | int | NULL | 字典排序 |
dict_label | varchar | NULL | 字典标签 |
dict_value | varchar | NULL | 字典键值 |
dict_type | varchar | NULL | 字典类型 |
css_class | varchar | NULL | 样式属性(其他样式扩展) |
list_class | varchar | NULL | 表格回显样式 |
is_default | char | NULL | 是否默认(Y是 N否) |
status | char | NULL | 状态(0正常 1停用) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
21:‘字典类型表’(sys_dict_type)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
dict_id | bigint | NULL | 字典主键 |
dict_name | varchar | NULL | 字典名称 |
dict_type | varchar | NULL | 字典类型 |
status | char | NULL | 状态(0正常 1停用) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
22:‘定时任务调度表’(sys_job)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
job_id | bigint | NULL | 任务ID |
job_name | varchar | NULL | 任务名称 |
job_group | varchar | NULL | 任务组名 |
invoke_target | varchar | NULL | 调用目标字符串 |
cron_expression | varchar | NULL | cron执行表达式 |
misfire_policy | varchar | NULL | 计划执行错误策略(1立即执行 2执行一次 3放弃执行) |
concurrent | char | NULL | 是否并发执行(0允许 1禁止) |
status | char | NULL | 状态(0正常 1暂停) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注信息 |
23:‘定时任务调度日志表’(sys_job_log)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
job_log_id | bigint | NULL | 任务日志ID |
job_name | varchar | NULL | 任务名称 |
job_group | varchar | NULL | 任务组名 |
invoke_target | varchar | NULL | 调用目标字符串 |
job_message | varchar | NULL | 日志信息 |
status | char | NULL | 执行状态(0正常 1失败) |
exception_info | varchar | NULL | 异常信息 |
create_time | datetime | NULL | 创建时间 |
24:‘系统访问记录’(sys_logininfor)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
info_id | bigint | NULL | 访问ID |
login_name | varchar | NULL | 登录账号 |
ipaddr | varchar | NULL | 登录IP地址 |
login_location | varchar | NULL | 登录地点 |
browser | varchar | NULL | 浏览器类型 |
os | varchar | NULL | 操作系统 |
status | char | NULL | 登录状态(0成功 1失败) |
msg | varchar | NULL | 提示消息 |
login_time | datetime | NULL | 访问时间 |
25:‘菜单权限表’(sys_menu)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
menu_id | bigint | NULL | 菜单ID |
menu_name | varchar | NULL | 菜单名称 |
parent_id | bigint | NULL | 父菜单ID |
order_num | int | NULL | 显示顺序 |
url | varchar | NULL | 请求地址 |
target | varchar | NULL | 打开方式(menuItem页签 menuBlank新窗口) |
menu_type | char | NULL | 菜单类型(M目录 C菜单 F按钮) |
visible | char | NULL | 菜单状态(0显示 1隐藏) |
is_refresh | char | NULL | 是否刷新(0刷新 1不刷新) |
perms | varchar | NULL | 权限标识 |
icon | varchar | NULL | 菜单图标 |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
26:‘通知公告表’(sys_notice)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
notice_id | int | NULL | 公告ID |
notice_title | varchar | NULL | 公告标题 |
notice_type | char | NULL | 公告类型(1通知 2公告) |
notice_content | varchar | NULL | 公告内容 |
status | char | NULL | 公告状态(0正常 1关闭) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
27:‘操作日志记录’(sys_oper_log)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
oper_id | bigint | NULL | 日志主键 |
title | varchar | NULL | 模块标题 |
business_type | int | NULL | 业务类型(0其它 1新增 2修改 3删除) |
method | varchar | NULL | 方法名称 |
request_method | varchar | NULL | 请求方式 |
operator_type | int | NULL | 操作类别(0其它 1后台用户 2手机端用户) |
oper_name | varchar | NULL | 操作人员 |
dept_name | varchar | NULL | 部门名称 |
oper_url | varchar | NULL | 请求URL |
oper_ip | varchar | NULL | 主机地址 |
oper_location | varchar | NULL | 操作地点 |
oper_param | varchar | NULL | 请求参数 |
json_result | varchar | NULL | 返回参数 |
status | int | NULL | 操作状态(0正常 1异常) |
error_msg | varchar | NULL | 错误消息 |
oper_time | datetime | NULL | 操作时间 |
28:‘岗位信息表’(sys_post)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
post_id | bigint | NULL | 岗位ID |
post_code | varchar | NULL | 岗位编码 |
post_name | varchar | NULL | 岗位名称 |
post_sort | int | NULL | 显示顺序 |
status | char | NULL | 状态(0正常 1停用) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
29:‘角色信息表’(sys_role)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
role_id | bigint | NULL | 角色ID |
role_name | varchar | NULL | 角色名称 |
role_key | varchar | NULL | 角色权限字符串 |
role_sort | int | NULL | 显示顺序 |
data_scope | char | NULL | 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) |
status | char | NULL | 角色状态(0正常 1停用) |
del_flag | char | NULL | 删除标志(0代表存在 2代表删除) |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
30:‘角色和部门关联表’(sys_role_dept)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
role_id | bigint | NULL | 角色ID |
dept_id | bigint | NULL | 部门ID |
31:‘角色和菜单关联表’(sys_role_menu)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
role_id | bigint | NULL | 角色ID |
menu_id | bigint | NULL | 菜单ID |
32:‘用户信息表’(sys_user)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
user_id | bigint | NULL | 用户ID |
dept_id | bigint | NULL | 部门ID |
login_name | varchar | NULL | 登录账号 |
user_name | varchar | NULL | 用户昵称 |
user_type | varchar | NULL | 用户类型(00系统用户 01注册用户) |
varchar | NULL | 用户邮箱 | |
phonenumber | varchar | NULL | 手机号码 |
sex | char | NULL | 用户性别(0男 1女 2未知) |
avatar | varchar | NULL | 头像路径 |
password | varchar | NULL | 密码 |
salt | varchar | NULL | 盐加密 |
status | char | NULL | 帐号状态(0正常 1停用) |
del_flag | char | NULL | 删除标志(0代表存在 2代表删除) |
login_ip | varchar | NULL | 最后登录IP |
login_date | datetime | NULL | 最后登录时间 |
pwd_update_date | datetime | NULL | 密码最后更新时间 |
create_by | varchar | NULL | 创建者 |
create_time | datetime | NULL | 创建时间 |
update_by | varchar | NULL | 更新者 |
update_time | datetime | NULL | 更新时间 |
remark | varchar | NULL | 备注 |
33:‘在线用户记录’(sys_user_online)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
sessionId | varchar | NULL | 用户会话id |
login_name | varchar | NULL | 登录账号 |
dept_name | varchar | NULL | 部门名称 |
ipaddr | varchar | NULL | 登录IP地址 |
login_location | varchar | NULL | 登录地点 |
browser | varchar | NULL | 浏览器类型 |
os | varchar | NULL | 操作系统 |
status | varchar | NULL | 在线状态on_line在线off_line离线 |
start_timestamp | datetime | NULL | session创建时间 |
last_access_time | datetime | NULL | session最后访问时间 |
expire_time | int | NULL | 超时时间,单位为分钟 |
34:‘用户与岗位关联表’(sys_user_post)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
user_id | bigint | NULL | 用户ID |
post_id | bigint | NULL | 岗位ID |
35:‘用户和角色关联表’(sys_user_role)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
user_id | bigint | NULL | 用户ID |
role_id | bigint | NULL | 角色ID |
五、功能模块:
-
登录:通过管理员给与的账号登录进入到系统中,不同的账号拥有不同的权限,而权限不同登录进系统所看到的和能够使用的功能也不一样
-
系统首页:在系统首页可以查看系统的数据统计信息,系统的用户订单收入等多维度的统计信息
-
超市收银台:在超市收银台中输入商品信息和数量系统回自己统计价格,在结账后系统回将金额统计进入销售账单中,并且同步到系统首页的大屏统计中,同时对应的库存也会对应的减少
-
销售账单:销售账单中为收银台的每一笔记账信息
-
库存管理:
-
商品分类:在商品分类管理中系统回将每个商品进行分类,而可以选择的类型则是在商品分类中进行管理
-
供应商:供应商列表对是对超市的供应商做了一个清单管理,超市人员可以很直观的了解超市的供应商信息
-
数据权限管理:在超市管理中有用户,角色,菜单,部门,岗位等信息的管理,他们的关系是每个用户都拥有有属于的部门,并且管理员可以通过设置不同的角色,角色拥有的菜单和数据权限,用户拥有不同的角色来达到对系统的额权限进行管理.
六、代码示例:
;@Controller
@RequestMapping("/system/checkout")
public class CheckOutController extends BaseController {private String prefix = "system/checkout";@Autowiredprivate CheckoutService checkoutService;// @RequiresPermissions("system:checkout:view")@GetMapping()public String product() {return prefix + "/checkout";}/*** 新增保存商品分类*/@PostMapping("/tmp-bill-item/add")@ResponseBodypublic AjaxResult saveTempBillItem(AddTempBillItemDto addTempBillItemDto){User currentUser = ShiroUtils.getSysUser();Long userId = currentUser.getUserId();boolean success = checkoutService.saveTempBillItem(userId, addTempBillItemDto);if (success) {return AjaxResult.success("添加成功");} else {return AjaxResult.error("找不到商品,请检查商品编号是否正确");}}/*** 获取数据集合*/@PostMapping("/tmp-bill-item")@ResponseBodypublic TableDataInfo getTempBillItem() {User currentUser = ShiroUtils.getSysUser();Long userId = currentUser.getUserId();return getDataTable(checkoutService.getTempBillItems(userId));}/*** 获取数据集合*/@GetMapping("/search-product")@ResponseBodypublic AjaxResult collection(@RequestParam("id") String id){AjaxResult ajax = new AjaxResult();ajax.put("result", checkoutService.matchProductSuggestByProductId(id));return ajax;}/*** 获取数据集合*/@GetMapping("/total-should-pay")@ResponseBodypublic AjaxResult countTempBillItemsTotalShouldPay() {User currentUser = ShiroUtils.getSysUser();Long userId = currentUser.getUserId();AjaxResult ajax = new AjaxResult();ajax.put("result", checkoutService.countTempBillItemsTotalShouldPay(userId).toString());return ajax;}@GetMapping("/tmp-bill-item/remove")@ResponseBodypublic AjaxResult removeTempBillItem(@RequestParam("index") int index){User currentUser = ShiroUtils.getSysUser();Long userId = currentUser.getUserId();checkoutService.removeTempBillItem(userId, index);return AjaxResult.success("删除成功");}@GetMapping("/tmp-bill-item/close")@ResponseBodypublic AjaxResult closeTempBillItem(){User currentUser = ShiroUtils.getSysUser();Long userId = currentUser.getUserId();checkoutService.closeTempBillItem(userId);return AjaxResult.success("删除成功");}/*确认结算*/@GetMapping("/tmp-bill-item/submit")@ResponseBodypublic AjaxResult submitTempBillItem(){User currentUser = ShiroUtils.getSysUser();Long userId = currentUser.getUserId();checkoutService.submitTempBillItem(userId);return AjaxResult.success("结算成功");}
}@Controller
@RequestMapping("/system/product")
public class ProductController extends BaseController
{private String prefix = "system/product";@Autowiredprivate IProductService productService;@RequiresPermissions("system:product:view")@GetMapping()public String product(){return prefix + "/product";}/*** 查询商品列表*/@RequiresPermissions("system:product:list")@PostMapping("/list")@ResponseBodypublic TableDataInfo list(Product product){startPage();List<Product> list = productService.selectProductList(product);return getDataTable(list);}/*** 导出商品列表*/@RequiresPermissions("system:product:export")@Log(title = "商品", businessType = BusinessType.EXPORT)@PostMapping("/export")@ResponseBodypublic AjaxResult export(Product product){List<Product> list = productService.selectProductList(product);ExcelUtil<Product> util = new ExcelUtil<Product>(Product.class);return util.exportExcel(list, "商品数据");}/*** 新增商品*/@GetMapping("/add")public String add(){return prefix + "/add";}/*** 新增保存商品*/@RequiresPermissions("system:product:add")@Log(title = "商品", businessType = BusinessType.INSERT)@PostMapping("/add")@ResponseBodypublic AjaxResult addSave(Product product){return toAjax(productService.insertProduct(product));}/*** 修改商品*/@RequiresPermissions("system:product:edit")@GetMapping("/edit/{id}")public String edit(@PathVariable("id") String id, ModelMap mmap){Product product = productService.selectProductById(id);mmap.put("product", product);return prefix + "/edit";}/*** 修改保存商品*/@RequiresPermissions("system:product:edit")@Log(title = "商品", businessType = BusinessType.UPDATE)@PostMapping("/edit")@ResponseBodypublic AjaxResult editSave(Product product){return toAjax(productService.updateProduct(product));}/*** 删除商品*/@RequiresPermissions("system:product:remove")@Log(title = "商品", businessType = BusinessType.DELETE)@PostMapping( "/remove")@ResponseBodypublic AjaxResult remove(String ids){return toAjax(productService.deleteProductByIds(ids));}
}
七、论文参考:
论文参考···
八、项目总结:
通过对基于springboot的超市信息管理系的开发,让我深刻明白开发一个程序软件需要经历的流程,当确定要开发一个基于springboot的超市信息管理系的程序时,
我在开发期间,对其功能进行合理的需求分析,然后才是程序软件的功能的框架设计,数据库的实体与数据表设计,
程序软件的功能详细界面实现,以及程序的功能测试等进行全方位的细致考虑,虽然在此过程中,各个环节都遇到了大大小小的困难,但是通过对这些问题进行反复的分析,深入的思考,
借助各种相关文献资料提供的方法与解决思路成功解决面临的各个问题,最后成功的让我开发的基于springboot的超市信息管理系得以正常运行。
基于springboot的超市信息管理系在功能上面是基本可以满足用户对系统的操作,但是这个程序软件也有许多方面是不足的,因此,在下一个时间阶段,有几点需要改进的地方需要提出来,它们分别是:
(1)操作页面可以满足用户简易操作的要求,但是在页面多样化设计层面上需要把一些比较丰富的设计结构考虑进来。
(2)程序软件的总体安全性能需要优化,例如程序的退出安全性,以及程序的并发性等问题都需要进行安全性升级,让开发的基于springboot的超市信息管理系中的相关网站更贴合。
(3)需要对程序的数据结构方面,程序的代码方面等进行优化,让运行起来的程序可以保持稳定运行,也让程序能够保证短时间内处理相关事务,节省处理事务的时间,提高事务处理的效率,
同时对服务器上资源占用的比例进行降低。
基于springboot的超市信息管理系的开发一方面是对自身专业知识技能进行最终考核,另一方面也是让自己学会独立解决程序开发过程中所遇到的问题,掌握将理论知识运用于程序开发实践的方法。
基于springboot的超市信息管理系的开发最终目标就是让系统更具人性化,同时在逻辑设计上,让系统能够更加的严谨。
九、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻
链接点击直达:下载链接
相关文章:

基于SpringBoot的超市信息管理系
✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着我国经济的不断发…...

【计算机组成原理】存储系统
🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理计算机组成原理中 存储系统的知识点和值得注意的地方 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以…...

基于SSM的旅游管理系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
JeecgBoot3.0 漏洞升级 — 快速文档
近几年来,黑客攻击行为呈现出日益复杂和隐蔽的趋势,对个人和组织的安全造成了严重威胁。黑客们不断寻找新的漏洞和安全漏洞,利用各种手段进行网络攻击,包括恶意软件、网络钓鱼、勒索软件等。因此,我们每个人都需要关注…...

6.一维数组——用冒泡法,选择法将5个整数由大到小排序
文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码(冒泡法)程序运行代码(选择法) 前言 本系列为一维数组编程题,点滴成长,一起逆袭。 一、题目描述 用冒泡法将5个整数由大到小排序 二、题目…...

YOLOv8 onnx 文件推理多线程加速视频流
运行环境: MacOS:14.0Python 3.9Pytorch2.1onnx 运行时 模型文件: https://wwxd.lanzouu.com/iBqiA1g49pbc 密码:f40v 下载 best.apk后将后缀名修改为 onnx 即可模型在英伟达 T4GPU 使用 coco128 训练了 200 轮如遇下载不了可私信获取 代码…...

CVE-2017-12615 文件上传
CVE-2017-12615 文件上传 当存在漏洞的Tomcat运行在Windows/Linux主机上, 且启用了HTTP PUT请求方法( 例如, 将readonly初始化参数由默认值设置为false) , 攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传…...

c++没有返回值的返回值
上面的函数search没有返回值,因为a不等于1,但是输出的时候会输出6.这恰巧是x的值,如果我们希望a不等于1时返回x,那么这种结果反而是正确的.有时候这种错误的代码可能产生正确的结果反而会加大debug难度 int search(int n) { 00007FF66DB723E0 mov dword ptr [rsp8],e…...

全网最全卡方检验汇总
一文整理了卡方检验全部内容,包括卡方检验的定义(基本思想、卡方值计算、适用条件分析)、卡方检验分类(2*2四格表卡方、R*C表格卡方、配对卡方、卡方拟合优度检验、分层卡方)、卡方检验如何分析(数据格式、…...
Java基础-中级-高级面试题汇(一)
第一部分: Java基础面试题汇总 1.面向对象和面向过程的区别? 面向对象和面向过程是两种不同的编程思想。面向对象是一种以对象为中心的编程思想,将数据和处理数据的方法封装在一起,形成一个类。程序通过创建对象来调用类中的方法…...

数据结构 / day04 作业
1. 单链表任意位置删除, 单链表任意位置修改, 单链表任意位置查找, 单链表任意元素查找, 单链表任意元素修改, 单链表任意元素删除, 单链表逆置 // main.c#include "head.h"int main(int argc, const char *argv[]) {Linklist headNULL; //head 是头指针// printf(&q…...

Java核心知识点整理大全20-笔记
目录 17. 设计模式 17.1.1. 设计原则 17.1.24. 解释器模式 18. 负载均衡 18.1.1.1. 四层负载均衡(目标地址和端口交换) 18.1.1.2. 七层负载均衡(内容交换) 18.1.2. 负载均衡算法/策略 18.1.2.1. 轮循均衡(Roun…...

Spark---转换算子、行动算子、持久化算子
一、转换算子和行动算子 1、Transformations转换算子 1)、概念 Transformations类算子是一类算子(函数)叫做转换算子,如map、flatMap、reduceByKey等。Transformations算子是延迟执行,也叫懒加载执行。 2)、Transf…...
什么是关系型数据库?
什么是关系型数据库? 关系型数据库(RDBMS)是建立在关系模型基础上的数据库系统。关系模型是一种数据模型,它表示数据之间的联系,包括一对一、一对多和多对多的关系。在关系型数据库中,数据以表格的形式存储…...

【LeetCode】挑战100天 Day12(热题+面试经典150题)
【LeetCode】挑战100天 Day12(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-142.1 题目2.2 题解 三、面试经典 150 题-143.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&…...

ArcGIS10.x系列 Python工具箱教程
ArcGIS10.x系列 Python工具箱教程 目录 1.前提 2.需要了解的资料 3.Python工具箱制作教程 4. Python工具箱具体样例代码(DEM流域分析-河网等级矢量化) 1.前提 如果你想自己写Python工具箱,那么假定你已经会ArcPy,如果只是自己…...

【蓝桥杯】刷题
刷题网站 记录总结刷题过程中遇到的一些问题 1、最大公约数与最小公倍数 a,bmap(int,input().split())sa*bwhile a%b:a,bb,a%bprint(b,s//b)2.迭代法求平方根(题号1021) #include<stdio.h> #include<math.h> int main() {double x11.0,x2;int a;scanf("%d&…...
软件产品登记的材料条件
(1)申请双软认证前应该要获得信息产业部授权的软件检测机构出具的检测证明,这份检测证明可以到软件行业协会申请,然后协会会派专家到公司进行“检测”,检测通过后出具证明,这份证明的申请与软件著作权等无关࿰…...

春节后跟进客户开发信模板?外贸邮件模板?
适合新年的客户开发信模板?年后给客户的邮件怎么写? 在春节这一传统的中国节日结束后,跟进客户对于维持和发展业务至关重要。客户开发信模板是一种有效的工具。蜂邮将介绍一些春节后跟进客户开发信模板的关键技巧,以确保您的业务…...

个人财务管理软件CheckBook Pro mac中文版特点介绍
CheckBook Pro mac是一款Mac平台的个人财务管理软件,主要用于跟踪个人收入、支出和账户余额等信息。 CheckBook Pro mac 软件特点 简单易用:该软件的用户界面非常简洁明了,即使您是初学者也可以轻松上手。 多账户管理:该软件支持…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...