12- 【JavaWeb】校园快递管理系统-数据库建设

news/2024/9/22 12:04:31/

项目概述

开发一个Javaweb校园快递管理系统,包含以下功能:

  1. 数据库设计

    • 首先,我们需要设计数据库的表结构。主要包括以下表:
      • 学生表: 存储学生的基本信息,姓名、手机号。
      • 快递表: 存储快递的信息,快递单号、收件人、收件人手机号、快递状态等。
      • 管理员表: 存储管理员的登录信息,用户名、密码。
      • 日志表: 存储系统操作的日志信息,操作时间、操作内容、操作人员。
  2. 在线录入学生和快递信息

    • 在前端页面上设计一个表单,用于录入学生和快递的信息。
    • 将表单数据通过HTTP请求发送到后端服务,由后端将数据保存到数据库中。
    • 前端使用HTML、CSS和JavaScript来实现表单的设计和数据的提交。后端使用Java来处理HTTP请求并操作数据库
  3. 查询每日到达的快递列表及未取件快递

    • 在前端页面上设计一个快递查询区域,可以按照收件日期和快递状态进行筛选。
    • 后端查询数据库,返回符合条件的快递信息。前端将这些信息显示在页面上。
    • 使用列表的形式来展示快递信息。
  4. 查询每个学生的快递列表

    • 在前端页面上设计一个学生快递查询区域,可以根据姓名或者手机号进行查询。
    • 后端查询数据库,返回该学生所有的快递信息。前端将这些信息显示在页面上。
    • 使用列表的形式来展示快递信息。
  5. 完整的日志系统

    • 在每次操作数据库时,将操作信息记录到日志表中。
    • 在前端页面上设计一个日志查询区域,可以按照操作时间、操作内容和操作人员进行筛选。
    • 后端查询数据库,返回符合条件的日志信息。前端将这些信息显示在页面上。
    • 可以使用表格或列表的形式来展示日志信息。
  6. 管理员的登录和退出

    • 在前端页面上设计一个登录界面,要求输入用户名和密码。
    • 后端验证登录信息是否正确,如果正确则返回登录成功的标识。前端根据这个标识来决定是否显示管理员功能。
    • 在前端页面上设计一个退出按钮,点击后清除登录状态,返回到普通用户界面。
  7. 快递浏览,入库新快递,删除过期快递

    • 在前端页面上设计一个快递管理区域,包括浏览、入库和删除功能。
    • 浏览功能可以显示所有已入库的快递信息。
    • 入库功能可以录入新收到的快递信息。
    • 删除功能可以删除已过期的快递信息。
    • 上述功能只有管理员才能操作。

第一步:数据库设计

首先,我们设计一个简单的数据库结构来存储系统的相关数据。这里我们使用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)

http://www.ppmy.cn/news/1528802.html

相关文章

01-ZYNQ linux开发环境安装,基于Petalinux2023.2和Vitis2023.2

TFTP 服务器配置 安装安装 tftp-hpa 和 tftpd-hpa ;tftp-hpa 客户端,tftpd-hpa 为服务端 #安装 tftp-hpa 和 tftpd-hpa sudo apt-get install tftp-hpa tftpd-hpa配置服务器 #创建路径 mkdir -p ~/workspace/tftp-boot chmod 777 ~/workspace/tftp-b…

线性代数书中求解线性方程组的三种方法的实例

目录 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65) 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65)

红帽 Quay- 配置镜像代理缓存

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在 Quay 3.12 环境中验证 说明:可先根据《红帽 Quay - 安装篇》完成 Quay 安装。 镜像代理缓存功能 Quay 的镜像代理缓存功能可以将用户拉取的远程镜像保存到本地 Quay 的 proxy cache 中&am…

vue路径别名配置

由于项目的src目录是源代码目录,所以我们经常会使用其内部的组件文件,那么我们就可以将这个./src做成一个模板,以便使用,我们可以将他设置为代替。那么以后我们想选择./src目录下的文件时可以直接写为:/路径 那我们就…

推荐一款PS VR2电脑PC适配器 / 转接板方案

一、引言 随着虚拟现实技术的不断发展,PS VR2 为用户带来了沉浸式的游戏和娱乐体验。然而,为了让 PS VR2 能够与电脑连接,充分发挥其性能并拓展使用场景,需要开发一款电脑适配器 / 转接板。本技术文档方案旨在详细阐述该适配器 / …

Java集合(List篇)

List a.使用List i.最基础的一种集合,是一种有序列表,内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置。 ii.数组的删除和新增 iii.ArrayList集合的新增和删除。 iv.LinkedList(链表式集合&#x…

蓝桥杯【物联网】零基础到国奖之路:九. I2C

蓝桥杯【物联网】零基础到国奖之路:九. I2C 第一节 I2C概念第二节 I2C的物理层第三节 I2C的协议层 第一节 I2C概念 中文叫集成电路总线,是一种串行通信总线,使用多主从架构,由飞利浦公司1980年代初设计,方便主板、嵌入式系统或手…

《机器学习by周志华》学习笔记-神经网络-02感知机与多层网络

1、感知机 1.1、概念 感知机(Perceptron)由2层神经元模型组织,如下图所示: 「输入层神经元」接收外界输入信号后,传递给「输出层神经元 」 「输出层神经元」是「M-P神经元」,亦称「阈值逻辑单元(threshold logic unit)」 1.2、作用 「感知机」能够容易的实现逻辑「与…