一、项目背景介绍:
随着我国经济的不断发展,许多零售企业在发展过程中面临着业务不断增长,而管理水平相对滞后的困境。尤其是许多企业在逐年经营过程中,积累了大量历史数据,但是信息比较分散、相互独立。在信息技术迅猛发展的今天,处于竞争性行业的中小型零售企业如何在未来的市场竞争中借助信息化实时掌握营销动态,不断提升服务水平,提高资源配置水平和核心竞争力,成为他们不得不面对的问题。
在零售企业中引入超市信息管理系统,利用收银机将超市中各种商品的进货、退货、销售等信息输入电脑,使得经营管理者能够及时掌控经营信息,作出合适的各种采购及货物库存决策。
超市信息管理系统,可完成商品采购订货、销售、盘点库存、财务分析等管理功能,并对商品的购销存状态实时跟踪记录。本论文主要介绍超市信息管理系统中的系统登录、商品录入、库存管理、商品销售等部分内容,以展现设计一个完整信息管理系统的思路和步骤。
二、项目技术简介:
- 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(文档对象模型)上执行预先制定好的逻辑。
- 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";
@Autowired
private CheckoutService checkoutService;
// @RequiresPermissions("system:checkout:view")
@GetMapping()
public String product() {
return prefix + "/checkout";
}
/**
* 新增保存商品分类
*/
@PostMapping("/tmp-bill-item/add")
@ResponseBody
public 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")
@ResponseBody
public TableDataInfo getTempBillItem() {
User currentUser = ShiroUtils.getSysUser();
Long userId = currentUser.getUserId();
return getDataTable(checkoutService.getTempBillItems(userId));
}
/**
* 获取数据集合
*/
@GetMapping("/search-product")
@ResponseBody
public AjaxResult collection(@RequestParam("id") String id)
{
AjaxResult ajax = new AjaxResult();
ajax.put("result", checkoutService.matchProductSuggestByProductId(id));
return ajax;
}
/**
* 获取数据集合
*/
@GetMapping("/total-should-pay")
@ResponseBody
public 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")
@ResponseBody
public 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")
@ResponseBody
public AjaxResult closeTempBillItem()
{
User currentUser = ShiroUtils.getSysUser();
Long userId = currentUser.getUserId();
checkoutService.closeTempBillItem(userId);
return AjaxResult.success("删除成功");
}
/*
确认结算
*/
@GetMapping("/tmp-bill-item/submit")
@ResponseBody
public 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";
@Autowired
private IProductService productService;
@RequiresPermissions("system:product:view")
@GetMapping()
public String product()
{
return prefix + "/product";
}
/**
* 查询商品列表
*/
@RequiresPermissions("system:product:list")
@PostMapping("/list")
@ResponseBody
public 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")
@ResponseBody
public 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")
@ResponseBody
public 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")
@ResponseBody
public AjaxResult editSave(Product product)
{
return toAjax(productService.updateProduct(product));
}
/**
* 删除商品
*/
@RequiresPermissions("system:product:remove")
@Log(title = "商品", businessType = BusinessType.DELETE)
@PostMapping( "/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(productService.deleteProductByIds(ids));
}
}
七、论文参考:
论文参考···
八、项目总结:
通过对基于springboot的超市信息管理系的开发,让我深刻明白开发一个程序软件需要经历的流程,当确定要开发一个基于springboot的超市信息管理系的程序时,
我在开发期间,对其功能进行合理的需求分析,然后才是程序软件的功能的框架设计,数据库的实体与数据表设计,
程序软件的功能详细界面实现,以及程序的功能测试等进行全方位的细致考虑,虽然在此过程中,各个环节都遇到了大大小小的困难,但是通过对这些问题进行反复的分析,深入的思考,
借助各种相关文献资料提供的方法与解决思路成功解决面临的各个问题,最后成功的让我开发的基于springboot的超市信息管理系得以正常运行。
基于springboot的超市信息管理系在功能上面是基本可以满足用户对系统的操作,但是这个程序软件也有许多方面是不足的,因此,在下一个时间阶段,有几点需要改进的地方需要提出来,它们分别是:
(1)操作页面可以满足用户简易操作的要求,但是在页面多样化设计层面上需要把一些比较丰富的设计结构考虑进来。
(2)程序软件的总体安全性能需要优化,例如程序的退出安全性,以及程序的并发性等问题都需要进行安全性升级,让开发的基于springboot的超市信息管理系中的相关网站更贴合。
(3)需要对程序的数据结构方面,程序的代码方面等进行优化,让运行起来的程序可以保持稳定运行,也让程序能够保证短时间内处理相关事务,节省处理事务的时间,提高事务处理的效率,
同时对服务器上资源占用的比例进行降低。
基于springboot的超市信息管理系的开发一方面是对自身专业知识技能进行最终考核,另一方面也是让自己学会独立解决程序开发过程中所遇到的问题,掌握将理论知识运用于程序开发实践的方法。
基于springboot的超市信息管理系的开发最终目标就是让系统更具人性化,同时在逻辑设计上,让系统能够更加的严谨。
九、源码获取:
此源码非开源,若需要此源码可扫码添加微信进行咨询!