首页 > 编程语言 >BS-Python-061 基于Python+Django实现在线考试系统

BS-Python-061 基于Python+Django实现在线考试系统

时间:2024-07-12 20:28:02浏览次数:21  
标签:061 __ False name Python Django models null verbose

作者主页:编程千纸鹤

作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、Python项目开发、大学数据和AI项目开发、单片机项目设计、面试技术整理、最新技术分享

收藏点赞不迷路  关注作者有好处

文末获得源码

 项目编号:BS-Python-061

一,环境介绍

语言环境:Python3.8

数据库:Mysql: mysql5.7

WEB框架:Django

爬虫框架:Scrapy

开发工具:IDEA或PyCharm

项目展示地址:基于Python实现在线考试系统

直接访问地址:

https://gf.bilibili.com/item/detail/1105851061

二,项目简介

本文首先实现了学生在线考试管理的发展,随后依照传统的软件开发流程,最先为系统挑选适用的语言和软件开发平台,依据需求分析开展控制模块制作和数据库查询构造设计,依据系统整体功能模块的设计,制作系统的功能模块图、流程表和E-R图。其次进行设计框架,依据设计的框架撰写编码,完成系统的每个功能模块。最终,对基本系统开展了检测,包含软件性能测试、单元测试和性能指标。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。

随着科学技术发展,计算机已成为人们生活中必不可少的生活办公工具,在这样的背景下,网络技术被应用到各个方面,为了提高办公生活效率,网络信息技术飞速发展。人类社会进入了全新的信息化时代。学生在线考试管理一直是信息管理的一大难题,学生在线考试信息数量多,此时寻找有效便捷的学生在线考试管理方法就是当务之急。而日趋成熟的计算机信息管理技术便成为解决这一难题的唯一之选。如今计算机信息管理技术来处理学生在线考试管理早已游刃有余,其实信息管理技术已经渗透到各个行业的信息控制管理当中,且有着举足轻重的地位。而随着现代化社会主义不断进步,普通群众生活水平有了大幅提高,很多方面都在网络上去实现,从而网络也就成为了最直接、即方便又快捷的接入口。

使用学生在线考试系统相对传统学生在线考试管理方式具备很多优点:首先可以大幅提高学生在线考试检索,只需输入相关信息就能在数秒内反馈想要的结果;其次可存储大量的学生在线考试信息,同时学生在线考试系统安全性有更高的保障;相比纸质文档来管理学生在线考试,学生在线考试系统更节省空间人力资源。这些优点大大提高管理效率并节省运营成本。因此,必须开发一个学生在线考试系统开展合理有效的管理方法,这提高了学生在线考试的效率和特性,增加了用户信息安全性,方便用户及时反馈信息给管理员,增加了用户之间的互动交流,更能提高用户的体验强度。

本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库[1],而Python技术[2], B/S架构则保证了较高的平台适应性。文中主要是讲解了该系统的开发环境、要实现的基本功能和开发步骤,并主要讲述了系统设计方案的关键点、设计思想。

管理员用例

用户功能

系统功能模块

三,系统展示

后台管理员

四,核心代码展示

#coding:utf-8
__author__ = "ila"
from django.db import models

from .model import BaseModel

from datetime import datetime



