计算机毕业设计:python就业信息管理系统+招聘数据管理系统+岗位投递(源码+论文)建议收藏✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

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

1、项目介绍

技术栈:
Python语言、MySQL数据库、Django框架、bootstrap框架+css+js+HTML

本项目实现学生信息、就业信息、岗位信息三方面的管理功能,其中学生信息作为系统基础信息一部分,其中包含学生基本信息、教育经历、项目经历等内容,这些信息是企业所关注的基本内容;就业信息功能中不仅仅需要记录下学生的就业情况,同时需要实现就业的统计信息,这样可以方便高校了解学生就业的情况;岗位信息功能中需要提供企业信息、岗位信息管理功能,将经学校筛选的企业和岗位提供给学生进行选择,避免学生选择到存在问题的企业,降低学生就业风险,

2、项目界面

(1)系统首页

在这里插入图片描述

(2)学院信息管理

在这里插入图片描述

(3)企业信息管理

在这里插入图片描述

(4)学生信息管理

在这里插入图片描述

(5)学生项目经历管理

在这里插入图片描述

(7)注册登录界面

在这里插入图片描述

(8)后台数据管理

在这里插入图片描述

3、项目说明

本项目实现学生信息、就业信息、岗位信息三方面的管理功能,其中学生信息作为系统基础信息一部分,其中包含学生基本信息、教育经历、项目经历等内容,这些信息是企业所关注的基本内容;就业信息功能中不仅仅需要记录下学生的就业情况,同时需要实现就业的统计信息,这样可以方便高校了解学生就业的情况;岗位信息功能中需要提供企业信息、岗位信息管理功能,将经学校筛选的企业和岗位提供给学生进行选择,避免学生选择到存在问题的企业,降低学生就业风险,项目功能架构图如下所示:

在这里插入图片描述

4、核心代码


import json
import time

from django.core.paginator import Paginator
from django.db import transaction
from django.db.models import Q
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from django.views import View

from app import models

'''
基础处理类,其他处理继承这个类
'''
class BaseView(View):
    '''
    检查指定的参数是否存在
    存在返回 True
    不存在返回 False
    '''
    def isExit(param):

        if (param == None) or (param == ''):
            return False
        else:
            return True

  

'''
系统请求处理
'''
class SysView(BaseView):

    def get(self, request, module, *args, **kwargs):

        if module == 'login':
            return render(request, 'login.html')

        elif module == 'exit':

            del request.session["user"]
            del request.session["type"]

            return HttpResponseRedirect('/jobs/login')

        if module == 'info':

            return SysView.getSessionInfo(request)

        elif module == 'show':

            return render(request, 'index.html')

        elif module == 'sysNum':

            return SysView.getSysNums(request)

    def post(self, request, module, *args, **kwargs):

        if module == 'login':

            return SysView.login(request)

        if module == 'info':
            return SysView.updSessionInfo(request)

        if module == 'pwd':
            return SysView.updSessionPwd(request)

    def login(request):

        userName = request.POST.get('userName')
        passWord = request.POST.get('passWord')

        user = models.Users.objects.filter(userName=userName)

        if (user.exists()):

            user = user.first()
            if user.passWord == passWord:
                request.session["user"] = user.id
                request.session["type"] = user.type

                return SysView.success()
            else:
                return SysView.warn('用户密码输入错误')
        else:
            return SysView.warn('用户名输入错误')

    def getSessionInfo(request):

        user = request.session.get('user')

        data = models.Users.objects.filter(id=user)

        resl = {}
        for item in data:
            resl = {
                'id': item.id,
                'userName': item.userName,
                'passWord': item.passWord,
                'gender': item.gender,
                'name': item.name,
                'age': item.age,
                'phone': item.phone,
                'type': item.type,
            }

        return SysView.successData(resl)

    def getSysNums(request):

        resl = {
            'companiesTotal' : models.Companies.objects.all().count(),
            'jobTotal' : models.Jobs.objects.all().count(),
            'inStuTotal' : models.Students.objects.filter(status=0).count(),
            'outStuTotal' : models.Students.objects.filter(status=1).count()
        }

        return BaseView.successData(resl)

    def updSessionInfo(request):

        user = request.session.get('user')

        models.Users.objects.filter(id=user).update(
            userName=request.POST.get('userName'),
            name=request.POST.get('name'),
            age=request.POST.get('age'),
            gender=request.POST.get('gender'),
            phone=request.POST.get('phone'),
        )

        return SysView.success()

    def updSessionPwd(request):

        user = request.session.get('user')

        models.Users.objects.filter(id=user).update(
            passWord=request.POST.get('password'),
        )

        return SysView.success()

