随着物联网技术的普及,大量的数据需要被收集和处理,而这些数据往往是分散在不同的终端设备和云平台上的,传统的数据交易方式不能满足当前的需求。因此,本文提出了一个基于区块链的物联网数据交易平台,利用区块链的去中心化、安全性和不可篡改性等特性,实现了数据的透明、可信和交易的高效性。
本文首先介绍了物联网和区块链的相关基础知识,并分析了当前物联网数据交易面临的挑战和技术瓶颈。接着,本文提出了基于区块链的物联网数据交易平台架构,并详细阐述了其实现流程和具体实现方式。该系统采用智能合约技术,实现了数据交易的自动化和智能化,同时根据交易过程中的交易双方的信誉评价,建立了一个信誉度机制,有效保障了数据交易的安全性和可信度。
该系统的应用场景丰富多样,可以广泛应用于智能家居、智慧城市、工业自动化等领域。在实际应用中,该系统为物联网设备之间的数据交易提供了一个安全高效的解决方案,有助于推动物联网数据市场的繁荣发展。基于区块链的物联网数据交易平台在提高数据安全性和可信度的同时,也为物联网数据交易的发展带来了新的机遇和挑战,具有重要的理论和实际意义。
关键词:Java;SSM;物联网数据交易平台;MySQL
Abstract
With the popularization of Internet of Things technology, a large amount of data needs to be collected and processed, and these data are often scattered on different terminal devices and cloud platforms. Traditional data trading methods cannot meet the current needs. Therefore, this article proposes a blockchain based IoT data trading system, which utilizes the decentralization, security, and immutability of blockchain to achieve data transparency, trustworthiness, and efficient trading.
This article first introduces the basic knowledge of the Internet of Things and blockchain, and analyzes the challenges and technological bottlenecks faced by current IoT data transactions. Next, this article proposes a blockchain based architecture for IoT data trading systems, and elaborates on its implementation process and specific implementation methods in detail. The system adopts smart contract technology to achieve automation and intelligence of data transactions. At the same time, based on the reputation evaluation of both parties during the transaction process, a reputation mechanism is established to effectively ensure the security and credibility of data transactions.
The application scenarios of this system are diverse and can be widely applied in fields such as smart homes, smart cities, and industrial automation. In practical applications, this system provides a secure and efficient solution for data transactions between IoT devices, which helps promote the prosperous development of the IoT data market. The blockchain based IoT data trading system not only improves data security and credibility, but also brings new opportunities and challenges to the development of IoT data trading, which has important theoretical and practical significance.
Keywords:Java; SSM; IoT data trading; MySQL
1 绪论
1.1 课题背景
随着物联网技术的快速发展,越来越多的设备和物品可以连接到互联网,并实现数据的收集和交换。然而,现有的物联网系统面临着数据安全性、数据可信度和数据所有权等方面的挑战。传统的中心化数据管理模式容易受到攻击、篡改和数据滥用的风险,导致数据的安全性和可信度受到威胁。
区块链作为一种去中心化、安全可靠的技术,为解决物联网数据交易中的问题提供了新的可能性。区块链技术通过将数据分布式存储在不同的节点上,并使用密码学技术实现数据的不可篡改和透明性验证,可以有效保护物联网数据的安全性和完整性。同时,区块链技术还可以实现数据交易的可追溯性和可验证性,确保数据交易的公正和透明。
基于区块链的物联网数据交易不仅可以保护数据的安全和隐私,还可以建立数据所有权的机制,实现数据所有者对数据的控制和价值实现。此外,区块链技术还可以简化数据交易的流程,降低交易成本,促进数据市场的发展和繁荣。
因此,研究基于区块链的物联网数据交易具有重要的理论和实际意义。通过探讨如何利用区块链技术改善物联网数据的安全性、可信度和所有权,可以推动物联网应用的发展,促进数据交易的规范化和市场化,促进数字经济的健康发展。
1.2课题目的和意义
近年来,随着物联网技术的不断发展和普及,大量物联网设备生成的数据成为一种宝贵的资源。然而,现有的物联网数据交易中存在着数据不透明性、安全性不足、数据篡改等问题,影响了其可靠性和可信度。本研究旨在探讨如何利用区块链技术解决物联网数据交易中的问题,提升数据交易的安全性、可信度和透明度。
本研究以区块链技术为基础,针对物联网数据交易的实际问题进行探讨,具有一定的研究创新性。通过区块链技术,可以实现物联网数据的加密存储和传输,确保数据安全性和隐私保护,从而增强用户对数据的信任感。物联网数据交易广泛应用于智能城市、智能交通、智能医疗等领域,解决数据安全、隐私保护等问题对于推动社会信息化进程具有重要意义。
因此,研究基于区块链的物联网数据交易对于促进物联网技术应用的发展,提升数据安全性和可信度,推动数据交易市场的健康发展具有重要意义。未来,随着区块链技术和物联网技术的不断发展完善,基于区块链的物联网数据交易将有望在各个领域得到更广泛的应用和推广。
随着物联网(Internet of Things,IoT)技术的迅速发展,越来越多的传感器、设备和物品可以通过互联网连接,产生海量的数据。这些数据对于各行各业的应用具有重要意义,但同时也带来了数据安全、隐私保护、数据所有权等诸多问题。传统的中心化数据交易方式存在着数据篡改、数据监管等风险,而区块链技术作为一种去中心化、不可篡改的分布式账本技术,为物联网数据交易提供了全新的解决方案。
国外学者在区块链与物联网数据交易方面展开了大量研究工作。他们提出了基于区块链的数据共享和交易模型,利用智能合约实现数据的安全交易和授权管理。此外,在数据隐私保护方面,一些研究者提出了基于区块链的隐私保护方案,通过加密技术保护数据隐私,同时确保数据的可追溯性和可验证性。
国内也有不少研究者对区块链与物联网数据交易进行了探索。他们提出了基于区块链的数据交易平台,通过智能合约实现数据交易的自动化和信任化。同时,一些研究者关注物联网数据的实时性和精确性问题,提出了基于区块链的数据共享与校验机制,以确保数据的可靠性和安全性。
总体来看,国内外研究者在区块链与物联网数据交易方面取得了一些初步成果,但仍面临诸多挑战,如数据加密算法的安全性、智能合约的编写与执行效率等问题。未来,需要进一步加强跨学科合作,探索更加安全、高效的区块链技术在物联网数据交易领域的应用。
本研究将采用文献综述、案例分析、系统设计和实验验证等方法,深入探讨区块链技术在物联网数据交易中的应用,尝试构建一套完整的数据交易平台并通过实验验证模型的有效性。具体工作如下:
(1)区块链技术在物联网数据交易中的应用:分析区块链技术在物联网数据交易中的优势,如可追溯性、去中心化、不可篡改等特点,并探讨如何应用区块链技术构建安全可靠的数据交易平台。
(2)物联网数据交易模型设计:设计一种新的物联网数据交易模型,考虑数据交易的安全性、隐私保护以及交易确认的流程等,以实现数据交易过程的高效运作。
(3)智能合约与数据共享:结合智能合约技术,探索如何实现物联网数据的智能合约设计与执行,确保交易方的权益,推动数据共享与合作。
(4)隐私保护机制研究:研究数据隐私保护技术在物联网数据交易中的应用,包括数据脱敏、加密传输、权限控制等手段,以保障用户隐私。
本文共分为七章,章节内容安排如下:
第一章:引言,此章节将介绍论文的选题背景、研究意义以及国内外研究现状,这一部分的主要目的是引出论文的主要内容。
第二章:关键技术及相关开发工具,这部分简要概述了本次系统开发所使用的关键技术和开发工具。
第三章:系统需求分析,这可谓是论文中非常重要的一部分,它涵盖了系统的功能需求、性能需求、安全需求等详细的分析。
第四章:系统的设计,这一部分作为论文的核心,主要涉及到的有系统的整体架构设计、功能模块设计,同时包括数据库设计等内容。
第五章:系统的实现,在此章节将用文字描述结合系统截图展示的方式,向大家详细介绍系统的各项功能描述,以及部分重要代码的展示。
第六章:系统测试。用测试用例来对系统的个别功能进行测试,并展示测试结果。
第七章:结论。对整个研究工作进行了总结,并对未来的发展提出了展望。总结部分回顾了系统的设计和实现过程,并强调了所取得的成果和创新之处。展望部分则提出了进一步改进和扩展系统的建议,并展示了未来可能的研究方向和发展前景。
2 开发环境及相关技术介绍
Java是一种跨平台的高级编程语言,具有广泛应用于各个领域的优势。它拥有简单易学、可靠稳定、安全性强和良好的性能等特点。Java语言是我们目前生活中最常用的语言,它是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,所以Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
在基于SSM框架的物联网数据交易平台中,Java将作为主要的后端编程语言来实现系统的核心功能。通过使用Java,我们可以实现数据的处理、业务逻辑的编写以及与前端界面的交互。同时,Java还提供了丰富的类库和开发工具,方便开发人员进行系统设计和开发。
MySQL是一种流行的开源关系型数据库管理系统,被广泛应用于Web应用程序的数据存储和管理。它具有高性能、稳定可靠和良好的扩展性。在物联网数据交易平台中,MySQL数据库将用于存储和管理数据信息、用户数据、评论记录等相关数据。通过使用SQL语言进行数据操作和查询,我们可以实现对数据的增删改查操作,并保证数据的一致性和完整性。
MySQL经过多次的更新,功能层面已经非常的丰富和完善了,从MySQL4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的MySQL支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
SSM框架是由Spring、SpringMVC和MyBatis三个开源框架组成的一套Java Web开发框架。每个框架都有不同的职责和功能,它们相互配合形成一个完整的开发环境。Spring框架负责控制反转(IoC)和面向切面编程(AOP),提供了依赖注入和配置管理等功能;SpringMVC框架用于实现MVC模式,处理请求和响应的分发与处理;MyBatis框架则负责数据持久化层的开发,提供了方便的数据访问接口和映射关系。通过SSM框架,我们可以实现系统的各个模块之间的松耦合和高效协作,提高开发效率和系统性能。
区块链是一种块链式存储、不可篡改、安全可信的去中心化分布式账本,它结合了分布式存储、点对点传输、共识机制、密码学等技术,通过不断增长的数据块链(Blocks)记录交易和信息,确保数据的安全和透明性。
区块链的特点包括去中心化、不可篡改、透明、安全和可编程性。每个数据块都链接到前一个块,形成连续的链,保障了交易历史的完整性。智能合约技术使区块链可编程,支持更广泛的应用。
3 物联网数据交易平台分析
系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。
系统可行性分析是在实施物联网数据交易平台之前对其进行评估和探讨的过程。本论文旨在探讨系统可行性分析的重要性,并介绍了在技术、经济和操作层面上进行系统可行性分析的方法。通过系统可行性分析,可以有效地评估一个系统的可行性,减少实施过程中的风险并提高成功的概率。
3.1.1 技术可行性分析
基于区块链的物联网数据交易平台所采用的Java编程语言、MySQL数据库、SSM框架和区块链等技术,在实际开发中得到了广泛应用和验证,具备成熟的技术基础和可靠性。Java作为一种跨平台的编程语言,拥有丰富的类库和开发工具,可以满足系统的各项需求。MySQL作为一种流行的关系型数据库管理系统,提供了高性能和稳定可靠的数据存储和管理功能。而SSM框架结合了Spring、SpringMVC和MyBatis三个优秀的开源框架,提供了灵活、高效和易扩展的开发环境,使系统的开发更加便捷和高效。系统通过区块链技术确保数据的安全性、隐私性和可追溯性。因此,基于区块链的物联网数据交易平台在技术上是可行的。
在经济可行性方面,基于区块链的物联网数据交易平台的开发成本相对较低。首先,Java作为一种免费且开源的编程语言,不需要额外的授权费用。其次,MySQL数据库也是一种开源的关系型数据库管理系统,可以免费使用。而SSM框架的开源性质意味着没有昂贵的许可费用。另外,系统的运行和维护成本相对较低,主要包括服务器租用和人员培训等方面。通过合理的规划和资源管理,可以降低系统的运营成本。因此,基于区块链的物联网数据交易平台在经济上是可行的。
基于区块链的物联网数据交易平台的操作界面设计合理,用户交互流程清晰,易于操作和使用。系统的前端界面通过友好的设计和布局,使用户能够直观地进行数据搜索、评论和发布等操作。同时,系统也提供了相应的反馈和提示,帮助用户顺利完成各项操作。此外,系统还考虑了不同设备的兼容性和响应式布局,使用户能够在不同平台和设备上进行操作。因此,基于区块链的物联网数据交易平台在操作上是可行的。
3.2.1 功能性分析
基于区块链的物联网数据交易平台目的很简单,就是旨在通过将区块链技术与物联网数据交易相结合,建立一个安全、透明、可信的数据交易平台,实现物联网数据的安全交换和价值实现。物联网数据交易平台我划分为了普通用户模块和管理员模块这两大部分。
普通系统用户模块:
(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现数据购买等操作,就必须有这个系统的账号,如果没有账号的话,可以注册用户进行相关的操作,同时用户还可以通过“我的”这个按钮对个人信息以及操作的信息进行管控。
(2)查看物联网数据交易平台的首页信息:物联网数据交易平台的首页信息包含了首页、通知公告、平台资讯、数据信息等。
(3)通知公告:当用户点击“通知公告”这一菜单按钮,会显示管理员在后台发布的所有的通知公告,可以查看详情。
(4)平台资讯:当用户点击“平台资讯”这一菜单按钮,会显示管理员在后台发布的所有的平台资讯,可以查看详情,进行收藏、点赞、评论等。
(5)数据信息:用户点击“数据信息”进入到数据信息列表页面,可以搜索浏览数据信息,查看包括数据名称、数据编号、数据分类、数据内容、数据金额、数据详情等详细信息,并支持购买、点赞、收藏和评论等操作。
(6)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改进行管控。
(7)个人中心:用户点击右上角的“用户名”,然后点击“个人中心”可对个人首页、用户信息、余额充值、数据购买和自己收藏的信息进行管理。
管理员管理模块:
(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。
(2)系统用户:管理员可以对物联网数据交易平台中的管理员和普通用户账户信息进行增删改查。
(3)用户信息管理:子菜单用户信息列表、用户信息添加。用户信息列表展示所有用户信息,可以查询、删除、查看用户信息详情,用户信息添加可提交新的用户信息。
(4)余额充值管理:管理员点击“余额充值管理”菜单可以对前台用户提交的余额充值信息进行查询管理。
(5)数据分类管理:当管理员点击“数据分类管理”时,可以查看数据分类列表和数据分类添加。点击“数据分类添加”,输入数据分类,点击“提交”按钮可添加新的分类。同时可对数据分类管理进行增删改查。
(6)数据信息管理:子菜单数据信息列表、数据信息添加。数据信息列表展示所有数据信息,可以查询、删除、查看数据信息详情与评论信息,数据信息添加可提交新的数据信息。
(7)数据购买管理:管理员点击“数据购买管理”菜单可以对前台学生用户在数据信息模块里提交的数据购买订单进行管理。
(8)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图进行管理。
(9)通知公告管理:管理员点击“通知公告管理”菜单可以查看到系统中的所有通知公告信息,对已经存在的通知公告,管理员可以修改,也可以添加新的通知公告或者删除通知公告。
(10)资源管理:管理员可以对物联网数据交易平台前台展示的平台资讯以及平台资讯所属的分类进行管控。
3.2.2 非功能性分析
在设计和开发基于区块链的物联网数据交易平台时,除了考虑系统的功能性需求,还需要深入分析非功能性需求。非功能性需求分析在软件开发中至关重要。基于区块链的物联网数据交易平台在非功能性需求方面需要考虑性能、可靠性、安全性、易用性和可扩展性等多个方面。这些需求的满足将有助于提高平台的稳定性和运行效率,确保平台能够满足实际应用场景的需求。对于基于区块链的物联网数据交易平台,非功能性需求分析如下3-1表格所示:
表3-1 基于区块链的物联网数据交易平台非功能需求表
性能 | 响应时间:平台应能在短时间内响应并发用户请求,并能提供实时的数据分析结果。 吞吐量:平台需要处理大量数据,需要具备高吞吐量的能力,确保数据的快速处理。 资源利用率:利用SSM框架和区块链技术的数据交易方式在处理速度、并发能力等方面的差异,提高资源利用率,降低资源浪费。 |
可靠性 | 数据冗余与备份:利用MySQL关系型数据库存储特性,实现数据的冗余存储和定期备份,确保数据的可靠性。 容错能力:平台应具备较强的容错能力,当部分节点出现故障时,能够自动进行故障转移和数据恢复。 高可用性:通过部署高可用性方案,如SSM的高可用性配置,确保平台服务的连续性和稳定性。 |
安全性 | 数据加密:对密码等敏感信息进行加密处理,防止数据泄露。 访问控制:设置访问控制机制,有对应权限的用户才能访问相应的资源。 安全审计:系统应定期进行安全审计,检测潜在的安全漏洞,并采取相应的措施进行修复。 |
易用性 | 用户界面:设计直观简单易用的用户界面,方便用户进行操作和查看结果。 文档与培训:提供详尽的用户手册和操作指南,以及必要的培训资源,帮助用户快速上手。 错误处理与提示:在出现错误或异常时,提供明确的错误信息和提示,帮助用户快速定位问题。 |
可扩展性 | 水平扩展:支持通过增加节点来水平扩展集群规模,提高处理能力。 垂直扩展:支持硬件升级和配置调整,实现垂直扩展,满足不断增长的数据处理需求。 弹性伸缩:根据实际需求自动调整资源分配,实现弹性伸缩,降低运营成本。 |
在系统开发设计前,应该对功能做初步设想,清楚这个管理系统有什么板块,每个板块有什么功能,整体的设计是否满足使用者的需求,接着对所开发的系统功能进行的详细分析总结,从而设计出完整的系统并将其实现。普通用户和管理员的交流分析,使其达到最佳理解程度,使系统功能达到最佳,本文描述系统的两大主要用户的用例分析。
图3-1就是普通用户角色的用例展示。

图3-1 物联网数据交易平台普通用户角色用例图
图3-2就是管理员角色的用例展示。

图3-2物联网数据交易平台管理员角色用例图
3.4 系统流程分析
物联网数据交易平台主要的目的就是实现对数据信息的在线购买,图3-3就是系统的数据流图。

图3-3数据信息购买操作展开图
分析完物联网数据交易平台的数据流,接下来我们来看系统的业务流程,图3-5就是业务流程图:

图3-5业务流程图
本章主要通过对基于区块链的物联网数据交易平台的可行性分析、功能需求分析、系统用例分析和系统流程分析,确定了该系统所需实现的功能。这些分析结果为物联网数据交易平台的代码实现和测试提供了标准和指导。可行性分析考虑了技术、经济和操作的可行性,确保系统的实施可行;功能需求分析明确了系统需要实现的功能模块和具体要求;系统用例分析细化了系统功能,并定义了参与者、前置条件和基本流程;系统流程分析详细揭示了系统的运行流程和数据流动路径。这些分析结果为开发团队提供了明确的目标和指导,可以根据需求逐步实现各个功能模块,并在测试阶段验证系统是否满足预期要求。同时,分析结果也为未来的系统扩展和升级提供了基础和参考依据。
物联网数据交易平台的总体设计包括系统架构、数据库设计、用户界面设计等方面。通过合适的架构模式,如三层架构,确保系统的可靠性和可扩展性。设计规范化的数据库结构,以存储和管理养老院信息、用户数据等。同时,注重用户界面的友好性和易用性,提供便捷的功能操作和良好的用户体验。总体设计的目标是实现一个稳定、安全、高效的物联网数据交易平台,满足用户的需求,并促进物联网数据交易的便利与发展。
4.1 系统架构设计
本物联网数据交易平台从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。

图4-1物联网数据交易平台系统架构设计图
表现层(UI):又称UI层,主要完成本物联网数据交易平台的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本物联网数据交易平台时的舒适度。UI的界面设计也要适应不同版本的物联网数据交易平台以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本物联网数据交易平台的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本物联网数据交易平台的数据是放在服务端的MySQL数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本物联网数据交易平台的数据存储和管理功能。
4.2 系统模块设计
通过整体功能模块设计,我们将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。物联网数据交易平台的系统总体功能模块图如图4-2所示。

图4-2 物联网数据交易平台总体功能模块图
4.3 数据库设计
4.3.1 数据库概念结构设计
通过概念模型的设计,系统设计者可以更好地理解系统的核心构成和运作方式,为功能建设提供了清晰的蓝图。设计者可以根据这一概念模型,有针对性地进行后续系统开发和优化工作,以实现更好的用户体验和系统性能。同时,概念模型也为团队成员之间的沟通和协作提供了便利,使得各方对系统的整体架构和设计思路有了共识。
物联网数据交易平台的设计与实现的概念模型设计旨在通过实体-关系(E-R)图清晰地呈现系统的核心构成和各要素之间的关系。首先确定了核心实体,包括用户信息、数据分类、数据信息、数据购买、余额充值等。然后,通过建立实体之间的关系,如用户与数据信息的购买关系、数据信息与数据分类的从属关系、用户与余额的充值关系等,形成了一个完整的实体关系模型。该模型清晰地展现了系统中各个实体之间的关系,为后续功能的具体实现提供了指导和蓝图。
用户信息表(用户信息ID、用户账号、用户姓名、用户电话、账户余额、其他备注、创建时间、更新时间)
数据分类表(数据分类ID、数据分类、创建时间、更新时间)
数据信息表(数据信息ID、数据名称、数据图片、数据编号、数据分类、数据内容、数据金额、数据详情、点击数、点赞数、创建时间、更新时间)
数据购买表(数据购买ID、用户账号、用户姓名、用户电话、数据名称、数据编号、数据分类、数据金额、购买时间、购买详情、创建时间、更新时间)
余额充值表(余额充值ID、用户账号、用户姓名、用户电话、充值时间、充值金额、充值详情、创建时间、更新时间)
4.3.2 概念模型转为关系模型
(1)用户信息表实体属性图
用户信息表里面包括有用户信息ID、用户账号、用户姓名、用户电话、账户余额、其他备注、创建时间、更新时间等属性,其具体的实体属性图如图4-3所示。

图4-3 用户信息实体属性图
(2)数据分类实体属性图
数据分类里面包括有数据分类ID、数据分类、创建时间、更新时间等属性,其具体的实体属性图如图4-4所示。

图4-4 数据分类实体属性图
(3)数据信息属性图
数据信息里面包括有数据信息ID、数据名称、数据图片、数据编号、数据分类、数据内容、数据金额、数据详情、点击数、点赞数、创建时间、更新时间等属性,其具体的实体属性图如图4-5所示。

图4-5 数据信息实体属性图
(4)数据购买实体属性图
数据购买里面包括有数据购买ID、用户账号、用户姓名、用户电话、数据名称、数据编号、数据分类、数据金额、购买时间、购买详情、创建时间、更新时间等属性,其具体的实体属性图如图4-6所示。

图4-6 数据购买实体属性图
(5)余额充值实体属性图
余额充值里面包括有余额充值ID、用户账号、用户姓名、用户电话、充值时间、充值金额、充值详情、创建时间、更新时间等属性,其具体的实体属性图如图4-7所示。

图4-7 余额充值实体属性图
4.3.3 系统总体关系E-R模型
从E-R图向关系模型转换的数据依赖图法作为关系型数据库逻辑设计的工具,为数据库设计人员减少了大量的繁锁劳动,数据库设计也得到了进 一 步完善,工作效率也得到了一定程度的提高。下面是整个物联网数据交易平台中主要的数据库表总E-R实体关系图。

图4-8 物联网数据交易平台总E-R关系图
4.3.4 数据库逻辑结构设计
数据库设计一般包括需求分析、概念模型设计和逻辑结构设计三个主要过程。在需求分析阶段,明确系统对数据库的具体需求。概念模型设计将需求转化为概念模型,抽象出现实世界中的概念和关系。逻辑结构设计则是在概念模型的基础上,将概念模型转化为数据库中的具体表和关系的设计。这包括确定表的名称、字段、约束等,并定义主外键关系、索引、触发器等。通过需求分析、概念模型设计和逻辑结构设计,可以建立一个合理的数据库设计,为系统提供稳定、高效和可靠的数据管理和访问功能。这些过程相互衔接,确保数据库能够满足系统需求并有效地存储和操作数据。
通过上一小节中物联网数据交易平台中实体属性图和总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 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | balance_recharge_id | int | 10 | 0 | N | Y | 余额充值ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | recharge_time | date | 10 | 0 | Y | N | 充值时间 | |
6 | recharge_amount | int | 10 | 0 | Y | N | 0 | 充值金额 |
7 | recharge_details | text | 65535 | 0 | Y | N | 充值详情 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | data_classification_id | int | 10 | 0 | N | Y | 数据分类ID | |
2 | data_classification | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | data_information_id | int | 10 | 0 | N | Y | 数据信息ID | |
2 | data_name | varchar | 64 | 0 | Y | N | 数据名称 | |
3 | data_image | varchar | 255 | 0 | Y | N | 数据图片 | |
4 | data_number | varchar | 64 | 0 | N | N | 数据编号 | |
5 | data_classification | varchar | 64 | 0 | Y | N | 数据分类 | |
6 | data_content | varchar | 64 | 0 | Y | N | 数据内容 | |
7 | data_amount | int | 10 | 0 | Y | N | 0 | 数据金额 |
8 | data_details | text | 65535 | 0 | Y | N | 数据详情 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | data_purchase_id | int | 10 | 0 | N | Y | 数据购买ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | data_name | varchar | 64 | 0 | Y | N | 数据名称 | |
6 | data_number | varchar | 64 | 0 | Y | N | 数据编号 | |
7 | data_classification | varchar | 64 | 0 | Y | N | 数据分类 | |
8 | data_amount | int | 10 | 0 | Y | N | 0 | 数据金额 |
9 | purchase_time | date | 10 | 0 | Y | N | 购买时间 | |
10 | purchase_details | text | 65535 | 0 | Y | N | 购买详情 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_phone_number | varchar | 16 | 0 | Y | N | 用户电话 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | 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 | 更新时间: |
表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 | | 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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_information_id | int | 10 | 0 | N | Y | 用户信息ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | account_balance | int | 10 | 0 | Y | N | 0 | 账户余额 |
6 | other_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 | 更新时间 |
4.4本章小结
整个物联网数据交易平台的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
5 物联网数据交易平台详细设计与实现
物联网数据交易平台的详细设计与实现主要基于前面的需求分析和总体设计。它包括页面设计和业务逻辑的具体实现。在界面实现方面,根据系统功能和用户需求,设计各个页面的布局和界面,包括用户界面和管理员界面,并采用响应式设计确保在不同设备上的正常显示。在业务逻辑实现方面,根据用户和管理员模块的需求,实现注册、登录、信息管理、数据信息管理和浏览、购买、收藏、评论等功能,并设计数据库表结构和操作代码。通过适当的测试和调试,确保系统稳定、安全、高效地运行,满足用户和管理员的需求。通过详细设计和实现,物联网数据交易平台能够提供良好的用户体验和有效的数据管理与推荐功能。
5.1前台用户功能模块
前台首页界面是用户访问系统的入口页面,它应该展示平台的主要功能和特色,并提供导航链接以便用户浏览和搜索信息。首页界面的设计应注重页面的美观性和用户体验,同时也需要考虑页面的加载速度和响应性能。
当进入物联网数据交易平台时,系统的布局如下所示:顶部是系统的导航栏,用于导航到不同的功能页面。接下来是一个轮播图区域,展示一些精选系统的宣传内容,吸引用户的注意。在轮播图下方是平台资讯和数据信息推荐区域,展示当前最受欢迎或点击率较高的数据信息。对于有浏览记录的用户,系统会根据他们的浏览历史和喜好进行个性化推荐,将符合他们兴趣的数据信息显示在推荐区域中。这样的布局设计旨在为用户提供直观、吸引人的界面,使用户能够快速找到感兴趣的数据信息和功能,并提供个性化的推荐服务,增强用户体验。
首页载入流程图如下所示。

图5-1 首页载入流程图
系统首页实现效果如下图5-2所示。

图5-2 首页界面效果图
用户注册界面是物联网数据交易平台中的重要组成部分。该界面包含一个注册表单,其中用户需要填写用户名、密码、确认密码、电子邮箱、手机号码和标签选择等信息。为了确保安全性,还可以添加验证码字段。用户需要勾选同意系统的用户协议和隐私政策才能继续注册。注册过程中,系统应提供错误提示,及时指出输入信息的错误或不完整,并引导用户进行修正。通过这样的设计,用户可以方便地填写个人信息并完成注册,同时确保注册过程的安全和准确性。
注册流程图如下图5-3所示。

图5-3 注册流程图
用户注册界面展示如下图5-4所示。

图5-4注册界面图
注册代码如下:
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
5.1.3 用户登录界面
物联网数据交易平台中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当普通用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到物联网数据交易平台的首页中;否则将会提示相应错误信息。
登录流程图如下图所示。

图5-5登录流程图
用户登录界面如下图5-6所示。

图5-6用户登录界面图
登录的逻辑代码如下所示。
@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<>();
公告界面是物联网数据交易平台中用于发布和展示系统相关通知和公告的页面。界面上显示一个公告列表,按照时间顺序排列,最新的公告在顶部。每个公告都有一个简洁的标题,并提供详细的内容,用户可以点击标题查看完整信息。公告还显示发布日期,让用户了解公告的时效性。公告列表展示界面如下图5-7所示。

图5-7公告列表展示界面图
查询公告列表的逻辑代码如下所示。
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
当访客点击物联网数据交易平台中导航栏上的“平台资讯”后将会进入到该“平台资讯”列表的界面,然后选择想要看的平台资讯,点击进入到详细界面,在详细界面可以收藏+点赞+评论等操作。平台资讯界面如下图5-8所示。

图5-8平台资讯界面图
用户可以浏览数据信息并进入详细介绍页面,了解该数据的数据名称、数据编号、数据分类、数据内容、数据金额、数据详情等信息。用户可以对喜欢的数据信息进行购买、点赞、收藏和评论操作。在评论区,用户可以发表评论,与其他用户分享观点和评价。这样的设计使用户能够方便地了解数据信息,并参与点赞、收藏和评论等互动活动,丰富了他们的数据信息浏览购买体验。数据信息详情界面如下图5-9所示。

图5-9数据信息详情界面图
查询单个数据信息关键代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
数据购买界面如下图所示。

图5-10数据购买界面图
添加购买信息关键代码如下:
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
当用户点击右上角“我的”这个按钮,会出现子菜单,点击“个人中心”可以对个人首页、用户信息、余额充值、数据购买和自己收藏的信息进行设置管理。个人中心管理如下图5-11所示。

图5-11个人中心管理界面图
5.2后台功能模块
5.2.1系统用户界面
物联网数据交易平台中,管理人员可以通过“系统用户”菜单对注册的普通用户和管理员进行管控。他们可以查看用户列表,包括用户名、角色和注册日期等信息,并进一步查看用户详情,如个人资料。管理员还可以设置或修改用户的权限级别,提升某个用户为管理员或降低其权限。另外,管理员可以管理用户的状态,禁用或解禁某个用户的账号。此外,管理员可以查看用户的活跃度、登录次数、评论数量等统计信息,以了解用户行为和系统使用情况。通过这些功能,管理人员能够有效地对注册的普通用户和管理员进行管控,确保系统的安全性、稳定性和用户体验。系统用户如下图5-12所示。

图5-12系统用户界面图
用户列表管理关键代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
管理员执行用户信息管理,并可以操作相关内容,包括查询用户信息、删除用户信息和添加用户信息等。用户信息管理界面如下图5-13所示。

图5-13用户信息管理界面
管理员执行余额充值管理,并可以操作相关内容,包括查询余额充值信息、删除余额充值信息和添加余额充值信息等。余额充值管理界面如下图5-14所示。

图5-14余额充值管理界面
5.2.4 数据分类管理界面
管理员点击“数据分类”可以查看到所有的数据分类,可以对其进行增删改查操作。数据分类管理界面如下图5-15所示。

图5-15数据分类管理界面图
添加数据分类关键代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
数据信息管理模块:管理员执行数据信息管理,可以添加、查询、重置和删除数据信息。如果需要添加数据信息,点击“添加”按钮输入数据名称、数据编号、数据分类、数据内容、数据金额、数据详情等信息,完成提交。
“数据信息添加”此页面的关键是编写数据信息,包括数据名称、数据编号、数据分类、数据内容、数据金额、数据详情等。管理员可以单击提交按钮以完成信息的添加。如果未写入完整的数据信息,例如,如果未写入数据内容,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的οnsubmit=”return checkForm()来检查。
点击左侧菜单“数据信息管理”,页面跳转到数据信息管理外观,调用后台查询所有数据信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的Java页面,显示出数据信息,单击删除按钮完成数据信息的删除。
数据信息管理流程图如下图所示。

图5-16数据信息管理流程图
数据信息管理界面如下图所示。

图5-17数据信息管理界面图
查询数据信息的关键代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
数据购买管理模块:管理员根据用户提交的数据购买信息,可以对数据购买进行管理,包括查询、重置或删除。数据购买管理界面如下图所示。

图5-18数据购买管理界面图
管理人员在“系统管理”这一菜单下是可以对物联网数据交易平台内的轮播图进行添加修改的,其管理界面如下图5-19所示。

图5-19轮播图管理界面图
轮播图上传关键代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam(value = "file",required=false) MultipartFile file,HttpServletRequest request) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = request.getSession().getServletContext().getRealPath("\\") +"upload\\";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
int lastIndexOf = fileName.lastIndexOf(".");
String suffix = fileName.substring(lastIndexOf);
fileName = IdWorker.getId()+suffix;
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
管理员点击“资源管理”菜单能够对其下子菜单平台资讯和平台资讯的分类进行增删改查,也可以对资讯的评论进行管控。资源管理界面如下图5-20所示。

图5-20资源管理界面图
6系统评估与测试
系统开发的最后一个步骤就是系统测试,系统测试也是整个系统十分重要的一个环节,测试的好坏关系到产品的发展。客户对软件的质量、性能和可靠性等需求就要通过测试来实现。测试过程要必须遵循严谨性、完善性、规范性的原则,测试的主要目的就是看看在系统运行中,是否会出现bug,然后对出现的bug进行调试,直到程序完美运行。但是软件的测试只能尽可能的减少bug,理论上来说是无法达到消除bug。但是bug越少,系统出错的几率就越低,用户使用起来也更方便、更安全。
随着现代信息的快速发展,在社会各大领域中已经都开始应用网络信息技术,在应用网络技术的同时人们也开始把软件的质量问题作为了一个重要焦点来关注,因为一个软件的好与坏它决定着这个系统在市场上的生存,所以我们必须要把软件质量来做好,这样才有一定的生存能力。对于用户来说它们首先选用的都是保证这个系统软件的质量问题,因为一个系统的软件质量决定着用户在后期上成本经济的问题。
图6-1就是纠错测试流程。

图6-1 测试与纠错信息流程
具体测试方法包括:黑盒测试和白盒测试。
黑盒测试又被人们称作为功能测试,通常是在程序的接口来做一些测试的方法,它一般包括对程序的功能和使用的方法来做出一些数据的接受和输出,同时还可以做出正确的输出信息,并保证与外部信息的完整性。
白盒测试通常被人们称作为结构测试,在整个程序的结构和处理当中它是由程序当中的逻辑测试和检验程序来完成一些正确的工作。
具体的功能测试它是包括:系统的适用性、准确性、安全性等功能测试。
系统测试包括:用户登录功能测试、数据信息查看功能测试、数据信息添加、平台资讯搜索、密码修改功能测试,如表6-1、6-2、6-3、6-4、6-5所示:
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
数据信息查看功能测试:
表6-2 数据信息查看功能测试表
用例名称 | 数据信息查看 |
目的 | 测试数据信息查看功能 |
前提 | 用户登录 |
测试流程 | 点击数据信息列表 |
预期结果 | 可以查看到所有数据信息信息 |
实际结果 | 实际结果与预期结果一致 |
管理员添加数据信息界面测试:
表6-3 管理员添加数据信息界面测试表
用例名称 | 添加数据信息测试用例 |
目的 | 测试数据信息添加功能 |
前提 | 管理员正常登录情况下 |
测试流程 | 1)管理员点击数据信息,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的数据信息 |
实际结果 | 实际结果与预期结果一致 |
平台资讯搜索功能测试:
表6-4平台资讯搜索功能测试表
用例名称 | 平台资讯搜索测试 |
目的 | 测试平台资讯搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的平台资讯 |
实际结果 | 实际结果与预期结果一致 |
密码修改搜索功能测试:
表6-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
通过编写物联网数据交易平台的测试用例,已经检测完毕用户登录功能测试、数据信息查看功能测试、数据信息添加、平台资讯搜索、密码修改功能测试,通过这5大模块为物联网数据交易平台的后期推广运营提供了强力的技术支撑。
本物联网数据交易平台满足相关信息的管理需求,在设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了管理员以及用户能够方便操作。系统的主要特点和优点归纳如下:
(1)本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给用户带来了极大的方便。
(2)该物联网数据交易平台内容全面,管理方便可以及时的全面的处理各种错误,异常,这样避免了很多因用户的马虎操作而出现的失误,其操作方便,用户界面友好,能够上网的人都可以很好的进行操作。
经过对上述的测试结果分析,所有基本功能齐全,操作简单,系统运行性能良好,系统安全可靠,能促进物联网数据交易平台的发展,发展前景广阔。
通过基于区块链的物联网数据交易平台的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在租赁的云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。
系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
[1]牛科迪,李敏,姚中原,等.面向物联网的区块链共识算法综述[J/OL].计算机应用,1-13[2024-04-25].http://kns.cnki.net/kcms/detail/51.1307.TP.20240415.1051.024.html.
[2]谭颖亮,黄钰,邵炜.区块链的物联网信誉数据管理系统模型和关键机制研究[J].网络安全技术与应用,2024,(03):56-59.
[3]杨金成,尹溟铄.基于区块链的物联网安全通信机制研究[J].网络安全和信息化,2024,(03):123-125.
[4]曹美荣.基于区块链的物联网隐私数据保护技术研究与实践[J].网络空间安全,2024,15(01):118-123.
[5]刘佳乐,王春东.基于区块链的物联网应用研究综述[J].天津理工大学学报,2023,39(06):34-41.
[6]杨久华,沈苏彬.一种基于区块链的物联网访问控制方案[J].计算机技术与发展,2023,33(12):136-142.
[7]齐鎏岭.面向物联网的区块链关键问题研究[D].河北大学,2023.DOI:10.27103/d.cnki.ghebu.2023.000082.
[8]Mahmoud A ,Javier P ,Amin S , et al.Industrial data monetization: A blockchain-based industrial IoT data trading system[J].Internet of Things,2023,24100959-.
[9]Zhou W ,Zhang D ,Han G , et al.A Blockchain-Based Privacy-Preserving and Fair Data Transaction Model in IoT[J].Applied Sciences,2023,13(22):
[10]李维峰.基于区块链技术的智能家居物联网模型设计[J].现代电子技术,2023,46(23):93-97.DOI:10.16652/j.issn.1004-373x.2023.23.017.
[11]杨久华.基于区块链的物联网数据安全存储技术研究[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.001232.
[12]许鸣睿.面向海量数据存储的高效区块链系统设计与实现[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.001120.
[13]张地,李运发.基于区块链的物联网多域数据共享机制[J/OL].电子科技,1-10[2024-04-25].https://doi.org/10.16180/j.cnki.issn1007-7820.2024.10.008.
[14]聂子翔.面向物联网的区块链轻量化关键技术研究[D].北京邮电大学,2023.DOI:10.26969/d.cnki.gbydu.2023.000282.
[15]Youngho P ,Hyeon M J ,Uk S S .Blockchain-Based Secure and Fair IoT Data Trading System with Bilateral Authorization[J].1 Electronics and Information Communications Research Center, Pukyong National University ,Busan ,Korea;2 Department of Information Security, Graduate School, Pukyong National University ,Busan ,Korea;3 Division of Computer Engineering, Pukyong National University ,Busan ,Korea,2023,76(2):1871-1890.
[16]李井涵,沈国华,杨阳,等.结合区块链的物联网数据安全共享机制[J].小型微型计算机系统,2023,44(08):1812-1818.DOI:10.20009/j.cnki.21-1106/TP.2021-0982.
[17]李美玲.物联网中的区块链共识机制研究[D].烟台大学,2023.DOI:10.27437/d.cnki.gytdu.2023.000287.
[18]宋昊翔.基于区块链的身份认证和访问控制研究与实现[D].北京交通大学,2023.DOI:10.26944/d.cnki.gbfju.2023.000900.
[19]张浩.SSM框架在Web应用开发中的设计与实现研究[J].电脑知识与技术,2023,19(08):52-54.DOI:10.14004/j.cnki.ckt.2023.0353.
[20]许跃颖.基于敏捷开发的SSM Web应用开发措施[J].电子制作,2021,(16):45-46+22.DOI:10.16589/j.cnki.cn11-3571/tn.2021.16.016.
到此,整个基于区块链的物联网数据交易就算完成了,虽然过程十分艰难,但是等到都完成的时候,我感觉无比的自豪,虽然设计的系统还存在许多的纰漏,但是我已经拼劲全力,给自己的大学四年画上了一个圆满的句号。
在这里我首先要感谢的就是大学四年来所有教导我的老师,是他们教会了我许多的专业知识以及做人的道理,从一进校门对对开发系统一窍不通到现在能自主开发一个管理系统,里面包含了前台框架、后台框架、业务流程、数据结构、操作系统等各种知识,只有把他们统一运用好,才能够完成整个系统,这都是老师的功劳;其次我要感谢我的指导老师,在开发这个系统的时候,我遇到了无数的问题,经常通过线上、线下的方式去请教导师,每次去请教导师,他从来没有不耐烦,都是细心的引导,告诉我怎么样实现这个功能,怎么样才能使得系统更加完善,然后通过自己查询相关资料解决问题,提高了自己自主解决问题的能力,授人以鱼不如授人以渔,指导老师的这种工作态度受益终生,我也会向老师不断靠拢,向他学习,在此我只想说一句:“老师,谢谢您,您辛苦了”!最后我还要感谢我的室友、同学,在一起学习这四年,他们不但学习上给了我很多建议,在生活上更加给了我帮助,正是有他们的帮助,我的大学生涯才如此完美。
最后,希望自己在未来的道路上能够越走越远,不辜负在大学的学习以及老师们的细致的教导,追风赶月莫停留,平荒尽处是春山。
关注+点赞+收藏+私信博主,免费领取项目源码