设计一个基于 Windows/Linux 操作系统的学生成绩管理系统,要求:
搭建 PHP + MySQL + Apache 开发环境。
创建数据库及表(学生表、成绩表、课程表),并实现存储过程、触发器。
编写PHP程序,实现学生管理(增删改查)和成绩管理(成绩录入、查询)功能。
通过HTML前端页面与PHP后端交互,完成系统基本功能


设计一个基于 Windows/Linux 操作系统的学生成绩管理系统,要求:
搭建 PHP + MySQL + Apache 开发环境。
创建数据库及表(学生表、成绩表、课程表),并实现存储过程、触发器。
编写PHP程序,实现学生管理(增删改查)和成绩管理(成绩录入、查询)功能。
通过HTML前端页面与PHP后端交互,完成系统基本功能


阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
问题理解
您需要帮助设计一个基于 Windows/Linux 操作系统的学生成绩管理系统,要求搭建 PHP + MySQL + Apache 开发环境,创建数据库及表,并实现存储过程和触发器。
解决方案
sudo apt-get update sudo apt-get install apache2 mysql-server php7.4
* 在 Windows 系统上,使用 XAMPP 或 WAMP 安装 Apache、MySQL 和 PHP。
### 2. 创建数据库及表
* 使用 MySQL 命令行客户端或 PHPMyAdmin 创建数据库和表:
```sql
CREATE DATABASE score_management;
USE score_management;
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
age INT
);
CREATE TABLE course (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255)
);
CREATE TABLE score (
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
score DECIMAL(3, 2),
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
DELIMITER //
CREATE PROCEDURE get_student_score( IN student_id INT ) BEGIN SELECT s.name, c.name, s.score FROM score s JOIN course c ON s.course_id = c.id WHERE s.student_id = student_id; END //
DELIMITER ;
### 4. 实现触发器
* 使用 MySQL 命令行客户端或 PHPMyAdmin 创建触发器:
```sql
DELIMITER //
CREATE TRIGGER update_score_before_insert
BEFORE INSERT ON score
FOR EACH ROW
BEGIN
IF NEW.score < 0 OR NEW.score > 100 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '分数必须在 0-100 之间';
END IF;
END //
DELIMITER ;
以上是解决方案的核心部分。