当前位置: 首页 > news >正文

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

项目概述

开发一个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)

相关文章:

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绘制热力图

热力图&#xff08;Heatmap&#xff09;是一种使用颜色来表示数值强度的数据可视化工具。它常用于以下场景&#xff1a; 热力图的适用场景 数据的相关性分析&#xff1a;在统计学中&#xff0c;热力图常用于展示变量之间的相关性&#xff0c;尤其是当数据量较大时&#xff0c;…...

手写SpringMVC

1、开发HspDispatcherServlet 2、完成客户端/浏览器可以请求控制层 目的&#xff1a;发出url请求时&#xff0c;经过前端控制器&#xff0c;找到Monster的List方法&#xff0c;把结果再打回去 3、从web.xml动态获取hspspringmvc.xml 4、完成自定义Service注解功能 目的&…...

mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(18)

1、SQL 删除数据&#xff08;DELETE 语句&#xff09; 在编写SQL中的DELETE语句时&#xff0c;需要非常小心&#xff0c;因为一旦执行&#xff0c;被删除的数据就无法恢复了&#xff08;除非你有备份&#xff09;。DELETE语句用于从数据库表中移除一条或多条记录。这里&#x…...

周边游小程序开发

开发一个周边游小程序是一个既有趣又富有挑战性的项目&#xff0c;它可以帮助用户发现周边的旅游景点、活动、美食和住宿等&#xff0c;提升用户的旅游体验。以下是开发周边游小程序的基本步骤和一些建议&#xff1a; 1.市场调研与需求分析 目标用户定位&#xff1a;确定你的用…...

初级前端面试

1.介绍自己 2.介绍一下之前做过的项目以及接触的业务 3.最近学的技术&#xff0c;接触的是哪一块&#xff08;回答了vue3&#xff09; 4.vue3在什么时候调用接口 beforeCreate 在实例初始化之后&#xff0c;数据观测 (data observer) 和 event/watcher 事件配置之前被调用。 用…...

微软AI核电计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为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实现自动联网认证&#xff0c;并实现断网重连 echo off python “E:\autoD\auto_login.py” 要使自动登录脚本在系统重启后自动运行&#xff0c;你可以使用Windows的任务计划程序来设置。以下是详细的步骤&#xff1a; 1. 保存脚本 首先&#xff0c;将你的Py…...

基于机器学习的注意力缺陷/多动障碍 (ADHD)(python论文+代码)HYPERAKTIV

简述 医疗保健领域的机器学习研究往往缺乏完全可重复性和可比性所需的公共数据。由于患者相关数据附带的隐私问题和法律要求&#xff0c;数据集往往受到限制。因此&#xff0c;许多算法和模型发表在同一主题上&#xff0c;没有一个标准的基准。因此&#xff0c;本文提出了一个公…...

Spring Boot 集成 Redisson 实现消息队列

包含组件内容 RedisQueue&#xff1a;消息队列监听标识RedisQueueInit&#xff1a;Redis队列监听器RedisQueueListener&#xff1a;Redis消息队列监听实现RedisQueueService&#xff1a;Redis消息队列服务工具 代码实现 RedisQueue import java.lang.annotation.ElementTyp…...

go语言Map详解

Map Go语言中提供的映射关系容器为map&#xff0c;其内部使用散列表&#xff08;hash&#xff09;实现 map是一种无序的基于key-value的数据结构&#xff0c;Go语言中的map是引用类型&#xff0c;必须初始化才能使用。 它提供了高效的查找、插入和删除操作&#xff0c;非常适…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...