'''
学院信息管理
'''
class CollegesView(BaseView):

    def get(self, request, module, *args, **kwargs):

        if module == 'show':
            return render(request, 'colleges.html')
        elif module == 'info':
            return self.getInfo(request)
        elif module == 'page':
            return self.getPageInfo(request)
        else:
            return self.error()

    def post(self, request, module, *args, **kwargs):

        if module == 'add':
            return self.addInfo(request)
        elif module == 'upd':
            return self.updInfo(request)
        elif module == 'del':
            return self.delInfo(request)
        else:
            return self.error()

    def getInfo(self, request):

        data = models.Colleges.objects.filter(id=request.GET.get('id')).first()

        resl = {
            'id': data.id,
            'name': data.name,
            'createTime': data.createTime
        }

        return BaseView.successData(resl)

    def getPageInfo(self, request):

        pageIndex = request.GET.get('pageIndex', 1)
        pageSize = request.GET.get('pageSize', 10)
        name = request.GET.get('name')

        qruery = Q();

        if BaseView.isExit(name):
            qruery = qruery & Q(name__contains=name)

        data = models.Colleges.objects.filter(qruery)
        paginator = Paginator(data, pageSize)

        resl = []

        for item in list(paginator.page(pageIndex)):
            temp = {
                'id': item.id,
                'name': item.name,
                'createTime': item.createTime
            }
            resl.append(temp)

        pageData = BaseView.parasePage(pageIndex, pageSize,
                                   paginator.page(pageIndex).paginator.num_pages,
                                   paginator.count, resl)

        return BaseView.successData(pageData)

    def addInfo(self,request):

        models.Colleges.objects.create(name=request.POST.get('name'),
                                       createTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                                      )

        return BaseView.success()

    def updInfo(self, request):

        models.Colleges.objects.filter(id=request.POST.get('id')) \
            .update(
            name=request.POST.get('name')
        )
        return BaseView.success()

    def delInfo(self, request):

        if models.Students.objects.filter(college__id=request.POST.get('id')).exists():

            return BaseView.warn('存在关联内容无法删除')
        else:
            models.Colleges.objects.filter(id=request.POST.get('id')).delete()
            return BaseView.success()

'''
专业信息管理
'''
class MajorsView(BaseView):

    def get(self, request, module, *args, **kwargs):

        if module == 'show':
            return render(request, 'majors.html')
        elif module == 'info':
            return self.getInfo(request)
        elif module == 'page':
            return self.getPageInfo(request)
        else:
            return self.error()

    def post(self, request, module, *args, **kwargs):
        if module == 'add':
            return self.addInfo(request)
        elif module == 'upd':
            return self.updInfo(request)
        elif module == 'del':
            return self.delInfo(request)
        else:
            return self.error()

    def getInfo(self, request):

        data = models.Majors.objects.filter(id=request.GET.get('id')).first()

        resl = {
            'id': data.id,
            'name': data.name,
            'createTime': data.createTime,
        }

        return BaseView.successData(resl)

    def getPageInfo(self, request):

        pageIndex = request.GET.get('pageIndex', 1)
        pageSize = request.GET.get('pageSize', 10)
        name = request.GET.get('name')

        qruery = Q();

        if BaseView.isExit(name):
            qruery = qruery & Q(name__contains=name)

        data = models.Majors.objects.filter(qruery)
        paginator = Paginator(data, pageSize)

        resl = []

        for item in list(paginator.page(pageIndex)):
            temp = {
                'id': item.id,
                'name': item.name,
                'createTime': item.createTime
            }
            resl.append(temp)

        pageData = BaseView.parasePage(pageIndex, pageSize,
                                   paginator.page(pageIndex).paginator.num_pages,
                                   paginator.count, resl)

        return BaseView.successData(pageData)

    def addInfo(self, request):

        models.Majors.objects.create(name=request.POST.get('name'),
                                       createTime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                                       )

        return BaseView.success()

    def updInfo(self, request):

        models.Majors.objects.filter(id=request.POST.get('id')) \
            .update(
            name=request.POST.get('name')
        )
        return BaseView.success()

    def delInfo(self, request):

        if models.Students.objects.filter(major__id=request.POST.get('id')).exists():

            return BaseView.warn('存在关联内容无法删除')
        else:
            models.Majors.objects.filter(id=request.POST.get('id')).delete()
            return BaseView.success()

