Python+Bootstrap+Django+MySQL 기반 졸업 디자인 문서 콘텐츠 관리 시스템

목차

초록 Ⅰ
초록 Ⅱ 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
Chapter 3 요구사항 분석 3
3.1 전체 시스템 요구사항 분석 3
3.2 시스템 세부 요구사항 분석 3
3.3 시스템 데이터베이스 요구사항 분석 3
3.3.1 데이터 흐름도 3
3.3.2 데이터 사전 설명 9
Chapter 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
Chapter 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
Chapter 7 시스템 테스트 30
결론
31 참고 문헌 31
감사의 글 31
Chapter 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