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

server/2024/11/14 11:53:29/

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.ppmy.cn/server/20929.html

相关文章

Spark java.io.NotSerializableException

文章目录 源代码错误原因错误信息方案一方案一具体代码 方案二方案二具体代码 源代码 //编写SQL语句 val sql "insert into province_browser_cnt(province,browser,operator_cnt) values(?,?,?)" //获取mysql的连接 val conn JDBCUtil.getConn() //将如下的结…

Vue3+Vite开发的项目进行加密打包

本文主要介绍Vue3+Vite开发的项目如何进行加密打包。 目录 一、vite简介二、混淆工具三、使用方法1. 安装插件:2. 配置插件:3. 运行构建:4. 自定义混淆选项:5. 排除文件:下面是Vue 3+Vite开发的项目进行加密打包的方法。 一、vite简介 Vite 是一个由 Evan You 创造的现代…

Git--多人协作

目录 一、多人协作一二、多人协作二三、 远程分⽀删除后&#xff0c;本地git branch -a依然能看到的解决办法 一、多人协作一 ⽬前&#xff0c;我们所完成的⼯作如下&#xff1a; 1.基本完成Git的所有本地库的相关操作&#xff0c;git基本操作&#xff0c;分⽀理解&#xff0c;…

漏洞端到端管理小总结

漏洞端到端管理最佳实践涵盖了从漏洞的发现、分析、修复到监控的整个过程&#xff0c;确保组织能够及时发现并应对安全威胁。以下是一些建议的最佳实践&#xff1a; 发现与评估&#xff1a; 资产识别与分类&#xff1a;对组织的所有网络资产进行彻底清查&#xff0c;包括但不限…

opencv动态识别人脸

import cv2 import os import numpy as npdef take_faces():while True:key input(请输入文件夹的名字&#xff0c;姓名拼音的缩写&#xff0c;如果输入Q&#xff0c;程序退出!)if key Q:break# 在faces_dynamic下面创建子文件夹os.makedirs(./faces_dymamic/%s % (key), exi…

webpack、rollup、vite、esbuild 前端构建工具到底有什么关系和区别?

一、为什么需要构建工具&#xff0c;前端构建工具具体干了些什么&#xff1f; 前端最开始的开发模式为HTMLJSCSS&#xff0c;写起来痛不欲生&#xff0c;要直面js操作dom、浏览器兼容js / css、代码压缩、开发中要不断手动刷新等问题。直到nodeJS后&#xff0c;出现了angular、…

数字电路-可预置倒计时器Multisim仿真

数字电路之于FPGA意义重大。本“可预置倒计时器”设计采用施密特触发器40106作为振荡电路&#xff0c;由同步十进制可逆计数器74LSl92、译码器74LS47D和七段共阳数码管构成计时电路&#xff0c;具有启动/预置、暂停/继续计时和报警功能。紫色文字是超链接&#xff0c;点击自动跳…

Linux 内核 delayacct 原理分析

源码基于&#xff1a;Linux5.15 约定&#xff1a; 芯片架构&#xff1a;ARM64内存架构&#xff1a;UMACONFIG_ARM64_VA_BITS&#xff1a;39CONFIG_ARM64_PAGE_SHIFT&#xff1a;12CONFIG_PGTABLE_LEVELS &#xff1a;3 1. 使用 内核需要使能&#xff1a; CONFIG_TASK_DELAY_…