ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:26.76KB ,
资源ID:4208475      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4208475.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行ATM存取款机系统设计与实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行ATM存取款机系统设计与实现.docx

1、银行ATM存取款机系统设计与实现数据库技术与开发项目实训设计报告 项目名称:银行ATM存取款机系统设计与实现姓 名:范涛 学 号:21专 业:软件工程12-2 指导教师:刘立新 完成日期:2014-11-20银行ATM存取款机系统设计与实现第1章:项目背景1、项目任务创建数据库、创建表、创建约束使用触发器和插入测试数据模拟常规业务、创建视图使用存储过程实现业务处理利用事务实现较复杂的数据更新2、项目技能目标 使用PowerDesigner完成数据库概念模型和数据库物理模型设计。 使用T-SQL语句创建数据库、表和各种约束。 使用T-SQL语句编程实现常见业务。 使用触发器实现多表之间的级联更新

2、。 使用事务和存储过程封装业务逻辑。 使用视图简化复杂的数据查询。 使用游标技术实现结果集的行集操作。3、需求概述某银行是一家民办的小型银行企业,现有十多万客户,公司将为该银行开发一套ATM存取款机系统,对银行日常的存取款业务进行计算机管理,以便保证数据的安全性,提高工作效率。要求根据银行存取款业务需求设计出符合第三范式的数据库结构,使用T-SQL语言创建数据库和表,并添加表约束,进行数据的增删改查,运用逻辑结构语句、事务、视图和存储过程,按照银行的业务需求,实现各项银行日常存款、取款和转账业务。4、开发环境 数据库:SQL SERVER 2008开发版 数据库建模工具:PowerDesign

