12- 【JavaWeb】校园快递管理系统-数据库建设
项目概述
开发一个Javaweb校园快递管理系统,包含以下功能:
-
数据库设计
- 首先,我们需要设计数据库的表结构。主要包括以下表:
- 学生表: 存储学生的基本信息,姓名、手机号。
- 快递表: 存储快递的信息,快递单号、收件人、收件人手机号、快递状态等。
- 管理员表: 存储管理员的登录信息,用户名、密码。
- 日志表: 存储系统操作的日志信息,操作时间、操作内容、操作人员。
- 首先,我们需要设计数据库的表结构。主要包括以下表:
-
在线录入学生和快递信息
- 在前端页面上设计一个表单,用于录入学生和快递的信息。
- 将表单数据通过HTTP请求发送到后端服务,由后端将数据保存到数据库中。
- 前端使用HTML、CSS和JavaScript来实现表单的设计和数据的提交。后端使用Java来处理HTTP请求并操作数据库。
-
查询每日到达的快递列表及未取件快递
- 在前端页面上设计一个快递查询区域,可以按照收件日期和快递状态进行筛选。
- 后端查询数据库,返回符合条件的快递信息。前端将这些信息显示在页面上。
- 使用列表的形式来展示快递信息。
-
查询每个学生的快递列表
- 在前端页面上设计一个学生快递查询区域,可以根据姓名或者手机号进行查询。
- 后端查询数据库,返回该学生所有的快递信息。前端将这些信息显示在页面上。
- 使用列表的形式来展示快递信息。
-
完整的日志系统
- 在每次操作数据库时,将操作信息记录到日志表中。
- 在前端页面上设计一个日志查询区域,可以按照操作时间、操作内容和操作人员进行筛选。
- 后端查询数据库,返回符合条件的日志信息。前端将这些信息显示在页面上。
- 可以使用表格或列表的形式来展示日志信息。
-
管理员的登录和退出
- 在前端页面上设计一个登录界面,要求输入用户名和密码。
- 后端验证登录信息是否正确,如果正确则返回登录成功的标识。前端根据这个标识来决定是否显示管理员功能。
- 在前端页面上设计一个退出按钮,点击后清除登录状态,返回到普通用户界面。
-
快递浏览,入库新快递,删除过期快递
- 在前端页面上设计一个快递管理区域,包括浏览、入库和删除功能。
- 浏览功能可以显示所有已入库的快递信息。
- 入库功能可以录入新收到的快递信息。
- 删除功能可以删除已过期的快递信息。
- 上述功能只有管理员才能操作。
第一步:数据库设计
首先,我们设计一个简单的数据库结构来存储系统的相关数据。这里我们使用MySQL作为数据库。
CREATE DATABASE express_management;
USE express_management;
1.1 学生表 (student
)
CREATE TABLE student (
student_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
phone VARCHAR(20) NOT NULL,
UNIQUE (phone) -- 确保手机号唯一
);
字段解释:
student_id
:学生的唯一标识,主键,自增。name
:学生姓名。phone
:学生的手机号,设为唯一,防止重复录入。
1.2 快递表 (express
)
CREATE TABLE express (
express_id INT PRIMARY KEY AUTO_INCREMENT,
tracking_number VARCHAR(50) NOT NULL UNIQUE, -- 快递单号
recipient_id INT NOT NULL, -- 收件人id,关联student表
recipient_phone VARCHAR(20) NOT NULL, -- 收件人手机号
status VARCHAR(20) NOT NULL, -- 快递状态(未取件、已取件)
arrival_date DATE NOT NULL, -- 到达时间
FOREIGN KEY (recipient_id) REFERENCES student(student_id) -- 外键关联student表
);
字段解释:
express_id
:快递的唯一标识,主键,自增。tracking_number
:快递单号,设为唯一,防止重复。recipient_id
:收件人的学生ID,外键关联student
表。recipient_phone
:收件人的手机号,冗余存储方便查询。status
:快递的状态(如"未取件"、“已取件”)。arrival_date
:快递的到达日期。
1.3 管理员表 (admin
)
CREATE TABLE admin (
admin_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL -- 密码可以加密存储
);
字段解释:
admin_id
:管理员的唯一标识,主键,自增。username
:管理员的用户名,设为唯一,防止重复。password
:管理员的密码,建议在实际项目中存储加密后的密码。
1.4 日志表 (log
)
CREATE TABLE log (
log_id INT PRIMARY KEY AUTO_INCREMENT,
operation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 操作时间
operation_content VARCHAR(255) NOT NULL, -- 操作内容
operator_id INT NOT NULL, -- 操作者ID(关联管理员ID)
FOREIGN KEY (operator_id) REFERENCES admin(admin_id) -- 外键关联admin表
);
字段解释:
log_id
:日志的唯一标识,主键,自增。operation_time
:操作的时间,默认使用当前时间。operation_content
:操作的具体内容描述。operator_id
:操作人员的管理员ID,外键关联admin
表。
检查数据库和表的创建是否成功,可以按照以下步骤进行验证:
1. 检查数据库是否创建成功
在MySQL命令行或数据库管理工具中执行以下命令:
SHOW DATABASES;
在返回的列表中,查看是否包含 express_management
数据库。
2. 使用数据库
确保你已经选择了刚刚创建的数据库:
USE express_management;
3. 检查表是否创建成功
执行以下命令,查看当前数据库中的所有表:
SHOW TABLES;
返回的结果中应该包含以下表:
student
express
admin
log
4. 验证每个表的结构
你可以使用 DESCRIBE
命令来检查每个表的结构,确认表的字段及其属性是否正确。
检查学生表 (student
)
DESCRIBE student;
确认字段如下:
student_id
(INT, AUTO_INCREMENT, PRIMARY KEY)name
(VARCHAR(50), NOT NULL)phone
(VARCHAR(20), NOT NULL, UNIQUE)
检查快递表 (express
)
DESCRIBE express;
确认字段如下:
express_id
(INT, AUTO_INCREMENT, PRIMARY KEY)tracking_number
(VARCHAR(50), NOT NULL, UNIQUE)recipient_id
(INT, NOT NULL, FOREIGN KEY)recipient_phone
(VARCHAR(20), NOT NULL)status
(VARCHAR(20), NOT NULL)arrival_date
(DATE, NOT NULL)
检查管理员表 (admin
)
DESCRIBE admin;
确认字段如下:
admin_id
(INT, AUTO_INCREMENT, PRIMARY KEY)username
(VARCHAR(50), NOT NULL, UNIQUE)password
(VARCHAR(100), NOT NULL)
检查日志表 (log
)
DESCRIBE log;
确认字段如下:
log_id
(INT, AUTO_INCREMENT, PRIMARY KEY)operation_time
(TIMESTAMP, DEFAULT CURRENT_TIMESTAMP)operation_content
(VARCHAR(255), NOT NULL)operator_id
(INT, NOT NULL, FOREIGN KEY)