'''
企业信息管理
'''
class CompaniesView(BaseView):

    def get(self, request, module, *args, **kwargs):

        if module == 'show':
            return render(request, 'companies.html')
        elif module == 'info':
            return self.getInfo(request)
        elif module == 'page':
            return self.getPageInfo(request)
        else:
            return self.error()

    def post(self, request, module, *args, **kwargs):
        if module == 'add':
            return self.addInfo(request)
        elif module == 'upd':
            return self.updInfo(request)
        elif module == 'del':
            return self.delInfo(request)
        else:
            return self.error()

    def getInfo(self, request):

        data = models.Companies.objects.filter(id=request.GET.get('id')).first()

        resl = {
            'id': data.id,
            'name': data.name,
            'phone': data.phone,
            'address': data.address,
        }

        return BaseView.successData(resl)

    def getPageInfo(self, request):

        pageIndex = request.GET.get('pageIndex', 1)
        pageSize = request.GET.get('pageSize', 10)
        name = request.GET.get('name')

        qruery = Q();

        if BaseView.isExit(name):
            qruery = qruery & Q(name__contains=name)

        data = models.Companies.objects.filter(qruery)
        paginator = Paginator(data, pageSize)

        resl = []

        for item in list(paginator.page(pageIndex)):
            temp = {
                'id': item.id,
                'name': item.name,
                'phone': item.phone,
                'address': item.address,
            }
            resl.append(temp)

        pageData = BaseView.parasePage(pageIndex, pageSize,
                                   paginator.page(pageIndex).paginator.num_pages,
                                   paginator.count, resl)

        return BaseView.successData(pageData)

    def addInfo(self, request):

        models.Companies.objects.create(id=int(time.time()),
                                        name=request.POST.get('name'),
                                        phone=request.POST.get('phone'),
                                        address=request.POST.get('address')
                                        )
        return BaseView.success()

    def updInfo(self, request):

        models.Companies.objects.filter(id=request.POST.get('id')) \
            .update(
            name=request.POST.get('name'),
            phone=request.POST.get('phone'),
            address=request.POST.get('address')
        )
        return BaseView.success()

    def delInfo(self, request):

        if models.Jobs.objects.filter(company__id=request.POST.get('id')).exists():

            return BaseView.warn('存在关联内容无法删除')
        else:
            models.Companies.objects.filter(id=request.POST.get('id')).delete()
            return BaseView.success()

