- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章项目讲述
项目案例:
银行ATM存取款机系统
第八章
训练的技能点
使用MySQL语句创建数据库和表结构
使用MySQL语句编程实现用户业务
使用事务和存储过程封装业务逻辑
使用视图简化复杂的数据查询
2/53
任务描述
系统功能概述
3/53
系统概述
开户
填写开户申请单自动开通账户
存取款
查询余额
转账
系统开发步骤
问题分析:整体开发思路2-1
明确需求
数据库设计
编码实现功能
测试
4/53
问题分析:整体开发思路2-2
银行业务处理
每个用户可以开设多个银行卡账户
每个银行卡账户可以有多笔交易
5/53
难点分析2:理解业务
ATM取款业务
卡号构成
假设某行由16位数字构成,每4位数字一组,中间用空格隔开
如:1010 3576 1001 1202
前8位数字固定的,表示发卡银行识别号(BIN)
前8位是1010 3576
后8位中前7位是开户顺序号,后1位是校验位
开户顺序号从1开始,每开一户,该值加一
校验位算法
以8位随机数替代卡号的后8位数字
客户用身份证开设账户
开户金额不得小于1元
存款余额不得小于1元
6/53
难点分析3:理解业务
ATM取款业务
存款
记录交易发生额,增加账户余额
取款
记录交易发生额,减少账户余额
转账
关系到二个账户,总账平衡
转出账户:记录交易转入金额,减少该账户的余额
转入账户:记录交易转出金额(同转入金额),增加该账户余额
7/53
开发计划
用例1:数据库设计,建库、建表 [40分钟]
用例2:插入测试数据 [10分钟]
用例3:利用视图实现较复杂的数据查询 [30分钟]
用例4:使用存储过程实现业务处理 [50分钟]
用例5:利用事务实现较复杂的数据更新 [30分钟]
8/53
用例1:数据库设计5-1
客户信息表结构(UserInfo)
9/53
列名称
数据
类型
说明
customerID
int
客户编号
自动编号(标识列),从1开始,主键
customerName
varchar
开户名
必填
PID
varchar
身份证号
必填
telephone
varchar
联系电话
必填 手机号11位
address
varchar
居住地址
可选输入
列名称
数据
类型
说明
cardID
char
卡号
必填,主键,银行的卡号规则和电话号码一样,一般前8位代表特殊含义,如某总行某支行等。假定该行要求其营业厅的卡号格式为:1010 3576 xxxx xxxx。每4位号码后有空格,卡号一般是随机产生
curID
varchar
货币种类
外键,必填,默认为RMB
savingType
varchar
存款类型
必填,
openDate
datetime
开户日期
必填,默认为系统当前日期
openMoney
Decimal
开户金额
必填,
balance
decimal
余额
必填,
password
varchar
密码
必填,6位数字,开户时默认为6个“8”
IsReportLoss
bit
是否挂失
必填,是/否值,默认为“否”
customerID
int
客户编号
外键,必填
用例1:数据库设计5-2
银行卡信息表结构(CardInfo)
10/53
用例1:数据库设计5-3
交易信息表结构 (TradeInfo)
11/53
字段名称
数据类型
说明
transDate
datetime
交易日期
必填,默认为系统当前日期
cardID
varchar
卡号
外键,必填
transType
int
交易类型
必填
transMoney
decimal
交易金额
必填,大于0
remark
varchar
备注
可选输入,其他说明
用例1:建库、建表5-5
需求说明
使用MySQL语言创建数据库BankDB
使用MySQL语言创建表
客户信息表
银行卡信息表
交易信息表
12/53
用例2:插入测试数据4-1
需求说明
使用MySQL语言向每个表中插入至少5条记录
思路分析
先增加主表的记录,后增加子表的记录
难点提示
插入数据表的先后顺序
插入客户记录时,先要查询
13/53
用例2:插入测试数据4-2
张三和李四开户:
14/53
SET NOCOUNT ON --不显示受影响的条数信息
INSERT INTO userInfo(customerName,PID,telephone,address )
VALUES(张三,123456789012345,010北京海淀)
INSERT INTO cardInfo(cardID,savingType,openMoney
,balance,customerID) VALUES(1010 3576 1234 5678, 活期,1000,1000,1)
I
文档评论(0)