中英文 网站/计算机培训班培训费用

中英文 网站,计算机培训班培训费用,海南建设培训与执业资格注册中心网站,怎样在wordpress其他页面增加文章一、项目实践 1.1 项目背景 假设我们正在开发一个名为“在线图书管理系统”的项目。该项目旨在帮助图书馆管理员管理图书的借阅、归还、库存等操作,同时为读者提供一个便捷的图书查询和借阅平台。 1.2 数据库设计 1.2.1 需求分析 根据项目的需求,我…

一、项目实践

1.1 项目背景

假设我们正在开发一个名为“在线图书管理系统”的项目。该项目旨在帮助图书馆管理员管理图书的借阅、归还、库存等操作,同时为读者提供一个便捷的图书查询和借阅平台。

1.2 数据库设计

1.2.1 需求分析

根据项目的需求,我们需要设计以下几个实体:

  • 读者(Reader):包括读者ID、姓名、性别、年龄、联系方式等字段。
  • 图书(Book):包括图书ID、书名、作者、出版社、ISBN、库存数量等字段。
  • 借阅记录(BorrowRecord):包括借阅ID、读者ID、图书ID、借阅日期、归还日期等字段。
1.2.2 E-R图

根据需求分析,我们可以绘制出如下的E-R图:

实体属性
读者(Reader)读者ID(PK)、姓名、性别、年龄、联系方式
图书(Book)图书ID(PK)、书名、作者、出版社、ISBN、库存数量
借阅记录(BorrowRecord)借阅ID(PK)、读者ID(FK)、图书ID(FK)、借阅日期、归还日期

其中,PK表示主键,FK表示外键。

1.2.3 数据库表结构

根据E-R图,我们可以设计出如下的数据库表结构:

Reader表

字段名称数据类型约束条件
ReaderIDINTPRIMARY KEY
NameVARCHARNOT NULL
GenderCHAR(1)NOT NULL
AgeINTNOT NULL
ContactVARCHARNOT NULL

Book表

字段名称数据类型约束条件
BookIDINTPRIMARY KEY
TitleVARCHARNOT NULL
AuthorVARCHARNOT NULL
PublisherVARCHARNOT NULL
ISBNVARCHARUNIQUE
StockINTNOT NULL

BorrowRecord表

字段名称数据类型约束条件
BorrowIDINTPRIMARY KEY
ReaderIDINTFOREIGN KEY REFERENCES Reader(ReaderID)
BookIDINTFOREIGN KEY REFERENCES Book(BookID)
BorrowDateDATENOT NULL
ReturnDateDATENULL

1.3 SQL查询实践

1.3.1 创建数据库和表

首先,我们需要创建数据库和表:

CREATE DATABASE LibraryManagement;USE LibraryManagement;CREATE TABLE Reader (ReaderID INT PRIMARY KEY,Name VARCHAR(100) NOT NULL,Gender CHAR(1) NOT NULL,Age INT NOT NULL,Contact VARCHAR(100) NOT NULL
);CREATE TABLE Book (BookID INT PRIMARY KEY,Title VARCHAR(200) NOT NULL,Author VARCHAR(100) NOT NULL,Publisher VARCHAR(100) NOT NULL,ISBN VARCHAR(20) UNIQUE,Stock INT NOT NULL
);CREATE TABLE BorrowRecord (BorrowID INT PRIMARY KEY,ReaderID INT,BookID INT,BorrowDate DATE NOT NULL,ReturnDate DATE NULL,FOREIGN KEY (ReaderID) REFERENCES Reader(ReaderID),FOREIGN KEY (BookID) REFERENCES Book(BookID)
);

1.3.2 插入数据

接下来,我们向表中插入一些数据:

-- 插入读者数据
INSERT INTO Reader (ReaderID, Name, Gender, Age, Contact) VALUES
(1, '张三', '男', 25, '12345678901'),
(2, '李四', '女', 30, '09876543210');-- 插入图书数据
INSERT INTO Book (BookID, Title, Author, Publisher, ISBN, Stock) VALUES
(1, 'SQL必知必会', 'Ben Forta', '人民邮电出版社', '9787115430547', 10),
(2, 'Java编程思想', 'Bruce Eckel', '机械工业出版社', '9787111544303', 5);-- 插入借阅记录数据
INSERT INTO BorrowRecord (BorrowID, ReaderID, BookID, BorrowDate, ReturnDate) VALUES
(1, 1, 1, '2023-10-01', NULL),
(2, 2, 2, '2023-10-02', '2023-10-05');
1.3.3 查询数据
  • 查询所有读者信息:
SELECT * FROM Reader;
  • 查询库存数量大于5的图书信息:
SELECT * FROM Book WHERE Stock > 5;
  • 查询张三借阅的图书信息:
SELECT b.Title
FROM BorrowRecord br
JOIN Book b ON br.BookID = b.BookID
WHERE br.ReaderID = (SELECT ReaderID FROM Reader WHERE Name = '张三');
  • 查询未归还的借阅记录:
SELECT * FROM BorrowRecord WHERE ReturnDate IS NULL;

1.3.4 更新数据
  • 更新图书《SQL必知必会》的库存数量:
UPDATE Book SET Stock = Stock - 1 WHERE BookID = 1;
  • 更新读者张三的联系方式:
UPDATE Reader SET Contact = '11122233344' WHERE Name = '张三';

 1.3.5 删除数据

  • 删除读者李四的借阅记录:
DELETE FROM BorrowRecord WHERE ReaderID = 2;

  • 删除库存数量为0的图书:
DELETE FROM Book WHERE Stock = 0;

1.4 事务处理

在图书管理系统中,借阅和归还操作需要保证数据的一致性,因此我们需要使用事务来处理这些操作。

1.4.1 借阅操作

借阅操作需要同时更新图书的库存数量和插入借阅记录,我们可以使用事务来保证这两个操作要么都成功,要么都失败。

START TRANSACTION;-- 更新图书库存数量
UPDATE Book SET Stock = Stock - 1 WHERE BookID = 1;-- 插入借阅记录
INSERT INTO BorrowRecord (BorrowID, ReaderID, BookID, BorrowDate, ReturnDate) VALUES (3, 1, 1, '2023-10-10', NULL);-- 提交事务
COMMIT;
如果在执行过程中发生错误,我们可以使用ROLLBACK来回滚事务:
START TRANSACTION;-- 更新图书库存数量(假设图书ID不存在,会报错)
UPDATE Book SET Stock = Stock - 1 WHERE BookID = 999;-- 插入借阅记录(由于前面的语句报错,此语句不会执行)
INSERT INTO BorrowRecord (BorrowID, ReaderID, BookID, BorrowDate, ReturnDate) VALUES (4, 1, 1, '2023-10-11', NULL);-- 回滚事务
ROLLBACK;
1.4.2 归还操作

归还操作需要同时更新借阅记录的归还日期和图书的库存数量,同样可以使用事务来处理。

START TRANSACTION;-- 更新借阅记录的归还日期
UPDATE BorrowRecord SET ReturnDate = '2023-10-15' WHERE BorrowID = 1;-- 更新图书库存数量
UPDATE Book SET Stock = Stock + 1 WHERE BookID = 1;-- 提交事务
COMMIT;

  创作不易,感谢打赏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61094.shtml

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

相关文章

React Hooks中use的细节

文档 useState useState如果是以函数作为参数,那要求是一个纯函数,不接受任何参数,同时需要一个任意类型的返回值作为初始值。 useState可以传入任何类型的参数作为初始值,当以一个函数作为参数进行传入的时候需要注意&#xff…

springboot 配置跨域访问

什么是 CORS? CORS,全称是“跨源资源共享”(Cross-Origin Resource Sharing),是一种Web应用程序的安全机制,用于控制不同源的资源之间的交互。 在Web应用程序中,CORS定义了一种机制&#xff0…

应用于蛋白-小分子柔性对接的等变VAE模型 - FlexPose 测评

FlexPose 应用于蛋白-小分子柔性对接场景下,能够在欧几里得空间中直接对蛋白-小分子复合结构的进行预测的等变神经网络模型,而无需传统的采样和评分策略。此模型考虑了蛋白氨基酸主链和侧链的柔性,会根据小分子的情况对氨基酸的侧链和主链进行…

【Web前端】如何构建简单HTML表单?

HTML 表单是 Web 开发中非常重要的组成部分。它们是与用户交互的主要方式,能够收集用户输入的数据。表单的灵活性使它们成为 HTML 中最复杂的结构之一,但若使用正确的结构和元素,可以确保其可用性和无障碍性。 表单的基本结构 HTML 表单使用…

乌班图单机(不访问外网)部署docker和服务的方法

