python例程:智慧校园考试系统程序

Posted 文斗士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python例程:智慧校园考试系统程序相关的知识,希望对你有一定的参考价值。

目录


《智慧校园考试系统》程序使用说明

在虚拟环境下输入命令“python manage.py runserver”启动项目,然后,访问“http://127.0.0.1:8000”进入网站首页,如图1所示。

图1 网站首页

注册用户
鼠标悬浮至顶部导航中的“登录”按钮时,单击“密码”登录,弹出登录框,如图2所示。如果没有账号,需要点击登录框中的“注册”按钮进行注册,如图3所示。

图2 登录页面

图3 注册页面

在注册页面中,需要填写真实可用的邮箱,注册成功后,需要进行邮箱验证,如图4所示。单击“发送邮件”按钮,提示发送信息,如图5所示。

图4 邮箱验证

图5 发送邮件

查看邮箱,如图6所示。

图6 查看邮箱

由于我们在本地测试,不能直接单击邮箱验证链接,可以手动赋值链接,然后在链接地址前添加“http://127.0.0.1:8000”, 即完成的链接地址为:“http://127.0.0.1:8000/auth/email_notify?email=2237800782@qq.com&sign=53ec094a-4acf-11e9-8b5b-b0d59d3cadab”。然后使用浏览器访问该地址即可完成验证并自动登录,如图7所示。

图7 验证成功效果

注册完用户后,即可参与答题,如选择热门比赛。点击一个比赛,即可进入该比赛信息页,如图8所示。

图8 比赛信息页

单击“开始挑战”按钮开始答题,如图9所示。单击“查看排行榜”按钮,即可查看排行榜。

图9 答题页面

在答题页面,单击“后退”按钮,返回上一题;单击“前进”按钮,进入下一题;单击“交卷”按钮,显示答题成绩,如图10所示。

图10 答题成绩

注册机构
机构用户可以参与出题,用户需要先注册结构才能成为机构用户。单击顶部导航中的“成为机构”按钮,进入注册机构页面,如图11所示。在该页面中,邮箱填写用户注册网站时邮箱。

图11 注册机构

注册完成后,单击导航栏顶部的“快速出题”按钮,进入出题页面。如图12所示。

图12 快速出题页面

在快速出题页面,需要先来录制题库,然后再配置比赛。单击“开始录制”按钮,如图13所示。创建题库时,需要先下载题库模块,然后根据模板提示,创建自己的Excel题库。然后填写题库名称,选择题库类型,上传Excel文件,最后单击“开始录制”按钮,上传题库。

图13 创建题库

上传完题库以后,开始配置比赛。在快速出题页面,单击“配置比赛”超链接,进入配置比赛页面。配置比赛时,选择题库,填写配置信息。如果需要答题用户在比赛前填写用户信息,则需要勾选“开启录入信息功能”,然后勾选下面的字段,如图14所示。配置完成后,页面跳转到答题页,单击“开始挑战”按钮,弹出一个填写答题用户信息的表单,该表单中的字段就是在配置信息中设定的内容,如图15所示。

图14 配置比赛

图15 填写答题信息

后台管理员
后台管理员可以通过账号密码登录后台,输入网址“http://127.0.0.1:8000/admin/”,输入如下账号密码即可登录。
账号:mr
密码:mrsoft
登录成功后进入后台主页,如图16所示。在后台主页,管理员可以根据对应菜单执行相应的管理工作。

图16 后台主页

源码演示

manage.py

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

admin.py

# -*- coding: utf-8 -*-

from django.contrib import admin

from competition.models import (BankInfo, ChoiceInfo, CompetitionKindInfo,
                                CompetitionQAInfo, FillInBlankInfo)


class CompetitionKindInfoAdmin(admin.ModelAdmin):
    """
    比赛信息后台
    """

    list_display = ('kind_id', 'account_id', 'app_id', 'bank_id', 'kind_name', 'total_score', 'question_num', 'total_partin_num', 'status', 'created_at', 'updated_at')
    list_filter = ('account_id', 'status')
    search_fields = ('kind_name', 'kind_id', 'app_id', 'account_id',)
    readonly_fields = ('kind_id', 'total_partin_num',)

    def save_model(self, request, obj, form, change):
        obj.save()

    def delete_model(self, request, obj):
        obj.delete()

    def get_readonly_fields(self, request, obj=None):
        return self.readonly_fields


class BankInfoAdmin(admin.ModelAdmin):
    """
    题库后台配置
    """

    list_display = ('bank_id', 'bank_type', 'kind_num', 'choice_num', 'fillinblank_num', 'partin_num')
    list_filter = ('bank_type', 'bank_id',)
    search_fields = ('bank_id',)
    readonly_fields = ('bank_id', 'choice_num', 'fillinblank_num', 'kind_num', 'partin_num')

    def save_model(self, request, obj, form, change):
        obj.choice_num = ChoiceInfo.objects.filter(bank_id=obj.bank_id).count()
        obj.fillinblank_num = FillInBlankInfo.objects.filter(bank_id=obj.bank_id).count()
        obj.save()


class ChoiceInfoAdmin(admin.ModelAdmin):
    """
    选择题配置后台
    """

    list_display = ('bank_id', 'question', 'answer', 'item1', 'item2', 'item3', 'item4', 'source', 'status', 'created_at', 'updated_at')
    list_filter = ('bank_id', 'status')
    search_fields = ('bank_id', 'question', 'answer', 'item1', 'item2', 'item3', 'item4')

    def save_model(self, request, obj, form, change):
        obj.save()

    def delete_model(self, request, obj):
        obj.delete()


class FillInBlankInfoAdmin(admin.ModelAdmin):
    """
    填空题配置后台
    """

    list_display = ('bank_id', 'question', 'answer', 'source', 'status', 'created_at', 'updated_at')
    list_filter = ('bank_id', 'status')
    search_fields = ('bank_id', 'question', 'answer')


class CompetitionQAInfoAdmin(admin.ModelAdmin):
    """
    答题记录信息后台
    """

    list_display = ('kind_id', 'status', 'uid', 'qa_id', 'score', 'created_at', 'updated_at')
    list_filter = ('kind_id', 'uid', 'qa_id', 'started', 'finished', 'status')
    search_fields = ('uid', 'kind_id', )
    readonly_fields = ('qa_id',)


admin.site.register(CompetitionKindInfo, CompetitionKindInfoAdmin)
admin.site.register(CompetitionQAInfo, CompetitionQAInfoAdmin)
admin.site.register(ChoiceInfo, ChoiceInfoAdmin)
admin.site.register(FillInBlankInfo, FillInBlankInfoAdmin)
admin.site.register(BankInfo, BankInfoAdmin)

源码下载路径

python例程-智慧校园考试系统程序使用说明.zip

以上是关于python例程:智慧校园考试系统程序的主要内容,如果未能解决你的问题,请参考以下文章

毕设必备!Python智慧教室:考试作弊系统动态点名等功能

毕设必备!Python智慧教室:考试作弊系统动态点名等功能

毕设必备!Python智慧教室:考试作弊系统动态点名等功能

Python获取智慧校园每日课表,并通过yagmail发送至邮箱

再看“笕实智慧校园”——作品的复盘[1]

利用Python脚本从校园通获取期末考试成绩