class yonghu(BaseModel):
    __doc__ = u'''yonghu'''
    __tablename__ = 'yonghu'

    __loginUser__='zhanghao'


    __authTables__={}
    __authPeople__='是'#用户表,表属性loginUserColumn对应的值就是用户名字段,mima就是密码字段
    __loginUserColumn__='zhanghao'#用户表,表属性loginUserColumn对应的值就是用户名字段,mima就是密码字段
    __sfsh__='是'#表sfsh(是否审核,”是”或”否”)字段和sfhf(审核回复)字段,后台列表(page)的操作中要多一个”审核”按钮,点击”审核”弹出一个页面,包含”是否审核”和”审核回复”,点击确定调用update接口,修改sfsh和sfhf两个字段。
    __authSeparate__='否'#后台列表权限
    __thumbsUp__='否'#表属性thumbsUp[是/否],新增thumbsupnum赞和crazilynum踩字段
    __intelRecom__='否'#智能推荐功能(表属性:[intelRecom(是/否)],新增clicktime[前端不显示该字段]字段(调用info/detail接口的时候更新),按clicktime排序查询)
    __browseClick__='否'#表属性[browseClick:是/否],点击字段(clicknum),调用info/detail接口的时候后端自动+1)、投票功能(表属性[vote:是/否],投票字段(votenum),调用vote接口后端votenum+1
    __foreEndListAuth__='否'#前台列表权限foreEndListAuth[是/否];当foreEndListAuth=是,刷的表新增用户字段userid,前台list列表接口仅能查看自己的记录和add接口后台赋值userid的值
    __foreEndList__='否'#表属性[foreEndList]前台list:和后台默认的list列表页相似,只是摆在前台,否:指没有此页,是:表示有此页(不需要登陆即可查看),前要登:表示有此页且需要登陆后才能查看
    __isAdmin__='否'#表属性isAdmin=”是”,刷出来的用户表也是管理员,即page和list可以查看所有人的考试记录(同时应用于其他表)
    addtime = models.DateTimeField(auto_now_add=False, verbose_name=u'创建时间')
    zhanghao=models.CharField ( max_length=255,null=False,unique=True, verbose_name='账号' )
    mima=models.CharField ( max_length=255,null=False, unique=False, verbose_name='密码' )
    xingming=models.CharField ( max_length=255,null=False, unique=False, verbose_name='姓名' )
    nianling=models.IntegerField  (  null=True, unique=False, verbose_name='年龄' )
    xingbie=models.CharField ( max_length=255, null=True, unique=False, verbose_name='性别' )
    shouji=models.CharField ( max_length=255, null=True, unique=False, verbose_name='手机' )
    touxiang=models.TextField   (  null=True, unique=False, verbose_name='头像' )
    zhuceziliao=models.TextField   (  null=True, unique=False, verbose_name='注册资料' )
    sfsh=models.CharField ( max_length=255, null=True, unique=False,default='待审核', verbose_name='是否审核' )
    shhf=models.TextField   (  null=True, unique=False, verbose_name='审核回复' )
    '''
    zhanghao=VARCHAR
    mima=VARCHAR
    xingming=VARCHAR
    nianling=Integer
    xingbie=VARCHAR
    shouji=VARCHAR
    touxiang=Text
    zhuceziliao=Text
    sfsh=VARCHAR
    shhf=Text
    '''
    class Meta:
        db_table = 'yonghu'
        verbose_name = verbose_name_plural = '用户'
class jiaoshi(BaseModel):
    __doc__ = u'''jiaoshi'''
    __tablename__ = 'jiaoshi'

    __loginUser__='jiaoshizhanghao'


    __authTables__={}
    __authPeople__='是'#用户表,表属性loginUserColumn对应的值就是用户名字段,mima就是密码字段
    __loginUserColumn__='jiaoshizhanghao'#用户表,表属性loginUserColumn对应的值就是用户名字段,mima就是密码字段
    __sfsh__='否'#表sfsh(是否审核,”是”或”否”)字段和sfhf(审核回复)字段,后台列表(page)的操作中要多一个”审核”按钮,点击”审核”弹出一个页面,包含”是否审核”和”审核回复”,点击确定调用update接口,修改sfsh和sfhf两个字段。
    __authSeparate__='否'#后台列表权限
    __thumbsUp__='否'#表属性thumbsUp[是/否],新增thumbsupnum赞和crazilynum踩字段
    __intelRecom__='否'#智能推荐功能(表属性:[intelRecom(是/否)],新增clicktime[前端不显示该字段]字段(调用info/detail接口的时候更新),按clicktime排序查询)
    __browseClick__='否'#表属性[browseClick:是/否],点击字段(clicknum),调用info/detail接口的时候后端自动+1)、投票功能(表属性[vote:是/否],投票字段(votenum),调用vote接口后端votenum+1
    __foreEndListAuth__='否'#前台列表权限foreEndListAuth[是/否];当foreEndListAuth=是,刷的表新增用户字段userid,前台list列表接口仅能查看自己的记录和add接口后台赋值userid的值
    __foreEndList__='是'#表属性[foreEndList]前台list:和后台默认的list列表页相似,只是摆在前台,否:指没有此页,是:表示有此页(不需要登陆即可查看),前要登:表示有此页且需要登陆后才能查看
    __isAdmin__='是'#表属性isAdmin=”是”,刷出来的用户表也是管理员,即page和list可以查看所有人的考试记录(同时应用于其他表)
    addtime = models.DateTimeField(auto_now_add=False, verbose_name=u'创建时间')
    jiaoshizhanghao=models.CharField ( max_length=255,null=False,unique=True, verbose_name='教师账号' )
    mima=models.CharField ( max_length=255,null=False, unique=False, verbose_name='密码' )
    jiaoshixingming=models.CharField ( max_length=255,null=False, unique=False, verbose_name='教师姓名' )
    nianling=models.IntegerField  (  null=True, unique=False, verbose_name='年龄' )
    xingbie=models.CharField ( max_length=255, null=True, unique=False, verbose_name='性别' )
    lianxidianhua=models.CharField ( max_length=255, null=True, unique=False, verbose_name='联系电话' )
    touxiang=models.TextField   (  null=True, unique=False, verbose_name='头像' )
    '''
    jiaoshizhanghao=VARCHAR
    mima=VARCHAR
    jiaoshixingming=VARCHAR
    nianling=Integer
    xingbie=VARCHAR
    lianxidianhua=VARCHAR
    touxiang=Text
    '''
    class Meta:
        db_table = 'jiaoshi'
        verbose_name = verbose_name_plural = '教师'
