【毕业设计】基于Django的在线考试系统 python

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

1 课题背景

随着计算机技术的不断发展,越来越多智能手段代替了传统依靠大量人力、物力才能解决的问题。目前,Java认证、DB2认证、全国计算机等级考试等均采用了在线考试的方式进行。Python作为一种先进的计算机语言,具有简洁、易读、可扩展等特性,被各个企业广泛应用,进而导致社会对Python人才的需求急剧增长。为了适应社会的需求,开设Python课程的高校越来越多。然而,传统Python考试工作需要人工完成出题、印刷以及判分等工作,需要花费大量时间和精力。通过Python在线考试系统达到了简化考试流程的目的,实现了试卷批阅、统计成绩等的自动化,减轻了教师和管理人员的工作量

2 实现效果

本在线考试网主要采用在Pycharm嵌入Django动态网页技术的B/S结构设计,系统从安全性、易维护性等方面着手实现了后台管理端和前台客户端的分离。系统设计过程中用到了网页制作关键技术,如用框架和CSS样式表来控制布局,还用了Python脚本语言实现前台浏览器端的校验功能。Python模式是Web网站开发较为成功的解决方案,因此在本系统中也采用了这一模式来设计。

登录界面
【毕业设计】基于Django的在线考试系统 python注册界面
【毕业设计】基于Django的在线考试系统 python

题目选择
【毕业设计】基于Django的在线考试系统 python

主界面
【毕业设计】基于Django的在线考试系统 python

考试界面

【毕业设计】基于Django的在线考试系统 python
成绩查询
【毕业设计】基于Django的在线考试系统 python
个人中心
【毕业设计】基于Django的在线考试系统 python
关键代码

from django.db import models
from question.models import Choice, Fill, Judge, Program
from user.models import Student, Clazz
from datetime import datetime
import random


# Create your models here.
class Paper(models.Model):
    """试卷模型类"""
    LEVEL_CHOICES = (
        ('1', '入门'),
        ('2', '简单'),
        ('3', '普通'),
        ('4', '较难'),
        ('5', '困难')
    )
    name = models.CharField("试卷名称", max_length=20, default="")
    score = models.PositiveSmallIntegerField("总分", default=100)
    choice_number = models.PositiveSmallIntegerField("选择题数", default=10)
    fill_number = models.PositiveSmallIntegerField("填空题数", default=10)
    judge_number = models.PositiveSmallIntegerField("判断题数", default=10)
    program_number = models.PositiveSmallIntegerField("编程题数", default=5)
    level = models.CharField("难度等级", max_length=1, choices=LEVEL_CHOICES, default="1")

    class Meta:
        ordering = ["id"]
        verbose_name = "试卷"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        self.score = (self.choice_number + self.fill_number + self.judge_number) * 2 + self.program_number * 8
        super().save(*args, **kwargs)


class Exam(models.Model):
    """考试模型类"""
    name = models.CharField("考试名称", max_length=20, default="")
    exam_date = models.DateField("考试日期", default="")
    total_time = models.PositiveSmallIntegerField("时长", default=120, help_text="时长按照分钟填写")
    paper = models.OneToOneField(Paper, on_delete=models.CASCADE, verbose_name="试卷", default="")
    major = models.CharField("专业", max_length=20, default="")
    tips = models.TextField("考生须知", default="")
    clazzs = models.ManyToManyField(Clazz, verbose_name="参加考试的班级")

    class Meta:
        ordering = ["id"]
        db_table = 'exam_info'
        verbose_name = "考试"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class Grade(models.Model):
    """成绩模型类"""
    exam = models.ForeignKey(Exam, verbose_name="考试", on_delete=models.CASCADE)
    student = models.ForeignKey(Student, verbose_name="学生", on_delete=models.CASCADE)
    score = models.PositiveSmallIntegerField("分数", default="")
    create_time = models.DateTimeField("创建日期", auto_now_add=True)
    update_time = models.DateTimeField("修改日期", auto_now=True)

    class Meta:
        ordering = ['id']
        verbose_name = '成绩'
        verbose_name_plural = verbose_name

    def __str__(self):
        return f'{self.id}{self.student}{self.score}分'


