计算机毕业设计选题推荐-在线考试系统-Python项目实战

作者主页:IT毕设梦工厂✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

一、前言

随着信息技术和网络技术的飞速发展,在线教育已经成为了全球教育领域的一个重要趋势。在线考试系统作为在线教育的重要一环,也开始受到广泛的关注和应用。然而,当前在线考试系统仍存在一些问题,如无法满足多样化的考试需求,缺乏防作弊手段,以及缺乏个性化的学习体验等。因此,研究一种新型的在线考试系统具有重要的现实意义和理论价值。

当前,很多在线考试系统仅支持简单的选择题和填空题等客观题,而无法支持复杂的论述题等主观题。此外,很多系统缺乏防作弊手段,无法保证考试的公正性和公平性。还有一些系统缺乏个性化的学习体验,无法满足不同学生的多样化需求。因此,我们需要研究一种新型的在线考试系统,旨在解决这些问题。

本课题旨在研究一种新型的在线考试系统,该系统能够支持多样化的考试题型,包括客观题和主观题;同时,该系统还具有防作弊手段,能够保证考试的公正性和公平性;此外,该系统还能够根据学生的个性化需求和学习情况,提供个性化的学习体验。

本课题的研究成果将具有重要的理论意义和实践价值。从理论角度来看,我们将提出一种新型的在线考试系统模型,为解决现有在线考试系统存在的问题提供新的思路和方法。从实践角度来看,本课题的研究成果将有助于提高在线教育的质量和学习效果,同时也有助于推动教育信息化的进程。

二、开发环境

  • 开发语言:Python
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:Django
  • 前端:Vue

三、系统功能模块

  • 角色:用户、管理员
  • 功能:
    用户
    课程信息、试卷列表、考试记录、错题本;
    管理员
    用户管理、课程信息管理、试卷管理、试题管理、考试记录、错题本。

四、系统界面展示

  • 在线考试系统-界面展示:
    在线考试系统-课程信息
    在线考试系统-试卷列表
    在线考试系统-在线考试
    在线考试系统-考试记录
    在线考试系统-课程信息管理-管理员
    在线考试系统-试题管理
    在线考试系统-考试记录管理

五、部分代码设计

  • Python项目实战-代码参考:
# 修改名称
admin.site.site_header = '在线考试系统后台'
admin.site.site_title = '在线考试系统'

@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'sex', 'dept', 'major', 'password', 'email', 'birth')  # 要显示哪些信息
    list_display_links = ('id', 'name')  # 点击哪些信息可以进入编辑页面
    search_fields = ['name', 'dept', 'major', 'birth']  # 指定要搜索的字段,将会出现一个搜索框让管理员搜索关键词
    list_filter = ['name', 'dept', 'major', 'birth']  # 指定列表过滤器,右边将会出现一个快捷的过滤选项

@admin.register(Teacher)
class TeacherAdmin(admin.ModelAdmin):
    list_display = ('id', 'name','subject','sex', 'dept', 'password', 'email', 'birth')
    list_display_links = ('id', 'name')
    search_fields = ['name','subject','dept']
    list_filter = ['name','subject','dept']

@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    list_display = ('id','subject','title','optionA','optionB','optionC','optionD','answer','level','kp','score')
    list_display_links = ('id', 'title')  # 点击哪些信息可以进入编辑页面
    search_fields = ['title']  # 指定要搜索的字段,将会出现一个搜索框让管理员搜索关键词
    list_filter = ['subject','level','kp']  # 指定列表过滤器,右边将会出现一个快捷的过滤选项

@admin.register(Paper)
class PaperAdmin(admin.ModelAdmin):
    list_display = ('tid','major','subject','examtime')
    list_display_links = ('major','subject','examtime')
    list_filter = ['subject','subject','examtime']  # 指定列表过滤器,右边将会出现一个快捷的过滤选项

@admin.register(Grade)
class GradeAdmin(admin.ModelAdmin):
    list_display = ('sid','subject','grade',)
    list_display_links = ('sid','subject','grade',)

