diff --git "a/30\345\220\264\350\266\205/\344\275\234\344\270\232/9.6\351\200\273\350\276\221\346\216\247\345\210\266\344\275\234\344\270\232.md" "b/30\345\220\264\350\266\205/\344\275\234\344\270\232/9.6\351\200\273\350\276\221\346\216\247\345\210\266\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..2c6d7c76f8df4e5be71d038ff0a5b7b376029754 --- /dev/null +++ "b/30\345\220\264\350\266\205/\344\275\234\344\270\232/9.6\351\200\273\350\276\221\346\216\247\345\210\266\344\275\234\344\270\232.md" @@ -0,0 +1,135 @@ +``` +create database BankTest; +go +use banktest; +go +--账户信息表:存储个人信息 +create table AccountInfo +( + AccountId int primary key identity(1,1), --账户编号 + AccountCode varchar(20) not null, --身份证号码 + AccountPhone varchar(20) not null, --电话号码 + RealName varchar(20) not null, --真实姓名 + OpenTime smalldatetime not null, --开户时间 +) +--银行卡表:存储银行卡信息 +create table BankCard +( + CardNo varchar(30) primary key, --银行卡卡号 + AccountId int not null, --账户编号(与账户信息表形成主外键关系) + CardPwd varchar(30) not null, --银行卡密码 + CardMoney money not null, --银行卡余额 + CardState int not null,--1:正常,2:挂失,3:冻结,4:注销 + CardTime smalldatetime default(getdate()) --开卡时间 +) +--交易信息表(存储存钱和取钱的记录) +create table CardExchange +( + ExchangeId int primary key identity(1,1), --交易自动编号 + CardNo varchar(30) not null, --银行卡号(与银行卡表形成主外键关系) + MoneyInBank money not null, --存钱金额 + MoneyOutBank money not null, --取钱金额 + ExchangeTime smalldatetime not null, --交易时间 +) +--转账信息表(存储转账信息记录) +create table CardTransfer +( + TransferId int primary key identity(1,1),--转账自动编号 + CardNoOut varchar(30) not null, --转出银行卡号(与银行卡表形成主外键关系) + CardNoIn varchar(30) not null, --转入银行卡号(与银行卡表形成主外键关系) + TransferMoney money not null,--交易金额 + TransferTime smalldatetime not null, --交易时间 +) +--状态信息变化表(存储银行卡状态变化的记录,状态有1:正常,2:挂失,3:冻结,4:注销) +create table CardStateChange +( + StateId int primary key identity(1,1),--状态信息自动编号 + CardNo varchar(30) not null, --银行卡号(与银行卡表形成主外键关系) + OldState int not null, --银行卡原始状态 + NewState int not null, --银行卡新状态 + StateWhy varchar(200) not null, --状态变化原因 + StateTime smalldatetime not null, --记录产生时间 +) + + + +--为刘备,关羽,张飞三个人进行开户开卡的操作 +--刘备身份证:420107198905064135 +--关羽身份证:420107199507104133 +--张飞身份证:420107199602034138 +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107198905064135','13554785425','刘备',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('6225125478544587',1,'123456',0,1) + +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107199507104133','13454788854','关羽',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('6225547858741263',2,'123456',0,1) + +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107199602034138','13456896321','张飞',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('6225547854125656',3,'123456',0,1) + +select * from AccountInfo +select * from BankCard + + + +--进行存钱操作,刘备存钱2000元,关羽存钱:8000元,张飞存钱:500000元 +select * from AccountInfo +update BankCard set CardMoney = CardMoney + 2000 where CardNo = '6225125478544587' +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225125478544587',2000,0,GETDATE()) + +update BankCard set CardMoney = CardMoney + 8000 where CardNo = '6225547858741263' + +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225547858741263',8000,0,GETDATE()) + +update BankCard set CardMoney = CardMoney + 500000 where CardNo = '6225547854125656' +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225547854125656',500000,0,GETDATE()) + +--转账:刘备给张飞转账1000元 +update BankCard set CardMoney = CardMoney -1000 where CardNo = '6225125478544587' +update BankCard set CardMoney = CardMoney + 1000 where CardNo = '6225547854125656' + +insert into CardTransfer(CardNoOut,CardNoIn,TransferMoney,TransferTime) +values('6225125478544587','6225547854125656',1000,GETDATE()) + + + +select * from AccountInfo --个人信息 +select * from BankCard --银行卡信息 +select * from CardStateChange --银行卡状态更改表 +select * from CardTransfer --转账表 +select * from CardExchange --交易记录 + +--1. 为赵云此人进行开户开卡操作,赵云身份证:420107199904054233 +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107199904054233','13559509629','赵云',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('9864125478784599',4,'654321',0,1) + +--2. 需要求出张飞的银行卡卡号和余额,张飞身份证:420107199602034138 (1.使用连接查询,2.使用变量) +declare @a varchar (20) = 420107199602034138 +select RealName ,CardNo , CardMoney from BankCard +inner join AccountInfo on AccountInfo.AccountId = BankCard.AccountId +where AccountCode = @a + +--3.某用户银行卡号为“6225547854125656”,该用户执行取钱操作,取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”。 +declare @money money +select @money = CardMoney from BankCard where CardNo = 6225547854125656 +print @money +if @money >5000 +begin +print '取钱成功' +end +else +if @money <5000 +begin +print '余额不足' +end +``` \ No newline at end of file diff --git "a/30\345\220\264\350\266\205/\347\254\224\350\256\260/9.6\351\200\273\350\276\221\346\216\247\345\210\266\347\254\224\350\256\260.md" "b/30\345\220\264\350\266\205/\347\254\224\350\256\260/9.6\351\200\273\350\276\221\346\216\247\345\210\266\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..80c45f28d9dfc15c922be15da27b1d21afaef556 --- /dev/null +++ "b/30\345\220\264\350\266\205/\347\254\224\350\256\260/9.6\351\200\273\350\276\221\346\216\247\345\210\266\347\254\224\350\256\260.md" @@ -0,0 +1,38 @@ +``` +## 逻辑控制 + +1、if语句:if(判断条件) { 执行代码 } + +2、if…else语句:if(判断条件) { 执行代码 }else{ 执行代码 } + +3、if…else if…else语句:if(判断条件1) { 执行代码1 }else if(判断条件2) { 执行代码2 }else{ 执行代码3 } + +if语句适合但条件判断;if…else语句适用于互斥条件判断;if…else if…else语句适用于多条件互斥判断 + +并列的if语句,每个判断条件都要去判断;if…else if…else语句只要有一个条件满足,其他不会判断 + +在程序设计中,当出现每个条件都需要判断时,我们选择并列if语句;当出现只要一个结果时,选择if…else if…else语句 + +4、switch…case语句:switch(表达式){ case 常量表达式1:语句1 break; case 常量表达式2: 语句2 break; case 常量表达式3: 语句3 break; … case 常量表达式n: 语句n break; default: 语句n+1 } + +#### switch语句的注意事项: + +用作判断的表达式必须是符合byte、short、int、char类型的表达式,而不能使用double、long、boolean,在JDK1.7以前也不能使用字符串,但是在JDK1.7以后可以使用字符串,但是不建议使用 + +switch表达式依次和每个case子句中的常量值相比较。如果匹配成功,则执行case子句中常量值后的语句,直到break语句为止 + +case子句中的常量值不能相同,否则会报错 + +default子句可以省略 + +5、逻辑控制语句的关联和区别 + +1)if可以用于判断数值,也可以判断区间,只要运算结果是boolean类型,都可以 进行判断;switch用于对固定的几个值,进行判断。判断的值的类型有限 + +2)if的组合更灵活,可以依据不同的情况进行嵌套;switch结构清晰,但不够灵活 + +3)if不需要通过流程控制关键字进行控制;switch必须以流程控关键字来控制 + +4)if判断条件多元化,可以通过逻辑运算符来组合;switch只能判断常量 +``` +