根据交易金额确定会员是否升级为VIP

本文介绍了一个使用SQL触发器来自动管理会员资格的方案。当用户的消费金额达到一定标准时,系统会自动为其设置会员资格,并指定成为会员的日期。文章通过具体的SQL语句展示了如何创建触发器,并进行了测试验证。

--建立用户表
--username是主键,金额,和成为会员的日期
CREATE TABLE tbOrder(username Varchar(100) PRIMARY KEY,sumprice Money,IsLeaguer Datetime)
go


--建立触发器
--名称:tr_tbOrder
--功能:当有用户的金额>=500时,自动确定他何时会成为会员,存放到IsLeaguer中
CREATE TRIGGER tr_tbOrder
ON tbOrder
FOR INSERT, UPDATE
AS
If UPDATE(sumprice)
BEGIN
  declare @sStr Nvarchar(100),@dDate datetime
  select @dDate = dateadd(day,15,getdate())
  select @sStr = username from inserted
  --更新:通过匹配用户名,金额和是否已经成为会员来确定更新
  exec('update tbOrder set IsLeaguer = ''' + @dDate + ''' where username = ''' + @sStr + ''' and sumprice >= 500 and IsLeaguer is NULL')
END
go

--放入测试数据
insert into tbOrder(username,sumprice) select 'aa',500
insert into tbOrder(username,sumprice) select 'bb',600
insert into tbOrder(username,sumprice) select 'cc',400
go

--演示,IsLeaguer字段的日期<=当前时间的就是已经成为会员的
select * from tbOrder where IsLeaguer <= getdate()
go


--drop table tbOrder
--drop trigger tr_tbOrder
 

任务描述 请你为某商城设计一个会员程序,要求如下: 商城将顾客分为普通、黄金、VIP 三个等级,普通会员消费时没有折扣,黄金会员95折,VIP 会员85折; 积分规则:按单笔消费金额等额取整法,例如客户消费1元积1分,消费1.5元也是积一分,消费2元则积2分; 刚加入的顾客被归入普通会员,要求填入姓名;当顾客积分大于等于500时自动升级为黄金会员,下次享受黄金会员待遇;当积分大于等于2000时自动升级VIP 会员,下次起享受 VIP 会员待遇。注意:会员升级过程不能跳级。 实现方式 确定哪些类是上下文。 它可能是包含依赖于状态的代码的已有类; 如果特定于状态的代码分散在多个类中, 那么它可能是一个新的类; 声明状态接口。 虽然你可能会需要完全复制上下文中声明的所有方法, 但最好是仅把关注点放在那些可能包含特定于状态的行为的方法上; 为每个实际状态创建一个继承于状态接口的类。 然后检查上下文中的方法并将与特定状态相关的所有代码抽取到新建的类中。在将代码移动到状态类的过程中, 你可能会发现它依赖于上下文中的一些私有成员。 你可以采用以下几种变通方式: 将这些成员变量或方法设为公有; 将需要抽取的上下文行为更改为上下文中的公有方法, 然后在状态类中调用。 这种方式简陋却便捷, 你可以稍后再对其进行修补; 将状态类嵌套在上下文类中。 这种方式需要你所使用的编程语言支持嵌套类。 在上下文类中添加一个状态接口类型的引用成员变量, 以及一个用于修改该成员变量值的公有设置器; 再次检查上下文中的方法, 将空的条件语句替换为相应的状态对象方法; 为切换上下文状态, 你需要创建某个状态类实例并将其传递给上下文。 你可以在上下文、 各种状态或客户端中完成这项工作。 无论在何处完成这项工作, 该类都将依赖于其所实例化的具体类。 编程要求 根据提示,在右侧编辑器 Begin-End 内补全代码,需要补充代码的文件如下: AbstractState.java CommonState.java GoldState.java clubAccount.java 测试说明 输入第一行表示顾客姓名,第二行给出一个正整数 n(n⩽10)表示消费次数。随后 n 行,每行给出1个实数(消费金额)。输出 n 行结果,格式为 XX 本次消费金额为 XX,折扣后为 XX 测试输入: 张三 3 612.0 1621.0 100.0 预期输出: 张三注册成功 普通会员本次消费金额:612.0,折扣后:612.0,当前积分:612 黄金会员本次消费金额:1621.0,折扣后:1539.9,当前积分:2151 VIP会员本次消费金额:100.0,折扣后:85.0,当前积分:2236
最新发布
11-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值