要求需要录入,删除,修改,查找,统计,排序…
需要设置密码…
求解,666666666666
15条回答 默认 最新
- simple_chenc 2023-03-09 19:27关注
一下是参考GPT给出的答案:
实现一个学生成绩管理系统的流程可以分为以下步骤:安装 Flask 和相关依赖
设计数据库模型
创建 Flask 应用程序
创建数据库
创建用户认证系统
创建学生管理系统
下面是一个简单的示例程序,可以用来实现上述需求:安装 Flask 和相关依赖
首先,我们需要在本地计算机安装 Flask 和相关依赖。可以使用 pip 命令进行安装:pip install Flask pip install flask_sqlalchemy pip install flask_login
代码实现如下
from flask import Flask, render_template, redirect, url_for, request, flash from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user from werkzeug.security import generate_password_hash, check_password_hash app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' db = SQLAlchemy(app) login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = 'main.login' class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True) password = db.Column(db.String(100)) def set_password(self, password): self.password = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password, password) @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) class Student(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) grade = db.Column(db.Integer) main = Blueprint('main', __name__) @main.route('/') def index(): return render_template('index.html') @main.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] remember = True if 'remember' in request.form else False user = User.query.filter_by(username=username).first() if not user or not user.check_password(password): flash('Please check your login details and try again.') return redirect(url_for('main.login')) login_user(user, remember=remember) return redirect(url_for('main.dashboard')) return render_template('login.html') @main.route('/signup', methods=['GET', 'POST']) def signup(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username).first() if user: flash('Username already exists.') return redirect(url_for('main.signup')) new_user = User(username=username) new_user.set_password(password) db.session.add(new_user) db.session.commit() return redirect(url_for('main.login')) return render_template('signup.html') @main.route('/dashboard') @login_required def dashboard(): return render_template('dashboard.html', name=current_user.username) students = Blueprint('students', __name__) @students.route('/students') @login_required def student_list(): students = Student.query.all() return render_template('students/list.html', students=students) @students.route('/students/add', methods=['GET', 'POST']) @login_required def add_student(): if request.method == 'POST': name = request.form['name'] grade = request.form['grade'] student = Student(name=name, grade=grade) db.session.add(student) db.session.commit() flash('Student added successfully.') return redirect(url_for('students.student_list')) return render_template('students/add.html') @students.route('/students/delete/<int:student_id>', methods=['POST']) @login_required def delete_student(student_id): student = Student.query.get_or_404(student_id) db.session.delete(student) db.session.commit() flash('Student deleted successfully.') return redirect(url_for('students.student_list')) @students.route('/students/search', methods=['GET', 'POST']) @login_required def search_student(): if request.method == 'POST': search_term = request.form['search_term'] students = Student.query.filter(Student.name.like(f'%{search_term}%')).all() return render_template('students/search.html', students=students, search_term=search_term) return render_template('students/search.html') @students.route('/students/stats') @login_required def student_stats(): total_students = Student.query.count() avg_grade = db.session.query(db.func.avg(Student.grade)).scalar() max_grade = db.session.query(db.func.max(Student.grade)).scalar() min_grade = db.session.query(db.func.min(Student.grade)).scalar() return render_template('students/stats.html', total_students=total_students, avg_grade=avg_grade, max_grade=max_grade, min_grade=min_grade) @students.route('/students/sort/<string:sort_type>') @login_required def sort_students(sort_type): if sort_type == 'name': students = Student.query.order_by(Student.name).all() elif sort_type == 'grade': students = Student.query.order_by(Student.grade.desc()).all() else: students = [] return render_template('students/list.html', students=students) app.register_blueprint(main) app.register_blueprint(students) if __name__ == '__main__': db.create_all() app.run()
前端代码如下
{% extends 'base.html' %} {% block content %} <h1>Student List</h1> <table class="table"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Grade</th> <th>Actions</th> </tr> </thead> <tbody> {% for student in students %} <tr> <td>{{ student.id }}</td> <td>{{ student.name }}</td> <td>{{ student.grade }}</td> <td> <a href="{{ url_for('students.delete_student', student_id=student.id) }}" class="btn btn-danger btn-sm">Delete</a> </td> </tr> {% endfor %} </tbody> </table> <a href="{{ url_for('students.add_student') }}" class="btn btn-primary">Add Student</a> <a href="{{ url_for('students.search_student') }}" class="btn btn-primary">Search Student</a> <a href="{{ url_for('students.student_stats') }}" class="btn btn-primary">Student Stats</a> <a href="{{ url_for('students.sort_students', sort_type='name') }}" class="btn btn-primary">Sort by Name</a> <a href="{{ url_for('students.sort_students', sort_type='grade') }}" class="btn btn-primary">Sort by Grade</a> {% endblock %}
这就是一个简单的学生成绩管理系统的完整代码,可以在本地计算机上运行。现在您可以打开 Web 浏览器并访问 http://127.0.0.1:5000/%EF%BC%8C%E5%B0%9D%E8%AF%95%E5%9C%A8%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%B7%BB%E5%8A%A0%E3%80%81%E5%88%A0%E9%99%A4%E3%80%81%E6%9F%A5%E7%9C%8B%E3%80%81%E6%9F%A5%E6%89%BE%E3%80%81%E7%BB%9F%E8%AE%A1%E5%92%8C%E6%8E%92%E5%BA%8F%E5%AD%A6%E7%94%9F%E6%95%B0%E6%8D%AE%E3%80%82
解决 1无用
悬赏问题
- ¥15 微信原生小程序tabBar编译报错
- ¥350 麦克风声源定位坐标不准
- ¥15 apifox与swagger使用
- ¥15 egg异步请求返回404的问题
- ¥20 Ti毫米波雷达板同步
- ¥15 安装了kali后用VM打开,没有鼠标且无法控制怎么办啊
- ¥15 关于#python#的问题:无功优化问题数学建模要以3机9节点为算例编写一个以最小有功网损为目标的无功优化问题,想要了解清楚其中数学建模的具体公式进行学习
- ¥15 mvc采用element分页的问题
- ¥15 proteus怎样构建他励直流发电机模型?
- ¥15 求制作PPT有偿,帮