'''
岗位信息管理
'''
class JobsView(BaseView):

    def get(self, request, module, *args, **kwargs):

        if module == 'show':

            companies = models.Companies.objects.all().values()

            return render(request, 'jobs.html', {'companies': list(companies)})
        elif module == 'info':
            return self.getInfo(request)
        elif module == 'page':
            return self.getPageInfo(request)
        else:
            return self.error()

    def post(self, request, module, *args, **kwargs):
        if module == 'add':
            return self.addInfo(request)
        elif module == 'upd':
            return self.updInfo(request)
        elif module == 'del':
            return self.delInfo(request)
        else:
            return self.error()

    def getInfo(self, request):

        data = models.Jobs.objects.filter(id=request.GET.get('id')).first()

        resl = {
            'id': data.id,
            'name': data.name,
            'duty': data.duty,
            'ask': data.ask,
            'companyId': data.company.id,
        }

        return BaseView.successData(resl)

    def getPageInfo(self, request):

        pageIndex = request.GET.get('pageIndex', 1)
        pageSize = request.GET.get('pageSize', 10)
        name = request.GET.get('name')
        companyId = request.GET.get('companyId')

        qruery = Q();

        if BaseView.isExit(name):
            qruery = qruery & Q(name__contains=name)

        if BaseView.isExit(companyId):
            qruery = qruery & Q(company__id=companyId)

        data = models.Jobs.objects.filter(qruery)
        paginator = Paginator(data, pageSize)

        resl = []

        for item in list(paginator.page(pageIndex)):
            temp = {
                'id': item.id,
                'name': item.name,
                'duty': item.duty,
                'ask': item.ask,
                'companyId': item.company.id,
                'companyName': item.company.name
            }
            resl.append(temp)

        pageData = BaseView.parasePage(pageIndex, pageSize,
                                       paginator.page(pageIndex).paginator.num_pages,
                                       paginator.count, resl)

        return BaseView.successData(pageData)

    def addInfo(self, request):

        models.Jobs.objects.create(name=request.POST.get('name'),
                                    duty=request.POST.get('duty'),
                                    ask=request.POST.get('ask'),
                                    company=models.Companies.objects.get(id=request.POST.get('companyId'))
                                    )
        return BaseView.success()

    def updInfo(self, request):

        models.Jobs.objects.filter(id=request.POST.get('id')) \
            .update(
            name=request.POST.get('name'),
            duty=request.POST.get('duty'),
            ask=request.POST.get('ask'),
            company=models.Companies.objects.get(id=request.POST.get('companyId'))
        )
        return BaseView.success()

    def delInfo(self, request):

        if models.SendLogs.objects.filter(job__id=request.POST.get('id')).exists():

            return BaseView.warn('存在关联内容无法删除')
        else:
            models.Jobs.objects.filter(id=request.POST.get('id')).delete()
            return BaseView.success()


    def getPageInfo(self, request):

        type = request.session.get('type')
        user = request.session.get('user')

        pageIndex = request.GET.get('pageIndex', 1)
        pageSize = request.GET.get('pageSize', 10)
        jobName = request.GET.get('jobName')
        studentName = request.GET.get('studentName')

        qruery = Q();

        if type == 2:
            student = models.Students.objects.filter(user__id=user).first()
            qruery = qruery & Q(student__id=student.id)

        if BaseView.isExit(jobName):
            qruery = qruery & Q(job__name__contains=jobName)

        if BaseView.isExit(studentName):
            qruery = qruery & Q(student__user__name__contains=studentName)

        data = models.SendLogs.objects.filter(qruery).order_by("-snedTime")
        paginator = Paginator(data, pageSize)

        resl = []

        for item in list(paginator.page(pageIndex)):
            temp = {
                'id': item.id,
                'snedTime': item.snedTime,
                'status': item.status,
                'jobId': item.job.id,
                'jobName': item.job.name,
                'jobDuty': item.job.duty,
                'companyName': item.job.company.name,
                'studentId': item.student.id,
                'studentName': item.student.user.name,
            }
            resl.append(temp)

        pageData = BaseView.parasePage(pageIndex, pageSize,
                                   paginator.page(pageIndex).paginator.num_pages,
                                   paginator.count, resl)

        return BaseView.successData(pageData)

    def addInfo(self, request):

        user = request.session.get('user')
        jobId = request.POST.get('jobId')
        student = models.Students.objects.filter(user__id=user).first()

        qruery = Q();

        qruery = qruery & Q(job__id=jobId)
        qruery = qruery & Q(student__id=student.id)

        if ((models.EducationLogs.objects.filter(student__id=student.id).exists()) &
                (models.ProjectLogs.objects.filter(student__id=student.id).exists())):

            if models.SendLogs.objects.filter(qruery).exists():

                return BaseView.warn('已投递,请勿重复')
            else:

                models.SendLogs.objects.create(status=request.POST.get('status'),
                                                  snedTime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
                                                  student=student,
                                                  job=models.Jobs.objects.filter(id=jobId).first()
                                                  )
                return BaseView.success()
        else:

            return BaseView.warn('完善个人项目和教育经历后才可投递简历')

    def updInfo(self, request):

        status = request.POST.get('status')

        if  int(status) == 1:

            sendLog =  models.SendLogs.objects.filter(id=request.POST.get('id')).first()

            student = models.Students.objects.filter(id=sendLog.student.id).first()

            if student.status == 0:

                models.SendLogs.objects.filter(id=request.POST.get('id')).update(
                    status=request.POST.get('status'),
                )

                models.Students.objects.filter(id=sendLog.student.id) \
                    .update(
                    status=1,
                )

                return BaseView.success()
            else:

                return BaseView.warn('学生已被录取')

        else:
            models.SendLogs.objects.filter(id=request.POST.get('id')) \
                .update(
                status=request.POST.get('status'),
            )
            return BaseView.success()

    def delInfo(self, request):

        models.SendLogs.objects.filter(id=request.POST.get('id')).delete()

        return BaseView.success()



5、源码获取

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

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

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值