✌IT实战营站长,拥有10年软件相关系统架构及教学经验,Java、大数据培训讲师,曾任公司技术总监;其与团队成员,陆续录制了一系列计算机毕业设计项目课程,可供大家学习参考,现公司全新升级提供专业售后团队与技术交流群!✌
文末获取联系
目录
一、项目介绍
二、功能模块
三、代码介绍
四、参考lunwen
五、相关案例
六、源码获取
随着经济的高速发展,空气质量这一生存的大问题显得越来越重要,我们以前发展太多重工业的时候,已经牺牲了很多的空气环境,到现在由于空气质量引发的一系列问题比比皆是,所以我们现在要注重空气的质量去保护环境,特别是现在网络飞速发展的时代,我们可以随时随地就能获得各地的空气质量信息,方便我们去了解空气质量以及对空气质量进行及时的控制,让空气质量保持在一个比较良好的范围。大气污染状况是与我们每一个人的健康情况息息相关的,通过空气质量分析,可以使大家增强环境保护意识,提高公众的科学素养,我们通过收集沧州地区自动监测点位的实时发布数据,储存进空气质量搜集的数据库。这些数据不但可以呈现给用户每个城市实时的一些空气质量信息,也可以把获取的数据储存起来,方便以后去收集利用,或者把这些数据给有关的环境保护部门,作为整治空气环境的理由。
空气质量是每个国家都不可忽视的问题。目前,大多数的城市空气质量相关网站只显示该城市当天或近一段时间的 PM2.5指数,只反映某区域每立方米空气中直径小于2.5μm的颗粒物含量的统计指标但没有反映颗粒物中包含哪些微量元素。而这些微量元素正是影响人们身体健康的重要因素。基于上述问题,赵辉通过对网络上不同城市或地区的空气质量信息进行实时采集,将所收集到的非结构化数据转换为结构化数据,得到了丰富和详细的城市空气质量数据。最终得出该区域是否有利于人们宜居。于晓晶、蒋健分别对苏州和合肥近几年来AQI和污染物情况进行了分析,得出了每年环境渐渐变好的结论,并且给出了发展绿色化工业的相关建议。黄燕通过聚类分析中的系统聚类根据城市空气质量相关指标将30个城市聚为两类,通过不同距离的定义,分别使用了Word法,最长距离法,类平均法和最短距离法,最后得到空气好的类别和空气质量差的类别分别包含那些城市。张梦瑶基于济南市2016-2019年间的日均 AQI 指数以及6 种主要空气污染物进行空气质量分类规则分析,运用了描述性统计分析、聚类分析、数据挖掘算法以及时间序列分析等相关统计学模型,对济南市的空气质量状况进行具体的分类预测,得到产生较大影响的污染物主要是 PM2.5、PM10。并给出节能减排防护措施,最大程度上减少污染物排放和提高天然气等清洁能源的投入使用比例的建议。胡亚娟通过对城市群的空间进行聚类分析, 验证了我国的空气污染存在城市群的特点,然后着重分析了长三角城市群的空气污染情况,发现长三角城市群的聚类结果变化不大,并推测出PM2.5是影响长三角城市群空气质量的一个重要因素。得出城市群的空气污染的防治可以从单个城市的防治规划上升到城市群联合进行防治,城市群的联合污染防治提供必要的基础,以达到改善城市空气质量的目的。
下面是资料信息截图:
本沧州地区空气质量数据分析及可视化系统采用Python语言来进行开发,用小巧灵活的MySQL数据库做完后台存储解释。本系统不仅主要实现了注册登录,系统首页,个人中心,用户管理,城市区域管理,空气状况管理,空气质量管理,系统管理,数据爬取,大屏分析等功能,通过这些功能基本可以满足人们对空气质量的查看和分析的需要。具体功能如下图所示
表 4-1 系统数据库整体信息表
本系统共包含9个表:分别是城市区域表,配置文件表,空气质量表,空气状况表,天气资讯表,关于我们表,用户表表,用户表等信息表
表名 |
说明 |
功能 |
chengshiquyu |
城市区域 |
主要用来存放城市区域的相关内容 |
config |
配置文件 |
主要用来存放配置文件的相关内容 |
kongqizhiliang |
空气质量 |
主要用来存放空气质量的相关内容 |
kongqizhuangkuang |
空气状况 |
主要用来存放空气状况的相关内容 |
news |
天气资讯 |
主要用来存放天气资讯的相关内容 |
systemintro |
关于我们 |
主要用来存放关于我们的相关内容 |
users |
用户表 |
主要用来存放用户表的相关内容 |
yonghu |
用户 |
主要用来存放用户的相关内容 |
表 4-2 城市区域信息(chengshiquyu)表
编号 |
数据字段名 |
数据类型 |
允许空 |
是否主键 |
说明 |
NO.1 |
id |
int |
NO |
PK |
主键 |
NO.2 |
addtime |
timestamp |
NO |
NO |
创建时间 |
NO.3 |
chengshiquyu |
varchar(200) |
NO |
NO |
城市区域 |
基于Python沧州地区空气质量数据分析及可视化系统是一个管理模式的系统,所有操作都需要用户在登陆之后方可进行。所以用户打开的第一个页面也是登录页面。在的设计的时候首先加入2个Input,分别用来存放对应的的用户名和密码,其中密码的那个Input设置对应的textmod为password,这样用户在登录的时候密码就是不可以见的,保证了系统的安全性,然后在加入2个button分别用来登录和取消,点击登录按钮,系统自动的判断用户的有效性,当用户名和密码都是有效的时候,成功登录到系统中来,当无效的时候给出对应的提示,点击取消按钮,取消上次输入的信息,后台登入界面如图5-1所示,登入后后台首页简单明了方便用户上手使用:
基于Python的沧州地区空气质量数据分析及可视化系统的操作人员可以管理用户,在用户管理中输入对应的用户账号+密码+用户姓名+头像+性别+联系方式等基本信息后点击用户管理中的[提交]按钮,系统会将用户输入的信息通过mysql_query方法将数据添加到数据库yonghu表中,在页面中我们通过required来进行控件的非空验证,这样用户在没有输入信息的时候系统会给出对应的提示。基于Python的沧州地区空气质量数据分析及可视化系统用户信息添加界面如图 5-3
图5-3沧州地区空气质量数据分析及可视化系统用户添加页面
基于Python的沧州地区空气质量数据分析及可视化系统的管理员在上一步中对用户信息进行了添加操作之后还根据对用户信息进行管理的操作,主要包括根据关键字对用户信息进行查询,对有误的信息进行修改,对不需要的用户信息进行删除等操作。基于Python的沧州地区空气质量数据分析及可视化系统用户管理界面如图5-4所示
基于Python的沧州地区空气质量数据分析及可视化系统的管理员在上一步中对空气状况信息进行了添加操作之后还根据对空气状况信息进行管理的操作,主要包括根据关键字对空气状况信息进行查询,对有误的信息进行修改,对不需要的空气状况信息进行删除等操作。基于Python的沧州地区空气质量数据分析及可视化系统空气状况管理界面如图5-8所示
注册模块相关代码
# coding:utf-8
__author__ = "ila"
from django.http import JsonResponse
from .users_model import users
from util.codes import *
from util.auth import Auth
import util.message as mes
def users_login(request):
if request.method in ["POST", "GET"]:
msg = {'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
if req_dict.get('role')!=None:
del req_dict['role']
datas = users.getbyparams(users, users, req_dict)
if not datas:
msg['code'] = password_error_code
msg['msg'] = mes.password_error_code
return JsonResponse(msg)
req_dict['id'] = datas[0].get('id')
return Auth.authenticate(Auth, users, req_dict)
def users_register(request):
if request.method in ["POST", "GET"]:
msg = {'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
error = users.createbyreq(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_session(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}
req_dict = {"id": request.session.get('params').get("id")}
msg['data'] = users.getbyparams(users, users, req_dict)[0]
return JsonResponse(msg)
def users_logout(request):
if request.method in ["POST", "GET"]:
msg = {
"msg": "退出成功",
"code": 0
}
return JsonResponse(msg)
def users_page(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code,
"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
req_dict = request.session.get("req_dict")
tablename = request.session.get("tablename")
try:
__hasMessage__ = users.__hasMessage__
except:
__hasMessage__ = None
if __hasMessage__ and __hasMessage__ != "否":
if tablename != "users":
req_dict["userid"] = request.session.get("params").get("id")
if tablename == "users":
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = users.page(users, users, req_dict)
else:
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = [],1,0,0,10
return JsonResponse(msg)
def users_info(request, id_):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
data = users.getbyid(users, users, int(id_))
if len(data) > 0:
msg['data'] = data[0]
# 浏览点击次数
try:
__browseClick__ = users.__browseClick__
except:
__browseClick__ = None
if __browseClick__ and "clicknum" in users.getallcolumn(users, users):
click_dict = {"id": int(id_), "clicknum": str(int(data[0].get("clicknum", 0)) + 1)}
ret = users.updatebyparams(users, users, click_dict)
if ret != None:
msg['code'] = crud_error_code
msg['msg'] = ret
return JsonResponse(msg)
def users_save(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
error = users.createbyreq(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_update(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
if req_dict.get("mima") and req_dict.get("password"):
if "mima" not in users.getallcolumn(users,users):
del req_dict["mima"]
if "password" not in users.getallcolumn(users,users):
del req_dict["password"]
try:
del req_dict["clicknum"]
except:
pass
error = users.updatebyparams(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_delete(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
error = users.deletes(users,
users,
req_dict.get("ids")
)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
用户登录相关代码:
import { DataTypes } from 'sequelize'
import sequelize from './sequelize'
const ConfigModel = sequelize.define('ConfigModel', {
id: {
type: DataTypes.BIGINT,
primaryKey: true,
autoIncrement: true,
allowNull: false,
comment: '主键id'
},
name: {
type: DataTypes.STRING,
allowNull: false,
comment: '配置参数名称'
},
value: {
type: DataTypes.STRING,
allowNull: true,
comment: '配置参数值'
}
}, {
timestamps: false,
freezeTableName: true,
tableName: 'config'
})
export default ConfigModel
大家点赞、收藏、关注、评论啦 、查看获取联系方式