python Django项目学生管理系统

这篇具有很好参考价值的文章主要介绍了python Django项目学生管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

涉及技术:
后台:Django mysql
前端:Html css js Ajax boostrap
数据库:MySQL5.7

功能简介:

管理系统使用Xadmin框架,内置Bootstrap3、插件库

  • 登录注册:普通用户与管理人员入口不同,老师及学生通过状态选择验证。
  • 权限管理:权限组管理及个人权限管理。
  • 基本信息管理:针对用户(学生,老师,年级主任,管理人员)基本信息的增删改查。
  • 年级管理:年级与年级主任,该年级下属的班级关联。
  • 班级管理:班级与班级主任,授课老师,该班级所有的学生,统计学生数,按老师筛选班级。
  • 宿舍管理:宿舍责任老师,宿舍长,以及当前宿舍学生。
  • 考试管理:考试记录的建立。
  • 成绩管理:成绩排名,单条成绩记录的增加修改以及删除时同此考试,年级或班级的相应个人成绩重新排序。
  • 增删改查,异步处理,唯一性判断,缓存清楚功能,重要数据加密功能,正则表达式判断功能

部署效果截图

学生信息表

python Django项目学生管理系统,python,django,开发语言

管理人员表

python Django项目学生管理系统,python,django,开发语言

学生基本信息

python Django项目学生管理系统,python,django,开发语言

登陆界面

python Django项目学生管理系统,python,django,开发语言文章来源地址https://www.toymoban.com/news/detail-780029.html

部分代码

class Administrator(AbstractUser):
    """管理人员"""

    id = models.AutoField(verbose_name='管理人员编号', db_column='管理员编号', primary_key=True)
    username = models.CharField(max_length=150, verbose_name='用户名', db_column='用户名', unique=True)
    password = models.CharField(max_length=128, verbose_name='密码', db_column='密码')
    email = models.EmailField(verbose_name='邮箱', db_column='邮箱', null=True, blank=True)
    add_time = models.DateTimeField(default=datetime.now, db_column='添加时间', verbose_name="添加时间")
    remark = models.TextField(max_length=100, verbose_name='备注', db_column='备注', default='',
                              null=True , blank=True,
                              help_text='备注不超过一百个汉字',
                              error_messages={
                                  'max_length': '备注不超过一百个字'
                              })

    class Meta:
        verbose_name = '管理人员'
        verbose_name_plural = verbose_name
        db_table = '管理人员表'

    def __str__(self):
        return self.username


class EmailVerifyRecord(models.Model):
    """邮箱验证码"""

    SEND_CHOICES = (
        ("register", "注册"),
        ("forget", "找回密码"),
        ("update_email", "修改邮箱")
    )
    code = models.CharField(max_length=50, verbose_name="验证码", db_column='验证码')
    email = models.EmailField(max_length=50, verbose_name="邮箱", db_column='邮箱')
    send_type = models.CharField(choices=SEND_CHOICES, max_length=20, verbose_name="发送类型", db_column='验证码类型')
    send_time = models.DateTimeField(default=datetime.now, verbose_name="发送时间", db_column='发送时间')
    # 将now()中的括号去掉保证默认时间是models实例化的时间,而不是编译时间

    class Meta:
        verbose_name = "邮箱验证码"
        verbose_name_plural = verbose_name
        db_table = '验证码表'

    def __str__(self):
        return self.code


class DormitoryInfo(models.Model):
    """宿舍信息"""

    dormitory_number = models.CharField(max_length=5, db_column='寝室号', verbose_name='寝室号', default='001')
    year = models.CharField(max_length=10, db_column='年份', default='2018', verbose_name='年份',)
    teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL,
                                null=True, verbose_name='老师档案号', db_column='老师档案号')
    remark = models.TextField(max_length=100, verbose_name='备注', db_column='备注',
                              help_text='备注不超过一百个汉字',
                              null=True, blank=True,
                              error_messages={
                                  'max_length': '备注不超过一百个字'
                              })

    class Meta:
        verbose_name = '宿舍'
        verbose_name_plural = verbose_name
        # ordering = ['year', 'dormitory_number']
        db_table = '宿舍信息表'
        # unique_together = ['dormitory_number', 'year']

    def __str__(self):
        return "{0}年入住,宿舍号:{1}".format(self.year, self.dormitory_number)

    def get_dormitory_students(self):
        students_list = self.studentinfo_set.all()
        students_list = ','.join([i.student_name for i in students_list])
        return students_list
    get_dormitory_students.short_description = '宿舍学生'

    def get_student_number(self):
        num = self.studentinfo_set.all().count()
        return num
    get_student_number.short_description = '宿舍当前人数'


