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)
相关文章:
12- 【JavaWeb】校园快递管理系统-数据库建设
项目概述 开发一个Javaweb校园快递管理系统,包含以下功能: 数据库设计 首先,我们需要设计数据库的表结构。主要包括以下表: 学生表: 存储学生的基本信息,姓名、手机号。快递表: 存储快递的信息,快递单号、收件人、收件人手机号、…...
 
Windows本地连接远程服务器并创建新用户详细记录
前提可知: (1)服务器IP地址:x.x.x.x (2)服务器名称:root(一般默认为root,当然也有别的名称) (3)服务器登陆密码:**** 一、…...
 
【kaggle竞赛】毒蘑菇的二元预测题目相关信息和思路求解代码
毒蘑菇的二元预测 您提供了很多关于不同二元分类任务的资源和链接,看起来这些都是Kaggle竞赛中的参考资料和高分解决方案。为了帮助您更好地利用这些资源,这里是一些关键点的总结: Playground Season 4 Episode 8 主要关注的竞赛: 使用银行…...
Pytest-allure如何在测试完成后自动生成完整报告?
一、完整步骤 常规allure报告的生成方法是在pytest全部用例执行完成后,手动在命令行执行如 allure generate ./temps -o ./report --clean每次用例执行完成后都要重复如此的操作,十分繁琐。 可以使用如下方式让用例执行完成后自动生成报告到当前目录下…...
 
数据结构-树(基础,分类,遍历)
数据结构-树 1.什么是树? 在计算机科学中,树是一种常用的非线性数据结构,用于表示具有层次关系的数据。与线性数据结构(如数组和链表)不同,树结构以节点(Nodes)和边(Ed…...
 
CodeGeeX4:程序员的高效助手,多语言代码生成神器!
你是否曾在编写代码时,为复杂的语法、逻辑错误而绞尽脑汁?或是在面对多个编程语言的切换时,感觉脑子快要爆炸?别担心!一款全新的多语言代码生成神器——CodeGeeX4,正悄然成为程序员们的“救命稻草”。它不仅…...
 
小程序组件间通信
文章目录 父传子子传父获取组件实例兄弟通信 父传子 知识点: 父组件如果需要向子组件传递指定属性的数据,在 WXML 中需要使用数据绑定的方式 与普通的 WXML 模板类似,使用数据绑定,这样就可以向子组件的属性传递动态数据。 父…...
Homebrew安装与切换下载源
一、安装 1.Homebrew的官网地址 https://brew.sh/zh-cn/ 2.执行命令行安装 /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)” 3.无法连接到https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh的地址 解决…...
C#回调函数
1、定义并初始化委托 public delegate void CallbackDelegate(string message);//定义一个委托类型CallbackDelegate callbackDelegate;//声明一个委托对象/// <summary>/// 定义委托对应的函数/// </summary>/// <param name"str"></param>…...
 
Matplotlib绘制热力图
热力图(Heatmap)是一种使用颜色来表示数值强度的数据可视化工具。它常用于以下场景: 热力图的适用场景 数据的相关性分析:在统计学中,热力图常用于展示变量之间的相关性,尤其是当数据量较大时,…...
 
手写SpringMVC
1、开发HspDispatcherServlet 2、完成客户端/浏览器可以请求控制层 目的:发出url请求时,经过前端控制器,找到Monster的List方法,把结果再打回去 3、从web.xml动态获取hspspringmvc.xml 4、完成自定义Service注解功能 目的&…...
mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(18)
1、SQL 删除数据(DELETE 语句) 在编写SQL中的DELETE语句时,需要非常小心,因为一旦执行,被删除的数据就无法恢复了(除非你有备份)。DELETE语句用于从数据库表中移除一条或多条记录。这里&#x…...
周边游小程序开发
开发一个周边游小程序是一个既有趣又富有挑战性的项目,它可以帮助用户发现周边的旅游景点、活动、美食和住宿等,提升用户的旅游体验。以下是开发周边游小程序的基本步骤和一些建议: 1.市场调研与需求分析 目标用户定位:确定你的用…...
初级前端面试
1.介绍自己 2.介绍一下之前做过的项目以及接触的业务 3.最近学的技术,接触的是哪一块(回答了vue3) 4.vue3在什么时候调用接口 beforeCreate 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。 用…...
 
微软AI核电计划
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
 
图片马赛克处理(Java)
1.需求 给图片的指定区域打码给整张图片打码马赛克方格取色支持中心点取色和随机取色马赛克支持灰度处理 2.源码 package com.visy.utils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOE…...
 
python+selenium实现自动联网认证,并实现断网重连
pythonselenium实现自动联网认证,并实现断网重连 echo off python “E:\autoD\auto_login.py” 要使自动登录脚本在系统重启后自动运行,你可以使用Windows的任务计划程序来设置。以下是详细的步骤: 1. 保存脚本 首先,将你的Py…...
 
基于机器学习的注意力缺陷/多动障碍 (ADHD)(python论文+代码)HYPERAKTIV
简述 医疗保健领域的机器学习研究往往缺乏完全可重复性和可比性所需的公共数据。由于患者相关数据附带的隐私问题和法律要求,数据集往往受到限制。因此,许多算法和模型发表在同一主题上,没有一个标准的基准。因此,本文提出了一个公…...
 
Spring Boot 集成 Redisson 实现消息队列
包含组件内容 RedisQueue:消息队列监听标识RedisQueueInit:Redis队列监听器RedisQueueListener:Redis消息队列监听实现RedisQueueService:Redis消息队列服务工具 代码实现 RedisQueue import java.lang.annotation.ElementTyp…...
go语言Map详解
Map Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现 map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 它提供了高效的查找、插入和删除操作,非常适…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
 
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
 
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
 
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
 
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
