博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

点击查看作者主页,了解更多项目!

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅

2、大数据毕业设计:2025年选题大全 深度学习 python语言 JAVA语言 hadoop和spark(建议收藏)✅

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

技术栈:
Python语言、Django框架、MySQL数据库、echarts可视化、房价预测、HTML

2、项目界面

(1)首页
在这里插入图片描述
(2)房屋数据分析

在这里插入图片描述

(3)房价预测
在这里插入图片描述

(4)房屋数据
在这里插入图片描述

(5)用户管理
在这里插入图片描述

(6)后台数据管理
在这里插入图片描述

(7)注册登录

在这里插入图片描述

3、项目说明

摘 要
进入二十一世纪以来,计算机技术蓬勃发展,人们的生活发生了许多变化。比如说信息的传播和言论的发表变得越来越快了,当代大学生朋友可以通过网络平台快速的了解当今社会的新闻及动态,除此之外还可以利用各个平台的评论功能发表自己的意见或看法。由此可见,计算机技术对人们生活的改变不仅仅包含衣食住行等方面,它在各种领域都对现代生活作出了贡献。在网络不发达的年代,人们如果想要购买新房或者了解房价是只能通过宣传栏中的小广告或者通过中介获取信息的,但这种形式费事费力,流程非常繁琐,并且无法保证购房者们获取到准确的信息,所以房产买卖的咨询与房价预测的方式逐渐被网络化的电子系统替代了。在计算机刚开始发展的时候就出现了许多的宣传自己楼盘的网页,但是因为技术的限制很多功能都无法实现,再加上硬件设备的限制导致系统并不完美,有很多不符合购房者们使用习惯的瑕疵,也有很多的功能缺陷。随着计算机编程语言的不断发展和移动设备的出现和各种算法的发展,房屋价格的预测也越来越准确。
本系统使用Python语言和MySQL数据库开发,可以为各地准备购房的人群或者想要了解房间的人群提供房价预测、房屋分析、用户管理等多种功能,让用户不需要再繁琐的查看每个楼盘各时期的价格就可以进行对自己心仪的房屋进行价格的预测,避免在房价最高时入场导致不必要的经济损失。

关键词:房价;预测;Python;MYSQL

本系统的主要用户是想要对房价进行了解的人员,本系统允许多个用户同时使用,也就是说用户可以有多个,但管理员用户只有一个。系统的功能主要是对各房屋销售网站上的房屋数据进行分析,所有的房屋可以进行数据的展示,也可以使用饼状统计图进行更直观的显现,除此之外用户还可以对自己的个人信息比如密码进行维护,管理员用户可以管理其他的用户信息,可以修改或删除系统中现有的用户。系统结构图如下所示:
在这里插入图片描述

4、核心代码


import csv
import datetime
import os
import time
from django.core.paginator import Paginator
from django.db.models import Count
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, JsonResponse
from django.shortcuts import render
from user.models import User
from utils import common
from .models import *

workdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


def login(request):
    """
    跳转登录
    :param request:
    :return:
    """
 
    return render(request, 'signin.html')


def register(request):
    """
    跳转注册
    :param request:
    :return:
    """
    return render(request, 'signup.html')


def index(request):
    """
    跳转首页
    :param request:
    :return:
    """
    username = request.session.get('username', '')
    role = int(request.session.get('role', 3))
    user_id = request.session.get('user_id', 1)
    total_user = len(User.objects.all())
    total_house = House.objects.count()
    total_info = Info.objects.count()
    date = datetime.datetime.today()
    month = date.month
    year = date.year
    day = date.day
    current_day = "{}-{}-{}".format(year, month, day)
    # 获取近七天的操作
    seven_days = common.get_recent_seven_day()
    seven_data_dict = dict.fromkeys(seven_days, 0)
    for i in seven_days:
        d = datetime.timedelta
        r = Info.objects.filter(create_time__year=i.split('-')[0], create_time__month=i.split('-')[1],
                                create_time__day=i.split('-')[2]).all()
        if r:
            seven_data_dict[i] = r.count()
    seven_count_list = [seven_data_dict[x] for x in seven_days]
    return render(request, 'index.html', locals())