class Practice(models.Model):
    """模拟练习"""
    name = models.CharField("练习名称", max_length=20)
    student = models.ForeignKey(Student, verbose_name="学生", on_delete=models.CASCADE)
    create_time = models.DateTimeField("练习时间", auto_now_add=True)

    class Meta:
        ordering = ['id']
        verbose_name = '练习'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        self.name = f'模拟练习{datetime.now().strftime("%Y%m%d")}{random.randint(1000, 9999)}'
        super().save(*args, **kwargs)

3 Django框架

Django是一个基于Web的应用框架,由python编写。Web开发的基础是B/S架构,它通过前后端配合,将后台服务器的数据在浏览器上展现给前台用户的应用。Django本身是基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,View模块和Template模块组成了它的视图部分,这种结构使动态的逻辑是剥离于静态页面处理的。 Django框架的Model层本质上是一套ORM系统,封装了大量的数据库操作API,开发人员不需要知道底层的数据库实现就可以对数据库进行增删改查等操作。Django强大的QuerySet设计能够实现非常复杂的数据库查询操作,且性能接近原生SQL语句。Django支持包括PostgreSQL、My Sql、SQLite、Oracle在内的多种数据库。Django的路由层设计非常简洁,使得将控制层、模型层和页面模板独立开进行开发成为可能。基于Django的Web系统工程结构示意图如图所示。

【毕业设计】基于Django的在线考试系统 python

从图中可以看到,一个完整的Django工程由数个分应用程序组成,每个分应用程序包括四个部分:

urls路由层:决定Web系统路由结构,控制页面间的跳转和数据请求路径

【毕业设计】基于Django的在线考试系统 python

views视图层:业务层,主要进行逻辑操作和运算,是前端页面模板和后端数据库之间的桥梁。Django框架提供了大量的数据库操作API,开发人员甚至不需要使用SQL语句即可完成大部分的数据库操作。
【毕业设计】基于Django的在线考试系统 python

models模型层:Web应用连接底层数据库的关键部分,封装了数据库表结构和实现。开发人员可以在Model层按照Django的指令要求进行建表,无须使用SQL语句或者第三方建表工具进行建表。建表的过程类似于定义变量和抽象编程语言中的类,非常方便。

【毕业设计】基于Django的在线考试系统 python

templates模板层:HTML模板文件,后端数据会填充HTML模板,渲染之后返回给前端请求。考虑到项目周期尽可能小,尽快完成平台的搭建,项目决定采用开源的Django框架开发整个系统的Web应用层。

【毕业设计】基于Django的在线考试系统 python
关键代码

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ExamOnline.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        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?"
        ) from exc
    execute_from_command_line(sys.argv)


4 VUE

简介
Vue是一套用于构建用户界面的渐进式框架。Vue采用自底向上增量开发的设计,提供了MVVM数据绑定和可组合的组件系统,具有简单、灵活的API,通过简单的API可实现响应式的数据绑定和可组合的视图组件。

特点
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。

Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。

vue.js 支持路由功能开发的 叫vue-route.js,vue.js支持数据请求功能开发的 叫vue-resource.js,李祥需求查资料求证?

vue.js 下载过来直接在html中引入就能使用,并不一定要npm install vue,那仕么业务开发需求场景下需要使用NPM呢?NPM是仕么?

Vue.js可以在html里直接引用后使用,等到与Vue一起配合使用的第三方应用的库或框架多起来后,一个个从html里引入就不方便了,所有要借用node.js中的npm管理包的引入,是方便包管理。

使用Vue.js开发的前端项目如何部署?我们用到node.js中的程序打包工具比如webpack(node.js中的程序部署打包工具),可以直接require引入之后将不同模块打包成单个js文件。同时这些工具提供各种自动化处理,让前端开发更爽。

Vue.js是数据驱动,和JQuery思路不同,你几乎不需要自己进行复杂低效的dom操作,开发简介明了。从这一点上说,可以基本抛弃JQuery了。

Vue.js开发有第三方支持的项目构建工具,vue-cli脚手架

通过上面的分析,与其说是VUE需要借助NODE开发前端项目,不如换个思路,在NODE中集成VUE开发前端项目,所以,先安装Node,使用Node的npm先安装Vue,然后再安装vue-cli脚手架,最后通过vue-cli脚手架构建前端项目。

本项目结构
【毕业设计】基于Django的在线考试系统 python

