单车管理系统——1.文档设计及sql代码说明

2023-05-16

SQL server 设计
目录:
1.各个表的建立
2.级联操作
3.触发器和存储过程
4权限管理

注:由于表比较多,sql语句很长,所以下面的说明中每样只举一个或两个例子,

1.各个表的建立

表1:用户
在这里插入图片描述

表2:维修员
在这里插入图片描述

表3:管理员

在这里插入图片描述

表4:单车

在这里插入图片描述

表5:运行记录
在这里插入图片描述

表6:位置

在这里插入图片描述

表7:评价反馈
在这里插入图片描述

–表1:用户表

drop table if exists 用户		
create table 用户(
	用户名 varchar(30) not null,
	账号 varchar(10) primary key,
	密码 varchar(10)not null,
	余额 int not null,
	总充值金额 int not null,
	vip等级 int not null
)

–表2:维修员表

drop table if exists 维修员
create table 维修员(
	维修员名 varchar(30) not null,
	账号 varchar(10) primary key,
	密码 varchar(10) not null,
)

–表3:管理员表

drop table if exists 管理员
create table 管理员(
	管理员名 varchar(30)not null,
	账号 varchar(10) primary key,
	密码 varchar(10) not null
)

–表4:单车表

drop table if exists 单车
create table 单车
(
	编号 varchar(10) primary key,
	是否在运行 bit,
	是否可用 bit			--不可用时向维修员报修
)

–表5:运行记录表

if exists (select * from dbo.sysobjects where ID = OBJECT_ID(N'运行记录') AND OBJECTPROPERTY(ID, 'IsUserTable') = 1)     
	drop table 运行记录
create table 运行记录(
	记录编号 varchar(30) primary key,
	用户账号 varchar(10) not null,
	单车编号 varchar(10),
	起始时间 datetime,
	结束时间 datetime,
	费用 int	not null
	/*
	--外键约束,用于级联操作
	constraint a1 foreign key(单车编号) references 单车(编号)
		on update cascade
	*/
)	

–表6:城市地理表

drop table if exists 位置
create table 位置(
	当前位置 varchar(30) not null,	--成熟的app可以通过定位自动输入,但在这里需要用户手动输入
	在市内否 bit,					--单车默认在室内运行,离开市区额外收费
	可否停车 bit					--某些位置可以停车,某些不可以
)
--表7:用户评价表
drop table if exists 评价反馈
create table 评价反馈(
	用户账号 varchar(10) not null,
	行驶记录 varchar(30)not null,
	评价 int	
)

2.级联操作

样例一

--外键约束1,用于级联操作
if exists(select * from sysobjects where name='a1') 
	alter table 运行记录 drop constraint a1;
alter table 运行记录 add  constraint a1 foreign key(单车编号) references 单车(编号)
		on update cascade;

/*update完成之后,会调用外键约束,更改运行记录中单车编号*/
update 单车	set 编号='00009'	from 单车 where 编号='00001';

将编号为00001的单车编号换为00009,表“运行记录”中相应单车的标号也会变为00009:
在这里插入图片描述
在这里插入图片描述

3.触发器和存储过程

--触发器tri1,当用户总充值金额变化时,vip等级也自动变化,--总充值金额每增加100,vip等级加1
go
create trigger tri1
on 用户 
for update
as	
	begin
		--print('触发器执行')
		declare @sql int
		set @sql=100
		update 用户 set vip等级=总充值金额/100 from 用户
		where(总充值金额>@sql);
	end
go

/*更新用户的‘总充值金额’,触发器会更改用户的‘vip等级’*/
update 用户  set 总充值金额=500	from 用户 where 账号='a001';

将用户“a001”的总充值金额变为500,那么在触发器作用下其vip等级变为5::
在这里插入图片描述

--函数f1,用于计算单车运行费用,每小时2元
drop function if exists f1
go
create function f1(@a datetime,@b datetime) returns int
as 
	begin
		declare @num1 int,@num2 int
		set @num1=(select datediff(hh,@a,@b))
		set @num2=@num1*2
		return @num2
	end
go

--函数f2,筛选余额小于@a2的用户
drop function if exists f2
go
create function f2(@a2 int) returns table
as
	return select * from 用户 where(余额<@a2)