def login_out(request):
    """
    注销登录
    :param request:
    :return:
    """
    del request.session['username']
    return HttpResponseRedirect('/')


def personal(request):
    username = request.session['username']
    role_id = request.session['role']
    user = User.objects.filter(name=username).first()
    return render(request, 'personal.html', locals())


def fwgl(request):
    username = request.session['username']
    role_id = request.session['role']
    user = User.objects.filter(name=username).first()
    return render(request, 'fwgl.html', locals())


def fjyc(request):
    username = request.session['username']
    role_id = request.session['role']
    user = User.objects.filter(name=username).first()
    return render(request, 'fjyc.html', locals())


def get_house(request):
    """
    获取列表信息 | 模糊查询
    :param request:
    :return:
    """
    keyword = request.GET.get('name')
    page = request.GET.get("page", '')
    limit = request.GET.get("limit", '')
    response_data = {}
    response_data['code'] = 0
    response_data['msg'] = ''
    data = []
    if keyword is None:
        results_obj = House.objects.all()
    else:
        results_obj = House.objects.filter(name__contains=keyword).all()
    paginator = Paginator(results_obj, limit)
    results = paginator.page(page)
    if results:
        for user in results:
            record = {
                "id": user.id,
                "name": user.name,
                "area": user.area,
                "price": user.price,
                "huxing": user.huxing,
                'floor': user.floor,
                "mj": user.mj,
                "fwcx": user.fwcx,
                "zxqk": user.zxqk
            }
            data.append(record)
        response_data['count'] = len(results_obj)
        response_data['data'] = data

    return JsonResponse(response_data)


def get_data(request):
    """
    获取列表信息 | 模糊查询
    :param request:
    :return:
    """
    keyword = request.GET.get('name')
    page = request.GET.get("page", '')
    limit = request.GET.get("limit", '')
    response_data = {}
    response_data['code'] = 0
    response_data['msg'] = ''
    data = []
    if keyword is None:
        results_obj = Info.objects.all()
    else:
        results_obj = Info.objects.filter(name__contains=keyword).all()
    paginator = Paginator(results_obj, limit)
    results = paginator.page(page)
    if results:
        for user in results:
            record = {
                "id": user.id,
                "create_time": user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
                "predict_price": user.predict_price,
                "huxing": user.huxing,
                'floor': user.floor,
                "mj": user.mj,
                "fwcx": user.fwcx,
                "zxqk": user.zxqk
            }
            data.append(record)
        response_data['count'] = len(results_obj)
        response_data['data'] = data

    return JsonResponse(response_data)


def data(request):
    """
    跳转页面
    """
    username = request.session.get('username', '')
    role = int(request.session.get('role', 3))
    user_id = request.session.get('user_id', 1)
    return render(request, 'data.html', locals())


def fwcx(request):
    """
    跳转页面
    """
    username = request.session.get('username', '')
    role = int(request.session.get('role', 3))
    user_id = request.session.get('user_id', 1)
    return render(request, 'fwcx.html', locals())


def edit_data(request):
    """
    修改信息
    """
    response_data = {}
    user_id = request.POST.get('id')
    username = request.POST.get('username')
    phone = request.POST.get('phone')
    User.objects.filter(id=user_id).update(
        name=username,
        phone=phone)
    response_data['msg'] = 'success'
    return JsonResponse(response_data, status=201)


def del_data(request):
    """
    删除信息
    """
    user_id = request.POST.get('id')
    result = Info.objects.filter(id=user_id).first()
    try:
        if not result:
            response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
            return JsonResponse(response_data, status=403)
        result.delete()
        response_data = {'message': '删除成功!'}
        return JsonResponse(response_data, status=201)
    except Exception as e:
        response_data = {'message': '删除失败!'}
        return JsonResponse(response_data, status=403)


def save_file(file):
    """
    保存文件
    """
    if file is not None:
        file_dir = os.path.join(workdir, 'static', 'uploadImg')
        if not os.path.exists(file_dir):
            os.mkdir(file_dir)
        file_name = os.path.join(file_dir, file.name)
        with open(file_name, 'wb')as f:
            # chunks()每次读取数据默认 我64k
            for chunk in file.chunks():
                f.write(chunk)
            f.close()
        return file_name
    else:
        return None