🧿 选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md文章来源地址https://www.toymoban.com/news/detail-420891.html

最后

到了这里,关于【毕业设计】基于Django的在线考试系统 python的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • (附源码)springboot课程在线考试系统 毕业设计655127

    课程课程在线考试系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对课程在线考试等问题,对如何通过计算

    2024年02月03日
    浏览(29)
  • 毕业设计——基于java+vue开发的在线教育平台,将开发PC、小程序、手机端,集成RABC权限+在线考试+文档预览+视频播放+代码生成器等功能

    完整项目地址:https://download.csdn.net/download/lijunhcn/88556337 本项目是基于java+vue开发的[在线教育平台],将开发PC、小程序、手机端,集成RABC权限+在线考试+文档预览+视频播放+代码生成器等功能。 版本控制:git 依赖管理:maven 接口文档:Swagger 权限验证:Spring Security 数据库:

    2024年02月03日
    浏览(41)
  • 毕业设计开源分享:SpringCloud+Vue3打造在线考试系统

    毕业设计:为考-考试系统,后端采用 Spring Cloud ,前端采用 Vue 3,存储采用 Mysql ,缓存采用 Redis 。完成基本的考试功能。完成了遗传算法自动组卷、文本批量导入题库,邀请码加入课程、数据可视化等一系列前后端功能。悄悄的说一下,如果你觉得本项目还凑合,可以给个

    2024年02月05日
    浏览(39)
  • 【计算机毕业设计】python在线课程培训学习考试系统637r7-PyCharm项目

    使用说明 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 使用PyCharm 导入项目,修改配置,运行项目; 将项目中config.ini配置文件中的数据库配置改为自己的配置,然后运行;主要管理员对个人中心、用户管理、课程类型管理、课程信息管理

    2024年02月07日
    浏览(35)
  • 【毕业设计之python系列】基于Django的在线题库的设计与实现

            随着互联网和信息技术的迅速发展,教育领域也在不断地进行着数字化转型。在线学习平台、学科竞赛等各种教育形式层出不穷。其中,线上题库已经成为了学生们备战考试的重要工具。因此,开发一款基于Django框架的在线题库系统,可以有效地帮助学生提高自己

    2024年02月13日
    浏览(26)
  • 在线考试|基于Springboot的在线考试管理系统设计与实现(源码+数据库+文档)

    在线考试管理系统目录 目录 基于Springboot的在线考试管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计  1、前台: 2、后台 管理员功能 四、数据库设计  五、核心代码  六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍 :✌️大厂码农|毕设

    2024年04月11日
    浏览(41)
  • 基于python在线考试系统设计与实现

    主要讲解本系统设计到的文件和所存在路径等   系统访问 默认访问系统页面:http://127.0.0.1:8000 后台管理登录页面:http://127.0.0.1:8000/ht/ 默认账号admin 密码123456 后台管理系统框架路由文件: houtai/urls.py 这是开源的后台管理框架,不要动,下面的这些文件供参考,了解即可 路

    2024年02月11日
    浏览(28)
  • 基于JAVA在线考试系统的设计与实现

    摘要 随着考试类型的不断增加与考试要求的不同提出,就更加增添了考试的复杂度,同时目前考试系统设置的科目,题库量太少,管理复杂,而且实际操作起来困难度较大,所以就需要一种代替人工出卷考试的传统考试方法,即在线智能考试系统,通过其友好的界面,简洁的

    2024年02月03日
    浏览(29)
  • 基于java的在线考试系统设计与实现

    基于java的在线考试系统设计与实现 研究背景: 随着互联网技术和教育信息化的发展,传统的考试方式已经无法满足现代教学的需求。在线考试系统作为一种新型的考试方式,具有便捷、高效、灵活、安全等优点,逐渐得到了广泛的应用。在线考试系统可以实现试卷自动生成

    2024年02月04日
    浏览(30)
  • 29基于java的在线考试系统设计与实现

    本章节来介绍一个基于java的在线考试系统的实现 近年来,随着世界各国需要参加考核的人员与日俱增,单纯依靠传统的人工安排考场和监考人员的纸质化考试逐渐显示出了效率低,易发生冲突的缺陷,这时,在线考试系统便应运而生,此种考试方式以方便快捷高效等优点将

    2024年02月03日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包