class kechengxinxi(BaseModel):
    __doc__ = u'''kechengxinxi'''
    __tablename__ = 'kechengxinxi'



    __authTables__={'jiaoshizhanghao':'jiaoshi',}
    __authPeople__='否'#用户表,表属性loginUserColumn对应的值就是用户名字段,mima就是密码字段
    __sfsh__='否'#表sfsh(是否审核,”是”或”否”)字段和sfhf(审核回复)字段,后台列表(page)的操作中要多一个”审核”按钮,点击”审核”弹出一个页面,包含”是否审核”和”审核回复”,点击确定调用update接口,修改sfsh和sfhf两个字段。
    __authSeparate__='否'#后台列表权限
    __thumbsUp__='否'#表属性thumbsUp[是/否],新增thumbsupnum赞和crazilynum踩字段
    __intelRecom__='是'#智能推荐功能(表属性:[intelRecom(是/否)],新增clicktime[前端不显示该字段]字段(调用info/detail接口的时候更新),按clicktime排序查询)
    __browseClick__='否'#表属性[browseClick:是/否],点击字段(clicknum),调用info/detail接口的时候后端自动+1)、投票功能(表属性[vote:是/否],投票字段(votenum),调用vote接口后端votenum+1
    __foreEndListAuth__='否'#前台列表权限foreEndListAuth[是/否];当foreEndListAuth=是,刷的表新增用户字段userid,前台list列表接口仅能查看自己的记录和add接口后台赋值userid的值
    __foreEndList__='是'#表属性[foreEndList]前台list:和后台默认的list列表页相似,只是摆在前台,否:指没有此页,是:表示有此页(不需要登陆即可查看),前要登:表示有此页且需要登陆后才能查看
    __isAdmin__='否'#表属性isAdmin=”是”,刷出来的用户表也是管理员,即page和list可以查看所有人的考试记录(同时应用于其他表)
    addtime = models.DateTimeField(auto_now_add=False, verbose_name=u'创建时间')
    kechengmingcheng=models.CharField ( max_length=255,null=False, unique=False, verbose_name='课程名称' )
    kechengfenlei=models.CharField ( max_length=255,null=False, unique=False, verbose_name='课程分类' )
    kaikeshijian=models.DateTimeField  (  null=True, unique=False, verbose_name='开课时间' )
    keshi=models.CharField ( max_length=255, null=True, unique=False, verbose_name='课时' )
    jiaoshizhanghao=models.CharField ( max_length=255, null=True, unique=False, verbose_name='教师账号' )
    jiaoshixingming=models.CharField ( max_length=255, null=True, unique=False, verbose_name='教师姓名' )
    kechengneirong=models.TextField   (  null=True, unique=False, verbose_name='课程内容' )
    clicktime=models.DateTimeField  (  null=True, unique=False, verbose_name='最近点击时间' )
    '''
    kechengmingcheng=VARCHAR
    kechengfenlei=VARCHAR
    kaikeshijian=DateTime
    keshi=VARCHAR
    jiaoshizhanghao=VARCHAR
    jiaoshixingming=VARCHAR
    kechengneirong=Text
    clicktime=DateTime
    '''
    class Meta:
        db_table = 'kechengxinxi'
        verbose_name = verbose_name_plural = '课程信息'