class GradeInfo(models.Model):
    """年级信息"""

    grade_number = models.CharField(max_length=2, db_column='年级', verbose_name='年级', default='1')
    year = models.CharField(max_length=10, db_column='届', verbose_name='届', default='2018', unique=True,
                            help_text='学生入学年份')
    header = models.CharField(max_length=10, db_column='年级主任', verbose_name='年级主任', default='', null=True, blank=True)
    remark = models.TextField(max_length=100, verbose_name='备注', db_column='备注',
                              default='', null=True, blank=True,
                              help_text='备注不超过一百个汉字',
                              error_messages={
                                  'max_length': '备注不超过一百个字'
                              })

    class Meta:
        verbose_name = '年级信息'
        verbose_name_plural = verbose_name
        db_table = '年级信息表'
        # unique_together = ['grade_number', 'year']
        # ordering = ['-year', 'grade_number']  # datetime.time 对象不可序列化

    def __str__(self):

        year_now = date.today().year
        month_now = date.today().month

        #  计算出年级,但是为防止转校生,没有动态的加载到数据库
        if month_now >= 9 and year_now >= int(self.year):
            grade = year_now - int(self.year) + 1
        elif month_now < 9 and year_now >= int(self.year):
            grade = year_now - int(self.year)
        else:
            grade = int(self.grade_number)

        # 如果学生的年级大于三年级,则显示已经毕业
        if grade > 3:
            return '{0}届入学, 目前已毕业'.format(self.year)
        else:
            return '{0}届入学, 目前{1}年级'.format(self.year, grade)

    def save(self, *args, **kwargs):
        super(GradeInfo, self).save(*args, **kwargs)

    def get_class_number(self):
        # 通过关联查询该年级的所有班级数
        num = self.classinfo_set.count()
        return num
    get_class_number.short_description = '班级数'

    def get_grade_students_number(self):
        return self.studentinfo_set.all().count()
    get_grade_students_number.short_description = '年级总人数'


class ClassInfo(models.Model):
    """班级信息"""

    class_number = models.CharField(max_length=5, db_column='班级', verbose_name='班级', default='1')
    header = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, null=True,
                               limit_choices_to={'is_class_leader': True},
                               verbose_name='班主任档案号', db_column='班主任档案号')
    grade = models.ForeignKey(GradeInfo, on_delete=models.SET_NULL, null=True, verbose_name='年级', db_column='年级')

    # 各科老师
    chinese_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='chinese_teacher_class',
                                        limit_choices_to={'subject': '语文'}, blank=True,
                                        null=True, verbose_name='语文老师', db_column='语文老师')
    math_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='math_teacher_class',
                                     limit_choices_to={'subject': '数学'}, blank=True,
                                     null=True, verbose_name='数学老师', db_column='数学老师')
    english_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='english_teacher_class',
                                        limit_choices_to={'subject': '英语'}, blank=True,
                                        null=True, verbose_name='英语老师', db_column='英语老师')
    physical_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='physical_teacher_class',
                                         limit_choices_to={'subject': '物理'}, blank=True,
                                         null=True, verbose_name='物理老师', db_column='物理老师')
    chemistry_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL,
                                          related_name='chemistry_teacher_class',
                                          limit_choices_to={'subject': '化学'}, blank=True,
                                          null=True, verbose_name='化学老师', db_column='化学老师')
    biology_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='biology_teacher_class',
                                        limit_choices_to={'subject': '生物'}, blank=True,
                                        null=True, verbose_name='生物老师', db_column='生物老师')
    politics_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='politics_teacher_class',
                                         limit_choices_to={'subject': '政治'}, blank=True,
                                         null=True, verbose_name='政治老师', db_column='政治老师')
    geography_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL,
                                          related_name='geography_teacher_class',
                                          limit_choices_to={'subject': '地理'}, blank=True,
                                          null=True, verbose_name='地理老师', db_column='地理老师')
    history_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='history_teacher_class',
                                        limit_choices_to={'subject': '历史'}, blank=True,
                                        null=True, verbose_name='历史老师', db_column='历史老师')
    sport_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='sport_teacher_class',
                                      limit_choices_to={'subject': '体育'}, blank=True,
                                      null=True, verbose_name='体育老师', db_column='体育老师')
    music_teacher = models.ForeignKey(TeacherInfo, on_delete=models.SET_NULL, related_name='music_teacher_class',
                                      limit_choices_to={'subject': '音乐'}, blank=True,
                                      null=True, verbose_name='音乐老师', db_column='音乐老师')

    remark = models.TextField(max_length=100, verbose_name='备注', db_column='备注',
                              default='', null=True, blank=True,
                              help_text='备注不超过一百个汉字',
                              error_messages={
                                  'max_length': '备注不超过一百个字'
                              })

    class Meta:
        verbose_name = '班级信息'
        verbose_name_plural = verbose_name
        # ordering = ['grade', 'class_number']
        db_table = '班级信息表'
        # unique_together = ['grade', 'class_number', 'header']

    def __str__(self):
        return '班级:{}'.format(self.class_number)

    def get_class_student_number(self):
        # 根据班主任还有入学年份筛选
        num = self.studentinfo_set.all().count()
        return num
    get_class_student_number.short_description = '班级人数'

    def get_grade_leader(self):
        grade_leader = GradeInfo.objects.get(pk=self.grade.id).header
        return grade_leader
    get_grade_leader.short_description = '年级主任'

