《物联网应用课程设计实验报告--物联网在线数据智能分析系统.docx》由会员分享,可在线阅读,更多相关《物联网应用课程设计实验报告--物联网在线数据智能分析系统.docx(34页珍藏版)》请在优知文库上搜索。
1、物联网应用课程设计报告物联网在线数据智能分析系统一、系统需求说明书1 .引言1.1. 编写目的本需求说明书目的在于:将用户提供的需求描述系统化、精确化、全面化。从而实现:1 .便于用户、分析人员和设计人员进行理解和交流。2 .支持目标软件系统的确认。3 .控制系统进化过程。预期读者:软件设计者和测试者。1.2. 背景说明:a.待开发的软件系统的名称:物联网在线数据智能分析系统;b.本项目的任务提出者:物联网课程设计课题组;c.本项目的任务开发者:物联网IlOl班刘松;d.用户及实现该软件的计算中心或计算机网络:计算机科学与技术学院计算机中心;1.3. 定义用户输入:用户输入的用户名及密码用户名
2、及口令与用户分类信息:存放在一个数据库表中,用以判断该用户是普通用户还是管理员用户;普通用户信息管理:是普通用户使用该系统的权限的表现,只能处理自己的信息和数据管理员用户信息管理:是管理员用户使用全局的表现普通用户基本信息:存放普通用户的id号,姓名,密码,用户信息,用户邮箱。管理员可以对学生状态进行修改,分为注册、注销等;数据信息:普通用户通过查询数据库的物联网在线数据信息,对数据进行分析,绘制图形,然后给出数据分析的结果。2 .任务概述2.1. 目标普通的用户登入系统后,可以对本用户的物联网在线数据进行管理和维护,分析,并得出分析结果。鉴于每位普通用户对于掌握的物联网在线数据是不同的,所以
3、需要对应用户关联对应的数据表,普通用户有获取本用户对应数据表信息的权利,但是没有获取其他用户对应的数据表信息的权利。利用用户的id号和其对应的数据表关联起来,以保证每位普通用户对应的数据表的一致性。2.2. 假定和约束开发期限:2周项目功能:实现基本演示功能3 .需求规定3.1. 对功能的规定普通用户信息管理,包括注册,登录,更新等。a.引言普通用户信息管理,是对用户信息的基本管理的最基本的功能,当有用户需要查询和分析物联网在线数据时,需要对该用户进行注册,如果此用户已经不再管理数据,需要对此用户进行注销,更新。b.输入用户的姓名和密码c.处理过程描述检查用户的状态,如果用户还未注册且现在过来
4、注册,则将用户状态置为注册;如果用户已经是系统中的用户一员,则验证用户名和密码,正确,让用户进入对应的物联网在线数据管理系统。d.输出操作成功或失败的提示信息1 .用户对物联网在线数据的管理和分析,从关联的数据中进行选择a.引言用户对应的物联网在线数据处理,是每个用户进入系统后,想要分析和处理数据并且得出结果的必要处理部分,用户的id号对应着用户所对应的处理数据。b.输入用户id号,对应的数据集c.处理过程描述用户在处理对应的数据集时,经过核心算法处理,调用相应的绘图组件,绘出用户需要的数据分析图形d.输出物联网在线数据的分析结果图对功能的需求可用如下的数据流图描述:一级数据流图:二级数据流图
5、:显示处理:显示分为正常显示和出错显示:用户登入和注册模块用户输入输入处理口令无效显示口令无效口令有效用户判断管理员用户普通用户用户分类信息数据字典普通用户信息:存放用户的id,姓名,密码,邮箱,个人基本信息介绍。用户可以查询,管理员可以对学生状态进行修改。数据信息:数据的X值和数据的y值3. 2.对性能的规定4. 2.1.精度数值要求精确到整型个位即可,要求邮箱和密码完全正确,姓名可以进行部分匹配。5. 2.2.时间特性要求a.响应时间:小于0.5秒b.更新处理时间:小于2秒c.数据的转换和处理时间:小于5秒3. 2.3.灵活性a.操作方式的变化:鼠标,键盘,触摸屏,手机等都可以使用b.运行
6、环境的变化:在多种平台上都可以使用c.精度和有效时限的变化:精度变化要对系统的影响到最小d.计划的变化或改进:较易改进4. 3.输入输出要求输入数据基本为:用户名、邮箱、用户密码;输出为用户界面,数据结构图和分析结果图5. 4.数据管理能力要求需要管理的记录个数为:大于1万,其中分为多个表3. 5.故障处理要求发生错误时,保证数据完整,对于数据库发生故障时要能够进行故障恢复,以保证数据的一致性同时也要定期进行数据备份。还要求此系统可以定期进行升级管理。4.运行环境规定4.1. 设备列出运行该软件所需要的硬设备。说明其中的新型设备及其专门功能,包括:a.处理器型号及内存容量:i3及以上,内存大于
7、512M;b.外存容量、联机或脱机:10G,联机c.输入及输出设备的型号和数量,联机或脱机:联机或脱机均可;d.数据通信设备的型号和数量:服务器SeVee.功能键及其他专用硬件:快捷键4. 2.支持软件支持Windows/Linux/Mac,php/python等编译程序4. 3.接口用户接口为用户界面,通过系统提示用户可输入数据以得到自己所需要的服务;外部接口为鼠标、键盘、触摸屏等交互工具,另需配置一台中心服务器,本系统与其他系统通过调用相同的数据库中的数据而保持一致性;内部接口为用户的id号、数据id号的一致性。4. 4.控制本系统通过网络提供服务,用户通过浏览器访问服务器,向服务器发出服
8、务请求。因此,需要使用TCP/IP网络协议,作为标准的通信控制接口。二、项目设计1 .总体设计1.1. 需求规定1 .用户登录和注册界面用户登录和注册界面,是用户进入物联网在线数据管理分析系统的入口,并且是对整个系统的设计风格的直观认识,。用户在本界面内可以自由转换注册和登录的两个功能,并且为了用户有一个良好的用户体验,注册和登录的切换效果比较流畅,整体页面采用响应式的布局。a.用户登录界面采用邮箱和密码或者用户名和密码的方式注册,保证唯一性b.用户注册界面注册信息包含:用户名,邮箱,密码,确认密码。此处需要判断密码是否一致,输入的用户名和邮箱数据库中是否已经注册,邮箱的格式是否正确。2 .首
9、页显示用户操作在首页显示中,显示登入的用户和用户对应的数据操作。整个页面风格为简约风格,设计样式采用响应式布局。每个用户操作响应流畅,跳转和显示链接顺畅,有比较好的响应方式。a.折线图链接点击此链接,将显示用户要处理的数据以折现图的形式展现出来b.柱状图链接点击此链接,将显示用户要处理的数据以柱状图的形式展现出来c.环形图链接点击此链接,将显示用户要处理的数据以环形图的形式展现出来d.饼状图链接点击此链接,将显示用户要处理的数据以饼状图的形式展现出来e.等高线图链接点击此链接,将显示用户要处理的数据以等高线图的形式展现出来f.聚类分析图链接点击此链接,将显示用户要处理的数据先进行聚类分析算法检
10、验,然后绘出聚类分析图3 .数据分析结果界面在数据分析结果界面中,使用简介大方的图形展示用户的处理数据,并且显示界面的布局方式也是采用响应式布局,是用户能够在不同平台下,可以阅览和处理数据。1.2. 基本设计概念和处理流程1 .系统模块(总控模块)该系统按照输入一一处理一一输出的流程进行工作用户登录在线数据处理系统返回数据结果图数据处理2 .在线数据处理系统3 .返回和显示处理数据处理结束后,需要将数据以图的方式直观显示出来获取数据处理数据图形显示 1.3.结构主模块用户选择模块柱状图环形图折线图饼状图等高线图聚类分析图2 .程序1设计说明聚类分析模块2.1. 程序描述本程序是通过获取用户在数
11、据库中的待分类的数据,然后通过聚类算法,将相关数据鬼好累放在一起,保存导数据库中,然后通过前端界面绘制出图形。2.2.功能2.3.性能用户可以通过id号来获取对应的数据时间特性要求:要求等待时间5秒2.4.输入项输入项名称:待分类数据类型:int或者IOng输入方式:数据库输入或者文件输入数据来源:用户提供的数据数量和频率:一次只能输入一类数据2.5.输出项输出项:分类数据数据类型:整型输出以数据库保存方式2.6.算法1.算法设计在此次算法设计中,采用k-近邻算法(KNN),基本思想是采用测量不同特征值之间的距离方法进行分类。a.基本原理存在一个样本数据集合(训练集),并且样本集中每个数据都存
12、在标签(即每一数据与所属分类的关系已知)。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较(计算欧氏距离),然后提取样本集中特征最相似数据(最近邻)的分类标签。一般会取前k个最相似的数据,然后取k个最相似数据中出现次数最多的标签(分类)最后新数据的分类。b.算法伪码:对未知类别属性的数据集中的每个点依次执行以下操作:D计算己知类别数据集中的点与当前点之间的距离;2)按照距离递增次序排序;3)选取与当前点距离最小的k个点;4)确定前k个点所在类别的出现频率;5)返回前k个点出现频率最高的类别作为当前点的预测分类。c.欧式距离计算1)二维平面上两点xA(xl,yl)与xB
13、(x2,y2)间的欧氏距离:a二(-2)2+(y-y2)22)两个n维向量xA(xll,xl2,Xln)与xB(x21,x22,x2n)间的欧氏距离:算法实现如F# -*-coding:utf-8-*-importmathimportnumpyasnpimportpylabasplimportrandomasrdimporturllib2importchardetimportMySQLdbimportsysreload(sys)sys.setdefaultencoding(utf-81)# 计算平面两点的欧氏距离defdistance(a,b):return(a0-b0)*2+(al-bl)*
14、2# K均值算法defkmeans(x,y,kcount):count=Ien(x)#点的个数#随机选择K个点k=rd.sample(range(count),kcount)k_point=xi,yiforiink#保证有序k_point.sort()whileTrue:km=foriinrange(k_count)#存储每个簇的索引#遍历所有点foriinrange(count):cp=xi,yi#当前点# 计算CP点到所有质心的距离_sse=distance(kpointj,cp)forjinrange(k_count)# CP点到那个质心最近minindex=_sse.index(min(_sse)# 把cp点并入第i簇kmminindex.append(i)#更换质心knew=foriinrange(k_count):_x=sum(xjforjinkmi)/len(kmi)_y=sum(yjforjinkmi)/len(kmi)knew,append(x,y)knew,sort()#排序if(knew!=kpoint):k_point=k_newelse:returnkm#计算SSEdefcalc_ss