基於Django開發的學生信息管理系統

一、 功能

  1. 實現對學生對個人信息的增刪查改
  2. 實現後臺對所有學生信息的操作

二、開發工具

      Windows + Pycharm + Mysql + Django

三、git地址

   https://github.com/Gscsd8527/StudentSystem

四、代碼實現

       1. model

from django.db import models

# Create your models here.
# 課程表
class CourseModel(models.Model):
    cour_id = models.CharField(max_length=15, verbose_name='學生ID')
    course = models.CharField(max_length=30, verbose_name='課程')
    grade = models.IntegerField(default=60, verbose_name='分數')
    class Meta():
        db_table = 'course'
    def __str__(self):
        return '學生Id:  課程:  分數: '.format(self.cour_id, self.course, self.grade)

# 學生信息表
class StudentInformationModel(models.Model):
    stu_id = models.CharField(max_length=15, verbose_name='學生ID')
    stu_name = models.CharField(max_length=30, verbose_name='學生姓名')
    stu_phone = models.CharField(max_length=20, verbose_name='學生電話')
    str_addr = models.TextField(verbose_name='學生地址')
    stu_faculty = models.CharField(max_length=20, verbose_name='院系')
    stu_major = models.CharField(max_length=30, verbose_name='專業')
    # 取消外鍵(外鍵是可用的)
    # stu_course = models.ForeignKey('CourseModel', on_delete=True)
    class Meta():
        db_table = 'studentinformation'

# 學生用戶名密碼錶
class StudentModel(models.Model):
    stu_id = models.CharField(max_length=15, verbose_name='學生ID')
    username = models.CharField(max_length=10, verbose_name='用戶名')
    password = models.CharField(max_length=10, verbose_name='密碼')
    class Meta():
        db_table = 'student'

       2. urls

from django.urls import path
from studentManagement import views

app_name = 'studentManager'
urlpatterns = [
    path('index/', views.index, name='index'),
    path('login/', views.login, name='login'),
    path('logout/', views.logout, name='logout'),
    path('add/', views.add, name='add'),
    path('select/', views.select, name='select'),
    path('delete/', views.delete, name='delete'),
    path('update/', views.update, name='update')
]

     3.  views

from django.shortcuts import render, HttpResponse, redirect, reverse
from .models import StudentModel, StudentInformationModel, CourseModel
# Create your views here.

# 主界面
def index(request):
    context = {
        'status': '未登錄狀態'
    }
    return render(request, 'studentManage/index.html', context)

# 登錄界面
def login(request):
    if request.method == "POST":
        id = request.POST.get('id')
        username = request.POST.get('username')
        password = request.POST.get('password')
        if not all([id, username, password]):
            return HttpResponse('參數不全')
        else:
            student = StudentModel.objects.filter(username=username, password=password)
            if len(student):
                # request.session['username'] = username
                # 用以下方法,將用戶的信息存放到session中,session在中間件中是默認啓用的
                request.session['user'] = {
                    'id': id,
                    'username': username,
                    'password': password
                }
                context = {
                    'status': username,
                    'aa': '已登錄',
                    'lenght': 1
                }
                return render(request, 'studentManage/index.html', context)

            else:
                context = {
                    'aa': '用戶名密碼錯誤'
                }
                return render(request, 'studentManage/login.html', context)
    else:
        context = {
            'status': '未登錄狀態',
            'length': 0
        }
        return render(request, 'studentManage/login.html', context)

# 退出界面
def logout(request):
    # 註銷掉用戶,從刪除session中保存的信息
    del request.session['user']
    return render(request, 'studentManage/index.html')

# 增加數據 增加只能root用戶或者管理員才能操作
def add(request):
    if request.method == "POST":
        root_information = request.session['user']
        id = root_information['id']
        root_id = StudentModel.objects.get(pk=1).stu_id
        if id == root_id:
            stu_id = request.POST.get('stu_id')
            stu_name = request.POST.get('stu_name')
            if not all([stu_id, stu_name]):
                context = {
                    'msg': '學號和名字有遺漏',
                }
                return render(request, 'studentManage/add.html', context)
            stu_phone = request.POST.get('stu_phone')
            stu_addr = request.POST.get('str_addr')
            stu_faculty = request.POST.get('stu_faculty')
            stu_major = request.POST.get('stu_major')
            stu_data = StudentInformationModel()
            stu_data.stu_id = stu_id
            stu_data.stu_name = stu_name
            stu_data.stu_phone = stu_phone
            stu_data.str_addr = stu_addr
            stu_data.stu_faculty = stu_faculty
            stu_data.stu_major = stu_major
            stu_data.save()
            context = {
                'sucess': '增加成功',
            }
            return render(request, 'studentManage/add.html', context)
        else:
            context = {
                'error': '只用root用戶和管理員才能操作'
            }
            return render(request, 'studentManage/add.html', context)
    else:
        return render(request, 'studentManage/add.html')


