一、项目背景
1.1项目研究背景
在信息技术日益发展的今天,传统的教育模式正面临着重大的挑战与改革。尤其是在全球新冠疫情的影响下,线上教学模式成为常态,这促使学校、教育机构急需一套高效、可靠且用户友好的在线考试系统来适应这一变化。基于这样的背景,我们提出了开发“智慧校园考试宝”的项目计划,旨在用技术手段解决当前教育评价环节中存在的诸多问题。
1.2研究意义
提高考试工作的效率:通过自动化的考试流程,减少了人工在考试组织、监考、阅卷等方面的工作量,提高了工作效率。
增强考试的公平性:系统采用随机组卷、实时监控等技术手段,有效防止作弊行为,确保了考试的公正性。
降低考试成本:线上考试省去了纸质试卷的打印、分发等成本,更加环保和经济。
提升考试体验:对于学生而言,可以在任何地点进行考试,大大提升了考试的便捷性和体验感。
数据分析与反馈:系统可以自动收集考试数据,便于教师和管理者进行数据分析,及时反馈学生的学习情况,为教学提供科学依据。
1.3研究内容
需求分析:广泛收集来自学校、教师、学生的需求,确保系统功能全面,满足不同角色用户的需求。
系统设计:基于Django框架进行系统架构设计,确保系统具有高度的可扩展性和维护性。
核心功能实现:包括但不限于用户管理、题库维护、在线考试、自动评分、成绩统计与分析等功能。
安全性与隐私保护:采取有效措施保障考试数据的安全与考生的隐私。
用户体验优化:设计友好的用户界面,确保系统的易用性。
综上所述,基于Django的“智慧校园考试宝”不仅应对了当下在线教育的迫切需求,还为未来智慧教育的发展趋势提供了技术支持和解决方案。
- 系统主要技术
通过Python实现本项目使用前后端不分离,前端是基于 Vue 设计的界面,后端基于 python Django 框架建立。
Django框架,是一个基于Web的应用框架,由python编写。Web开发的基础
是B/S架构,它通过前后端配合,将后台服务器的数据在浏览器上展现给前台用户的应用。Django 本身是基于 MVC 模型,即 Model(模型)+View(视图)+ Controller(控制器)设计模式,View模块和Template模块组成了它的视图部分,这种结构使动态的逻辑是剥离于静态页面处理的。 Django框架的Model层本质上是一套ORM平台,封装了大量的数据库操作API,开发人员不需要知道底层的数据库实现就可以对数据库进行增删改查等操作。Django强大的 QuerySet 设计能够实现非常复杂的数据库查询操作,且性能接近原生 SQL语句。Django 支持包括 PostgreSQL、MySQL、SQLite、Oracle在内的多种数据库。Django的 路由层设计非常简洁,使得将控制层、模型层和页面模板独立开进行开发成为可能。基于Django的Web平台工程结构示意图如图所示。
Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。
MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图 。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV
如图2-2Django设计思想:
图2-2 Django设计思想
前后端分离:目前已成为互联网项目开发的业界标准使用方式,在聊前后端分离之前,相信也有很多读者,对如何区分前端还是后端,通常情况下,我们说的前端,大多是指浏览器这一端,一般是用Html+CSS+JS来实现的,所以通常会引申为用Html+CSS+JS写的大部分程序都是前端,包括App,小程序,H5等。
久而久之,人们习惯把Html+CSS+JS,运行在浏览器端执行的,称之为前端。
而Java,C,Python,PHP这些运行在服务器端的,统一称之为后端。
但,这种以语言为分界点去区分前后端,真的合理么?显然不合理!
前后端的定义,不应该是以语言来定义,而是应该以它的运行环境,如果是在服务器端,就应该被称之为后端,代表着你看不见,摸不着。而如果运行在用户端,就应该被称之为前端,代表你是可以看得到的。
在不分前后端的时候,无论是Java还是JS,全都是一个人来写。
前后端分离能带来哪些优势?
第一个,并行开发、独立部署、实现前后端解耦,前后端的进度互不影响,在过去,前后端不分离的情况下,项目代码耦合严重相互影响,且前后端人员工作量分布不均。
第二个,术业有专攻(开发人员分离),以前的JavaWeb项目大多数都是Java程序员又当爹又当妈,又搞前端,又搞后端。前后端分离之后,前端工程师只管前端的事情,后端工程师只管后端的事情。
我们先看看一个如图2-3所示 Web 系统,在前后端不分离时架构设计是什么样的
图2-3Web系统设计模式
用户在浏览器上发送请求,服务器端接收到请求,根据 Header 中的 token 进行用户鉴权,从数据库取出数据,处理后将结果数据填入 HTML 模板,返回给浏览器,浏览器将 HTML 展现给用户。
而采用前后端分离之后,分离的是人员职责,人员职责分离了,因此架构也发生变化。如图2-4所示
图2-4 前后端分离思想
前后端分离后,前端人员和后端人员约定好接口,前端人员不用再关心业务处理是怎么回事,他只需要把界面做好就可以了,后端人员也不用再关系前端界面是什么样的,他只需要做好业务逻辑处理即可。
小结一下,前后端分离是什么?
前后端分离是一种架构模式,或者说是最佳实践,它主张将前端开发人员和后端开发人员的工作进行解耦,尽量减少他她们之间的交流成本,帮助他她们更能专注于自己擅长的工作。
总结讲述了这么多,我采用的是前后端不分离的技术,并不是前后端不好用而是我想不要搞得太复杂。
MySQL是一种关系型数据库管理系统,它使用SQL语言进行交互,支持多种数据库操作,如查询、插入、更新、删除等。Django是一种Web框架,基于Python编程语言,提供了丰富的功能和工具,可以快速开发Web应用。
在实际项目中,我们经常需要将MySQL与Django进行整合,以实现数据库操作和Web应用的开发。Django提供了一个内置的ORM(Object-Relational Mapping)系统,可以将Python对象映射到数据库表中,从而实现数据库操作。
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
Python是交互式语言:这意味着,您可以在一个Python提示符>>>后直接执行代码。
Python是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
Python是初学者的语言:Python对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到WWW浏览器再到游戏。
- 需求分析
系统概述:智慧校园考试宝是一个基于Django框架的在线考试系统,旨在为学生和教师提供一个便捷、高效的考试环境。通过该系统,学生可以参加在线考试,教师可以创建和管理考试,以及查看学生的考试成绩。
图3-1软件功能结构图(1
图3-1-1软件功能结构图(2)
图3-1-2软件功能结构图(3)
3.1系统用例分析
用例图:描述系统中的主要参与者(学生、教师)及其与系统的交互关系。
图 3.1.1 考试系统学生模块用例图
图 3.1.2 考试系统教师模块用例图
用例规约或说明:详细描述每个用例的功能需求,包括输入、处理和输出。
用例模型通常由一组用例组成,其基本组成部件是用例、参与者和系统。
用户登录的用例描述如表3.1所示:
表3.1 用户登录用例描述
用例名称 基本事件流 操作流程
用户登录 1. 用户请求系统登录
2.系统弹出系统登录页面
3.用户输入用户名信息
4.用户输入口令信息
5. 用户选择登录角色信息
6.用户点击确认登录按钮
7.系统查询数据库获取用户信息赋予相应权
限,根据用户权限在管理机能页面上显示相
应系统主界面
8.用例结束
2、考试者考试端的用例规约如表3.2所示:
表3.2 考生考试端用例描述
用例名称 基本事件流 操作流程
进行考试 1. 考生请求考试
2.系统随机选择试卷
3. 显示随机试卷的基本信息
4.考生进入考试
5.考生保存答案
6. 考生提交试卷
7.考生答卷过程中中途断电而未提交试卷,可
重新登录进入考试试卷并下载已答过的答案,并提交试卷。
8.用例结束
3.3 系统流程分析
3.3.1用户功能需求
程序上交给用户进行使用时,需要提供程序的操作流程图(如图3.1所示),这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。
图3.1 程序操作流程图
3.3.2 登录流程分析
在这个部分,需要对程序的登录功能模块的运行流程(如图3.2所示),进行单独说明。程序设置登录模块也是为了安全起见,让用户使用放心,登录模块主要就是让用户提交登录信息,程序进行数据验证,验证通过的用户才能够成功登录程序。
图3.2 程序登录流程图
3.3.3 用例实化
时序图用来描述对象之间的动态交互,着重体现对象间消息传递的时间顺序。它以垂直
轴表示时间,水平轴表示不同的对象。对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。垂直虚线是对象的生命线,用于表示在某段时间内对象是存在的。对象间的通信在对象的生命线间通过消息符号来表示,消息的箭头指明消息的类型。
考试者请求查看自己的个人信息,系统根据考试者登录时的信息,在考试者信息表中找
到符合条件的信息反馈给考试者。查看考试者个人信息时序图如图4.9,协作图如图4.10所
示。
图3-3-1考试者信息时序图
图3-3-2考试信息协作图
- 考试者成绩查询
考试者请求查看考试成绩,系统根据考试者的基本信息,在考试者成绩表中找到符合条件的信息反馈给考试者考试者。查看考试者成绩时序图如图3-3-3所示,协作图如图3-3-4所示。
图3-3-3 考生个人成绩时序图
图3-3-4 考试个人成绩协作图
3 交卷时序图如图3-3-5所示
图3-3-5交卷时序图
3.3.4 信息删除流程分析