项目:银行ATM存取款机系统
项目需求:
· 需求1:数据库设计
· 需求2:建库、建表、建约束
· 需求3:创建触发器实现检查约束
· 需求4:插入测试数据
· 需求5:模拟常规业务
· 需求6:利用视图实现较复杂的数据查询
· 需求7:使用存储过程实现业务处理
· 需求8:利用事务实现较复杂的数据更新
【练习1】数据库设计:使用PowerDesigner进行数据库设计
客户信息表结构(UserInfo)

银行卡信息表结构(CardInfo)

· 交易信息表结构 (TradeInfo)

存款类型表结构(Deposit)

【练习2】使用SQL语句建库建表建约束
· 需求说明
· 使用SQL语言创建数据库BankDB
· 使用SQL语言创建表并设置约束(非空约束、主外键约束,默认约束,唯一约束)
· 存款类型表
· 客户信息表
· 银行卡信息表
· 交易信息表
【练习3】使用SQL创建触发器,实现数据验证
1. 为CardInfo表添加insert触发器,要求openMoney、balance列的值必须大于等于1,要求pass列的长度必须等于6
2. 为TradeInfo表添加insert触发器,要求transMoney列的值必须大于1,transType的值必须是"存入"或"支取"
【练习4】执行"测试数据.sql"文件中的代码来添加测试数据
说明:如果插入数据出错,请检查创建的表,添加的触发器是否有问题,
【练习5】常规业务
· 升级银行卡密码
· 编写SQL语句,将密码升级为md5编码
· 修改银行卡密码
· 编写修改银行卡密码的SQL语句,根据卡号和密码为条件,修改密码(修改后的密码为MD5编码)
· 办理银行卡挂失
· 根据卡号修改银行卡挂失状态
· 统计银行资金流通余额和盈利结算
· 使用SQL编程计算银行资金流通余额=总存入金额-总支取金额
· 使用SQL编程盈利结算=总支取金额 * 0.008 – 总存入金额 * 0.003
· 查询本周开户的卡号,显示该卡相关信息
· 编写SQL语句查询记录
· 查询本月交易金额最高的卡号
· 编写SQL语句查询记录
· 交易金额为交易信息表中交易金额总和
· 查询挂失账号的客户信息
· 根据银行卡中挂失状态查询客户信息
· 使用子查询或关联查询
· 催款提醒业务
· 查询账户余额少于200元的客户信息
· 使用子查询IN 或内联接查询INNER JOIN
【练习6】利用视图查询数据
· 为客户提供以下2个视图供其查询该客户数据
· 银行卡信息:vw_cardInfo:包含客户信息、银行卡信息
· 银行卡交易信息:vw_tradeInfo:包含客户信息、银行卡信息、存款信息、交易信息
· 调用创建的视图获得查询结果
· 查询、统计本周内没有发生交易的账户信息
· 统计本月"长沙"地区客户在银行卡交易量和交易额。
【练习7】使用存储过程实现业务功能
· 完成取款或存款业务
· 存储过程输入参数:银行卡卡号,操作金额,操作类型(存款,取款)
· 在存储过程中添加交易信息和修改银行卡余额(需要判断操作类型:存款,取款)
· 返回修改后的余额
· 根据指定显示的页数和每页的记录数分页显示交易信息
· 存储过程输入参数:当前页数和每页记录数
【练习7】实现复杂的业务功能
· 需求说明
· 使用事务和存储过程实现转账业务
· 思路分析
· 转账业务包括存款和取款操作。例如A转账给B,业务流程就是A取款的过程加B存款的过程
· 指定的客户取款
· 指定的客户存钱
· 为取钱客户添加交易信息
· 为存钱客户添加交易信息
· 在此存储过程中使用事务实现
【练习8】使用自定义函数
· 产生随机卡号
· 随机卡号规则:由16位数字构成,每4位数字一组,中间用空格隔开
如:1010 3576 1001 1202
· 前8位数字固定的,表示发卡银行识别号(BIN)
前8位是1010 3576
· 以8位随机数替代卡号的后8位数字。使用Rand函数生成随机数转化为字符串后截取后8位(使用decimal(10,8)接收随机数)
· 定义自定义函数来生成随机卡号,无参数,返回生成的卡号(char(19))
· 编写SQL语句添加银行卡信息,在添加的SQL语句中调用生成卡号的自定义函数
【练习9】实现开户的存储过程
存储过程要求
输入参数:客户姓名,身份证号码,联系电话、存款类型,开户金额
输出参数:卡号
步骤:
1. 添加客户信息,并使用@@last_index_id获取添加客户的编号
2. 通过随机数生成卡号,如果卡号在银行卡表中重复,则重新生成卡号直到没有重复的卡号
3. 添加银行卡信息
本文档详细介绍了银行ATM系统的开发流程,包括数据库设计、表结构创建、触发器应用、视图与存储过程的编写等内容。通过具体案例演示了如何实现银行业务逻辑,如密码升级、交易统计等。
2416

被折叠的 条评论
为什么被折叠?



