【Python】智慧农业管理系统 Django+vue框架 计算机毕业设计项目 Pycharm+Anaconda部署 附源码+文档+讲解

37 阅读4分钟

一、个人简介

💖💖作者:计算机编程果茶熊 💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 计算机毕业设计选题 💕💕文末获取源码联系计算机编程果茶熊

二、系统介绍

开发语言:Java+Python 数据库:MySQL 系统架构:B/S 后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django 前端:Vue+HTML+CSS+JavaScript+jQuery

智慧农业管理系统是一个基于B/S架构的综合性农业信息化平台,采用Python语言结合Django框架开发后端业务逻辑,前端使用Vue框架构建交互界面,数据存储采用MySQL关系型数据库。系统涵盖农业政策发布、农机设备管理、农家商品交易、害虫智能识别、农业知识共享等多个功能模块。用户可以通过平台浏览各类农机设备信息并按分类检索,查看农家商品的详细介绍和价格信息,利用图像识别技术快速识别农作物害虫种类。系统还设置了交流论坛供用户分享种植经验和技术心得,支持留言反馈机制收集用户意见,提供举报功能维护社区秩序。平台整合了农业政策资讯和专业知识库,帮助农户及时了解政策动态和科学种植方法。通过充值记录管理实现平台增值服务,多维度分类体系使信息检索更加便捷高效,为现代农业生产提供了数字化管理工具。

三、视频解说

智慧农业管理系统

四、部分功能展示

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、部分代码展示


# 核心功能1: 害虫智能识别
from django.views import View
from django.http import JsonResponse
from PIL import Image
import numpy as np
import base64
from io import BytesIO
import json

class PestRecognitionView(View):
    def post(self, request):
        """害虫识别核心处理函数"""
        try:
            # 解析上传的图片数据
            image_data = request.POST.get('image')
            if not image_data:
                return JsonResponse({'code': 400, 'msg': '未接收到图片数据'})
            
            # Base64解码并转换为图像对象
            image_bytes = base64.b64decode(image_data.split(',')[1])
            image = Image.open(BytesIO(image_bytes))
            
            # 图像预处理:调整尺寸和归一化
            image = image.resize((224, 224))
            image_array = np.array(image) / 255.0
            
            # 特征提取:计算颜色直方图特征
            color_features = []
            for channel in range(3):
                hist, _ = np.histogram(image_array[:, :, channel], bins=32, range=(0, 1))
                color_features.extend(hist / hist.sum())
            
            # 纹理特征提取:计算灰度共生矩阵
            gray_image = image.convert('L')
            gray_array = np.array(gray_image)
            texture_features = self.calculate_texture_features(gray_array)
            
            # 特征向量拼接
            feature_vector = np.concatenate([color_features, texture_features])
            
            # 加载害虫特征库进行匹配
            pest_database = self.load_pest_database()
            max_similarity = 0
            recognized_pest = None
            
            for pest_name, pest_features in pest_database.items():
                # 计算余弦相似度
                similarity = np.dot(feature_vector, pest_features) / (
                    np.linalg.norm(feature_vector) * np.linalg.norm(pest_features)
                )
                if similarity > max_similarity:
                    max_similarity = similarity
                    recognized_pest = pest_name
            
            # 查询害虫详细信息和防治方案
            if max_similarity > 0.75:
                pest_info = PestInfo.objects.filter(name=recognized_pest).first()
                prevention_methods = PreventionMethod.objects.filter(pest=pest_info)
                
                # 记录识别历史
                RecognitionHistory.objects.create(
                    user=request.user,
                    pest_name=recognized_pest,
                    confidence=max_similarity,
                    image_path=self.save_image(image),
                    recognition_time=timezone.now()
                )
                
                result_data = {
                    'pest_name': pest_info.name,
                    'scientific_name': pest_info.scientific_name,
                    'description': pest_info.description,
                    'harm_level': pest_info.harm_level,
                    'affected_crops': pest_info.affected_crops,
                    'prevention_methods': [
                        {
                            'method': m.method_name,
                            'description': m.description,
                            'effectiveness': m.effectiveness
                        } for m in prevention_methods
                    ],
                    'confidence': round(max_similarity * 100, 2)
                }
                return JsonResponse({'code': 200, 'data': result_data})
            else:
                return JsonResponse({'code': 404, 'msg': '未能识别该害虫,请上传更清晰的图片或咨询专家'})
                
        except Exception as e:
            return JsonResponse({'code': 500, 'msg': f'识别过程出错: {str(e)}'})


# 核心功能2: 农机设备管理与推荐
class MachineryManagementView(View):
    def get(self, request):
        """农机设备查询与智能推荐"""
        category_id = request.GET.get('category_id')
        price_min = request.GET.get('price_min', 0)
        price_max = request.GET.get('price_max', 999999)
        keyword = request.GET.get('keyword', '')
        
        # 构建查询条件
        query_conditions = {
            'is_available': True,
            'price__gte': price_min,
            'price__lte': price_max
        }
        
        if category_id:
            query_conditions['category_id'] = category_id
        
        # 查询设备列表
        machineries = Machinery.objects.filter(**query_conditions)
        
        if keyword:
            machineries = machineries.filter(
                Q(name__icontains=keyword) | Q(description__icontains=keyword)
            )
        
        # 获取用户浏览历史进行个性化推荐
        user_history = BrowseHistory.objects.filter(
            user=request.user
        ).order_by('-browse_time')[:20]
        
        # 统计用户偏好的设备类型
        category_preferences = {}
        for history in user_history:
            cat_id = history.machinery.category_id
            category_preferences[cat_id] = category_preferences.get(cat_id, 0) + 1
        
        # 计算推荐权重
        machinery_scores = []
        for machinery in machineries:
            score = 0
            # 基础评分
            score += machinery.rating * 10
            score += machinery.sales_count * 0.1
            
            # 类别偏好加分
            if machinery.category_id in category_preferences:
                score += category_preferences[machinery.category_id] * 5
            
            # 价格合理性评分
            category_avg_price = Machinery.objects.filter(
                category_id=machinery.category_id
            ).aggregate(Avg('price'))['price__avg']
            
            if category_avg_price:
                price_ratio = machinery.price / category_avg_price
                if 0.8 <= price_ratio <= 1.2:
                    score += 15
            
            # 新品加分
            days_since_release = (timezone.now() - machinery.release_date).days
            if days_since_release < 30:
                score += 10
            
            machinery_scores.append({
                'machinery': machinery,
                'score': score
            })
        
        # 按评分排序
        sorted_machineries = sorted(machinery_scores, key=lambda x: x['score'], reverse=True)
        
        # 组装返回数据
        result_list = []
        for item in sorted_machineries:
            machinery = item['machinery']
            # 查询该设备的评价统计
            reviews = Review.objects.filter(machinery=machinery)
            positive_rate = reviews.filter(rating__gte=4).count() / max(reviews.count(), 1) * 100
            
            result_list.append({
                'id': machinery.id,
                'name': machinery.name,
                'category': machinery.category.name,
                'price': machinery.price,
                'manufacturer': machinery.manufacturer,
                'specifications': machinery.specifications,
                'image_url': machinery.main_image.url if machinery.main_image else '',
                'rating': machinery.rating,
                'sales_count': machinery.sales_count,
                'positive_rate': round(positive_rate, 1),
                'is_new': (timezone.now() - machinery.release_date).days < 30,
                'recommend_score': round(item['score'], 2)
            })
        
        return JsonResponse({'code': 200, 'data': result_list, 'total': len(result_list)})



六、部分文档展示

在这里插入图片描述

七、END

💕💕文末获取源码联系计算机编程果茶熊