基于Python+Bootstrap+Django+MySQL的毕业设计文档内容管理系统

目录

摘要 I
Abstract II
第1章 绪论 1
1.1 课题背景及意义 1
1.2 国内外研究现状 1
1.3系统设计目标 1
1.4 本文结构 1
第2章 可行性分析 2
2.1 技术可行性分析 2
2.2 操作可行性 2
2.3 经济可行性 2
第3章 需求分析 3
3.1系统总体需求分析 3
3.2系统详细需求分析 3
3.3 系统数据库需求分析 3
3.3.1 数据流图 3
3.3.2数据字典的描述 9
第4章 系统开发工具及使用技术介绍 17
4.1 系统开发工具 17
4.1.1 PyCharm 17
4.1.2 MySQL 17
4.1.3 NaviCat Premium 17
4.2 系统使用技术 17
4.2.1 Python编程语言 17
4.2.2基于MVT架构的Django框架 18
4.2.3 FastDFS分布式存储 18
4.2.4 Nginx 19
第5章 系统设计 20
5.1系统软硬件环境 20
5.1.1 系统硬件环境 20
5.1.2 系统软件环境 20
5.2系统总体设计 20
5.2.1系统概述及功能 20
5.3系统详细设计 21
5.3.1 注册管理 21
5.3.2 登录管理 21
5.3.3 题目管理 22
5.3.4 选题管理 23
5.3.5 开题管理 23
5.4系统数据库设计 23
5.4.1 概念设计 24
5.4.2 逻辑设计 24
5.4.3 物理设计 25
第6章 系统实现 28
6.1毕业生角色实现 28
6.1.1选题实现 28
6.1.2 开题实现 28
6.1.4 答辩实现 28
6.2 毕业指导老师功能实现 29
6.3 教学秘书功能实现 29
第7章 系统测试 30
结束语 31
参考文献 31
致 谢 31
第3章 需求分析
3.1系统总体需求分析
本系统面向用户群体为教学人员和应届学生,分为教师、教学秘书和学生,学生和教师在前台执行业务,教学秘书在后台部署业务。学生能进行登录、选题、查看个人信息、提交文档和评价等操作,教师能进行出题、上传文档等操作,教学秘书则能进行相关数据信息的管理和部署。

3.2系统详细需求分析
学生主要功能:
(1)登录:根据用户名密码进行登录。
(2)选题:查看所有题目并选择毕业设计题目。
(3)开题:下载题目相关文档模板,上传开题报告。
(4)上传中期报告:上传中期报告相关文档。
(5)答辩:答辩申请、上传相关文档。
(6)反馈:对指导老师的评价。

教师主要功能:
(1)题目管理:对题目进行增删查改。
(2)题目状态管理:修改题目确认状态。
(3)中期报告管理:下载中期报告相关文档
(4)答辩:上传相关文档,记录答辩过程。
(5)成绩管理:对毕业生进行评分,计算答辩总成绩。
(6)反馈:对毕业生进行评价。

教学秘书主要功能:
(1)登录:根据用户名密码进行登录。
(2)用户信息,用户权限,题目,题目状态的管理。

from django.http import HttpResponse
from django.shortcuts import render, redirect, reverse, get_object_or_404
from django.views import View
from apps.user.models import User
from django.contrib.auth import authenticate, login, logout
from rolepermissions.roles import assign_role


# /register/
class RegisterView(View):
    @staticmethod
    def get(request):
        # 显示注册页面
        return render(request, 'register.html')

    @staticmethod
    def post(request):
        name = request.POST.get('registerName', None)
        username = request.POST.get('registerUsername', None)
        password = request.POST.get('registerPassword', None)
        school = request.POST.get('registerSchool', None)
        department = request.POST.get('registerDepartment', None)
        email = request.POST.get('registerEmail', None)

        if not all([username, password]):
            print("数据不完整")

        user = User.objects.create_user(
            name=name,
            username=username,
            password=password,
            school=school,
            department=department,
            email=email
        )
        user.save()

        # 默认角色为学生
        assign_role(user, 'student')
        return redirect(reverse('login'))


# /login/
class LoginView(View):
    @staticmethod
    def get(request):
        return render(request, 'login.html')

    @staticmethod
    def post(request):
        username = request.POST.get('userName', None)
        password = request.POST.get('passWord', None)
        print(username)
        print(password)

        user = authenticate(username=username, password=password)
        print(user)

        if user is not None:
            login(request, user)
            next_url = request.GET.get('next', reverse('topic:all_topic'))
            response = redirect(next_url)
            return response
        else:
            return render(request, 'login.html')


class LogoutView(View):
    '''退出登录'''

    def get(self, request):
        '''退出登录'''
        # 清除用户session信息
        logout(request)
        # 跳转到首页
        return redirect(reverse('login'))


def user_center(request):
    user = User.objects.get(id=request.user.id)
    context = {
        "name": user.name,
        "school": user.school,
        "department": user.department,
        "memo": user.memo,
        "email": user.email
    }
    return render(request, "user/user_center.html", context=context)


def edit_user_profile(request):
    user = User.objects.get(id=request.user.id)

    if request.method == "GET":
        department = user.department
        email = user.email
        memo = user.memo
        context = {
            "department": department,
            "email": email,
            "memo": memo,
        }
        return render(request, "user/edit_user_profile.html", context=context)
    else:
        print("!!!")
        form = request.POST
        print(form)
        user.department = form['department']
        user.email = form['email']
        user.memo = form['memo']
        user.save()
        return render(request, "user/edit_user_profile.html")


def change_pwd(request):
    user = get_object_or_404(User, id=request.user.id)
    if request.method == "GET":
        return render(request, "user/change_pwd.html")
    else:
        form = request.POST
        print(form)
        pwd = form['registerPassword']
        pwd_confirm = form['registerPasswords']
        if pwd == pwd_confirm:
            print(pwd)
            user.set_password(pwd)
            user.save()
            return redirect(reverse("login"))
        else:
            return redirect(reverse("topic:all_topic"))


def page_not_found(request, exception):
    return render(request, '404.html', status=404)


def page_error(request):
    return render(request, '500.html', status=500)

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

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/130718239