3、er15第2章:创建数据库1.创建数据库代码如下: create database bankdbon primary(name=Nbankdb, filename=NG:数据库课设bankdb.mdf, size=5mb, maxsize=30mb, filegrowth=15%)log on(name=Nbankdb_log, filename=NG:数据库课设bankdb_log.ldf, size=2mb, maxsize=30mb, filegrowth=15%)2.创建各个数据表及相关的约束(1).创建银行业务类型表create table bankbusinesstype(bbt_

4、id int identity(1,1) primary key,bbt_name char(20) not null,bbt_comment varchar(100);(2).创建用户信息表create table bankcustomer( bc_id int identity(1,1) primary key, bc_name char(20) not null, bc_icno char(18) not null check(left(bc_icno,17) like 0-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-9 and (ri

5、ght(bc_icno,1) like 0-9 or right(bc_icno,1) like x), bc_tel varchar(20) not null check(bc_tel like 0-90-90-90-9_0-90-90-90-90-90-90-9) or (bc_tel like 0-90-90-90-90-90-90-90-90-90-90-9), bc_addr varchar(100);(3).创建银行卡信息create table bankcard(bc_no char(19) not null, bc_pwd char(6) not null, bc_curren

6、cy char(5) not null, bc_bbtid int not null, bc_opendate date not null, bc_openamount money not null, bc_regloss char(2), bc_bcid int not null, bc_existbalance money not null)alter table bankcardadd constraint sp_bcno1 primary key(bc_no)alter table bankcardadd constraint sp_bcno2 check(bc_no like 101

7、0 3576 0-90-90-90-9 0-90-90-90-9)alter table bankcardadd constraint sp_bcopenamount check(bc_openamount=1)alter table bankcardadd constraint sp_bcpwd default(888888) for bc_pwdalter table bankcardadd constraint sp_bccurrency default(RMB) for bc_currencyalter table bankcardadd constraint sp_bcopendat

8、e default(getdate() for bc_opendatealter table bankcardadd constraint sp_bcregloss default(否) for bc_regloss(4).创建交易信息表create table bankdealinfo(bd_no int identity(1,1), bd_bcno char(19) not null, bd_dealdate date not null, bd_dealacount money not null, bd_dealtype char(10) not null, bd_dealcomment

9、char(100)alter table bankdealinfoadd constraint sp_bdno primary key(bd_no)alter table bankdealinfoadd constraint sp_bddealdate default(getdate() for bd_dealdatealter table bankdealinfoadd constraint sp_bddealtype check(bd_dealtype=存入 or bd_dealtype=支取)3.添加外键约束和生成数据库代码如下:use bankdb goalter table bank

10、cardadd constraint fk_bc_bbt foreign key(bc_bbtid) references bankbusinesstype(bbt_id);alter table bankcardadd constraint fk_bc_bc foreign key(bc_bcid) references BankCustomer(bc_id);alter table bankDealInfoadd constraint fk_bdi_bc foreign key(bd_bcno) references BankCard(bc_no);第3章:创建触发器和插入测试数据1.创建

11、级联触发器(1).创建Insert触发器:if (object_id(tr_InsertdealInfo,tr) is not null) drop trigger tr_InsertdealInfogocreate trigger tr_InsertdealInfoon bankdealinfofor insertas declare type char(10),sum money,bdbcno char(19); -创建一个游标,指向inserted表 declare cursor_bankdealinfo cursor for select bd_dealtype,bd_dealacou

12、nt,bd_bcno from inserted -打开游标 open cursor_BankDealinfo -取游标中各个字段的值复制给各个变量 fetch next from cursor_BankDealinfo into type,sum,BDBCNo while fetch_status=0 begin -判断交易记录里是存入还是支取,及时更新银行卡表的存款余额 if(rtrim(ltrim(type)=存入) update bankcard set BC_ExistBalance=BC_ExistBalance+sum where BC_No=BDBCNo; if(rtrim(l

13、trim(type)=支取) update bankcard set BC_ExistBalance=BC_ExistBalance-sum where BC_No=BDBCNo; fetch next from cursor_BankDealinfo into type,sum,BDBCNo end close cursor_BankDealinfo deallocate cursor_BankDealinfoGo(2).创建Delete触发器if (object_id(tr_DeldealInfo,tr) is not null) drop trigger tr_DeldealInfogo

14、create trigger tr_DeldealInfoon bankdealinfofor deleteas declare type char(10),sum money,BDBCNo char(19); -创建一个游标,指向deleted表 declare cursor_BankDealinfo cursor for select BD_DealType,BD_DealAcount,BD_BCNo from deleted -打开游标 open cursor_BankDealinfo -取游标中各个字段的值复制给各个变量 fetch next from cursor_BankDeali

15、nfo into type,sum,BDBCNo while fetch_status=0 begin if(rtrim(ltrim(type)=存入) update bankcard set BC_ExistBalance=BC_ExistBalance-sum where BC_No=BDBCNo; if(rtrim(ltrim(type)=支取) update bankcard set BC_ExistBalance=BC_ExistBalance+sum where BC_No=BDBCNo; fetch next from cursor_BankDealinfo into type,

16、sum,BDBCNo end close cursor_BankDealinfo deallocate cursor_BankDealinfoGo(3).创建update触发器:if (object_id(tr_DeldealInfo,tr) is not null) drop trigger tr_DeldealInfogocreate trigger tr_DeldealInfoon bankdealinfofor updateasdeclare type char(10),sum money,BDBCNo char(19); -创建一个游标,指向deleted表 declare curs

17、or_BankDealinfo cursor for select BD_DealType,BD_DealAcount,BD_BCNo from updated -打开游标 open cursor_BankDealinfo -取游标中各个字段的值复制给各个变量 fetch next from cursor_BankDealinfo into type,sum,BDBCNo while fetch_status=0 begin if(rtrim(ltrim(type)=存入) update bankcard set BC_ExistBalance=BC_ExistBalance-sum wher

18、e BC_No=BDBCNo; if(rtrim(ltrim(type)=支取) update bankcard set BC_ExistBalance=BC_ExistBalance+sum where BC_No=BDBCNo; fetch next from cursor_BankDealinfo into type,sum,BDBCNo end close cursor_BankDealinfo deallocate cursor_BankDealinfogo2.插入数据表的测试数据1.BankBusinessType表的测试数据代码如下:insert into bankbusines

19、stype values(活期,无固定存期,可随时存取,存取金额不限的一种比较灵活的存款),(定活两便,事先不约定存期,一次性存入,一次性支取的存款),(通知,不约定存期,支取时需提前通知银行,约定支取日期和金额方能支取的存款),(整存整取1年,整笔存入,到期提取本息),(整存整取2年,整笔存入,到期提取本息),(整存整取3年,整笔存入,到期提取本息),(零存整取1年,事先原定金额,逐月按约定金额存入,到期支付本息),(零存整取2年,事先原定金额,逐月按约定金额存入,到期支付本息),(零存整取3年,事先原定金额,逐月按约定金额存入,到期支付本息),(自助转账,银行ATM机上办理银行卡之间互相划

20、转);select * from bankbusinesstype 结果如下图所示:图12.BankCustomer表的测试数据insert into bankcustomervalues(小明,包头市昆都仑区包钢五中),(小黑,54,包头昆区阿尔丁大街);select * from bankcustomer 结果如下图所示:图23.BankCard表的测试数据declare date datetimeselect date=cast(DATEADD(DD,-(rand()*30),GETDATE() as datetime)-前30天的日期insert into BankCardvalues

21、(1010 3576 1234 5678,197611,RMB,1,date,1000.00,否,1,1000.00);select date=cast(DATEADD(DD,-(rand()*30),GETDATE() as datetime)insert into BankCardvalues(1010 3576 1234 5688,197711,RMB,2,date,1500.00,否,2,1500.00);select * from BankCard结果如下图所示:图34.BankDealInfo表的测试数据declare date1 datetimeselect date1=cast

22、(DATEADD(DD,-(rand()*15),GETDATE() as datetime)insert into BankDealInfovalues(1010 3576 1234 5678,date1,500.00,存入,单位1月工资)select date1=cast(DATEADD(DD,-(rand()*15),GETDATE() as datetime)insert into BankDealInfovalues(1010 3576 1234 5678,date1,1500.00,存入,单位2月工资)select date1=cast(DATEADD(DD,-(rand()*15

23、),GETDATE() as datetime)insert into BankDealInfovalues(1010 3576 1234 5678,date1,600.00,支取,支付宝付款)select date1=cast(DATEADD(DD,-(rand()*15),GETDATE() as datetime)insert into BankDealInfovalues(1010 3576 1234 5678,date1,700.00,支取,刷卡消费);select date1=cast(DATEADD(DD,-(rand()*15),GETDATE() as datetime)in

24、sert into BankDealInfovalues(1010 3576 1234 5688,date1,3000.00,存入,单位1月工资)select date1=cast(DATEADD(DD,-(rand()*15),GETDATE() as datetime)insert into BankDealInfovalues(1010 3576 1234 5688,date1,2800.00,存入,单位2月工资)select date1=cast(DATEADD(DD,-(rand()*15),GETDATE() as datetime)insert into BankDealInfo

25、values(1010 3576 1234 5688,date1,1600.00,支取,支付宝付款)select date1=cast(DATEADD(DD,-(rand()*15),GETDATE() as datetime)insert into BankDealInfovalues(1010 3576 1234 5688,date1,900.00,支取,刷卡消费);select * from BankDealInfo结果如下图所示:图4第四章:模拟常规业务1. 修改客户密码update BankCard set BC_Pwd=123456 where BC_No=1010 3576 12

26、34 5678;update BankCard set BC_Pwd=123123 where BC_No=1010 3576 1234 5688;-修改密码后的查询显示select bc_no as 卡号,bc_pwd as 密码,BC_Currency as 货币类型,BC_BBTId as 储蓄类型,BC_OpenDate as 开户日期,BC_OpenAmount as 开户金额,BC_RegLoss as 是否挂失,BC_BBTId as 客户编号,BC_ExistBalance as 存款余额 from BankCard结果如下图所示:图52.办理银行卡挂失select * fro

27、m BankCard where BC_No=1010 3576 1234 5678;update BankCard set bc_regloss =是 where BC_No=1010 3576 1234 5678;select BankCard.BC_No as 卡号,BankCard.BC_Pwd as 密码,BankCard.BC_Currency as 货币类型,BankBusinessType.BBT_Name as 储蓄类型,BankCard.BC_OpenDate as 开户日期,BankCard.BC_OpenAmount as 开户金额,BankCard.BC_RegLos

28、s as 是否挂失,BankCustomer.BC_Name as 客户姓名,BankCard.BC_ExistBalance as 存款余额 from BankCard inner join BankBusinessType on BankCard.BC_BBTId=BankBusinessType.BBT_Idinner join BankCustomer on BankCard.BC_BCId=BankCustomer.BC_IdGo结果如下图所示:图63.统计银行资金流通余额和盈利结算if exists(select * from sysobjects where name=proc_

29、staticsBanlanceAndProfit ) drop procedure proc_staticsBanlanceAndProfit gocreate procedure proc_staticsBanlanceAndProfitasdeclare YU money;declare YING money;declare IN money;declare OUT money select IN=sum(bd_dealacount ) from BankDealInfo where rtrim(ltrim(BD_DealType)=存入;select OUT =sum(BD_DealAcount) from BankDealInfo where rtrim(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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1