class exampaper(BaseModel):
    __doc__ = u'''exampaper'''
    __tablename__ = 'exampaper'



    __authTables__={}
    addtime = models.DateTimeField(auto_now_add=False, verbose_name=u'创建时间')
    name=models.CharField ( max_length=255,null=False, unique=False, verbose_name='试卷名称' )
    time=models.IntegerField  ( null=False, unique=False, verbose_name='考试时长(分钟)' )
    status=models.IntegerField  ( null=False, unique=False,default='0', verbose_name='试卷状态' )
    '''
    name=VARCHAR
    time=Integer
    status=Integer
    '''
    class Meta:
        db_table = 'exampaper'
        verbose_name = verbose_name_plural = '试卷表'
class examquestion(BaseModel):
    __doc__ = u'''examquestion'''
    __tablename__ = 'examquestion'



    __authTables__={}
    addtime = models.DateTimeField(auto_now_add=False, verbose_name=u'创建时间')
    paperid=models.BigIntegerField  ( null=False, unique=False, verbose_name='所属试卷id(外键)' )
    papername=models.CharField ( max_length=255,null=False, unique=False, verbose_name='试卷名称' )
    questionname=models.CharField ( max_length=255,null=False, unique=False, verbose_name='试题名称' )
    options=models.TextField   (  null=True, unique=False, verbose_name='选项,json字符串' )
    score=models.BigIntegerField  (  null=True, unique=False,default='0', verbose_name='分值' )
    answer=models.CharField ( max_length=255, null=True, unique=False, verbose_name='正确答案' )
    analysis=models.TextField   (  null=True, unique=False, verbose_name='答案解析' )
    type=models.BigIntegerField  (  null=True, unique=False,default='0', verbose_name='试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空)' )
    sequence=models.BigIntegerField  (  null=True, unique=False,default='100', verbose_name='试题排序,值越大排越前面' )
    '''
    paperid=BigInteger
    papername=VARCHAR
    questionname=VARCHAR
    options=Text
    score=BigInteger
    answer=VARCHAR
    analysis=Text
    type=BigInteger
    sequence=BigInteger
    '''
    class Meta:
        db_table = 'examquestion'
        verbose_name = verbose_name_plural = '试题表'
class examrecord(BaseModel):
    __doc__ = u'''examrecord'''
    __tablename__ = 'examrecord'



    __authTables__={}
    __authSeparate__='是'#后台列表权限
    __foreEndListAuth__='是'#前台列表权限foreEndListAuth[是/否];当foreEndListAuth=是,刷的表新增用户字段userid,前台list列表接口仅能查看自己的记录和add接口后台赋值userid的值
    __examinationPaper__='是'#[examinationPaper:是/否]后台生成普通试卷功能
    addtime = models.DateTimeField(auto_now_add=False, verbose_name=u'创建时间')
    userid=models.BigIntegerField  ( null=False, unique=False, verbose_name='用户id' )
    username=models.CharField ( max_length=255, null=True, unique=False, verbose_name='用户名' )
    paperid=models.BigIntegerField  ( null=False, unique=False, verbose_name='试卷id(外键)' )
    papername=models.CharField ( max_length=255,null=False, unique=False, verbose_name='试卷名称' )
    questionid=models.BigIntegerField  ( null=False, unique=False, verbose_name='试题id(外键)' )
    questionname=models.CharField ( max_length=255,null=False, unique=False, verbose_name='试题名称' )
    options=models.TextField   (  null=True, unique=False, verbose_name='选项,json字符串' )
    score=models.BigIntegerField  (  null=True, unique=False,default='0', verbose_name='分值' )
    answer=models.CharField ( max_length=255, null=True, unique=False, verbose_name='正确答案' )
    analysis=models.TextField   (  null=True, unique=False, verbose_name='答案解析' )
    myscore=models.BigIntegerField  ( null=False, unique=False,default='0', verbose_name='试题得分' )
    myanswer=models.CharField ( max_length=255, null=True, unique=False, verbose_name='考生答案' )
    '''
    userid=BigInteger
    username=VARCHAR
    paperid=BigInteger
    papername=VARCHAR
    questionid=BigInteger
    questionname=VARCHAR
    options=Text
    score=BigInteger
    answer=VARCHAR
    analysis=Text
    myscore=BigInteger
    myanswer=VARCHAR
    '''
    class Meta:
        db_table = 'examrecord'
        verbose_name = verbose_name_plural = '考试记录表'

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 