go
/*测试,找出余额小于20的用户*/
select * from f2(20);

在这里插入图片描述

4.权限管理

go
create role persons;
go
grant select,update,delete,insert on 维修员 to persons with grant option;
grant select,update,delete,insert on 用户 to persons with grant option;
grant select,update,delete,insert on 管理员 to persons with grant option;
grant select,update,delete,insert on 单车 to persons with grant option;
grant select,update,delete,insert on 位置 to persons with grant option;
创建一个role,将其命名为persons,然后将各种权限授权给persons


drop user  if exists person1;
create login person1 with password='123456',default_database=bicycle;
create user person1 for login person1 with default_schema=dbo;
alter role persons add member person1

创建一个用户person1,密码为123456,默认的数据库是bicycle,并将其放入persons中,这样persons有的权限person1都有了。

然后我们以用户person1的身份重新登录
在这里插入图片描述

可以看到我们是以person1的身份登陆的,默认链接的数据库是bicycle;
我们随便创建一个表,由于在sql中我们没有赋予person1创建表的权限,所以提示我们无权创建表。
在这里插入图片描述

我们重新写入sql语句,因为我们授予了person1 有select、update、delete等权限,所以我们能够完成以下语句。
在这里插入图片描述

相关资源:

用Delphi写一个单车管理系统
单车管理系统——1.文档设计及sql代码说明
单车管理系统——2.delphi页面说明
单车管理系统——3.delphi主要代码说明
完整的文件代码及设计文档


更多资源:

