让【道友老李】来帮你解答,本回答参考通义千问大模型编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!
为了实现这个学生信息登记系统,我们需要构建一个前后端分离的应用程序。前端部分使用HTML、CSS和JavaScript来创建用户界面,后端则用Node.js配合Express框架处理请求,并通过MySQL数据库存储数据。下面我将分步骤详细说明如何实现这一功能。
1. 环境准备
- 安装Node.js (https://nodejs.org/)
- 安装Navicat Premium (用于管理和查看MySQL数据库)
- 安装MySQL数据库 (https://dev.mysql.com/downloads/mysql/)
2. 创建项目结构
student-info-system/
│
├── public/ # 静态文件存放目录
│ ├── css/ # CSS样式文件
│ ├── js/ # JavaScript脚本文件
│ └── index.html # 主页面
│
├── views/ # 视图模板文件
│ ├── login.ejs # 登录页
│ └── student.ejs # 学生信息页
│
├── app.js # 应用入口文件
└── package.json # 项目配置文件
3. 初始化Node.js项目
在项目的根目录下运行:
npm init -y
安装必要的依赖包:
npm install express mysql ejs body-parser
4. 数据库设计
在MySQL中创建数据库和表:
CREATE DATABASE students_db;
USE students_db;
CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`student_id` varchar(50) NOT NULL,
`name` varchar(100) NOT NULL,
`class` varchar(100),
`contact` varchar(100),
`major` varchar(100),
PRIMARY KEY (`id`)
);
5. 编写服务器代码 (app.js)
const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
// 创建数据库连接
const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'yourpassword',
database: 'students_db'
});
db.connect((err) => {
if (err) throw err;
console.log('Connected to the database.');
});
// 登录页面
app.get('/', (req, res) => {
res.render('login');
});
// 处理登录
app.post('/login', (req, res) => {
// 这里简单假设用户名为admin,密码为123456
if (req.body.username === 'admin' && req.body.password === '123456') {
res.redirect('/students');
} else {
res.send('Invalid credentials!');
}
});
// 学生信息页面
app.get('/students', (req, res) => {
const sql = 'SELECT * FROM students';
db.query(sql, (err, results) => {
if (err) throw err;
res.render('student', { students: results });
});
});
// 添加学生
app.post('/add-student', (req, res) => {
const { student_id, name, class, contact, major } = req.body;
const sql = 'INSERT INTO students (student_id, name, class, contact, major) VALUES (?, ?, ?, ?, ?)';
db.query(sql, [student_id, name, class, contact, major], (err, result) => {
if (err) throw err;
res.redirect('/students');
});
});
// 删除学生
app.get('/delete/:id', (req, res) => {
const id = req.params.id;
const sql = 'DELETE FROM students WHERE id = ?';
db.query(sql, [id], (err, result) => {
if (err) throw err;
res.redirect('/students');
});
});
// 更新学生
app.post('/update/:id', (req, res) => {
const id = req.params.id;
const { student_id, name, class, contact, major } = req.body;
const sql = 'UPDATE students SET student_id=?, name=?, class=?, contact=?, major=? WHERE id=?';
db.query(sql, [student_id, name, class, contact, major, id], (err, result) => {
if (err) throw err;
res.redirect('/students');
});
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
6. 前端页面 (views/login.ejs 和 views/student.ejs)
这里提供简单的示例代码,你可以根据需求进一步美化。
login.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<form action="/login" method="POST">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<button type="submit" style="background-color: green; color: white;">Login</button>
<a href="/register" style="color: blue;">Register</a>
</form>
</body>
</html>
student.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Student Info</title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<h1>Students Information</h1>
<form action="/add-student" method="POST">
<input type="text" name="student_id" placeholder="Student ID" required>
<input type="text" name="name" placeholder="Name" required>
<input type="text" name="class" placeholder="Class">
<input type="text" name="contact" placeholder="Contact">
<input type="text" name="major" placeholder="Major">
<button type="submit">Add Student</button>
</form>
<table>
<tr>
<th>ID</th>
<th>Student ID</th>
<th>Name</th>
<th>Class</th>
<th>Contact</th>
<th>Major</th>
<th>Action</th>
</tr>
<% students.forEach(student => { %>
<tr>
<td><%= student.id %></td>
<td><%= student.student_id %></td>
<td><%= student.name %></td>
<td><%= student.class %></td>
<td><%= student.contact %></td>
<td><%= student.major %></td>
<td>
<a href="/delete/<%= student.id %>">Delete</a>
<form action="/update/<%= student.id %>" method="POST" style="display:inline;">
<input type="hidden" name="student_id" value="<%= student.student_id %>">
<input type="hidden" name="name" value="<%= student.name %>">
<input type="hidden" name="class" value="<%= student.class %>">
<input type="hidden" name="contact" value="<%= student.contact %>">
<input type="hidden" name="major" value="<%= student.major %>">
<button type="submit">Update</button>
</form>
</td>
</tr>
<% }); %>
</table>
</body>
</html>
7. 样式文件 (public/css/style.css)
body {
font-family: Arial, sans-serif;
}
table, th, td {
border: 1px solid black;
border-collapse: collapse;
padding: 10px;
}
th {
background-color: #f2f2f2;
}
button {
margin: 10px 0;
}
这样你就有了一个基本的学生信息管理系统,包括登录、显示学生信息、添加新学生、删除学生和更新学生信息的功能。你可以根据实际需要对样式和功能进行扩展和完善。