到了这里,关于python Django项目学生管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Django的学生选课管理系统,实现多用户登录注册,可选课可评课

    学生选课管理系统是一个基于Python Django开发的教务管理系统,旨在提供方便快捷的选课服务和学籍管理功能。该系统分为教师端和学生端两个角色,为教师和学生提供了不同的功能和权限。 教师端功能: 教师可以登录系统后,进行课程管理、成绩录入和学生管理等操作。具

    2024年01月24日
    浏览(38)
  • python+django高校教材共享管理系统PyCharm 项目

    本中原工学院教材共享平台采用的数据库是mysql,使用nodejs技术开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以

    2024年02月03日
    浏览(34)
  • Django项目之图书管理系统

    1、创建好 Django 项目 2、准备好数据库 —— 创建数据库:book_system 3、配置项目中的数据库引擎 4、配置静态文件的搜索路径 , 以及在项目的根目录中创建一个 static 存放静态文件数据文件夹 5、导入 html 模板文件和静态文件数据。 1、响应用户注册页面的视图 2、定义用户数

    2024年04月29日
    浏览(38)
  • Django实战:部署项目 【资产管理系统】,Django完整项目学习研究(项目全解析,部署教程,非常详细)

    关于Django,我已经和大家分享了一些知识,考虑到一些伙伴需要在实际的项目中去理解。所以我上传了一套Django的项目学习源码,已经和本文章进行了绑定。大家可以自行下载学习,考虑到一些伙伴是初学者,几年前,编者也是从初学者一路学习到现在。当时,很希望有一套

    2024年02月20日
    浏览(30)
  • Django实战项目-学习任务系统-任务管理

    接着上期代码框架,开发第3个功能,任务管理,再增加一个学习任务表,用来记录发布的学习任务的标题和内容,预计完成天数,奖励积分和任务状态等信息。 第一步:编写第三个功能-任务管理 1,编辑模型文件: ./mysite/study_system/models.py: 2,编辑urls配置文件: ./mysite/stu

    2024年02月06日
    浏览(32)
  • Django实战项目-学习任务系统-定时任务管理

    接着上期代码框架,开发第4个功能,定时任务管理,再增加一个学习定时任务表,主要用来设置周期重复性的学习任务,定时周期,定时时间,任务标题和内容,预计完成天数,奖励积分和任务状态等信息。 现实中学习一门课程或一项技能知识,需要很长时间的学习积累才

    2024年02月08日
    浏览(32)
  • Django实战项目-学习任务系统-兑换物品管理

    接着上期代码框架,开发第5个功能,兑换物品管理,再增加一个学习兑换物品表,主要用来维护兑换物品,所需积分,物品状态等信息,还有一个积分流水表,完成任务奖励积分,兑换物品消耗积分。 要想激励一个人的学习动力,最好能有实际的奖励,完成任务后,系统应

    2024年02月06日
    浏览(36)
  • 图书管理系统(python、django)

    1. 系统简介 该实验设计开发一个简单的图书管理数据库系统,包括图书馆内书籍的信息、学校在校师生的信息以及师生的借阅信息。此系统用户面向图书管理员和借阅读者,图书馆管理员可以完成图书、读者等基本信息的增加、删除和修改、查看;读者可以进行图书的借阅、

    2024年02月05日
    浏览(46)
  • python课程设计——Django+vue信息管理系统

    python课程设计 之Django+vue2 文章目录 系列文章目录 前言 一、 信息管理系统的具体设计 二、 信息管理系统测试效果 三、结语 总结 python课程设计——Django+vue2 1 Django平台整体构建 一个完整的Django项目通常需要划分出很多不同的子模块进行设计,采用模块设计可以使得分工更加

    2024年02月05日
    浏览(43)
  • python+django在线借阅图书管理系统vue

    本论文是以构建图书借阅为目标,使用  django框架制作,由系统前台、读者和管理员三大部分组成。着重论述了系统设计分析,系统的实现(读者注册模块,读者登录,读者浏览图书模块,图书借阅模块,图书归还模块,管理员登录等)以及后台数据库管理。从网站设计到具

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包