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

news2024/9/19 9:41:41

项目概述

开发一个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.coloradmin.cn/o/2146031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何兼容性地开发响应式站点——WEB开发系列40

CSS在不同浏览器的支持历史中,有过多次变革。尽管现代浏览器逐步趋向一致,但仍有一些较旧的浏览器广泛使用,特别是在某些地区或特定环境中。 一、浏览器生态:了解你的网站用户 在设计和开发站点之前,了解目标用户所使…

多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题MD-MTSP(提供Matlab代码)

一、鹈鹕优化算法 鹈鹕优化算法(Pelican Optimization Algorithm,POA)由Pavel Trojovsk和Mohammad Dehghani 于2022年提出,该算法模拟了鹈鹕在狩猎过程中的自然行为。 鹈鹕很大,喙很长,喉咙里有一个大袋子,用来捕捉和吞咽猎物。…

记录一下ElementUI 3 在浏览器导入, table表格显示问题

当时问题忘了截图, 现在通过文字记录一下问题 我直接在html了引入 vue3 和 ElementUI 3 , 使用了table组件, 但是表格的td 总是只显示一列, 问题是我的 el-table-column 标签 没有结束标签 , 在vue文件模块化里写不需要结束标签, 在浏览器里无法直接识别出来, 所以他是渲染了第…

鸿蒙开发之ArkUI 界面篇 十 边框border

border语法格式如下: 要实现如下效果: 代码如下: Entry Component struct IndexTest {State message: string IndexTest;build() {Column(){Text(border实现).fontSize(30) .border({width:4,color:Color.Red,style:BorderStyle.Solid,ra…

进程的重要函数

进程的重要函数: fork函数 了解fork函数 通过调用fork()函数&#xff0c;则会产生一个新的进程。调用fork()函数的进程叫做 父进程&#xff0c;产生的新进程则为子进程。 其编码过程: 1.函数功能: 函数头文件 #include <sys/types.h> #include <unistd.h> 函数…

【FFT】信号处理——快速傅里叶变换【通俗易懂】

快速傅里叶变换&#xff08;Fast Fourier Transform, FFT&#xff09;是一种用于将信号从时间域转换到频率域的算法。 傅里叶变换的核心思想是&#xff1a;任何周期性信号都可以分解成多个不同频率的正弦波或余弦波的叠加。 简单来说&#xff0c;FFT可以帮助我们理解一个信号…

使用 Internet 共享 (ICS) 方式分配ip

设备A使用dhcp的情况下&#xff0c;通过设备B分配ip并共享网络的方法。 启用网络共享&#xff08;ICS&#xff09;并配置 NAT Windows 自带的 Internet Connection Sharing (ICS) 功能可以简化 NAT 设置&#xff0c;允许共享一个网络连接给其他设备。 打开网络设置&#xff1…

力扣之1075.项目员工I

文章目录 1. 1075.项目员工I1.1 题干1.2 准备数据1.3 解法1.4 结果截图 1. 1075.项目员工I 1.1 题干 项目表 Project&#xff1a; -------------------- | Column Name | Type | -------------------- | project_id | int | | employee_id | int | -------------------- 主键…

『小白可入』VSPD虚拟串口工具——从此告别硬件串口调试

一、下载VSPD工具 工具已上传至百度云&#xff0c;在以下地址下载&#xff1a; VSPD下载链接&#xff1a;通过百度网盘分享的文件&#xff1a;我的资源 链接&#xff1a;https://pan.baidu.com/s/1x2eoQYg6erqs__CQgT5j6Q?pwd4211 提取码&#xff1a;4211 二、安装 1.解压后的…

2024年Apple Search Ads(简称:苹果ASA):开展有效活动的秘诀

当谈到为应用程序启动广告活动时&#xff0c;许多人会立即想到Android。然而&#xff0c;这并不总是最好的选择&#xff0c;因为iOS设备在多个国家和地区占据市场主导地位。在这些地区&#xff0c;定位ios用户可以带来更大的成功。 您可以通过各种渠道在iOS上投放广告&#xff…

最低成本的游戏串流方案分享 如何自己打造云电脑?

今天教大家如何最低成本实现串流 出门在外也可以随时随地游玩端游大作 硬件准备&#xff1a;一台电脑 手机/平板一台 软件&#xff1a;Gameviewer远程 为啥不用moonlight等其他软件呢 因为设置公网穿透等复杂操作对小白来说不太友好 而GameViewer从安装到使用仅需一键 对比同类…

PostgreSQL技术内幕10:PostgreSQL事务原理解析-日志模块介绍

文章目录 0.简介1.PG日志介绍2.事务日志介绍3.WAL分析3.1 WAL概述3.2 WAL设计考虑3.2.1 存储格式3.2.2 实现方式3.2.3 数据完整性校验3.3 check ponit 4.事务提交日志&#xff08;CLOG&#xff09;4.1 clog存储使用介绍4.2 slru缓冲池并发控制 0.简介 本文将延续上一篇文章内容…

好用的网页翻译插件

软件介绍 「火山翻译&#xff0c;开箱即用免配置&#xff0c;完全免费无广告&#xff0c;开发的多语言翻译插件&#xff0c;基本涵盖众多小语种及国际通用语言的翻译&#xff0c;支持网页一键翻译、划词翻译、英语词典、生词本、吐司弹词记忆等丰富能力。 下载方式 请看文章…

【AprilTag】视觉定位实战 | 使用 ROS 驱动的 USB 摄像头进行相机标定与 AprilTag 识别

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

Matlab进行频率切片小波变换

Matlab进行频率切片小波变换(FSWT)源代码&#xff0c;将一维信号生成时频图。 输入信号可以是任何一维信号&#xff0c;心电信号、脑电信号、地震波形、电流电压数据等。 相比连续小波变换(CWT)&#xff0c;频率切片小波变换(Frequency Slice Wavelet Transform,FSWT)是一种更具…

C# 使用代码清理 以及禁用某个代码清理

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

鸿蒙Harmony应用开发,数据驾驶舱 项目结构搭建

对于一个项目而言&#xff0c;在拿到我们的开发任务后&#xff0c;我们最重要的就是技术的选型。选型定下来了之后我们便开始脚手架的搭建&#xff0c;然后开始撸代码&#xff0c;开搞. 首先我们需要对一些常见依赖库的引入 我们需要再oh-package.json5的dependencies节点下面…

strlen和sizeof

在 C 语言中&#xff0c;strlen 和 sizeof 是两个非常常用的操作符&#xff0c;但它们的作用和用途有很大的不同。下面详细解释这两个操作符&#xff1a; strlen strlen 是一个函数&#xff0c;定义在 <string.h> 头文件中&#xff0c;用于计算一个以空字符&#xff08…

华为OD机试 - 字符串划分(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

注意,传统的提示工程对新模型o1可能失效:来自OpenAI官方的4条提示词建议!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…