文档详情

SQL高级项目(简易银行系统).docx

发布:2025-06-11约1.46千字共3页下载文档
文本预览下载声明

《SQLSERVER2005数据库高级工程》----简易银行系统

一、要求:

利用所学的SQLSERVER2005知识,设计一个简单的银行系统,包括如下功能:

修改用户银行卡密码

用户挂失

用户开户

用户进行支取或存入交易

备份交易信息记录

二、所需要用到的知识:

1、T-SQL查询语句

2、建库、建表、建约束

3、存储过程和触发器的使用

三、工程实践

1、第一价段:用T-SQL实现建库、建表、建约束并插入测试数据

A:三个表的表结构如下:

B:要求如下

第二阶段:用T-SQL中的高级对象:触发器、存储过程等实现比拟复杂的业务过程

题目要求

1.利用触发器实现用户的存入和支取业务操作,根据用户的交易方式:存入或者支取。如果是支取那么需要判断用户的余额是否足够支取。

--即满足余额-支取金额=1的关系。如果条件不满足,那么拒绝交易,给出错误提示,并撤销事务。而存入那么不需要判断。

2.利用存储过程来实现备份交易信息的业务:要求备份的交易信息是45天以前的信息,并且备份在备份表backTransInfo中,存储过程里面能自动判断表是否存在,如果存在直接备份,如果不存在那么先创立〔该存储过程需要有事务的功能,如果备份失败,那么需要撤销所有的事务,为了存储过程能更灵活,可以把备份时间作为输入参数,由调用者指定〕

3.实现产生银行卡号的存储过程,该存储过程能随机的产生一个卡号输出。银行卡号一般为****************类型,可以利用SQLSERVER2005中提供的rand()函数来产生随机数,然后作处理后以卡号的形式输出。可以把随机数转换成字符串后,利用substring()

函数截取出所需要的字符串,然后再拼成卡号的形式。rand()函数需要一个种子数,可以取当前时间的毫秒数为种子

参考代码:

alterprocedureproc_cardId

@cardIdvarchar(19)output

as

declare@tempRandnumeric(18,16)--用于存放产生的随机数

declare@tempStrvarchar(18)--用于存放将随机数转化后的字符串

set@tempRand=rand(datepart(ms,getdate())*10000)

set@tempStr=convert(varchar(18),@tempRand)

set@cardId=substring(@tempStr,3,4)++substring(@tempStr,7,4)++substring(@tempStr,11,4)+

+substring(@tempStr,15,4)+--+.................................

go

4.实现开户的存储过程:用户开户需要相关的一些信息:开户姓名、开户身份证号、号码、开户金额、默认开户金额为,开户类型默认为活期,地址默认为不详等

该存储过程需要调用生成卡号的存储过程来生成卡号,生成的随机卡号需要先在银行卡信息表中查询一次,如果已存在了,那么需要再次运行该存储过程,直到没有重复的卡号为止

实现销户的业务操作:该存储过程接收用户的卡号为参数,根据卡号查出该帐户余额,并在屏幕上显示“该帐户余额为:1500.00,正在取出......”,然后分删除该客户的

银行卡信息和帐户信息。由于存在主外键关系,需要删除银行卡信息再删除帐户信息。

显示全部
相似文档