from django.http import JsonResponse
from .models import Info  


def predict(request):
    mj = float(request.POST.get('mj', 80))  # 建筑面积,默认为0
    fwcx = request.POST.get('fwcx', '东').lower()  # 房屋朝向,默认为未知朝向
    floor = request.POST.get('floor', '中楼层').lower()  # 所在楼层,默认为中楼层
    hx = request.POST.get('hx', '2室1厅1厨1卫').lower()  # 房屋户型,默认为2室1厅1厨1卫
    zxqk = request.POST.get('zxqk', '毛坯').lower()  # 装修情况,默认为毛坯

    # 假设的房价计算逻辑
    base_price_per_m2 = 40000  # 假设每平方米的基础价格
    area_price = mj * base_price_per_m2  # 根据面积计算的基础价格

    # 朝向对价格的影响(这里仅作为示例,实际影响可能更复杂)
    orientation_factors = {
        '东': 1.05,
        '南': 1.1,
        '西': 0.95,
        '北': 1.1,
        '东南': 1.08,
        '东北': 1.02,
        '西北': 0.98,
        '西南': 1.0,
        '未知朝向': 1.0,  # 默认为无加成
    }
    orientation_factor = orientation_factors.get(fwcx, 1.0)  # 默认为1.0,即无额外加成

    # 楼层对价格的影响(这里简单假设)
    floor_factors = {
        '低楼层': 0.95,
        '中楼层': 1.0,
        '高楼层': 1.05,
    }
    floor_factor = floor_factors.get(floor, 1.0)  # 默认为1.0,即无额外加成

    # 户型对价格的影响(这里仅列出部分户型作为示例)
    hx_factors = {
        '1室1厅1厨1卫': 0.9,
        '2室1厅1厨1卫': 1.0,
        '2室2厅1厨1卫': 1.02,
        '2室2厅1厨2卫': 1.03,
        '3室1厅1厨1卫': 0.95,
        '3室2厅1厨1卫': 1.02,
        '3室2厅1厨2卫': 1.05,
        '4室1厅1厨1卫': 0.93,
        '4室2厅1厨1卫': 1.03,
        '4室2厅1厨2卫': 1.06,
        '4室1厅1厨2卫': 1.01,
        '5室1厅1厨1卫': 0.95,
        '5室1厅1厨2卫': 1.02,
        '5室2厅1厨1卫': 1.03,
        '5室2厅1厨2卫': 1.05,
        '5室3厅1厨2卫': 1.04,  # 假设这是一个很大的户型,有更高的加成
        '未知户型': 1.0,  # 默认为无加成
    }
    hx_factor = hx_factors.get(hx, 1.0)  # 默认为1.0,即无额外加成

    # 装修情况对价格的影响
    decoration_factors = {
        '精装': 1.2,
        '简装': 1.1,
        '毛坯': 1.0,
    }
    decoration_factor = decoration_factors.get(zxqk, 1.0)  # 默认为1.0,即无额外加成

    # 计算最终价格
    result = area_price * orientation_factor * floor_factor * hx_factor * decoration_factor
    result = result/10000
    time.sleep(2)
    # 保存预测结果到数据库
    Info.objects.create(huxing=hx,
                        fwcx=fwcx,
                        floor=floor,
                        zxqk=zxqk,
                        mj=mj,
                        predict_price=result,
                                )

    # 返回预测结果
    print(mj,hx,fwcx,floor,zxqk,result)

    return JsonResponse({"result": result})


def analysis(request):
    results = Pic.objects.values('result').annotate(myCount=Count('result'))  # 返回查询集合
    country = []
    count = []
    for i in results:
        country.append(i['result'])
        count.append(i['myCount'])
    result1 = Pic.objects.values('owner').annotate(myCount=Count('owner'))  # 返回查询集合
    values = []
    for i in result1:
        values.append({'name': i['owner'], 'value': i['myCount']})

    username = request.session.get('username', 'admin')
    role = int(request.session.get('role', 3))
    user_id = request.session.get('user_id', 1)
    return render(request, 'analysis.html', locals())



5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看【用户名】、【专栏名称】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