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

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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一、项目简介 本项目是一套基于SSM的共享单车管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后台框架:Spring、SpringMVC、MyBatis ​数据库:MySQL 开发环境:JDK、Eclipse、Tomcat 三、系统功能 (1)单车信息管理 管理员在后台系统中可以浏览到所有的单车信息,并可凭借对应的单车编号搜索到指定的单车,还可看到单车的借还情况。 (2)租金管理 缴纳租金的信息会在这里显示,并统计当前的租金总和。还可通过单车号查询当前车辆的历史租金记录。 (3)租赁管理 用来添加新的租赁信息,需添加押金金额,预计付款金额,归还日期,备注等信息;用户还车时,在租赁信息中快速找到租赁记录,将是否归还改为已归还。 (4)管理员信息管理 超级管理员可以实现对其他管理员的管理,原则上一个存车处需要一个管理员,超级管理员可以将管理员与存车处进行绑定,在不需要时可以直接删除 (5)信息统计 系统对租金流水,保有押金,车辆统计,在库车辆,借车人次的统计。 (6)管理员登录 管理员凭账号密码即可登录本系统,并使用所有功能。 (7)注销退出 当管理员点击“退出系统”时可安全退出本系统。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只野指针.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值