基于Jsp和MySql的垃圾分类查询管理系统
1 开发背景
1.1 系统开发背景与意义
20世纪以来,我国社会经济发展极为迅速、人民生活水平不断提高,而由此带来的生垃圾问题也更加显著。近二十年来,工业化和城市化带给人民生活水平提高的同时,与日俱增的城市垃圾产量,使中国成为世界上被垃圾困扰最严重的国家之一。据统计,现在中国668个城市中有三分之二的城市处于垃圾的“围困之中”,全国城市垃圾倾倒掩埋累计侵占上地约五亿平方米,相当于十五万亩耕地,中国的城市固体生活垃圾总产量已位于世界高产国前列,增长率居世界首位。实现垃圾分类对建立两型社会具有实质性意义,从废弃物源头进行分类回收,可避免资源的浪费,减少大自然的开采,减少固体废弃物的质量,降低后续处理成本,给社会带来巨大的经济效益。由于我国实型垃圾分类时间较晚,且我国人口基数较大,人们的 教育水平环保意识层次不齐,因此推出一款垃圾分类查询管理系统来提供人们对日常生活垃圾进行分类查询管理对于从源头开始垃圾分类有着重要的意义。
1.2 研究内容
垃圾分类查询管理系统通过简洁、一目了然的方法进行界面设计,主界面上可以根据垃圾分类查询和其他操作,方便的查看各模块的详细明细等信息。
研究的内容主要包括以下方面:
该系统的开发主要包括后台数据库的建立、连接和维护以及前台网络页面的开发两大方面。由于Java的跨平台性、安全性等诸多优势,本论文采用Jsp+SSMt+MYSQL的技术途径和规范全局设计开发流程,在Eclipse的开发环境下设计、编写垃圾分类查询管理系统。
该系统主要模块有登陆、用户管理、系统日志管理,垃圾分类管理等四大功能模块,用户主要是对垃圾进行分类查询。
1.3 文档的组织结构
文档的组织结果安排如下:
-
第一章绪论介绍了系统开发的背景与意义,对主要研究内容进行了说明,对文档的组织结构进行了阐述
-
第二章主要讨论了系统的需求以及实现相关功能的关键技术和方法
-
第三章对系统进行了业务建设与设计,对系统的用户角色和功能需求作了初步设计
-
第四章主要对系统相关实现作了更详细的阐述,阐述了系统开发过程中所设计的代码、接口等
-
第五章性能测试与分析
-
第六章主要阐述了对系统的总结和展望
-
最后为致谢与参考文献
2 系统需求分析
2.1 系统需求分析
需求是软件开发的基础,也是研发团队进行系统开发的凭据。有资料指出在软件开发周期中,如果软件项目越新颖、所涉及的应用领域越偏僻,需求分析所占用的时间可以达到整个开发周期的一半以上,而如果是迭代式的开发模型,需求时间也不应该少于1/3。可见,软件需求的重要性不言而喻。然而在软件开发中,需求不明确,客户的参与度不高,沟通不及时,获取客户的信息不完整;无法理解某些领域的技术指标和概念;客户想法的多变性都会造成需求的变更,而一旦变更就会对软件的开发进度和整体结构产生影响,甚至是灾害性的重新设计。
2.2 可行性分析
2.2.1 经济可行性
开发本系统的相关资料均可通过网上搜索、线下调查获得,在开发过程中所需的软件系统都可从相关站点免费获得。信息的获取都是通过自己去各大地区长询问人民群众得到,不需要任何其他费用。
所以从经济角度开发工程监管信息系统是完全可行的。
2.2.2 技术可行性
大部分用过程语言比如JSP开发出来的WEB应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不直接,因而很难体现出业务模型的样子或者模型的重要性。产品设计弹性力度很小,很难满足用户的变化性需求。而MVC模式要求对应分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好的体现。一旦模型发生改变也易于维护。其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
开发本系统所需的软件系统都可免费获得,软件所依赖的相关组件都为开源软件并可以免费引用。
所以从技术角度开发垃圾分类查询管理系统也是完全可行的。
2.2.3 操作可行性
操作可行性是指对开发出来的系统的界面是否美观、简洁易操作,是否有操作步骤提示、相关信息能否自动生成或更新等进行分析。操作是否顺畅很大程度上决定了系统的可行性和受欢迎度,总的来说,用户操作必须简便,系统需要有较好的人机交互,改善用户体验。本新闻博客管理系统采用的是目前较为流行的前端开发技术,界面简单美观,用户操作起来应该十分简单,因此,本垃圾分类查询管理系统在界面操作方面也完全可行。
2.3 功能分析
-
登陆功能
:管理员需要登陆后台来完成对网站的管理工作
-
用户管理
:管理网站的用户信息,主要针对后台用户(即管理员)的管理
-
系统日志管理
:管理网站后台的日志
-
垃圾分类管理
:管理垃圾的名称以及各个名称垃圾所属的垃圾分类类别
2.4 技术分析
在当今JSP开发中有两种模式,模式一是JSP+Model的结合,模式二是JSP+Model+Controller的结合。模式一中,JSP页面独自响应请求并处理结果返回客户。所有数据通过Model处理,JSP实现页面的表现。而本系统开发采用的模式二遵循了MVC模式,它的主要思想是使用一个或多个Controller作为控制器。请求由前沿的Controller(可能是多个Controller构成的一个处理链)接受后,通过JDBC来连接数据库,执行数据库的操作,然后再用Model来封装执行的结果,把结果保存到请求对象中,最后把视图派发到用于显示的JSP页面。在模式二中,JSP用于显示,充当了视图的角色;Controller组件用于数据的封装,相当于模型的角色;Controller用于执行业务逻辑,相当于控制器的角色。
3 系统设计
3.1 系统概述
垃圾分类查询管理系统分为前台模块和后台模块两大部分。前台模块主要提供用户用来查询垃圾所属分类的。后台模块是管理垃圾分类的。
垃圾分类查询管理系统采用JAVA的三层架构开发,发布版本的运行环境包括:
-
客户端:
-
操作系统:Win10
-
浏览器:谷歌浏览器
-
服务器端:
-
操作系统:windows server 2003
-
应用服务器:Tomcat
-
数据库服务器端:
-
操作系统:windows server 2003
-
数据库系统:MYSQL5.5
3.2 系统功能
系统功能模块
3.3 数据库设计
3.3.1数据库概念设计
概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。
信息世界中包含的基本概念有实体和联系。
实体 (entity)
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应商、一个部门、一本 书、一位读者等都是实体。
联系 (relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1 : n);多对多联系(m : n)。
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-Relationship Approach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。根据数据流程分析,绘制酒店管理系统的全局E-R模型如图3-1所示。
根据系统分析的主要实体有:用户、角色、垃圾分类名称、垃圾名称。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):
用户实体(如图3-2所示)
日志实体(如图3-3所示)
角色实体(如图3-4所示)
垃圾实体(如图3-5所示)
3.3.2 数据库的物理结构设计
结合本系统的功能及所选开发工具和数据库系统的特点,对系统数据库进行设计,建立一个具有良好的数据组织结构的数据库,应遵循的原则有:
-
尽可能减少数据冗余和重复
-
结构设计和操作设计相结合
-
数据结构具有相对的稳定性
由于数据库中所保存的数据是系统中非常重要的资源,所以在数据库设计时一定要注意数据结构的安全性、完整性,并发控制与恢复,而一般的数据库管理系统都提供了一定的数据保护功能。
本系统中一共有十一张数据表,分别为用户表(如表3-6所示),菜单表(如表3-7所示),日志表(如表3-8所示),用户权限管理表(如表3-9所示),垃圾表(如表3-10所示),垃圾类别表(如表3-11所示)。
用户表(tb_user)表结构
字段名称
|
数据类型
|
主键
|
是否空
|
说明
|
id
|
int
|
Y
|
N
|
主键,用户ID
|
username
|
varchar(50)
|
N
|
N
|
用户登录名
|
password
|
varchar(50)
|
N
|
N
|
用户登录密码
|
roleId
|
int
|
N
|
N
|
用户类别,是否为管理员
|
photo
|
varchar(128)
|
Y
|
N
|
用户头像
|
sex
|
int(1)
|
N
|
N
|
性别
|
age
|
int(3)
|
N
|
N
|
年龄
|
address
|
varchar(128)
|
Y
|
N
|
住址
|
菜单表(tb_menu)表结构
字段名称
|
数据类型
|
主键
|
是否空
|
说明
|
id
|
int
|
Y
|
N
|
主键
|
parentId
|
int
|
N
|
N
|
本菜单的父菜单的ID
|
name
|
int
|
N
|
N
|
菜单名称
|
url
|
int
|
N
|
N
|
菜单连接
|
icon
|
int
|
N
|
N
|
菜单的图片
|
日志表(tb_log)表结构
字段名称
|
数据类型
|
主键
|
是否空
|
说明
|
id
|
int(11)
|
Y
|
N
|
主键
|
content
|
varchar(255)
|
N
|
Y
|
日志内容
|
createTime
|
datetime
|
N
|
Y
|
销售时间
|
用户权限管理表(tb_authority)表结构
字段名称
|
数据类型
|
主键
|
是否空
|
说明
|
id
|
int(11)
|
Y
|
N
|
主键
|
roleId
|
int(11)
|
N
|
N
|
用户类别ID
|
menuId
|
int(11)
|
N
|
N
|
用户可以访问的菜单ID
|
垃圾表(tb_rubbish)表结构
字段名称
|
数据类型
|
主键
|
是否空
|
说明
|
id
|
int(11)
|
Y
|
N
|
主键
|
name
|
varchar(32)
|
N
|
N
|
名字
|
catrgoryId
|
varchar(256)
|
N
|
N
|
类别ID
|
垃圾类别表(tb_rubbish_category)表结构
字段名称
|
数据类型
|
主键
|
是否空
|
说明
|
id
|
int(11)
|
Y
|
N
|
主键
|
name
|
varchar(32)
|
N
|
N
|
名字
|
explain
|
varchar(256)
|
N
|
N
|
说明
|
require
|
varchar(256)
|
N
|
Y
|
要求
|
common
|
varchar(256)
|
N
|
Y
|
该类别的常见垃圾
|
4 系统实现
4.1 系统开发规划
垃圾分类查询管理系统采用JAVA标准分层的基于组件模型设计。将处理过程拆分到不同的层级、不同服务、不同应用服务器中分别处理,使服务器资源得到更好的利用,解决网络传输时高并发的问题。
垃圾分类查询管理系统采用经典的三层结构,面向对象的JAVA语言和MYSQL数据库存储数据。三层框架包括了界面层、逻辑层和数据层。
表现层:是系统数据来源和UI部分,承担用户操作与逻辑层之间的交互。在本层中实现前台页面的信息显示。后台登录和基本信息的管理操作。用户通过界面操作和业务逻辑层传输数据。
逻辑层是整个系统的核心,它与这个系统的业务紧密相关。
数据层:其功能主要是负责数据库的访问。简单的说就是实现对数据表的Select, Insert, Update, Delete的操作。数据库的设计是在这一套开发系统中十分重要的,好的数据库建立可以让其更快的完成项目。整个数据库的创建是垃圾分类查询管理系统开发和创立的核心技术,概括的说,就是根据用户的需求创立起满足用户的需要的数据库。数据库的整体设计是在软件开发是其最主要的问题。
4.2 开发语言简介
4.2.1 MYSQL数据库
垃圾分类查询管理系统使用MYSQL平台,MYSQL相比其它数据库软件有独特的优越性,可视化的数据库创建平台,自动生成数据库关系图,视图的可视化编辑,这些特性都为程序员带来了很大便捷。MYSQL数据库和JAVA配合较为紧密,选用MYSQL数据库,无须再编写驱动或者下载驱动。ADO.NET提供了所有操作MYSQL数据库的方法。而MYSQL数据库是相对比较成熟和完善的,适合垃圾分类查询管理系统的要求。
4.2.2 JavaScript
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。
Javascript语言与Java语言在语法上比较相似,但随着对Javascript的深入了解后你会发现,它们说到底是两种语言!
4.2.3 JQuery
jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript框架,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。
4.2.4 SSM
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地
new
一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
4.2.5 EasyUI
jQuery EasyUI是一个基于jQuery的框架,集成了各种用户界面(UI)插件。
jQuery EasyUI能够帮助Web开发者更轻松的打造出功能丰富并且美观的UI界面。通过jQuery EasyUI,开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,只需要了解一些简单的HTML标签即可。
-
easyui是一个基于jQuery的框架,集成了各种用户界面插件
-
easyui提供建立现代化的具有交互性的javascript应用的必要的功能
-
使用easyui,您不需要写太多javascript代码,一般情况下您只需要使用一些html标记来定义用户界面
-
HTML网页的完整框架
-
easyui节省了开发产品的时间和规模。非常简单,但是功能非常强大
4.3 开发页面简介
4.3.1首页
本界面是垃圾分类查询管理系统的首页设计,其功能主要具体如图4-1所示。
客户可以进行搜索垃圾分类查询、其他模块查询等等功能,以下为html关键代码:
```html
长沙市日常生活垃圾分为四类
可回收物是指
废纸、废塑料、废玻璃制品、废金属、废织物等适宜回收,并且可以回收重复利用的生活废弃物。
有害垃圾是指:
废电池、费灯泡灯管、废药品、废油漆,以及有损人身体健康或者对环境直接或者间接会造成污染,有潜在危害的生活用品。
湿垃圾是指
易腐垃圾,如食材废弃料、剩饭剩菜、过期食品、水果皮、干果垃圾,废弃植物、中药残渣等生活废弃物品。
如:剩菜剩饭、瓜皮果核、花卉绿植、过期食品等。
```
### 4.3.2 后台登陆页面
本界面是垃圾分类查询管理系统的后台登陆页面设计,其功能主要具体如图4-2所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/11dae29e96e962a864c9d60de8052209.writebug)
登录页面以简明的形式提供给用户一个登录界面。用户登录后会显示当前系统的基本信息。在本系统中实现了用户角色管理、基于角色的权限管理、用户基本信息录入修改、用户管理等功能;关键代码如下:
```java
@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public Map
loginAct(User user,String cpacha,HttpServletRequest request){
Map
ret = new HashMap
();
if(user == null){
ret.put("type", "error");
ret.put("msg", "请填写用户信息!");
return ret;
}
if(StringUtils.isEmpty(cpacha)){
ret.put("type", "error");
ret.put("msg", "请填写验证码!");
return ret;
}
if(StringUtils.isEmpty(user.getUsername())){
ret.put("type", "error");
ret.put("msg", "请填写用户名!");
return ret;
}
if(StringUtils.isEmpty(user.getPassword())){
ret.put("type", "error");
ret.put("msg", "请填写密码!");
return ret;
}
Object loginCpacha = request.getSession().getAttribute("loginCpacha");
if(loginCpacha == null){
ret.put("type", "error");
ret.put("msg", "会话超时,请刷新页面!");
return ret;
}
if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){
ret.put("type", "error");
ret.put("msg", "验证码错误!");
logService.add("用户名为"+user.getUsername()+"的用户登录时输入验证码错误!");
return ret;
}
User findByUsername = userService.findByUsername(user.getUsername());
if(findByUsername == null){
ret.put("type", "error");
ret.put("msg", "该用户名不存在!");
logService.add("登录时,用户名为"+user.getUsername()+"的用户不存在!");
return ret;
}
if(!user.getPassword().equals(findByUsername.getPassword())){
ret.put("type", "error");
ret.put("msg", "密码错误!");
logService.add("用户名为"+user.getUsername()+"的用户登录时输入密码错误!");
return ret;
}
//说明用户名密码及验证码都正确
//此时需要查询用户的角色权限
Role role = roleService.find(findByUsername.getRoleId());
List
authorityList = authorityService.findListByRoleId(role.getId());//根据角色获取权限列表
String menuIds = "";
for(Authority authority:authorityList){
menuIds += authority.getMenuId() + ",";
}
if(!StringUtils.isEmpty(menuIds)){
menuIds = menuIds.substring(0,menuIds.length()-1);
}
List
参考文献
- 上海市垃圾物流管理平台数据库优化策略的设计与实现(东华大学·岳松波)
- 社区垃圾管理系统的设计研究(西安理工大学·徐宗霖)
- 沈阳超高压局通信设备运行参数管理信息系统(大连理工大学·杨楠)
- 基于JSP的图书馆管理系统的设计与实现(吉林大学·葛再立)
- 学生综合信息管理平台的设计与实现(吉林大学·刘铁刚)
- 基于J2EE的高校学生基本信息分布式系统的设计(中国海洋大学·冯川)
- 基于J2EE的远程网络教育系统研究与实现(电子科技大学·陈南荪)
- 基于J2EE的高校学生基本信息分布式系统的设计(中国海洋大学·冯川)
- 社区垃圾管理系统的设计研究(西安理工大学·徐宗霖)
- 基于网络爬虫的信息采集分类系统设计与实现(厦门大学·周茜)
- 学生管理系统的设计与实现(电子科技大学·贾林蓉)
- ASP/JSP技术及WEB应用系统研究开发(西安理工大学·薛梅)
- 基于JavaEE的某火箭资料库查阅系统的设计与实现(西安电子科技大学·于晨曦)
- 基于Web的卷烟订单管理系统的设计与实现(南昌大学·雷登科)
- 学生综合信息管理平台的设计与实现(吉林大学·刘铁刚)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码货栈
,原文地址:https://m.bishedaima.com/yuanma/35355.html