网页设计作业成品代码和文字_免费咨询劳务纠纷_你今天的好运是你前面积攒的善良_温州百度推广排名
需求分析与可行性分析 垃圾分类管理系统小程序在技术上是完全可行的。SSM框架作为业界广泛使用的轻量级、开源的Java Web开发框架,具有成熟稳定、高效灵活的特点,能够满足垃圾分类管理系统小程序的技术需求。Spring提供全面的编程和配置模型,SpringMVC实现了模型-视图-控制器的设计模式,而MyBatis则简化了数据库操作。三者结合使用,可以确保系统具备良好的可扩展性、可维护性和稳定性。
垃圾分类管理系统小程序的实施具有经济可行性。首先,该系统可以提高垃圾回收效率,减少环境污染,这将带来社会效益和环境效益,有利于可持续发展。该系统还可以通过智能化管理,降低管理成本,提高管理效率,为企业带来经济效益。此外,随着技术的发展和市场的不断扩大,垃圾分类管理系统的应用前景广阔,具有较高的市场潜力和商业价值。因此,从经济角度来看,垃圾分类管理系统小程序具有可行性。
可操作性主要是对垃圾分类管理系统小程序设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、普通用户、站点用户三种角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息的操作需求和管理员管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
2.2.1 功能性分析
按照垃圾分类管理系统小程序的角色,划分为了普通用户模块、站点用户模块和管理员模块这三大部分。
(一)普通用户功能需求分析:
注册登录:普通用户可以通过手机号、邮箱等方式注册账号,并使用注册信息进行登录操作,确保用户身份的唯一性和安全性。
首页:用户登录后能够查看系统的主页,显示垃圾分类知识、推荐的垃圾分类指南、环保活动等相关信息,方便用户了解和学习垃圾分类知识。
社区论坛:用户可以在系统内查看和参与垃圾分类相关的讨论,发布自己的观点、提出问题或分享经验,与其他用户交流互动。
环保资讯:系统提供最新的环保资讯和相关政策法规等信息,帮助用户了解环保动态,提高对环保问题的认识。
垃圾信息:用户可以查询垃圾的分类信息,包括垃圾的种类、回收方式、投放指南等内容,以便正确分类和处理垃圾。
站点信息:提供垃圾分类回收站点的信息和位置,方便用户查询附近的垃圾分类回收站点。
通知公告:系统可以发布环保活动、垃圾分类政策等相关通知公告,用户可以及时了解相关信息。
我的:用户可以在“我的”页面查看和编辑个人基本信息,包括头像、昵称、联系方式等,还可以管理收藏的垃圾分类指南等信息。
(二)站点用户功能需求分析
登录:站点用户可以使用注册的账号信息进行登录,以便进入系统管理后台进行相关操作。
后台首页:站点用户登录后能够查看系统的后台首页,显示站点的概况、最新的清运信息、站点信息管理等相关信息,方便站点用户了解站点运营情况。
站点信息管理:站点用户可以管理站点的基本信息,包括站点名称、地址、联系方式等,还可以上传站点的图片和位置信息,确保信息的准确性和完整性。
清运信息管理:站点用户可以录入和管理站点的清运信息,包括清运日期、清运人员、清运备注等,确保站点垃圾的及时清运和处理。
(三)管理员功能需求分析
登录:管理员可以通过特定的账号和密码登录系统管理后台,获得管理权限。
后台首页:管理员登录后能够查看系统的后台首页,显示系统的概况、最新的通知公告、重要数据统计等相关信息,方便管理员了解系统的运行情况。
系统用户管理:管理员可以管理系统中的用户信息,包括用户的注册信息、权限管理、账号状态等,确保系统的用户信息安全和管理规范。
垃圾信息管理:管理员可以对系统中的垃圾信息进行管理,包括垃圾的分类、投放指南、回收方式等内容的录入和更新。
垃圾种类管理:管理员可以管理系统中的垃圾种类信息,包括垃圾的分类、名称、图标等内容的录入和更新。
站点信息管理:管理员可以管理系统中的站点信息,包括站点的基本信息、位置、清运情况等内容的录入和更新。
清运信息管理:管理员可以管理系统中的清运信息,包括清运计划、清运人员、清运车辆等内容的录入和更新。
系统管理(轮播图):管理员可以管理系统首页的轮播图信息,包括图片的上传、修改和删除等操作。
通知公告管理:管理员可以发布系统中的通知公告,包括环保活动、政策法规、系统更新等内容的发布和管理。
资源管理(环保资讯、资讯分类):管理员可以管理系统中的环保资讯,包括资讯的发布、分类、更新等操作。
交流管理:管理员可以管理系统中的用户交流信息,包括论坛帖子、评论等内容的审核和管理。
2.2.2 非功能性分析
垃圾分类管理系统小程序的非功能性需求比如系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1垃圾分类管理系统小程序非功能需求表
安全性 | 主要指垃圾分类管理系统小程序数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指垃圾分类管理系统小程序能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响垃圾分类管理系统小程序占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着垃圾分类管理系统小程序的页面展示内容进行操作,就可以了。 |
可维护性 | 垃圾分类管理系统小程序开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.3 系统用例分析
通过2.2功能的分析,得出了系统的用例图:
普通用户用例图如下所示。
图2-1 普通用户用例图
站点用户用例图如下所示。
图2-2 站点用户用例图
管理员用例图如下所示。
图2-3 管理员用例图
系统登录流程图,如图所示:
图2-4登录流程图
添加信息流程图,如下图所示:
图2-5添加信息流程图
删除信息流程图,如下图所示:
图2-6删除信息流程图
- 系统总体设计
垃圾分类管理系统小程序选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所示:
图3-1 系统工作原理图
3.2系统功能模块设计
通过对垃圾分类管理系统小程序的功能需求分析以及用例分析,得出了垃圾分类管理系统小程序的功能模块图如图3-2所示。
图3-2垃圾分类管理系统小程序功能模块图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
下面是整个垃圾分类管理系统小程序中主要的数据库表总E-R实体关系图。
图3-3 系统总体ER图
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | | 临时访问牌ID |
2 | token | varchar | 64 | 0 | Y | N | | 临时访问牌 |
3 | info | text | 65535 | 0 | Y | N | | |
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表article (文章:用于内容管理系统的文章)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | | 文章id:[0,8388607] |
2 | title | varchar | 125 | 0 | N | Y | | 标题:[0,125]用于文章和html的title标签中 |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | | 来源:[0,255]文章的出处 |
9 | url | varchar | 255 | 0 | Y | N | | 来源地址:[0,255]用于跳转到发布该文章的网站 |
10 | tag | varchar | 255 | 0 | Y | N | | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 |
11 | content | longtext | 2147483647 | 0 | Y | N | | 正文:文章的主体内容 |
12 | img | varchar | 255 | 0 | Y | N | | 封面图 |
13 | description | text | 65535 | 0 | Y | N | | 文章描述 |
表article_type (文章分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | | 分类ID:[0,10000] |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | | 分类名称:[2,16] |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | | 描述:[0,255]描述该分类的作用 |
6 | icon | text | 65535 | 0 | Y | N | | 分类图标: |
7 | url | varchar | 255 | 0 | Y | N | | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | | 授权ID: |
2 | user_group | varchar | 64 | 0 | Y | N | | 用户组: |
3 | mod_name | varchar | 64 | 0 | Y | N | | 模块名: |
4 | table_name | varchar | 64 | 0 | Y | N | | 表名: |
5 | page_title | varchar | 255 | 0 | Y | N | | 页面标题: |
6 | path | varchar | 255 | 0 | Y | N | | 路由路径: |
7 | position | varchar | 32 | 0 | Y | N | | 位置: |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | | 添加字段: |
14 | field_set | text | 65535 | 0 | Y | N | | 修改字段: |
15 | field_get | text | 65535 | 0 | Y | N | | 查询字段: |
16 | table_nav_name | varchar | 500 | 0 | Y | N | | 跨表导航名称: |
17 | table_nav | varchar | 500 | 0 | Y | N | | 跨表导航: |
18 | option | text | 65535 | 0 | Y | N | | 配置: |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表clearing_information (清运信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | clearing_information_id | int | 10 | 0 | N | Y | | 清运信息ID |
2 | site_name | varchar | 64 | 0 | Y | N | | 站点名称 |
3 | site_users | int | 10 | 0 | Y | N | 0 | 站点用户 |
4 | clearance_date | date | 10 | 0 | Y | N | | 清运日期 |
5 | clearing_content | text | 65535 | 0 | Y | N | | 清运内容 |
6 | clearing_remarks | text | 65535 | 0 | Y | N | | 清运备注 |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | | 收藏ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
4 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | | 标题: |
7 | img | varchar | 255 | 0 | Y | N | | 封面: |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | | 评论ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | | 内容: |
5 | nickname | varchar | 255 | 0 | Y | N | | 昵称: |
6 | avatar | varchar | 255 | 0 | Y | N | | 头像地址:[0,255] |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
10 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表forum (论坛)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | | 论坛id |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | | 昵称:[0,16] |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | | 标题 |
8 | keywords | varchar | 125 | 0 | Y | N | | 关键词 |
9 | description | varchar | 255 | 0 | Y | N | | 描述 |
10 | url | varchar | 255 | 0 | Y | N | | 来源地址 |
11 | tag | varchar | 255 | 0 | Y | N | | 标签 |
12 | img | text | 65535 | 0 | Y | N | | 封面图 |
13 | content | longtext | 2147483647 | 0 | Y | N | | 正文 |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | | 发帖人头像: |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表forum_type (论坛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | | 分类ID:[0,10000] |
2 | name | varchar | 16 | 0 | N | N | | 分类名称:[2,16] |
3 | description | varchar | 255 | 0 | Y | N | | 描述:[0,255]描述该分类的作用 |
4 | url | varchar | 255 | 0 | Y | N | | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | | 分类图标: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表garbage_information (垃圾信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | garbage_information_id | int | 10 | 0 | N | Y | | 垃圾信息ID |
2 | garbage_name | varchar | 64 | 0 | Y | N | | 垃圾名称 |
3 | garbage_labels | varchar | 64 | 0 | Y | N | | 垃圾标签 |
4 | types_of_garbage | varchar | 64 | 0 | Y | N | | 垃圾种类 |
5 | release_date | date | 10 | 0 | Y | N | | 发布日期 |
6 | cover_photo | varchar | 255 | 0 | Y | N | | 封面图片 |
7 | content_details | longtext | 2147483647 | 0 | Y | N | | 内容详情 |
8 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | | 点赞ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
6 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | | 公告id: |
2 | title | varchar | 125 | 0 | N | N | | 标题: |
3 | content | longtext | 2147483647 | 0 | Y | N | | 正文: |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | | 点赞ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
6 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表regular_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | | 普通用户ID |
2 | user_name | varchar | 64 | 0 | Y | N | | 用户姓名 |
3 | user_gender | varchar | 64 | 0 | Y | N | | 用户性别 |
4 | contact_phone_number | varchar | 16 | 0 | Y | N | | 联系电话 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表site_information (站点信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | site_information_id | int | 10 | 0 | N | Y | | 站点信息ID |
2 | site_name | varchar | 64 | 0 | Y | N | | 站点名称 |
3 | site_users | int | 10 | 0 | Y | N | 0 | 站点用户 |
4 | site_status | varchar | 64 | 0 | Y | N | | 站点状态 |
5 | site_area | varchar | 64 | 0 | Y | N | | 站点面积 |
6 | site_location | varchar | 64 | 0 | Y | N | | 站点位置 |
7 | cover_photo | varchar | 255 | 0 | Y | N | | 封面图片 |
8 | site_introduction | longtext | 2147483647 | 0 | Y | N | | 站点介绍 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表site_users (站点用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | site_users_id | int | 10 | 0 | N | Y | | 站点用户ID |
2 | site_name | varchar | 64 | 0 | Y | N | | 站点名称 |
3 | user_name | varchar | 64 | 0 | Y | N | | 用户姓名 |
4 | user_gender | varchar | 64 | 0 | Y | N | | 用户性别 |
5 | contact_phone_number | varchar | 16 | 0 | Y | N | | 联系电话 |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | | 轮播图ID: |
2 | title | varchar | 64 | 0 | Y | N | | 标题: |
3 | content | varchar | 255 | 0 | Y | N | | 内容: |
4 | url | varchar | 255 | 0 | Y | N | | 链接: |
5 | img | varchar | 255 | 0 | Y | N | | 轮播图: |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表types_of_garbage (垃圾种类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | types_of_garbage_id | int | 10 | 0 | N | Y | | 垃圾种类ID |
2 | types_of_garbage | varchar | 64 | 0 | Y | N | | 垃圾种类 |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | | 上传ID |
2 | name | varchar | 64 | 0 | Y | N | | 文件名 |
3 | path | varchar | 255 | 0 | Y | N | | 访问路径 |
4 | file | varchar | 255 | 0 | Y | N | | 文件路径 |
5 | display | varchar | 255 | 0 | Y | N | | 显示顺序 |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | | 文件夹 |
8 | type | varchar | 32 | 0 | Y | N | | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | | 用户ID:[0,8388607]用户获取其他与用户相关的数据 |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | | 所在用户组:[0,32767]决定用户身份和权限 |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | | 用户名:[0,16]用户登录时所用的账户名称 |
8 | nickname | varchar | 16 | 0 | Y | N | | 昵称:[0,16] |
9 | password | varchar | 64 | 0 | N | N | | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 |
10 | email | varchar | 64 | 0 | Y | N | | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | | 头像地址:[0,255] |
13 | open_id | varchar | 255 | 0 | Y | N | | 针对获取用户信息字段 |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | | 会员等级 |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | | 用户组ID:[0,8388607] |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | | 名称:[0,16] |
4 | description | varchar | 255 | 0 | Y | N | | 描述:[0,255]描述该用户组的特点或权限范围 |
5 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
6 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
- 系统关键模块设计与实现
4.1.1 前台首页界面
进入系统首页,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图展示,再往下是垃圾信息和站点信息,其主界面展示如下图所示。
图4-1 普通用户首页界面图
4.1.2 用户注册界面
注册模块满足用户两部分,当用户想要进行资料相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好账号、密码、昵称、邮箱、身份、用户姓名、用户性别、联系电话等注册信息,添加提交,注册的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录,其注册主界面展示如下图所示。
图4-2用户注册界面图
4.1.3 普通用户登录界面
普通用户在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其登录主界面展示如下图所示。
图4-3普通用户登录界面图
登录关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.1.4密码修改界面
用户使用该系统注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败。密码修改界面如下图所示。
图4-4密码修改界面图
4.1.5 基本资料界面
用户可以对个人头像、个人昵称、密码进行修改。基本资料界面如下图所示。
图4-5基本资料界面图
4.1.6 通知公告界面
用户进行公告的阅览,查看管理者发布的网站公告、关于我们、联系方式、网站介绍等信息。通知公告界面图如下图所示。
图4-6通知公告界面图
4.1.7垃圾信息界面
用户可以查询垃圾的分类信息,包括垃圾的种类、回收方式、投放指南等内容,以便正确分类和处理垃圾。垃圾信息界面如下图所示。
图4-7垃圾信息界面图
4.2 站点用户模块
4.2.1 站点信息管理界面
站点用户可以管理站点的基本信息,包括站点名称、地址、联系方式等,还可以上传站点的图片和位置信息,确保信息的准确性和完整性。站点信息管理界面如下图所示。
图4-8站点信息管理界面图
4.2.2清运信息管理界面
站点用户可以录入和管理站点的清运信息,包括清运日期、清运人员、清运备注等,确保站点垃圾的及时清运和处理。清运信息管理界面如下图所示。
图4-9清运信息管理界面图
清运信息管理的关键代码如下:
@RequestMapping(value = {"/sum_group", "/sum"})
public Map<String, Object> sum(HttpServletRequest request) {
Query count = service.sum(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.3.1管理员功能界面
在管理员功能页面中可以查看后台首页、系统用户、垃圾信息管理、垃圾种类管理、站点信息管理、清运信息管理、系统管理(轮播图)、通知公告管理、资源管理(环保资讯、资讯分类)、交流管理等功能,并可进行相应操作。管理员功能界面如下图所示。
图4-10管理员功能界面图
4.3.2系统用户管理界面
在系统用户页面中可以对管理员、普通用户、站点用户三种角色进行管控,还可以对三种角色进行查询、重置、添加和删除。系统用户界面如下图所示。
图4-11系统用户管理界面图
系统用户管理关键代码如下所示。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.3.3 垃圾种类管理界面
管理员可以管理系统中的垃圾种类信息,包括垃圾的分类、名称、图标等内容的录入和更新。垃圾种类管理界面如下图所示。
图4-12垃圾种类列表界面图
图4-13垃圾种类添加界面图
4.3.4 垃圾信息管理界面
管理员可以对系统中的垃圾信息进行管理,包括垃圾的分类、投放指南、回收方式等内容的录入和更新。垃圾信息管理界面如下图所示。
图4-14垃圾信息管理界面图
4.3.5 系统管理界面
管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。系统管理界面如下图所示。
图4-15系统管理界面图
4.3.6通知公告管理界面
点击“通知公告管理”这个菜单,可以查看到系统中所有添加的通知公告,支持通过标题对系统公告进行查询,添加、删除等操作。通知公告管理界面如下图所示。
图4-16通知公告管理界面图
- 系统测试
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
垃圾分类管理系统小程序的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在垃圾分类管理系统小程序正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
在对垃圾分类管理系统小程序进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让垃圾分类管理系统小程序开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个垃圾分类管理系统小程序开发所牵扯的该问题都必须一一解决,提高垃圾分类管理系统小程序的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
用户登录测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
删除垃圾种类测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
删除垃圾种类模块 | 垃圾种类 | 删除成功、页面自动跳转 | 删除成功、页面自动跳转 | 通过 |
修改密码测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,垃圾分类管理系统小程序的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
- 总结
随着计算机互联网技术的迅猛发展,垃圾分类管理系统小程序的开发成为了重要的课题。该小程序的核心是实现垃圾分类管理和用户在线垃圾投递的需求。垃圾分类管理系统小程序的开发以Java编程语言为基础,在Eclipse平台上完成编码工作,形成了基于B/S架构的系统。数据库系统使用MySQL,提供了强大的数据存储和处理能力。
本文详细分析了垃圾分类管理系统小程序的研究背景和意义、相关技术以及系统需求、系统详细设计和系统测试等一系列内容。系统实现了垃圾分类管理系统小程序所需的基本功能,并通过测试对这些功能进行了完善,从而提高了系统的实用性。
在开发过程中,大量使用了Java相关的知识以及前端开发使用的HTML和JavaScript等,同时涉及到了很多开源框架和组件,如后台小程序中运用的MVVM架构、Freemarker模板引擎等,以及前端运用的UI框架等。
小程序投入运行时,各功能均运行正常。小程序的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个小程序的各个功能设计合理,体现了人性化。
然而,由于自己在小程序开发过程中对相关知识和技术的掌握不够牢固,加上自身开发经验欠缺,小程序在某些方面的功能还不够完善,考虑的不够全面。这将是日后逐步完善的重点。随着技术的不断进步和经验的积累,我们相信小程序将更加完善,更好地满足用户的需求。
">