# 查詢
def select(request):
    if request.method == "POST":
        id = request.POST.get('stu_id')
        stu_data = StudentInformationModel.objects.get(stu_id=id)
        stu_id = stu_data.stu_id
        stu_name = stu_data.stu_name
        stu_phone = stu_data.stu_phone
        str_addr = stu_data.str_addr
        stu_faculty = stu_data.stu_faculty
        stu_major = stu_data.stu_major
        stu_course = CourseModel.objects.filter(cour_id=id)
        dct = {}
        for stu in stu_course:
            dct[stu.course] = stu.grade
        context = {
            'stu_id': stu_id,
            'stu_name': stu_name,
            'stu_phone': stu_phone,
            'str_addr': str_addr,
            'stu_faculty': stu_faculty,
            'stu_major': stu_major,
            'course_data': dct,
            'msg': True
        }
        return render(request, 'studentManage/select.html', context)
    else:
        root_information = request.session['user']
        id = root_information['id']
        context = {
            'msg': False,
            'id': id
        }
        return render(request, 'studentManage/select.html', context)

# 刪除
def delete(request):
    if request.method == "POST":
        id = request.POST.get('id')
        StudentInformationModel.objects.filter(stu_id=id).delete()
        context = {
            'msg': '成功刪除'
        }
        return render(request, 'studentManage/delete.html', context)
    else:
        root_information = request.session['user']
        id = root_information['id']
        context = {
            'id': id
        }
        return render(request, 'studentManage/delete.html', context)


# 修改
def update(request):
    user_information = request.session['user']
    id = user_information['id']
    stu_data = StudentInformationModel.objects.get(stu_id=id)
    stu_id = stu_data.stu_id
    stu_name = stu_data.stu_name
    stu_phone = stu_data.stu_phone
    stu_addr = stu_data.str_addr
    stu_faculty = stu_data.stu_faculty
    stu_major = stu_data.stu_major
    context = {
        'stu_id': stu_id,
        'stu_name': stu_name,
        'stu_phone': stu_phone,
        'stu_addr': stu_addr,
        'stu_faculty': stu_faculty,
        'stu_major': stu_major,
    }
    if request.method == "POST":
        stu_id = request.POST.get('stu_id')
        stu_name = request.POST.get('stu_name')
        stu_phone = request.POST.get('stu_phone')
        stu_addr = request.POST.get('stu_addr')
        stu_faculty = request.POST.get('stu_faculty')
        stu_major = request.POST.get('stu_major')
        # StudentInformationModel.objects.filter(stu_id=id).update(stu_id=stu_id, stu_name=stu_name, stu_phone=stu_phone, str_addr=stu_addr, stu_faculty=stu_faculty, stu_major=stu_major)
        # 或者 以下這種,對單個數據進行修改
        stu_data = StudentInformationModel.objects.get(stu_id=id)
        stu_data.stu_id = stu_id
        stu_data.stu_name = stu_name
        stu_data.stu_phone = stu_phone
        stu_data.stu_addr = stu_addr
        stu_data.stu_faculty = stu_faculty
        stu_data.stu_major = stu_major
        stu_data.save()
        context = {
            'stu_id': stu_id,
            'stu_name': stu_name,
            'stu_phone': stu_phone,
            'stu_addr': stu_addr,
            'stu_faculty': stu_faculty,
            'stu_major': stu_major,
            'msg': '修改成功'
        }
        return render(request, 'studentManage/update.html', context)
    else:
        return render(request, 'studentManage/update.html', context)

五、功能展示

       首頁:

              

       登錄後

     

   增加: 只有root用戶才能增加,我默認了id爲1的是root用戶

           

 修改:將當前學生信息展現出來,方便我們修改,前端頁面中加了placeholder屬性

        

刪除

             

    查詢

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章