c语言编写atm取款功能_mysql数据库ATM项目需求

本文档详细介绍了银行ATM系统的开发流程,包括数据库设计、表结构创建、触发器应用、视图与存储过程的编写等内容。通过具体案例演示了如何实现银行业务逻辑,如密码升级、交易统计等。

项目:银行ATM存取款机系统

项目需求:

· 需求1:数据库设计

· 需求2:建库、建表、建约束

· 需求3:创建触发器实现检查约束

· 需求4:插入测试数据

· 需求5:模拟常规业务

· 需求6:利用视图实现较复杂的数据查询

· 需求7:使用存储过程实现业务处理

· 需求8:利用事务实现较复杂的数据更新

【练习1】数据库设计:使用PowerDesigner进行数据库设计

客户信息表结构(UserInfo)

616f27a7d6e30c3aa0a04cbbeaebd252.png

银行卡信息表结构(CardInfo)

04ce510c395518d5b8f5374e56c0ba63.png

· 交易信息表结构 (TradeInfo)

eddeeca18f444b684c07828ad4b17265.png

存款类型表结构(Deposit)

75bab778fb845d5b1b3db5c159d03a37.png

【练习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. 添加银行卡信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值