毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总
感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。
技术栈:
Python语言、Django框架、MySQL数据库、Echarts可视化、车牌识别、停车场管理、停车收费、HTML
亮点功能:
[1]用户管理,可增加月卡,季卡,半年卡,年卡,临时停车等;
[2]可配置停车场停车位数据,可在线看数据;
[3]图像识别车牌号;
[4]调用百度云接口进行车牌识别,识别准确率接近98%,相当优秀;
[5]Python语言开发+采用Django框架搭建网页,采用Echarts将数据以可视化大屏的方式呈现,实时查看停车场的数据情况。
智能停车场管理系统是基于人工智能和物联网技术的创新应用,旨在解决城市停车难题、提高停车场利用率和管理效率。随着城市化进程的加速,汽车数量的不断增加,停车需求日益紧张,传统的停车场管理方式已经无法满足现代社会的需求。
传统的停车场管理方式存在许多问题,如停车位分配不合理、车辆停放难以控制、停车费用难以管理等。这些问题导致停车场的利用率低下,用户的停车体验不佳,并且给停车场管理者带来了很大的困扰。因此,研发智能停车场管理系统成为了一项重要的研究课题。
(1)停车场收费可视化大屏
(2)停车场停车信息
(4)车牌识别
(7)用户信息
(8)后台数据管理
(9)系统功能框架图
选题基于现阶段时代背景,利用Python语言实现智能停车场管理系统,数据保存到sqlite数据库中,搭建Django框架网页展示方便数据管理,本系统实现如下功能:
[1]用户管理,为用户增加月卡,季卡,半年卡,年卡,临时停车等;
[2]可配置停车场停车位数据,可在线看数据;
[3]图像识别车牌号码;
[4]调用百度云接口进行车牌识别;
[5]Python语言开发+采用Django框架搭建网页,采用Echarts将数据以可视化大屏的方式呈现,实时查看停车场的数据情况和管理停车场。
系统功能图如下所示:
智能停车场管理系统是基于人工智能和物联网技术的创新应用,旨在解决城市停车难题、提高停车场利用率和管理效率。随着城市化进程的加速,汽车数量的不断增加,停车需求日益紧张,传统的停车场管理方式已经无法满足现代社会的需求。
传统的停车场管理方式存在许多问题,如停车位分配不合理、车辆停放难以控制、停车费用难以管理等。这些问题导致停车场的利用率低下,用户的停车体验不佳,并且给停车场管理者带来了很大的困扰。因此,研发智能停车场管理系统成为了一项重要的研究课题。
智能停车场管理系统通过利用人工智能和物联网技术,实现了对停车场的智能化管理。系统通过车辆识别、车位监控、停车位导航等功能,提高了停车场的利用率和管理效率。同时,系统还可以提供实时的停车位信息,方便用户快速找到空闲车位,并且可以通过手机App进行在线支付,提高了用户的停车体验。此外,智能停车场管理系统还可以通过数据分析和预测,帮助停车场管理者制定更合理的管理策略,提高停车场的运营效益。
因此,研究智能停车场管理系统具有重要意义,可以有效解决城市停车难题,提高停车场的利用率和管理效率,为城市交通管理和停车服务提供创新解决方案。
import json
import os
import io
from django.shortcuts import render, redirect, HttpResponse
from app01 import models
from functools import wraps
import datetime
import re
from utils.paginater import Paginater
import time
import random
from aip import AipOcr
import qrcode
from django.utils.six import BytesIO
import numpy as np
from PIL import Image
envget = os.environ.get
# 判断是否登录的装饰器
def login_required(func):
@wraps(func)
def inner(request, *args, **kwargs):
is_login = request.session.get('is_login')
if is_login != 1:
# 没有登陆
return redirect('/login/')
ret = func(request, *args, **kwargs)
return ret
return inner
# 车牌识别
def Park_discern(image):
# 在下面输入自己的百度API,下面是测试账号,切勿滥用
app_id = '30890278'
api_key = 'fbqAD9phrEdYtCUDea6QAzq8'
secret_key = 'IMR0IV7RfHK6U6mA5hUN0SFOOLfZfw2L'
# app_id = envget('BAIDU_APP_ID')
# api_key = envget('BAIDU_API_KEY')
# secret_key = envget('BAIDU_SECRET_KEY')
if not app_id or not api_key or not secret_key:
raise ValueError('Baidu OCR setting can not be empty')
# 创建客户端对象
client = AipOcr(app_id, api_key, secret_key)
# 建立连接的超时时间,单位为毫秒
client.setConnectionTimeoutInMillis(5000)
# 通过打开的连接传输数据的超时时间,单位为毫秒
client.setSocketTimeoutInMillis(5000)
res = client.licensePlate(image)
return res
# 时间计算
def chargecount(start_time, end_time):
start_seconds = time.mktime(start_time.timetuple()) * 1000 + start_time.microsecond / 1000
end_seconds = time.mktime(end_time.timetuple()) * 1000 + end_time.microsecond / 1000
time_span = end_seconds - start_seconds
day_span = int(time_span / 1000 / 3600 / 24)
hour_span = int(time_span / 1000 / 3600 % 24)
minute_span = int(time_span / 1000 / 60 % 60)
# 判断是否为同一天
if start_time.date() == end_time.date():
money = 0
# 同一天
# 判断是否只停车半小时
if hour_span == 0 and minute_span < 30:
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
else:
# 超过半小时
# 判断是早晨还是晚上
if 7 <= start_time.hour < 19:
# 早晨停车
if 7 <= end_time.hour < 19:
# 在晚间之前离开
if minute_span != 0:
money = 2 * (hour_span + 1)
else:
money = 2 * hour_span
else:
# 在晚间离开
if minute_span != 0:
money = (18 - start_time.hour) * 2 + (hour_span - 17 + start_time.hour) * 3
else:
money = (18 - start_time.hour) * 2 + (hour_span - 18 + start_time.hour) * 3
elif start_time.hour >= 19:
# 晚上停车
if minute_span != 0:
money = 3 * (hour_span + 1)
else:
money = 3 * hour_span
else:
if end_time.hour < 7:
if minute_span != 0:
money = 3 * (hour_span + 1)
else:
money = 3 * hour_span
elif 7 <= end_time.hour < 16:
if minute_span != 0:
money = (6 - start_time.hour) * 3 + 2 * (1 + start_time.hour)
else:
money = (6 - start_time.hour) * 3 + 2 * (1 + start_time.hour)
pass
else:
money = 18
if money > 18:
money = 18
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
else:
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
else:
# 非同一天
money = 0
money_day = 0
if day_span > 0:
# 停留超过24h
new_start_time = start_time + datetime.timedelta(days=day_span)
print(new_start_time)
money_day = 18 * day_span
# 在判断离开时超过24h收费的部分
if 7 <= new_start_time.hour < 19:
if 7 <= end_time.hour < 19:
if minute_span != 0:
money = 2 * (hour_span + 1)
print(1)
else:
money = 2 * hour_span
print(2)
elif 0 <= end_time.hour < 7 or 19 <= end_time.hour <= 23:
if minute_span != 0:
money = (18 - new_start_time.hour) * 2 + (hour_span - 17 + start_time.hour) * 3
print(3)
else:
money = (18 - new_start_time.hour) * 2 + (hour_span - 18 + start_time.hour) * 3
print(4)
elif new_start_time.hour >= 19:
if minute_span != 0:
money = 3 * (hour_span + 1)
print(5)
else:
money = 3 * hour_span
print(6)
else:
if end_time.hour < 7:
if minute_span != 0:
money = 3 * (hour_span + 1)
print(7)
else:
money = 3 * hour_span
print(8)
elif 7 <= end_time.hour < 16:
if minute_span != 0:
money = (6 - new_start_time.hour) * 3 + 2 * (1 + hour_span)
print(9)
else:
money = (6 - new_start_time.hour) * 3 + 2 * hour_span
print(10)
pass
else:
money = 18
if money > 18:
money = 18 + money_day
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
else:
money += money_day
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
else:
# 未超过24h,但不是同一天
if hour_span == 0 and minute_span < 30:
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
else:
if start_time.hour <= 18:
money = 18
else:
if end_time.hour >= 5:
money = 18
else:
if minute_span != 0:
money = 3 * (hour_span + 1)
else:
money = 3 * hour_span
if money > 18:
money = 18
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
else:
print(start_time, end_time, day_span, hour_span, minute_span, money)
return money
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
# 处理POST请求的逻辑
# 获取到用户提交的用户名和密码
account = request.POST.get('account')
pwd = request.POST.get('pwd')
if not account or not pwd:
return render(request, 'login.html', {'error': '账号密码不能为空!'})
else:
try:
check = models.Administrator.objects.get(account=account)
if check.password == pwd:
request.session['is_login'] = 1
return redirect('/index/')
else:
return render(request, 'login.html', {'error': '输入账号密码错误!'})
except Exception as e:
return render(request, 'login.html', {'error': '输入账号密码错误!'})
# 判断是否会员过期的装饰器
def vip_valid(func):
@wraps(func)
def inner(*args, **kwargs):
user_obj = models.User.objects.all()
now_time = datetime.datetime.now()
for user in user_obj:
if now_time > user.endtime:
# 过期
user.level = 0
user.save()
# 如果车辆在停车场,则出行需要补交一定费用
try:
car_obj = models.Car_manage.objects.get(carnum=user.carnum)
car_obj.genre = 2
car_obj.save()
if not models.Extra_charge.objects.filter(carnum=user.carnum):
models.Extra_charge.objects.create(carnum=user.carnum, vip_begintime=user.endtime,
is_valid=True, money=0)
else:
models.Extra_charge.objects.filter(carnum=user.carnum).update(vip_begintime=user.endtime,
vip_deadline=None,
is_valid=True, money=0)
except Exception as e:
pass
ret = func(*args, **kwargs)
return ret
return inner
由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦
感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看获取联系方式