教我如何用做一个学生管理系统

时间: 2023-11-30 16:08:30 浏览: 37
学生管理系统是一个典型的基于Web的信息系统,它可以帮助学校或教育机构管理学生的个人信息、学习记录、成绩等数据。下面是一个简单的学生管理系统的示例,使用HTML、CSS和JavaScript实现前端页面,使用PHP和MySQL实现后端的数据处理和管理。 1. 创建数据库 首先,需要创建一个MySQL数据库,用于存储学生信息、成绩和课程等数据。可以使用以下SQL语句创建一个名为`student`的数据库: ```sql CREATE DATABASE student; ``` 然后,创建一个名为`students`的学生表,用于存储学生的个人信息: ```sql USE student; CREATE TABLE students ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender VARCHAR(10) NOT NULL, birthday DATE NOT NULL, major VARCHAR(50) NOT NULL, grade VARCHAR(20) NOT NULL ); ``` 2. 创建前端页面 接下来,使用HTML、CSS和JavaScript创建一个基本的学生管理系统前端页面。可以使用以下代码作为参考: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>学生管理系统</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>学生管理系统</h1> <div class="form"> <h2>添加学生</h2> <form> <label>姓名:</label> <input type="text" id="name" name="name"><br> <label>性别:</label> <input type="radio" id="male" name="gender" value="男"><label for="male">男</label> <input type="radio" id="female" name="gender" value="女"><label for="female">女</label><br> <label>出生日期:</label> <input type="date" id="birthday" name="birthday"><br> <label>专业:</label> <input type="text" id="major" name="major"><br> <label>年级:</label> <input type="text" id="grade" name="grade"><br> <input type="button" value="添加" onclick="addStudent()"> <input type="reset" value="重置"> </form> </div> <div class="table"> <h2>学生列表</h2> <table> <thead> <tr> <th>ID</th> <th>姓名</th> <th>性别</th> <th>出生日期</th> <th>专业</th> <th>年级</th> <th>操作</th> </tr> </thead> <tbody id="student-list"> </tbody> </table> </div> <script src="main.js"></script> </body> </html> ``` 该页面包含一个表单用于添加学生,以及一个表格用于显示学生列表。在`<head>`标签中引入了一个样式文件`style.css`和一个JavaScript文件`main.js`。 3. 创建后端接口 接着,需要创建后端接口,用于处理前端页面提交的数据,并将数据存储到MySQL数据库中。可以使用PHP编写后端接口,以下是一个简单的示例: ```php <?php // 连接数据库 $conn = mysqli_connect("localhost", "root", "password", "student"); // 处理添加学生请求 if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $gender = $_POST["gender"]; $birthday = $_POST["birthday"]; $major = $_POST["major"]; $grade = $_POST["grade"]; // 插入学生数据到数据库 $sql = "INSERT INTO students (name, gender, birthday, major, grade) VALUES ('$name', '$gender', '$birthday', '$major', '$grade')"; mysqli_query($conn, $sql); } // 处理获取学生列表请求 if ($_SERVER["REQUEST_METHOD"] == "GET") { $sql = "SELECT * FROM students"; $result = mysqli_query($conn, $sql); // 将学生数据转换为JSON格式返回给前端 $students = array(); while ($row = mysqli_fetch_assoc($result)) { $students[] = $row; } echo json_encode($students); } // 关闭数据库连接 mysqli_close($conn); ?> ``` 该接口处理前端页面提交的添加学生请求和获取学生列表请求,将数据存储到MySQL数据库中或从数据库中获取数据,并将学生数据转换为JSON格式返回给前端。 4. 创建JavaScript文件 最后,需要创建一个JavaScript文件,用于调用后端接口,并将学生数据显示在前端页面上。可以使用以下代码作为参考: ```javascript // 获取学生列表 function getStudentList() { fetch("api.php") .then(response => response.json()) .then(data => { // 清空列表 const studentList = document.getElementById("student-list"); studentList.innerHTML = ""; // 遍历学生数据,添加到列表中 data.forEach(student => { const tr = document.createElement("tr"); tr.innerHTML = ` <td>${student.id}</td> <td>${student.name}</td> <td>${student.gender}</td> <td>${student.birthday}</td> <td>${student.major}</td> <td>${student.grade}</td> <td><button onclick="deleteStudent(${student.id})">删除</button></td> `; studentList.appendChild(tr); }); }); } // 添加学生 function addStudent() { const form = document.querySelector("form"); const name = form.elements["name"].value; const gender = form.elements["gender"].value; const birthday = form.elements["birthday"].value; const major = form.elements["major"].value; const grade = form.elements["grade"].value; // 提交数据到后端接口 fetch("api.php", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `name=${name}&gender=${gender}&birthday=${birthday}&major=${major}&grade=${grade}` }) .then(() => { // 添加成功后刷新学生列表 getStudentList(); form.reset(); }); } // 删除学生 function deleteStudent(id) { // 向后端接口发送删除请求 fetch(`api.php?id=${id}`, { method: "DELETE" }) .then(() => { // 删除成功后刷新学生列表 getStudentList(); }); } // 页面加载完成后获取学生列表 document.addEventListener("DOMContentLoaded", () => { getStudentList(); }); ``` 该JavaScript文件包含了三个函数,分别用于获取学生列表、添加学生和删除学生。其中,`getStudentList()`函数使用`fetch()`函数向后端接口发送获取学生列表请求,并将学生数据显示在前端页面的表格中;`addStudent()`函数从表单中获取学生数据,使用`fetch()`函数向后端接口发送添加学生请求,并在成功添加后刷新学生列表;`deleteStudent()`函数向后端接口发送删除学生请求,并在成功删除后刷新学生列表。最后,页面加载完成后调用`getStudentList()`函数获取学生列表并显示在表格中。 综上所述,以上示例是一个简单的学生管理系统的实现,使用HTML、CSS和JavaScript实现前端页面,使用PHP和MySQL实现后端的数据处理和管理。但是需要注意的是,该示例仅作为学习参考,实际的学生管理系统需要更加复杂的功能和数据处理能力,需要更加完善的前后端技术和架构支持。

相关推荐

最新推荐

recommend-type

用VC++制作一个教职工管理系统

学校职工查询是学校管理中需要经常处理的一项工作,本程序中结合一个简化的学校教职工管理系统的制作,介绍如何利用VC++的应用程序向导制作应用程序。该系统的制作涉及一个数据库、两个数据表及其相关的对话框的制作...
recommend-type

C语言编写教务管理系统

C语言编写教务管理系统
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

机器学习怎么将excel转为csv文件

机器学习是一种利用计算机算法和统计数据的方法来训练计算机来进行自动学习的科学,无法直接将excel文件转为csv文件。但是可以使用Python编程语言来读取Excel文件内容并将其保存为CSV文件。您可以使用Pandas库来读取Excel文件,并使用to_csv()函数将其保存为CSV格式。以下是代码示例: ```python import pandas as pd # 读取 Excel 文件 excel_data = pd.read_excel('example.xlsx') # 将数据保存为 CSV 文件 excel_data.to_csv('example.csv', index=
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这
recommend-type

写出一个拉格朗日多项式插值程序,并调用该函数做图

好的,以下是一个使用拉格朗日多项式进行插值的 Python 代码: ``` import numpy as np import matplotlib.pyplot as plt def lagrangeInterpolation(x, y, x_interp): """ 使用拉格朗日多项式进行插值 x: 已知点的 x 坐标数组 y: 已知点的 y 坐标数组 x_interp: 插值点的 x 坐标数组 """ n = len(x) m = len(x_interp) L = np.zeros([n, m]) fo