银行ATM存取款机系统设计与实现Word文档格式.docx
- 文档编号:17124488
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:31
- 大小:26.76KB
银行ATM存取款机系统设计与实现Word文档格式.docx
《银行ATM存取款机系统设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《银行ATM存取款机系统设计与实现Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
使用游标技术实现结果集的行集操作。
3、需求概述
某银行是一家民办的小型银行企业,现有十多万客户,公司将为该银行开发一套ATM存取款机系统,对银行日常的存取款业务进行计算机管理,以便保证数据的安全性,提高工作效率。
要求根据银行存取款业务需求设计出符合第三范式的数据库结构,使用T-SQL语言创建数据库和表,并添加表约束,进行数据的增删改查,运用逻辑结构语句、事务、视图和存储过程,按照银行的业务需求,实现各项银行日常存款、取款和转账业务。
4、开发环境
数据库:
SQLSERVER2008开发版
数据库建模工具:
PowerDesigner15
第2章:
创建数据库
1.创建数据库
代码如下:
createdatabasebankdb
onprimary
(
name=N'
bankdb'
filename=N'
G:
\数据库课设\bankdb.mdf'
size=5mb,
maxsize=30mb,
filegrowth=15%
)
logon
bankdb_log'
\数据库课设\bankdb_log.ldf'
size=2mb,
2.创建各个数据表及相关的约束
(1).创建银行业务类型表
createtablebankbusinesstype
bbt_idintidentity(1,1)primarykey,
bbt_namechar(20)notnull,
bbt_commentvarchar(100)
);
(2).创建用户信息表
createtablebankcustomer
bc_idintidentity(1,1)primarykey,
bc_namechar(20)notnull,
bc_icnochar(18)notnullcheck(left(bc_icno,17)like'
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
and(right(bc_icno,1)like'
[0-9]'
orright(bc_icno,1)like'
x'
)),
bc_telvarchar(20)notnullcheck((bc_tellike'
[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
)or(bc_tellike'
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
bc_addrvarchar(100)
(3).创建银行卡信息
createtablebankcard
(bc_nochar(19)notnull,
bc_pwdchar(6)notnull,
bc_currencychar(5)notnull,
bc_bbtidintnotnull,
bc_opendatedatenotnull,
bc_openamountmoneynotnull,
bc_reglosschar
(2),
bc_bcidintnotnull,
bc_existbalancemoneynotnull
altertablebankcard
addconstraintsp_bcno1primarykey(bc_no)
addconstraintsp_bcno2check(bc_nolike'
10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
addconstraintsp_bcopenamountcheck(bc_openamount>
=1)
addconstraintsp_bcpwddefault('
888888'
)forbc_pwd
addconstraintsp_bccurrencydefault('
RMB'
)forbc_currency
addconstraintsp_bcopendatedefault(getdate())forbc_opendate
addconstraintsp_bcreglossdefault('
否'
)forbc_regloss
(4).创建交易信息表
createtablebankdealinfo
(bd_nointidentity(1,1),
bd_bcnochar(19)notnull,
bd_dealdatedatenotnull,
bd_dealacountmoneynotnull,
bd_dealtypechar(10)notnull,
bd_dealcommentchar(100)
altertablebankdealinfo
addconstraintsp_bdnoprimarykey(bd_no)
addconstraintsp_bddealdatedefault(getdate())forbd_dealdate
addconstraintsp_bddealtypecheck(bd_dealtype='
存入'
orbd_dealtype='
支取'
3.添加外键约束和生成数据库
usebankdb
go
addconstraintfk_bc_bbtforeignkey(bc_bbtid)referencesbankbusinesstype(bbt_id);
addconstraintfk_bc_bcforeignkey(bc_bcid)referencesBankCustomer(bc_id);
altertablebankDealInfo
addconstraintfk_bdi_bcforeignkey(bd_bcno)referencesBankCard(bc_no);
第3章:
创建触发器和插入测试数据
1.创建级联触发器
(1).创建Insert触发器:
if(object_id('
tr_InsertdealInfo'
'
tr'
)isnotnull)
droptriggertr_InsertdealInfo
createtriggertr_InsertdealInfo
onbankdealinfo
forinsert
as
declare@typechar(10),@summoney,@bdbcnochar(19);
--创建一个游标,指向inserted表
declarecursor_bankdealinfocursorforselectbd_dealtype,bd_dealacount,bd_bcnofrominserted
--打开游标
opencursor_BankDealinfo
--取游标中各个字段的值复制给各个变量
fetchnextfromcursor_BankDealinfointo@type,@sum,@BDBCNo
while@@fetch_status=0
begin
--判断交易记录里是存入还是支取,及时更新银行卡表的存款余额
if(rtrim(ltrim(@type))='
)
updatebankcardsetBC_ExistBalance=BC_ExistBalance+@sumwhereBC_No=@BDBCNo;
updatebankcardsetBC_ExistBalance=BC_ExistBalance-@sumwhereBC_No=@BDBCNo;
end
closecursor_BankDealinfo
deallocatecursor_BankDealinfo
Go
(2).创建Delete触发器
tr_DeldealInfo'
droptriggertr_DeldealInfo
createtriggertr_DeldealInfo
fordelete
declare@typechar(10),@summoney,@BDBCNochar(19);
--创建一个游标,指向deleted表
declarecursor_BankDealinfocursorforselectBD_DealType,BD_DealAcount,BD_BCNofromdeleted
(3).创建update触发器:
forupdate
declare@typechar(10),@summoney,@BDBCNochar(19);
declarecursor_BankDealinfocursorforselectBD_DealType,BD_DealAcount,BD_BCNofromupdated
2.插入数据表的测试数据
1.BankBusinessType表的测试数据
insertintobankbusinesstype
values
('
活期'
无固定存期,可随时存取,存取金额不限的一种比较灵活的存款'
),
定活两便'
事先不约定存期,一次性存入,一次性支取的存款'
通知'
不约定存期,支取时需提前通知银行,约定支取日期和金额方能支取的存款'
整存整取1年'
整笔存入,到期提取本息'
整存整取2年'
整存整取3年'
零存整取1年'
事先原定金额,逐月按约定金额存入,到期支付本息'
零存整取2年'
零存整取3年'
自助转账'
银行ATM机上办理银行卡之间互相划转'
select*frombankbusinesstype
结果如下图所示:
图1
2.BankCustomer表的测试数据
insertintobankcustomer
小明'
'
包头市昆都仑区包钢五中'
小黑'
54'
包头昆区阿尔丁大街'
select*frombankcustomer
图2
3.BankCard表的测试数据
declare@datedatetime
select@date=cast(DATEADD(DD,-(rand()*30),GETDATE())asdatetime)--前30天的日期
insertintoBankCard
values('
1010357612345678'
197611'
1,@date,'
1000.00'
1,'
select@date=cast(DATEADD(DD,-(rand()*30),GETDATE())asdatetime)
1010357612345688'
197711'
2,@date,'
1500.00'
2,'
select*fromBankCard
图3
4.BankDealInfo表的测试数据
declare@date1datetime
select@date1=cast(DATEADD(DD,-(rand()*15),GETDATE())asdatetime)
insertintoBankDealInfo
@date1,'
500.00'
单位1月工资'
单位2月工资'
600.00'
支付宝付款'
700.00'
刷卡消费'
3000.00'
2800.00'
1600.00'
900.00'
select*fromBankDealInfo
图4
第四章:
模拟常规业务
1.修改客户密码
updateBankCardsetBC_Pwd=123456whereBC_No='
;
updateBankCardsetBC_Pwd=123123whereBC_No='
--修改密码后的查询显示
selectbc_noas'
卡号'
bc_pwdas'
密码'
BC_Currencyas'
货币类型'
BC_BBTIdas'
储蓄类型'
BC_OpenDateas'
开户日期'
BC_OpenAmountas'
开户金额'
BC_RegLossas'
是否挂失'
客户编号'
BC_ExistBalanceas'
存款余额'
fromBankCard
图5
2.办理银行卡挂失
select*fromBankCardwhereBC_No='
updateBankCardsetbc_regloss='
是'
whereBC_No='
selectBankCard.BC_Noas'
BankCard.BC_Pwdas'
BankCard.BC_Currencyas'
BankBusinessType.BBT_Nameas'
BankCard.BC_OpenDateas'
BankCard.BC_OpenAmountas'
BankCard.BC_RegLossas'
BankCustomer.BC_Nameas'
客户姓名'
BankCard.BC_ExistBalanceas'
fromBankCard
innerjoinBankBusinessTypeonBankCard.BC_BBTId=BankBusinessType.BBT_Id
innerjoinBankCustomeronBankCard.BC_BCId=BankCustomer.BC_Id
图6
3.统计银行资金流通余额和盈利结算
ifexists(select*fromsysobjectswherename='
proc_staticsBanlanceAndProfit'
)
dropprocedureproc_staticsBanlanceAndProfit
go
createprocedureproc_staticsBanlanceAndProfit
declare@YUmoney;
declare@YINGmoney;
declare@INmoney;
declare@OUTmoney
select@IN=sum(bd_dealacount)fromBankDealInfowherertrim(ltrim(BD_DealType))='
select@OUT=sum(BD_DealAcount)fromBankDealInfowherertrim(ltrim(BD_DealType))='
set@YU=@IN-@OUT;
set@YING=@IN*0.008-@OUT*0.003;
print'
存入总金额:
+rtrim(ltrim(str(@IN)))+'
RMB,支取总金额:
+rtrim(ltrim(str(@OUT)))+'
RMB,银行流通余额:
+rt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 ATM 取款 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)