经过上一篇文章中对后端发展技术的总结,我认为我可以根据这个发展过程逐步增加自己项目中的技术点。因此,我需要设计一个具体的项目,不断往这个项目中增加内容。
以下内容是我在gpt老师的帮助下共同完成的,内容很多,且目前还没设计完成,我将把笔记分成多个博客上传,下面上传的是到今天为止已经完成的部分。
另外,我把实验过程上传到CSDN,一方面是为了督促自己学习,另一方面是为了方便查看笔记,所以会有自己的侧重点,也可能会有出错的地方,这是不够完美的笔记,请不要介意。以及,如发现错误,欢迎批评指正,感恩~
智能家居管理系统1.0
简介
我设计了一个智能家居管理系统,这一版本的功能比较简单,版本号命名为1.0。
引言
在现代社会,科技的飞速发展正在深刻地改变着我们的生活方式。智能家居管理系统正是在这一大背景下应运而生的创新产品。它不仅代表着居家生活的未来趋势,而且彰显了科技带来的便利和舒适。本系统的核心理念是通过高度集成的智能化解决方案,将家庭成员的日常生活与科技无缝对接,从而提升生活品质,增强家居安全,实现能源效率的最大化。
用户可以做什么
在目前的初步设计下,用户可以通过本系统实现以下功能:
-
家庭管理: 用户可以添加并管理自己的家,无论是一个还是多个,每个家都有一个独立的识别ID和详细信息。
-
访客管理: 系统提供了访客记录功能,使得用户可以查看所有访问者的信息,包括到访时间,确保家庭安全。
-
健康与环境监测: 实时监控空气质量、温度和湿度,为家庭成员提供健康舒适的居住环境。
-
能源监控: 对家中的用电、用水、燃气和网络使用情况进行监测,帮助用户合理规划能源使用,降低开支。
-
智能家居控制: 无论用户身在何处,都可以通过系统远程控制家中的智能设备,包括灯光、暖气等。
-
售后服务: 用户可以方便地查询家电的购买和保修信息,系统还将与商家连接,为用户提供便捷的售后服务。
相关技术
本系统将采用Java语言搭配Spring Boot框架进行后端开发,利用MySQL数据库管理数据。前端将应用现代网页技术,包括但不限于HTML, CSS, JavaScript等,来构建一个直观、响应式的用户界面。
在开发过程中,由于对前端部分不够了解,我将利用gpt共同完成。另外,在这个过程中,我预期实现的目标包括:
- 深入理解并应用Spring Boot框架处理请求,实现业务逻辑和响应数据,掌握其依赖注入、安全性、数据管理等核心功能。
- 采用MyBatis操作MySQL数据库,通过编写SQL语句和Mapper接口,采用了动态SQL和XML映射文件等技术,实现基本的增删查改等功能。
- 除了数据库的基本操作以外,还将涉及更复杂的操作,包括分页查询、预编译SQL、查询优化、事务管理、触发器等。
- 了解前端开发技能,包括构建动态网页和用户界面(非我的学习重点)。
- 使用Maven对项目进行依赖管理和构建。
- 学习使用版本控制工具如Git来进行代码管理。
下面开始我的的项目设计。由于项目目前还没有设计完成,且内容比较多,后续我将继续更新,写成多篇笔记。
一、概念结构设计
1.1 E-R图
1.1.1 实体与属性
- 用户(user):
用户ID(user_id)、用户名(username)、密码(password)、电话号码(phone_num)。 - 家(home):
家ID(home_id)、地址(address)、家的名称(name)。 - 访客管理系统(visitor_management):
记录ID(record_id)、家ID(home_id,外键)、访客ID(visitor_id)、访问时间(visit_time)。 - 健康和环境监测系统(health_environment_monitoring):
记录ID(record _id)、家ID(home_id,外键)、监测时间(monitoring_time)、空气质量(air_quality)、温度(temperature)、湿度(humidity)。 - 能源监控系统(energy_monitoring):
记录ID(record_id)、家ID(home_id,外键)、监测时间(monitoring_time)、用电量(electricity_usage)、用水量(water_usage)、燃气使用量(gas_usage)、网络使用情况(internet_usage)。 - 家电(appliance):
设备ID(device_id)、家ID(home_id,外键)、家电类型ID(type_id,外键)、当前模式(current_mode, 外键)、产品名称(product_name)、购买时间(purchase_date)、保修期(warranty_period)、商家ID(vendor_id,外键)。 - 家电类型(device_type):
类型ID(type_id)、家电类型名称(type_name)。 - 智能模式(mode):
模式ID(mode_id)、模式所属类型ID(type_id,外键)、模式名称(mode_name)、模式描述(mode_description)。 - 商家(vendor):
商家ID(vendor_id)、商家名称(vendor_name)、电话号码(phone_num)。
1.1.2 完整的E-R图
联系说明:
- 用户与家:多对多关系(需多建立一张对应表)。
- 家与访客管理系统:一对多关系。
- 家与健康和环境监测系统:一对多关系。
- 家与能源监控系统:一对多关系。
- 家与家电:一对多关系。
- 家电与商家:一对多关系。
- 家电类型与家电:一对多关系。
- 家电类型与智能模式:一对多关系。
- 家电与智能模式:多对多关系(需多建立一张对应表)。
1.2 数据字典:
1. 用户(user)
• user_id:整型(INT),主键。
• username:字符串(VARCHAR),用户的名字。
• password:字符串(VARCHAR),加密的密码。
• phone_num:字符串(VARCHAR),联系方式。
2. 家(home)
• home_id:整型(INT),主键。
• address:字符串(VARCHAR),地址。
• name:字符串(VARCHAR),家的名称。
3. 用户-家的对应表(user_home)
• user_id:整型(INT),外键,指向用户表。
• home_id:整型(INT),外键,指向家表。
4. 访客管理系统(visitor_management)
• record_id:整型(INT),主键。
• home_id:整型(INT),外键,指向家表。
• visitor_id:整型(INT),访客的标识。
• visit_time:日期时间(DATETIME),访问时间。
5. 环境监测系统(health_environment_monitoring)
• record_id:整型(INT),主键。
• home_id:整型(INT),外键,指向家表。
• monitoring_time:日期时间(DATETIME),监测时间。
• air_quality:字符串(VARCHAR),空气质量。
• temperature:浮点型(FLOAT),温度。
• humidity:浮点型(FLOAT),湿度。
6. 能源监控系统(energy_monitoring)
• record_id:整型(INT),主键。
• home_id:整型(INT),外键,指向家表。
• monitoring_time:日期时间(DATETIME),监测时间。
• electricity_usage:浮点型(FLOAT),用电量。
• water_usage:浮点型(FLOAT),用水量。
• gas_usage:浮点型(FLOAT),燃气使用量。
• internet_usage:字符串(VARCHAR),网络使用情况。
7. 家电(appliance)
• device_id:整型(INT),主键。
• home_id:整型(INT),外键,指向家表。
• type_id:整型(INT),外键,指向家电类型表。
• current_mode:整型(INT),外键,指向智能模式表。
• product_name:字符串(VARCHAR),产品名称。
• purchase_date:日期(DATE),购买时间。
• warranty_period:字符串(VARCHAR),保修期。
• vendor_id:整型(INT),外键,指向商家表。
8. 商家(vendor)
• vendor_id:整型(INT),主键。
• vendor_name:字符串(VARCHAR),商家名称。
• phone_num:字符串(VARCHAR),电话号码。
9. 家电类型(device_type)
• type_id:整型(INT),主键。
• type_name:字符串(VARCHAR),家电类型名称。
10. 智能模式(mode)
• mode_id:整型(INT),主键。
• mode_name:字符串(VARCHAR),模式名称。
• mode_description:字符串(VARCHAR),模式描述。
• type_id:整型(INT),外键,指向家电类型表。
11. 家电与智能模式的对应表(appliance_mode)
• device_id:整型(INT),外键,指向家电表。
• mode_id:整型(INT),外键,指向智能模式表。
二、逻辑结构设计
2.1 关系模式:
1. user(user_id, username, password, phone_num)
• 主码:user_id
• 外码:无
• 满足的范式:3NF
2. home(home_id, address, name)
• 主码:home_id
• 外码:无
• 满足的范式:3NF
3. user_home(user_id, home_id)
• 主码:(user_id, home_id)
• 外码:user_id 引用 user(user_id),home_id 引用 home(home_id)
• 满足的范式:3NF
4. visitor_management(record_id, home_id, visitor_id, visit_time)
• 主码:record_id
• 外码:home_id 引用 home(home_id)
• 满足的范式:3NF
5. health_environment_monitoring(record_id, home_id, monitoring_time, air_quality, temperature, humidity)
• 主码:record_id
• 外码:home_id 引用 home(home_id)
• 满足的范式:3NF
6. energy_monitoring(record_id, home_id, monitoring_time, electricity_usage, water_usage, gas_usage, internet_usage)
• 主码:record_id
• 外码:home_id 引用 home(home_id)
• 满足的范式:3NF
7. appliance(device_id, home_id, type_id, current_mode, product_name, purchase_date, warranty_period, vendor_id)
• 主码:device_id
• 外码:home_id 引用 home(home_id),type_id 引用 device_type(type_id),vendor_id 引用 vendor(vendor_id),current_mode 引用 mode(mode_id)
• 满足的范式:3NF
8. vendor(vendor_id, vendor_name, phone_num)
• 主码:vendor_id
• 外码:无
• 满足的范式:3NF
9. device_type(type_id, type_name)
• 主码:type_id
• 外码:无
• 满足的范式:3NF
10. mode(mode_id, mode_name, mode_description, type_id)
• 主码:mode_id
• 外码:type_id 引用 device_type(type_id)
• 满足的范式:3NF
11. appliance_mode(device_id, mode_id)
• 主码:(device_id, mode_id)
• 外码:device_id 引用 appliance(device_id),mode_id 引用 mode(mode_id)
• 满足的范式:3NF
三、系统功能模块图
3.1 功能设计
整体效果:
能源监测系统:
访客管理系统:
健康与环境监测系统:
家电系统:
3.2 效果图(部分)
登录:主界面
注册:点击登录界面下方的“立即注册”进入注册界面,注册完成后会自动跳转到登录界面,或直接点返回
家选项界面:登陆后进入家选项界面,右侧将根据后端查询的结果,显示对应数量的家居号和编号
家信息修改界面:点击左下角,可管理当前账号的家
家界面:在家选项界面的右侧,点击家居号,可进入具体的家居管理界面,界面包括主要的四个功能
能源监测:点击能源监测,进入当前监测界面,可选择具体的监测内容
以电界面为例:左侧显示当前数据,右侧显示具体的变化曲线
水、燃气、网效果相同,不再展示,。
访客管理系统包括三个主要功能:
监控:这里用暂时用本地摄像头模拟。
访客列表和信任列表均展示表格,且做了添加/移除信任的操作:
健康与环境系统和能源监测系统类似,这里不再展示。
最后是家电界面,为了减轻前端部分的工作量,我简化了网页内容,涉及的内容如下:
- 照明类:吊灯、台灯、地灯、智能LED灯、智能灯带、其他
- 窗帘类:遮光帘、透光帘、其他
- 空调类:中央空调、普通空调、空气净化器、加湿器、除湿器、暖气片、其他
- 机器人类:扫地机器人、助理机器人、宠物机器人、教育辅助机器人、其他
- 厨房类:智能冰箱、智能水龙头、智能料理机、其他
- 娱乐类:智能电视、游戏机、家庭影院系统、数字音乐播放器、智能音箱、其他
- 安防类:智能门锁、智能车库门控制器、其他
- 健康类:智能健康监测设备、其他
- 家居自动化类:智能插座、自动宠物喂食器、智能浇花系统、其他
在第一个下拉栏中选择设备类型(如照明类)、在第二个下拉栏中选择具体设备(如台灯),表格将展示屋内所有已录入的设备类(如全部台灯,不同台灯有着不同编号/名称等)。
如下图所示:
点击智能模式的修改,出现悬浮窗,可更改模式,具体设备可选择的模式不同,这里需要读取后端的智能模式(mode)表,查询当前类型设备可选模式,图中为效果样例:
上述效果图的代码见我的GitHub,双击login进入主界面。
后续内容将在下一篇笔记中说明。
四、详细设计
4.1 环境准备
4.1.1 sql建表语句:
4.1.2 数据准备
4.1.3 springboot等开发环境准备
4.2 接口文档
4.3 前端准备
4.4 后端(详细)