北京理工大学—计算机专业课程资源:https://blog.csdn.net/weixin_50836014/article/details/125687455

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单车管理系统——1.文档设计及sql代码说明 的相关文章

  • 基于51单片机的排队叫号系统

    具体实现功能 系统由STC89C52单片机 43 按键模块 43 LCD1602液晶屏 43 蜂鸣器呼叫模块 43 电源构成 具体功能 xff1a 1 主机通过按键完成叫号 xff0c LCD1602液晶显示屏显示被叫的号码及服务的柜台号
  • 仿真设计|基于51单片机的简易抢答器

    目录 前言 具体实现功能 设计介绍 51单片机简介 设计方案 资料内容 仿真实现 xff08 protues8 7 xff09 程序 xff08 Keil5 xff09 全部资料 xff08 压缩文件 xff09 前言 全部资料包括程序 K
  • 实物设计|基于51单片机的温湿度检测报警系统

    目录 具体实现功能 xff1a 设计介绍 51单片机简介 设计方案 资料内容 原理图和PCB xff08 AD19 xff09 仿真实现 xff08 protues8 7 xff09 程序 xff08 Keil5 xff09 全部资料 xf
  • 设计分享|74LS148实现按键控制LED灯

    目录 具体实现功能 xff1a 设计介绍 51单片机简介 设计思路 设计内容 仿真图 xff08 protues8 7 xff09 程序 xff08 Keil5 xff09 具体实现功能 xff1a 74LS148实现按键控制LED灯 设计
  • 版本控制工具GIT and SVN 命令对比

    Git 安装 Debian Ubuntu OS Apt get install libcur14 gnutls dev libexppat1 dev gettext libz dev libssl dev Apt get install g
  • SUMO仿真教程(1) ——安装环境的设置(Windows 10系统)

    SUMO安装环境的设置 目录 一 SUMO下载的官方网址二 下载步骤 xff1a 三 环境设置 xff1a 1 打开设置环境变量的界面2 用户 xff08 Administrator xff09 变量设置3 系统变量设置 四 总述 一 SU
  • SUMO仿真教程(3)—— 仿真运行(net file、rou file、sumocfg file)

    文章目录 一 基本介绍 xff1a 1 简述 xff1a 二 文件说明 xff1a 1 路网文件 net xml 2 自定义编写路由文件 rou xml xff1a 3 生成运行仿真文件 sumocfg xff1a 4 进行运行仿真 xff
  • SUMO仿真教程(5) —— 使用“XML“语言自定义构建路网

    文章目录 一 简要介绍1 node file2 edge file3 lane definitions xff08 1 xff09 路段细分 xff08 2 xff09 邻近的对向车道 xff08 3 xff09 删除边或车道 4 type
  • SUMO仿真教程(7)—— 交通需求模型介绍

    文章目录 一 简要介绍 xff1a 二 方式一 xff1a 使用行程定义三 方式二 xff1a 使用交通流定义四 方式三 xff1a 使用随机流定义五 方式四 xff1a 使用OD矩阵定义六 方式五 xff1a 使用交叉口流量和转向比定义七
  • STM32 + UCOSII 操作系统(简单讲解)

    前言 这是我将UCOSII操作系统移植在STM32单片机上后进行UCOSII操作系统学习的一些笔记与理解 xff0c 此文最后会附上我自己在UCOSII操作系统下使用STM32写的ESP8266 43 onenet 43 http协议的程序
  • 地下水监测用设备 5G无线数传终端DTU

    地下水监测用设备5G无线数传终端DTU xff0c 实现地下水水位 温度 电导率 水质 孔隙压力等数据传输入库 远程采集 远程监测 曲线及报表可视化管理 地下水监测用5G无线数传终端DTU功能配置 地下水监测用5G无线数传终端负责连接前端采
  • 图解进程线程、互斥锁与信号量-看完不懂你来打我

    在上学的时候 xff0c 老师讲到进程与线程的时候可能是这样讲的 xff1a 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程 xff0c 是操作系统进行资源分配和调度的一个独立单元 xff0c 是应用程序运行的载体 线程
  • MySQL最左匹配原则,道儿上兄弟都得知道的原则

    自MySQL5 5版本起 xff0c 主流的索引结构转为B 43 树 B 43 树的节点存储索引顺序是从左向右存储 xff0c 在检索匹配的时候也要满足自左向右匹配 目录 一 最左匹配原则的原理二 违背最左原则导致索引失效的情况三 查询优化
  • 在STM32下完成基于FreeRTOS的多任务简单程序

    一 为什么要学习 RTOS 在裸机系统中 xff0c 所有的程序基本都是自己写的 xff0c 所有的操作都是在一个无限的大循环里面实现 现实生活中的很多中小型的电子产品用的都是裸机系统 xff0c 而且也能够满足需求 但是为什么还要学习 R
  • 虚拟机连不上网问题及解决

    虚拟机联网主要涉及四个方面的配合 xff1a 网络和共享中心 xff08 物理机 xff09 虚拟网络编辑器 网络适配器 有线连接的更多设置 xff08 相关配置文件 xff09 网络和共享中心 xff1a 提示 xff1a 需要注意的点是
  • linux命令查看系统硬件的版本(dmidecode)

    dmidecode命令 可以让你在Linux系统下获取有关硬件方面的信息 dmidecode的作用是将DMI数据库中的信息解码 xff0c 以可读的文本方式显示 由于DMI信息可以人为修改 xff0c 因此里面的信息不一定是系统准确的信息
  • git 设置代理和取消代理

    本地开启VPN后 xff0c GIt也需要设置代理 xff0c 才能正常略过GFW xff0c 访问goole code等网站 设置如下 xff08 可复制 xff09 xff1a git config global https proxy
  • 上下文切换理解

    1 上下文的理解 上下文是指 xff0c 每次执行前 xff0c 都会使用需要依赖两个环境 xff0c 分别是CPU寄存器 xff08 cpu中容量小但是速度很快的内存 xff09 和程序计数器 xff08 cpu正在执行的程序位置或者是准
  • debian-11版本虚拟机无法登入root账号

    debian11创建虚拟机时我们设置了root账户密码 xff0c 然而在登入时却在未列出中无法登入root账户 xff0c 如图 1 我们登入普通账号 xff0c 这里不提权是无法保存文件的 enter 输入 i 进入编辑模式 在这个位置
  • 整数加减运算的二进制表示

    两位整数的加减都可看做 一个数加上另一个数 xff0c 首先我们要把数据的二进制表示转化成补码 xff0c 因为在计算机内部 xff0c 数据的加减是按补码进行运算的 A补 43 B补 61 A 43 B 补 xff08 mod 2 n 4

随机推荐