在线考试系统源码是一套可部署在服务器上的软件代码,用于创建和管理网络环境下的考试。它通常包含用户管理、题库维护、试卷生成、考试监控、自动评分和结果分析等功能模块。
由于在线考试系统源码涉及到多个模块和功能,这里给出一个简单的Python Flask示例,包括用户注册、登录、考试答题和成绩统计等功能,请根据实际需求进行修改和完善。
from flask import Flask, render_template, request, redirect, url_for, flash, session from flask_sqlalchemy import SQLAlchemy from werkzeug.security import generate_password_hash, check_password_hash import random app = Flask(__name__) app.config['SECRET_KEY'] = 'mysecretkey' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///exam.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(120), nullable=False) class Question(db.Model): id = db.Column(db.Integer, primary_key=True) question = db.Column(db.String(500), nullable=False) answer = db.Column(db.String(100), nullable=False) @app.route('/') def index(): return render_template('index.html') @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] hashed_password = generate_password_hash(password, method='sha256') new_user = User(username=username, password=hashed_password) db.session.add(new_user) db.session.commit() flash('注册成功,请登录!') return redirect(url_for('login')) return render_template('register.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username).first() if user and check_password_hash(user.password, password): session['user_id'] = user.id return redirect(url_for('take_exam')) else: flash('用户名或密码错误,请重试!') return render_template('login.html') @app.route('/take_exam', methods=['GET', 'POST']) def take_exam(): if 'user_id' not in session: return redirect(url_for('login')) questions = Question.query.all() random.shuffle(questions) if request.method == 'POST': score = 0 for i, question in enumerate(questions): user_answer = request.form[f'question_{i}'] if user_answer == question.answer: score += 1 session['score'] = score return redirect(url_for('show_result')) return render_template('take_exam.html', questions=questions) @app.route('/show_result') def show_result(): if 'user_id' not in session or 'score' not in session: return redirect(url_for('login')) score = session['score'] return render_template('result.html', score=score) if __name__ == '__main__': db.create_all() app.run(debug=True)
这个示例中,我们使用了Flask框架和SQLite数据库,你需要创建一个名为exam.db
的SQLite数据库文件,并在其中创建两个表:User
和Question
。User
表用于存储用户的用户名和密码,Question
表用于存储考试题目和答案。
你还需要创建以下HTML模板文件:
index.html
:主页,包含导航链接到注册和登录页面。
register.html
:用户注册表单页面。
login.html
:用户登录表单页面。
take_exam.html
:考试页面,显示随机排列的题目和答案选项。
result.html
:显示考试结果页面。
这个示例仅用于演示目的,实际应用中需要考虑更多细节,如用户权限管理、题目分类、试卷生成等。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1030274.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复