面向对象:Ubuntu不能访问外网的机子,部署mysql、redis、jdk8、minio 过程: 1、安装docker(照着图去这里找对应的下载下来https://download.docker.com/linux/static/stable/),将7个docker官网下载的文件下载下来后,传上去服务器随便一个文件夹或者常用的opt或者/usr/lo…

IDEA全局设置-解决maven加载过慢的问题

一、IDEA全局设置 注意:如果不是全局设置,仅仅针对某个项目有效;例在利用网上教程解决maven加载过慢的问题时,按步骤设置却得不到解决,原因就是没有在全局设置。 1.如何进行全局设置 a.在项目页面,点击f…

狂野飙车8+(Asphalt 8+) for Mac 赛车竞速游戏 安装教程

Mac分享吧 文章目录 狂野飙车8(Asphalt 8) for Mac 赛车竞速游戏软件 效果图展示一、狂野飙车8(Asphalt 8) 赛车竞速游戏 Mac电脑版——v2.1.11️⃣:下载软件2️⃣:安装软件2.1 左侧安装包拖入右侧文件夹中,等待安装完成,运行软件…

标贝科技:自动驾驶中的数据标注类别分享

国内的自动驾驶行业正处于快速发展阶段。伴随随着芯片算力的提升、算法的优化以及数据采集标注传感设备的日益成熟,自动驾驶技术正逐步从实验室转向商业化应用。电车时代的来临,加速了自动驾驶时代的全面降临,23年国内汽车行业内卷的开始&…

(详细文档!)java swing学生信息管理系统 +mysql

第一章:系统功能分析 1.1、系统简介与开发背景 学生信息管理系统是在信息化时代,特别是在教育领域中产生的。随着学校规模的不断扩大和信息化技术的不断发展,传统的纸质档案管理方式已经无法满足学校对学生信息管理的需求,因此需…

matlab -炉温串级控制PID

1、内容简介 略 92-可以交流、咨询、答疑 2、内容说明 略 基于PID的反馈控制能够使得炉温控制达到较好的控制效果,但系统的调节时间还是较长,一般都大于20分钟。考虑能否用其他系统来改进控制系统使得调节时间变短的同时还能满足控制要求。一种最直接…

#渗透测试#红蓝攻防#HW#经验分享#溯源反制

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅 目录 一、溯源反制 1、溯源反制的重要性 2、溯源…

探索Python WebSocket新境界:picows库揭秘

文章目录 探索Python WebSocket新境界:picows库揭秘第一部分:背景介绍第二部分:picows库概述第三部分:安装picows库第四部分:简单库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方案第…

dmdba用户资源限制ulimit -a 部分配置未生效

dmdba用户资源限制ulimit -a 部分配置未生效 1 环境介绍2 数据库实例日志报错2.1 mpp01 实例日志报错2.2 mpp02 实例日志报错 3 mpp02 服务器资源限制情况4 关闭SELinux 问题解决4.1 临时关闭 SELinux4.2 永久关闭 SELinux 5 达梦数据库学习使用列表 1 环境介绍 Cpu x86 Os Ce…

安卓悬浮窗应用外无法穿透事件问题

现象: 应用内悬浮窗如何设置了 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE在自己应用内事件穿透正常,但到应用外就无法点击。 原因: 解决方法: layoutParams.alpha 0.8f …

c++趣味编程玩转物联网:基于树莓派Pico控制有源蜂鸣器

有源蜂鸣器是一种简单高效的声音输出设备,广泛应用于电子报警器、玩具、计时器等领域。在本项目中,我们结合树莓派Pico开发板,通过C代码控制有源蜂鸣器发出“滴滴”声,并解析其中涉及的关键技术点和硬件知识。 一、项目概述 1. 项…

ubuntu+ROS推视频流至网络

目录 概述 工具 ros_rtsp 接受流 web_video_server 源码安装 二进制安装 ros接收rtsp视频流 总结 概述 ros_rtsp功能包可以将ros视频流以rtsp形式推送 web_video_server功能包可以将ros视频话题推HTTP流 rocon_rtsp_camera_relay可以接受同一网段下的rtsp视频流输出为…

探索光耦:光耦安全标准解读——确保设备隔离与安全的重要规范

在现代科技日新月异的今天,光耦(光电耦合器)作为电子设备中不可或缺的隔离元件,其重要性不言而喻。它不仅在电源调控、工业自动化及医疗设备等关键领域大显身手,更是确保系统电气隔离与运行稳定的守护神。特别是在保障…

Qt程序发布及打包成exe安装包

参考:Qt之程序发布以及打包成exe安装包 目录 一、简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以…

JAVA题目笔记(二十)异常综合小练

一、键盘录入数据 import java.text.ParseException; import java.util.InputMismatchException; import java.util.Scanner;public class Co {public static void main(String[] args) throws ParseException {//键盘录入信息int age0;String namenull;Scanner sc new Scanne…

STM32F10x 定时器

使用定时器实现:B5 E5的开关 添加相关的.h路径文件 添加相关的.c配置文件 led.h文件 用于声明LED函数 #ifndef __LED_H //没有定义__LED_H #define __LED_H //就定义__LED_H #define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5) #defi…