Python构建学生信息管理系统:前端页面开发

Python构建学生信息管理系统:前端页面开发

在本系列博客的前几篇中,我们详细介绍了学生信息管理系统(SIMS)的需求分析、环境搭建、工程初始化、数据库设计、后端逻辑以及安全设计。在本文中,我们将专注于前端页面的开发,包括学生信息的展示、搜索以及增删改操作。

学生信息列表页面

首先,我们将创建一个学生信息列表页面,该页面将展示所有学生的信息,并提供搜索、添加、编辑和删除功能。

HTML模板(templates/students.html)

<!-- templates/students.html --><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Student List</title><link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body><h1>Student List</h1><input type="text" id="searchInput" placeholder="Search by name..."><button onclick="searchStudents()">Search</button><table id="studentsTable"><thead><tr><th>ID</th><th>First Name</th><th>Last Name</th><th>Class ID</th><th>Email</th><th>Actions</th></tr></thead><tbody><!-- 学生信息将通过JavaScript动态插入 --></tbody></table><script src="{{ url_for('static', filename='js/students.js') }}"></script>
</body>
</html>

CSS样式(static/css/style.css)

/* static/css/style.css */body {font-family: Arial, sans-serif;
}table {width: 100%;border-collapse: collapse;
}table, th, td {border: 1px solid #ddd;
}th, td {padding: 10px;text-align: left;
}th {background-color: #f2f2f2;
}tr:nth-child(even) {background-color: #f9f9f9;
}input[type="text"] {margin-bottom: 20px;padding: 10px;width: 200px;
}button {padding: 10px 20px;cursor: pointer;
}

JavaScript逻辑(static/js/students.js)