标签:061,__,False,name,Python,Django,models,null,verbose
From: https://blog.csdn.net/BS009/article/details/140241309

相关文章

  • Django静态文件系统之meida文件,Django配置文件介绍,RBAC权限系统
    ⅠDjango静态文件系统之meida文件【一】问题引入一般常用的静态文件:static但是,媒体文件:图片,视频,音频……会随着用户改变而改变,不应该作为静态文件来使用应该是媒体资源于是Django提供了另一种静态文件语法meida文件【二】配置使用在Django的settings里面DEBUG—>开......
  • 10个Python函数参数进阶用法及代码优化
    目录1.默认参数值:让函数更加灵活2.关键字参数:清晰的调用方式3.*args:拥抱不确定数量的位置参数4.**kwargs:处理不确定数量的关键字参数5.参数解包:简化多参数的传递6.命名关键字参数:限制关键字参数7.局部变量与全局变量:理解作用域8.高级:装饰器(@decorator)9.Lambd......
  • python每日学习4:函数的定义和各类参数定义与用法
    目录目录一、函数的定义二、参数的定义和用法1、必选参数2、默认参数3、可变参数4、关键字参数5、命名关键字参数三、参数在实际操作中的要求一、函数的定义1、函数代码块以def关键词开头,后接函数名称和圆括号()2、在圆括号内定义传入参数3、函数的第一行语句可以......
  • 对!就是你!python特训之字典怎么学?我教你!超详细!
    目录一、字典的定义二、字典的键与值三、字典的常见操作总结一、字典的定义字典(Dictionary)是一种在多种编程语言中广泛使用的数据结构,用于存储键值对(key-valuepairs)的集合。在字典中,每个元素都是一个键值对,其中键(Key)是唯一的,用于标识对应的值(Value)。键和值可以是任意......
  • 003_python3 解释器 注释 运算符
    Python3解释器1.Linux设置环境变量$PATH=$PATH:/usr/local/python3/bin/python3#设置环境变量2.交互式编程$python#启动Python解释器3.脚本式编程Windows中写入脚本xx.py文件,执行pythonxx.py #cmd当中直接执行Linux中文件顶部写入  #!/usr/bin/envpyth......
  • 【视频讲解】Python比赛LightGBM、XGBoost+GPU和CatBoost预测学生在游戏学习过程表现|
    全文链接:https://tecdat.cn/?p=36990原文出处:拓端数据部落公众号分析师:QiZhang背景基于游戏进行学习能让学校变得有趣,这种教育方法能让学生在游戏中学习,使其变得有趣和充满活力。尽管基于游戏的学习正在越来越多的教育环境中使用,但能用应用数据科学和学习分析原理来......
  • python文件操作
    思维导图代码1.文件编码2.文件的读取①open()打开函数#f是open函数的文件对象,对象是python中的一种特殊的数据类型,#拥有属性和方法,可以使用对象、属性或对象.方法对其进行访问f=open("python.py","r",encoding="utf-8")print(type(f))#<class'_io.TextIOW......
  • 002_python3 基本数据类型
    1.变量Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。"类型"是变量所指的内存中对象的类型等号(=)用来给变量赋值。2.多个变量赋值,同时赋值a=b=c=1a,b,c=1,2,"runoob"a=3;b=4.2;c=5+5j3.标准数据类型 Python3中常......
  • python读写西门子S7协议的传感器数据
    下列示例读写200smartPLC设备importtimefromsnap7importutil,clientimportthreadingdefread_plc_valve():whileTrue:try:#建立一个客户端对象my_plc=client.Client()#如果是200smart,必须有此段代码......
  • python入门第二课
    编码默认情况下,Python文件以UTF-8编码,所有字符串都是unicode字符串。当然你也可以为源码文件指定不同的编码标识符第一个字符必须是字母表中字母或下划线_。标识符的其他的部分由字母、数字和下划线组成。标识符对大小写敏感。在Python3中,可以用中文作为变量......