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

news2024/9/20 7:50:56

 

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

### 易查分成绩查询系统功能特点:
- **成绩导入与管理**:
  - 教师可以将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')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark_获取id对应日期的所在月份的天数完整指南

开发背景 前段时间有一个开发需求的一小块用到了这&#xff0c;是一个利用率的计算。规则是某id下的近半年的值的小时利用率。 计算规则是某值除以近半年 天数以及24h,但是月份里面数据有空值&#xff0c;所以要计算一下id对应的月份的天数&#xff0c;并且过滤掉数据有空值的天…

Azure openai connection with javascript

题意&#xff1a;使用JavaScript与Azure OpenAI进行连接 问题背景&#xff1a; I have created my chatbot with javascript and used open ai. I need to change it to azure open ai but can not find the connection details for javascript. This is how i connect with p…

十九、虚拟机VMware Workstation(CentOSDebian)的安装

目录 &#x1f33b;&#x1f33b; 一、安装 VMware Workstation1.1 安装 VMware Workstation1.2 虚拟机上安装 CentOS1.3 虚拟机安装 Debian 二、配置Debian方便第三方工具远程连接2.1 配置debian2.2 安装远程SSH工具并连接 一、安装 VMware Workstation 官网下载 本地资源库…

端到端自动驾驶:终局还是误区?

近年来&#xff0c;端到端自动驾驶技术成为了汽车行业的热议话题。尤其是在2024年&#xff0c;各家新兴车企纷纷打出端到端的旗号&#xff0c;似乎谁没有搞端到端&#xff0c;就会被市场淘汰。然而&#xff0c;端到端自动驾驶真的是自动驾驶技术的终局吗&#xff1f;本文将深入…

使用QML的ListView自制树形结构图TreeView

背景 感觉QML自带的TreeView不是很好用&#xff0c;用在文件路径树形结构比较多&#xff0c;但是想用在自己数据里&#xff0c;就不太方便了&#xff0c;所以自己做一个。 用‘ListView里迭代ListView’的方法&#xff0c;制作树形结构&#xff0c;成果图&#xff1a; 代码…

尚硅谷谷粒商城项目笔记——四、使用docker安装redis【电脑CPU:AMD】

四、使用docker安装redis 注意&#xff1a; 因为电脑是AMD芯片&#xff0c;自己知识储备不够&#xff0c;无法保证和课程中用到的环境一样&#xff0c;所以环境都是自己根据适应硬件软件环境重新配置的&#xff0c;这里的虚拟机使用的是VMware。 在解决了 Docker 安装的问题之…

app逆向抓包技巧:SSL Pinning检测绕过

本篇博客旨在记录学习过程&#xff0c;不可用于商用等其它途径 场景 在charles抓包下&#xff0c;某斑马app在注册时发现点击登录毫无反应&#xff0c;看抓包结果提示SSL handshake with client failed&#xff0c;确定是触发了SSL/TLS Pinning&#xff08;证书锁定&#xff…

Flutter 正在迁移到 Swift Package Manager ,未来会弃用 CocoaPods 吗?

什么是 Swift Package Manager &#xff1f;其实 Swift Package Manager (SwiftPM) 出现已经挺长一段时间了&#xff0c;我记得第一次听说 SwiftPM 的时候&#xff0c;应该还是在 2016 年&#xff0c;那时候 Swift 3 刚发布&#xff0c;不过正式出场应该还是在 2018 年的 Apple…

【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(串口)通信

文章目录 前言 背景介绍 SCI通信 Transmitter Receiver SCI中断 分析和应用 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 背景介绍 近期使用TI C2000 DSP做的一个嵌入式系统开发项目中&#xff0c;在使用它的SCI&…

缓存异常:缓存雪崩、击穿、穿透

缓存异常&#xff1a;缓存雪崩、击穿、穿透 缓存雪崩 定义 大量的应用请求无法在 Redis 缓存中进行处理&#xff0c;会将这些请求发送到数据库&#xff0c;导致数据库的压力激增&#xff0c;是发生在大量数据同时失效的场景下 原因 1. 缓存中有大量数据同时过期&#xff0…