// static/js/students.jsfunction fetchStudents() {fetch('/students').then(response => response.json()).then(data => {const tableBody = document.getElementById('studentsTable').getElementsByTagName('tbody')[0];tableBody.innerHTML = ''; // 清空表格data.students.forEach(student => {const row = tableBody.insertRow();row.insertCell(0).textContent = student.StudentID;row.insertCell(1).textContent = student.FirstName;row.insertCell(2).textContent = student.LastName;row.insertCell(3).textContent = student.ClassID;row.insertCell(4).textContent = student.Email;const actionsCell = row.insertCell(5);actionsCell.innerHTML = `<button οnclick="editStudent(${student.StudentID})">Edit</button><button οnclick="deleteStudent(${student.StudentID})">Delete</button>`;});}).catch(error => console.error('Error fetching students:', error));
}function searchStudents() {const searchTerm = document.getElementById('searchInput').value;fetch(`/students?search=${searchTerm}`).then(response => response.json()).then(data => {const tableBody = document.getElementById('studentsTable').getElementsByTagName('tbody')[0];tableBody.innerHTML = ''; // 清空表格data.students.forEach(student => {// 插入学生信息到表格// 代码与 fetchStudents 函数中的类似});}).catch(error => console.error('Error searching students:', error));
}function editStudent(studentID) {// 打开编辑学生信息的模态框或页面// 可以通过JavaScript打开一个新的页面或模态框,并填充当前学生的信息
}function deleteStudent(studentID) {// 发送删除请求到服务器fetch(`/students/${studentID}`, {method: 'DELETE'}).then(response => {if (response.ok) {fetchStudents(); // 更新学生列表} else {alert('Error deleting student.');}}).catch(error => console.error('Error deleting student:', error));
}// 当文档加载完成时,获取学生列表
document.addEventListener('DOMContentLoaded', fetchStudents);

学生信息编辑页面

编辑页面将允许用户更新现有学生的信息。这个页面可以是模态框内的表单,也可以是一个新的页面。

HTML模板(templates/edit_student.html)

<!-- templates/edit_student.html --><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Edit Student</title><!-- 引入CSS样式 -->
</head>
<body><h1>Edit Student</h1><form id="editStudentForm"><label for="firstName">First Name:</label><input type="text" id="firstName" name="FirstName" required><br><label for="lastName">Last Name:</label><input type="text" id="lastName" name="LastName" required><br><!-- 添加其他字段... --><button type="submit">Save Changes</button></form><!-- 引入JavaScript逻辑 -->
</body>
</html>

结语

在本文中,我们介绍了学生信息管理系统前端页面的开发过程。通过使用HTML、CSS和JavaScript,我们实现了一个用户友好的界面,允许用户查看、搜索、添加、编辑和删除学生信息。

请注意,为了使前端代码正常工作,需要确保后端API已经正确实现,并且可以处理前端发送的请求。此外,实际部署时,还需要考虑诸如表单验证、错误处理、用户反馈等前端功能。

随着前端页面开发的完成,我们的SIMS项目已经初具雏形。在接下来的博文中,我们将进一步探讨如何将前端与后端结合起来,以及如何进行系统测试和部署。

敬请期待后续内容,一起见证SIMS的诞生与成长!

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

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

相关文章

材质系统:关于PBR(Physically Based Rendering)需要知道的一些事

目录 前言 1. 什么是PBR&#xff1f; 2. 为什么PBR在近期开始流行 3. PBR材质与其他渲染器中材质&#xff08;如Vray材质、Enscape中的材质&#xff09;的区别是什么&#xff1f; 4. 为什么Vray之类的渲染器从一开始没有使用PBR材质系统&#xff1f; 前言 本文内容基于对图…

vue项目npm run build 打包之后如何在本地访问

vue项目npm run build 打包之后如何在本地访问 如果直接访问时&#xff0c;则会报错如下的信息&#xff1a; 报错码&#xff1a; Access to script at file:///D:/assets/index-DDVBfHVo.js from origin null has been blocked by CORS policy: Cross origin requests are on…

【转载】如何在MacBookPro上把Ubuntu安装到移动硬盘里过程记录

以下主要目的是记录安装过程中的问题&#xff0c;安装步骤等信息怕忘记 环境信息&#xff1a; Mac &#xff1a;macOS High Sierra 10.13.6 内存8G(Swap时用到) Ubuntu: ubuntu-22.04.4-desktop-amd64.ios 金士顿U盘&#xff1a;Kingston-64G 烧录软件&#xff1a;balenaEtcher…

牛客NC371 验证回文字符串(二)【简单 双指针 C++/Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/130e1a9eb88942239b66e53ec6e53f51 思路 直接看答案&#xff0c;不难参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可…

Atlassian Jira 信息泄露漏洞(CVE-2019-3403) 排查思路

Atlassian Jira&#xff1a; 企业广泛使用的项目与事务跟踪工具&#xff0c;被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 简述&#xff1a; 近日发现多个内网IP触发的Atlassian Jira 信息泄露漏洞的告警。 告警的检测规…

openvoice v2 声音克隆使用案例

参考: https://github.com/myshell-ai/OpenVoice/blob/main/docs/USAGE.md https://www.wehelpwin.com/article/4940 安装 1)下载OpenVoice项目安装 2)MeloTTS安装 参考:https://blog.csdn.net/weixin_42357472/article/details/136320097 pip install git+https://gith…

python读取文件

定义&#xff1a; python提供了读取任何文件的一种方法&#xff0c;可以读取计算机磁盘中文件中的数据 前提&#xff1a; 1&#xff0c;得准备一个文件 2&#xff0c;读取文件&#xff1a; 方式一&#xff1a; 文件模式&#xff1a; r:只读(read) w:写入(write) a:添加(add) 文…

记录不熟悉的函数用法(C++)——insert

2. insert 记录起因&#xff1a;接上一篇的例子&#xff0c;不知道为什么使用insert进行插入之前要先执行clear操作&#xff0c;非得这么做吗&#xff1f;我可以认为这个clear操作是对应于为空字符串的&#xff0c;可是仍然纠结insert它具体插入的位置&#xff0c;在后面追加还…

Sentinel 与 Hystrix:云原生时代的故障隔离与服务降级

在面对高流量和复杂的分布式系统时&#xff0c;保障服务的稳定性和可用性是至关重要的。故障隔离和服务降级是两种常用的技术手段&#xff0c;用来保护系统在面临故障或压力过大时仍能稳定运行。在这方面&#xff0c;Sentinel 和 Hystrix 是两个广泛使用的库&#xff0c;它们虽…

2398.预算内最多的机器人数目

我第一个手搓的hard的单调队列题目......灵神yyds 思路解析: 我做的时候感觉这个题目有点歧义,我以为他的连续运行是时间上连续,所以我开始写的代码是选择最多的子序列(可以不连续),使得不超过budget,这个求最多子序列的代码会在最后给出,不保证完全正确(因为没有太多测试点),…

element-ui et -i 编译默认主题报错:ReferenceError: primordials is not defined

报错信息如下 fs.js:40 } primordials;^ ReferenceError: primordials is not defined导致这个问题的原因&#xff1a;node和gulp版本冲突&#xff01;&#xff01; 我使用的是node 14版本 解决方法&#xff1a; 看了好几个帖子&#xff0c;都推荐使用node 11.15.0版本&am…

华为ensp中BGP(边界网关协议)基础原理及配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月27日10点04分 BGP&#xff08;边界网关协议&#xff09;是一种路由协议&#xff0c;用于在互联网中的不同自治系统&#xff08;AS&#xff09;之间交换路由信息。它…

WordPress外贸独立站如何提高询盘转化率

一、引言 在当今全球化日益加剧的商业环境中&#xff0c;外贸业务已成为众多企业寻求增长的重要途径。而WordPress作为一款强大且易于操作的建站平台&#xff0c;被广大外贸企业所青睐&#xff0c;用于构建自己的独立站。然而&#xff0c;仅仅拥有一个WordPress外贸独立站并不…

eCognition 分类

目录 前言 一、阈值分类 1、创建自定义特征 2、查看对象特征值 3、阈值分类 3.1 新建类别(如果已有类别即跳过) 3.2、建立分类阈值规则 4、导出分类结果 5、附录:如果需要合并结果、按以下步骤 二、监督分类 1、方法1:利用classification算法(主要用于最邻近)…

芯片安全(security)

芯片安全包括什么 芯片安全是为了防止芯片数据和程序遭遇非法攻击和访问等导致数据错误或者信息泄露或者非正常运行&#xff1f; 比如指纹信息被泄露&#xff1b;PC被植入非法挖矿程序&#xff1b;非法修改ddr中的数据等。 1.在子系统级别看到的axprot[1]和nsaid(non-securit…

sparkctl x86/arm不同平台编译使用

目录 1.sparkctl简介 2.环境准备 3.sparkctl编译 1.sparkctl简介 sparkctl是 Spark Operator 的一个命令行工具,用于创建、列出、检查状态、获取日志和删除SparkApplication。它还可以进行从本地端口到 Spark Web UI 端口的端口转发,以访问驱动程序上的 Spark Web UI。每个…

Python中实现多层感知机(MLP)的深度学习模型

深度学习已经成为机器学习领域的一个热门话题&#xff0c;而多层感知机&#xff08;MLP&#xff09;是最基础的深度学习模型之一。在这篇教程中&#xff0c;我将向你展示如何使用Python来实现一个简单的MLP模型。 什么是多层感知机&#xff08;MLP&#xff09;&#xff1f; 多…

java 中String、StringBuffer、StringBuilder有什么区别

String 了构造和管理字符串的各种基本逻辑。它是典型的 Immutable 类&#xff0c;被声明成为 final class&#xff0c;所有属性也都是 final 的。也由于它的不可变性&#xff0c;类似拼接、裁剪字符串等动作&#xff0c;都会产生新的 String 对象。由于字符串操作的普遍性&…

浅谈操作系统中的重要概念——线程

文章目录 一、进程概念产生的原因二、进程的弊端三、线程3.1、线程复用结构体PCB3.2、多线程弊端3.2.1、拖慢程序的效率3.2.2、产生线程安全问题3.2.3、导致整个进程终止 3.3、怎么判断一个线程是否执行完毕&#xff1f;&#xff1f;3.4、怎么终止一个线程&#xff1f;&#xf…

【学习笔记二十八】EWM和QM集成的后台配置和前台展示

一、EWM和QM集成概述 SAP EWM(扩展仓库管理)和QM(质量管理)的集成是SAP系统中一个重要的特性,它允许企业在仓库管理过程中实现质量控制和检验流程的自动化。以下是关于EWM和QM集成的一些关键点概述: 集成优势:通过集成,企业可以确保仓库中的物料在收货、存储、…