class Question(models.Model):
    ANSWER = (
        ('A', 'A'),
        ('B', 'B'),
        ('C', 'C'),
        ('D', 'D'),
    )
    LEVEL = {
        ('1', 'easy'),
        ('2', 'general'),
        ('3', 'difficult'),
    }
    id = models.AutoField(primary_key=True)
    subject = models.CharField('科目', max_length=20)
    title = models.TextField('题目')
    optionA = models.CharField('A选项', max_length=30)
    optionB = models.CharField('B选项', max_length=30)
    optionC = models.CharField('C选项', max_length=30)
    optionD = models.CharField('D选项', max_length=30)
    answer = models.CharField('答案', max_length=10, choices=ANSWER)
    level = models.CharField('等级', max_length=10, choices=LEVEL)
    kp = models.CharField('知识点',max_length=30)
    score = models.IntegerField('分数', default=1)

    class Meta:
        db_table = 'question'
        verbose_name = '单项选择题库'
        verbose_name_plural = verbose_name

    def __str__(self):
        return '<%s:%s>' % (self.subject, self.title);


class Paper(models.Model):
    # 题号pid 和题库为多对多的关系
    pid = models.ManyToManyField(Question)  # 多对多
    tid = models.ForeignKey(Teacher, on_delete=models.CASCADE)  # 添加外键
    subject = models.CharField('科目', max_length=20, default='')
    major = models.CharField('考卷适用专业', max_length=20)
    examtime = models.DateTimeField()

    class Meta:
        db_table = 'paper'
        verbose_name = '试卷'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.major;


class Grade(models.Model):
    sid = models.ForeignKey(Student, on_delete=models.CASCADE, default='')  # 添加外键
    subject = models.CharField('科目', max_length=20, default='')
    grade = models.IntegerField()

    def __str__(self):
        return '<%s:%s>' % (self.sid, self.grade);

    class Meta:
        db_table = 'grade'
        verbose_name = '成绩'
        verbose_name_plural = verbose_name

class Knowledge(models.Model):
    sid = models.ForeignKey(Student, on_delete=models.CASCADE, default='')  # 添加外键
    pid = models.ForeignKey(Paper, on_delete=models.CASCADE, default='')
    kp = models.CharField('知识点',max_length=30)

    def __str__(self):
        return '<%s:%s>' % (self.sid, self.kp);

    class Meta:
        db_table = 'knowledge'
        verbose_name = '知识点'
        verbose_name_plural = verbose_name
        
    def __init__(self):
        # 加载ui文件
        self.ui = QUiLoader().load('exam.ui')

        # 题号 初始值为0 即最开始为第一题
        self.count = 0

        # 创建一个空字典用于存储处理后的题目
        self.space_list = []

        # 设置要做得题数
        self.maxCount = 5

        # 最开始的分数
        self.fraction = 0

        # 设置满分
        self.fullScore = 100

        # 创建一个空变量,用于存储用户输入的答案
        # 思路:根据要做得题数创建一个跟题数一样长度的字典,其中的所有元素都为空
        # 下面哪个按钮被点击了,就根据索引将字典中的空元素修改为被点击的按钮
        self.user_answer = []
        for i in range(self.maxCount):
            self.user_answer.append('')
        print(f"最开始的答案:{self.user_answer}")


        # 创建一个空字典,用于存储标准答案
        self.standard_answer = []
        # 获取标准答案
        with open("questions.txt") as f:
            answers_list = f.readlines()
        # 添加上转义字符,使得界面显示空格
        for i in answers_list:
            self.standard_answer.append(i.replace('/n/t', '\n\t').split("#")[1])  # 0是题目 1是答案
        print(f'标准答案:{self.standard_answer}')


六、论文参考

  • 计算机毕业设计选题推荐-在线考试系统-论文参考:
    计算机毕业设计选题推荐-在线考试系统-论文参考

七、系统视频

在线考试系统-项目视频:

基于Python在线考试系统

结语

计算机毕业设计选题推荐-在线考试系统-Python项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值