常见中间件漏洞复现之【Apache】!

CVE-2021-41773 Apache HTTP Server 路径穿越漏洞 漏洞简介 该漏洞是由于Apache HTTP Server 2.4.49版本存在⽬录穿越漏洞,在路径穿越⽬录 <Directory/>Require all granted</Directory>允许被访问的的情况下&#xff08;默认开启&#xff09;&#xff0c;攻击者…

【机器人学】6-4.六自由度机器人运动学参数辨识-机器人精度验证【附MATLAB代码】

前言 前两个章节以及完成了机器人参数辨识。 【机器人学】6-1.六自由度机器人运动学参数辨识-辨识数学模型的建立 【机器人学】6-2.六自由度机器人运动学参数辨识-优化方法求解辨识参数 标定了工具端、基座以及机器人本身的DH参数。那么我们的机器人精度如何呢&#xff1f;机…

实操: 如何在AirBox上跑Stable Diffusion 3

以下文章来源于Radxa &#xff0c;作者瑞莎 Stable Diffusion 3 Medium 是一种多模态扩散变换器 (MMDiT) 文本到图像模型&#xff0c;在图像质量、排版、复杂提示理解和资源效率方面具有显著提升的性能。 目前瑞莎团队使用 Stable Diffusion 3 Medium 开源模型&#xff0c;通过…

领域驱动设计实战:使用Wow框架重构银行转账系统

银行账户转账案例是一个经典的领域驱动设计&#xff08;DDD&#xff09;应用场景。 接下来我们通过一个简单的银行账户转账案例&#xff0c;来了解如何使用 Wow 进行领域驱动设计以及服务开发。 银行转账流程 准备转账&#xff08;Prepare&#xff09;&#xff1a; 用户发起…

24/8/6算法笔记 不同核函数

import numpy as np from sklearn import datasets from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt 加载数据 X,ydatasets.load_wine(return_X_y True) d…

python中的turtle库(适用于计算机二级)

窗体函数 turtle.setup(width,height,startx,starty) width:窗口宽度 height:窗口高度 startx&#xff1a;窗口与屏幕左侧的距离 starty&#xff1a;窗口与屏幕顶部的距离 常用的引进turtle方法 # 引入turtle import turtle# 引入turtle库中的所有函数 from turtle import *# …

如何使用AI提问提示词(Prompt):让你的提问回答更有效

现在AI模型在日常工作和生活中的应用越来越广泛&#xff0c;无论是生成文本、回答问题&#xff0c;还是进行对话互动&#xff0c;提示词&#xff08;Prompt&#xff09;在与AI交互时起着至关重要的作用&#xff0c;一个好的提示词可以引导AI生成更加准确、有价值的内容。 那么…

【简历】宜春某二本学院:Java简历指导,秋招简历通过率低

简历说明 这是一个25届的二本宜春某学院的这个Java简历&#xff0c;今天看了两个简历&#xff0c;包括前面个985的&#xff0c;也是12306&#xff0c;这个12306已经烂大街&#xff0c;是个人都知道这个项目了&#xff0c;所以不要放在简历上&#xff0c;你不管大厂中厂还是小公…

力扣——11.盛最多水的容器

题目 暴力解 思路&#xff1a; 遍历每一个可能组成的容器&#xff0c;然后计算比较最大值。 代码&#xff1a; int maxArea(vector<int>& height) {int z1 0, z2 0;int len height.size();int val 0;for (z1; z1 < len - 1; z1) {for (z2 z1 1; z2 < l…

5分钟0基础快速上手亚马逊云科技AWS核心云开发/云架构知识 - 利用S3桶托管网页静态资源

简介&#xff1a; 小李哥从今天开始将开启全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家0基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构。 我将每天介绍一个基于亚马逊云…