【原创】简易学生成绩查询系统Excel版

 

简易学生成绩查询系统通常是为了方便学校、教师和学生能够快速查询和管理成绩而设计的一种工具。从之前提供的信息来看,我们可以总结出简易学生成绩查询系统的一些常见功能:

### 易查分成绩查询系统功能特点:
- **成绩导入与管理**:
  - 教师可以将Excel格式的成绩单上传到系统中。Excel格式字段不固定,可以自定义
  - 系统会自动处理成绩数据,减轻教师的工作负担。
  - 支持成绩的导入、编辑和导出等功能。

- **成绩查询**:
  - 学生和家长可以通过二维码快速访问成绩查询页面。
  - 查询过程简单快捷,不需要安装额外的软件或在多个平台之间切换。

- **个性化设置**:
  - 教师可以根据需要自定义查询方案,包括设置标题、查询列和查询条件等。
  - 提供了灵活的配置选项,以满足不同教师的具体需求。

- **安全性与隐私保护**:
  - 系统确保成绩数据的安全性和学生的个人信息隐私。
  - 只有授权的用户才能访问特定的数据。

- **技术支持**:
  - 即使是计算机技能有限的教师也能轻松上手使用。

### 其他简易学生成绩查询系统的特点:
- **成绩录入**:
  - 成绩可以手动录入表格中,或者通过表单的方式由多名教师同时录入,以确保数据的准确性并防止信息泄露。

- **成绩管理**:
  - 系统可能包括学生信息管理、成绩统计、不及格学生筛选等功能。
  - 可能会有基本的数据统计和图表展示,帮助教师快速了解班级成绩的整体情况。

- **用户界面友好**:
  - 设计简洁明了的用户界面,便于用户操作。
  - 提供清晰的导航和直观的交互体验。

- **兼容多种平台**:
  - 用户可以从多种设备上访问系统,如电脑、平板或手机。

- **扩展性**:
  - 有些系统可能还支持与学校现有的信息系统集成,或者提供API接口用于与其他服务对接。

综上所述,简易学生成绩查询系统的主要目标是简化成绩管理流程,提高效率,并确保成绩信息的安全与隐私。这些系统通常具备用户友好的界面和直观的操作流程,旨在让教师和学生都能够轻松使用。

====================== 目录结构
-rw-r--r-- 1 root root   2901 Jun 30 10:41 app.py
-rw-r--r-- 1 root root   1114 Jun 30 10:49 app.spec
drwxr-xr-x 3 root root     17 Jun 30 10:49 build
drwxr-xr-x 3 root root     17 Jun 30 10:49 dist
-rw------- 1 root root 732070 Aug  6 15:19 nohup.out
drwxr-xr-x 2 root root     95 Jun 30 10:42 path_to_your_data_folder
drwxr-xr-x 2 root root     32 Jun 30 10:49 __pycache__
drwxr-xr-x 2 root root     97 Jun 30 10:55 static
drwxr-xr-x 2 root root     61 Jun 30 10:16 templates

====================== js css 静态文件

[root@home-centos7 02-chengji-chaxun-xitong]# ll static/
total 328
-rw-r--r-- 1 root root 155764 Jun 30 10:59 bootstrap.min.css
-rw-r--r-- 1 root root  58072 Jun 30 10:55 bootstrap.min.js
-rw-r--r-- 1 root root  86659 Jun 30 10:55 jquery.min.js
-rw-r--r-- 1 root root  21162 Jun 30 10:55 popper.min.js
====================== 模板文件
ll templates/
total 12
-rw-r--r-- 1 root root 1933 Jun 30 10:57 index.html
-rw-r--r-- 1 root root 1179 Jun 30 10:16 login.html
-rw-r--r-- 1 root root 1767 Jun 30 10:16 upload.html
======================表格,可以在线上传,删除
 ll path_to_your_data_folder/
total 36
-rw-r--r-- 1 root root 10720 Jun 30 10:42 第2单元测试.xlsx
-rw-r--r-- 1 root root 10721 Jun 30 10:42 第3单元测试.xlsx
-rw-r--r-- 1 root root 10587 Jun 30 10:42 第一单元测试.xlsx

app.py

from flask import Flask, request, render_template, redirect, url_for, session
import pandas as pd
import threading
import time
import os

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # 请替换为一个安全的密钥
app.config['UPLOAD_FOLDER'] = 'path_to_your_data_folder'  # 请替换为您的数据文件夹路径

df = pd.DataFrame()
current_file = ''
admin_password = 'admin49'  # 请替换为您的管理密码

def load_data(file_name):
    global df, current_file
    current_file = file_name
    #df = pd.read_excel(os.path.join(app.config['UPLOAD_FOLDER'], file_name))
    df = pd.read_excel(os.path.join(app.config['UPLOAD_FOLDER'], file_name), engine='openpyxl')

def periodic_refresh(interval=300):
    while True:
        if current_file:
            load_data(current_file)
        time.sleep(interval)

@app.route('/', methods=['GET', 'POST'])
def index():
    files = [f for f in os.listdir(app.config['UPLOAD_FOLDER']) if f.endswith('.xlsx')]
    columns = df.columns.tolist()
    score = {}
    message = ""

    if request.method == 'POST':
        selected_file = request.form['file']
        load_data(selected_file)
        sfz = request.form['sfz']
        result = df[df['身份证'] == int(sfz)]
        if result.empty:
            message = "未找到该身份证号的成绩。"
        else:
            score = result.to_dict(orient='records')[0]

    return render_template('index.html', files=files, score=score, columns=columns, message=message)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        password = request.form['password']
        if password == admin_password:
            session['logged_in'] = True
            return redirect(url_for('upload'))
        else:
            return render_template('login.html', error='密码错误')
    return render_template('login.html')

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    if not session.get('logged_in'):
        return redirect(url_for('login'))
    files = [f for f in os.listdir(app.config['UPLOAD_FOLDER']) if f.endswith('.xlsx')]
    if request.method == 'POST':
        file = request.files['file']
        if file and file.filename.endswith('.xlsx'):
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
            return redirect(url_for('upload'))
    return render_template('upload.html', files=files)

@app.route('/delete/<filename>', methods=['POST'])
def delete(filename):
    if not session.get('logged_in'):
        return redirect(url_for('login'))
    os.remove(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    return redirect(url_for('upload'))

if __name__ == '__main__':
    threading.Thread(target=periodic_refresh, args=(5,), daemon=True).start()
    app.run(debug=True, host='0.0.0.0')

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三块钱0794

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值