ATM取款机系统

article/2025/8/20 17:43:14

模拟银行实现ATM机取款系统

该系统使用( ( (SQLServer) ) )数据库

功能介绍:

  1. 开户(到银行填写开户申请单)
  2. 取钱
  3. 存钱
  4. 查询余额
  5. 转账

根据需求设计相对应的数据库概念模型
在这里插入图片描述
流程分步详解
@1 创建数据库Bank_db

--创建数据库
CREATE DATABASE Bank_db
ON PRIMARY
(
NAME = 'Bank_db_data',
FILENAME = 'D:\DATA\Bank_db_data.mdf',
SIZE = 5MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%
)
LOG ON
(
NAME = 'Bank_db_log',
FILENAME = 'D:\DATA\Bank_db_log.ldf',
SIZE = 1MB,
FILEGROWTH = 1MB
)

@@ 2 根据E-R图建表
注意:身份证号不能重复,联系电话11位,所有涉及到的金额不能低于1元,默认密码6个8

--创建用户信息表
USE Bank_db
CREATE TABLE userInfo
(
userName varchar(32),
userCard varchar(32) UNIQUE,
userPhone varchar(11),
userAddress varchar(128)
)
--创建交易信息表
USE Bank_db
CREATE TABLE tradeInfo
(
tradeData varchar(16),
tradeMark varchar(32),
tradeType varchar(16),
tradeMoney float CHECK(tradeMoney>1)
)
--创建银行卡信息表
USE Bank_db
CREATE TABLE bankInfo
(
bankType varchar(32),
bankData varchar(32),
bankMoney float CHECK(bankMoney>1),
bankBalance float CHECK(bankBalance>1),
bankPassword varchar(16) DEFAULT '888888',
bankLose varchar(16)
)

@@@3 插入测试数据:三张表都要添加数据,并且张三账户的余额不能低于2000
客户信息表:
‘张三’,‘123456789012345’,‘01067898978’,‘北京海淀’
‘李四’,‘321245678912345678’,‘04784444333’
‘王五’,‘321245678912345679’,‘13566669999’,‘河南信阳’
‘李七’,‘321245678912345677’,‘13577778888’,‘河南洛阳’

--插入用户信息表
INSERT INTO userInfo VALUES('张三','123456789012345','01067898978','北京海淀')
INSERT INTO userInfo VALUES('李四','321245678912345678','04784444333','')
INSERT INTO userInfo VALUES('王五','321245678912345679','13566669999','河南信阳')
INSERT INTO userInfo VALUES('李七','321245678912345677','13577778888','河南洛阳')--插入交易信息表
INSERT INTO tradeInfo VALUES('2019/7/3/7','1010111112121134','转账',1000)
INSERT INTO tradeInfo VALUES('2019/7/4/9','1010 3576 1212 1134','存款',2000)
INSERT INTO tradeInfo VALUES('2019/7/5/8','987653321','存款',5000)
INSERT INTO tradeInfo VALUES('2019/7/7/3','987655321','取款',3000)--插入银行卡信息表
INSERT INTO bankInfo VALUES('转账','2019/7/3/7',1000,30000,'','否')
INSERT INTO bankInfo VALUES('存款','2019/7/4/9',2000,32000,'','否')
INSERT INTO bankInfo VALUES('存款','2019/7/5/8',5000,37000,'','否')
INSERT INTO bankInfo VALUES('取款','2019/7/7/3',3000,34000,'','否')

@@@@ 4 常规业务模拟
1**. 修改密码**
张三(卡号为1010111112121134)修改银行卡密码为123456
2. 银行卡挂失
李四(卡号为1010 3576 1212 1134)因银行卡丢失,申请挂失
3. 查询余额3000~6000之间的定期卡号,显示该卡相关信息
4. 查询本月交易金额最高的卡号
5. 查询挂失帐户信息

--把张三的密码修改为123456
SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010111112121134'
UPDATE  bankInfo SET bankPassword = '123456' WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010111112121134')
--查询修改后张三的密码
SELECT bankPassword FROM bankInfo WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010111112121134')--李四的银行卡修改为挂失
SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134'
UPDATE  bankInfo SET bankLose = '挂失' WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134')
--查询李四的挂失
SELECT bankLose FROM bankInfo WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134')--查询余额3000~6000之间的定期卡号,显示该卡相关信息
SELECT * FROM bankInfo WHERE bankBalance BETWEEN 3000 AND 6000--查询本月交易金额最高的卡号
SELECT TOP 1 tradeMark FROM tradeInfo ORDER BY tradeMoney DESC--查询挂失帐户信息
SELECT * FROM bankInfo WHERE bankLose = '挂失'

@@@@@ 5 索引和视图
**1. 创建视图:**为向客户显示信息友好,查询各表,要求字段全为中文字段名, 3个表对应的视图名称分别为: view_userInfo,view_cardInfo,view_transInfo

--索引和视图
--列的别名(中文字段)
SELECT userName AS '开户名',userCard AS '身份证号', userPhone AS '联系电话', userAddress AS '居住地址'FROM  userInfo
SELECT tradeData AS '交易日期',tradeMark AS '卡号', tradeType AS '交易类型', tradeMoney AS '交易金额'FROM  tradeInfo
SELECT bankType AS '存款类型',bankData AS '开户日期', bankMoney AS '开户金额', bankBalance AS '余额',bankPassword AS '密码', bankLose AS '是否挂失' FROM  bankInfoCREATE VIEW  view_userInfo ON FROM  userInfo
CREATE VIEW  view_cardInfo ON FROM tradeInfo
CREATE VIEW  view_transInfo ON FROM bankInfo

@@@@@@6 T-SQL编程:存取款业务
张三的卡号(1010357612345678)取款900元,李四的卡号(1010357612121134)存款5000元,要求保存交易记录,以便客户查询和银行业务统计。
说明:当存钱或取钱(如300元)时候,会往交易信息表中添加一条交易记录,同时应更新银行卡信息表中的现有余额(如增加或减少300元);

--存取款业务
DECLARE @zmoney float
DECLARE @lmoney floatSELECT @zmoney = tradeMoney FROM tradeInfo WHERE tradeMark = '1010111112121134'
UPDATE tradeInfo SET @zmoney = @zmoney - 900 WHERE tradeMark = '1010111112121134'
PRINT @zmoneySELECT @lmoney = tradeMoney FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134'
UPDATE tradeInfo SET @lmoney = @lmoney + 5000 WHERE tradeMark = '1010 3576 1212 1134'
PRINT @lmoney

所有的步骤都已经展示给大家了@@@

如果有想看整个完整体系的话请看下面展示:

整体流程展示

--创建数据库
CREATE DATABASE Bank_db
ON PRIMARY
(
NAME = 'Bank_db_data',
FILENAME = 'D:\DATA\Bank_db_data.mdf',
SIZE = 5MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%
)
LOG ON
(
NAME = 'Bank_db_log',
FILENAME = 'D:\DATA\Bank_db_log.ldf',
SIZE = 1MB,
FILEGROWTH = 1MB
)
--创建用户信息表
USE Bank_db
CREATE TABLE userInfo
(
userName varchar(32),
userCard varchar(32) UNIQUE,
userPhone varchar(11),
userAddress varchar(128)
)
--创建交易信息表
USE Bank_db
CREATE TABLE tradeInfo
(
tradeData varchar(16),
tradeMark varchar(32),
tradeType varchar(16),
tradeMoney float CHECK(tradeMoney>1)
)
--创建银行卡信息表
USE Bank_db
CREATE TABLE bankInfo
(
bankType varchar(32),
bankData varchar(32),
bankMoney float CHECK(bankMoney>1),
bankBalance float CHECK(bankBalance>1),
bankPassword varchar(16) DEFAULT '888888',
bankLose varchar(16)
)
--插入用户信息表
INSERT INTO userInfo VALUES('张三','123456789012345','01067898978','北京海淀')
INSERT INTO userInfo VALUES('李四','321245678912345678','04784444333','')
INSERT INTO userInfo VALUES('王五','321245678912345679','13566669999','河南信阳')
INSERT INTO userInfo VALUES('李七','321245678912345677','13577778888','河南洛阳')--插入交易信息表
INSERT INTO tradeInfo VALUES('2019/7/3/7','1010111112121134','转账',1000)
INSERT INTO tradeInfo VALUES('2019/7/4/9','1010 3576 1212 1134','存款',2000)
INSERT INTO tradeInfo VALUES('2019/7/5/8','987653321','存款',5000)
INSERT INTO tradeInfo VALUES('2019/7/7/3','987655321','取款',3000)--插入银行卡信息表
INSERT INTO bankInfo VALUES('转账','2019/7/3/7',1000,30000,'','否')
INSERT INTO bankInfo VALUES('存款','2019/7/4/9',2000,32000,'','否')
INSERT INTO bankInfo VALUES('存款','2019/7/5/8',5000,37000,'','否')
INSERT INTO bankInfo VALUES('取款','2019/7/7/3',3000,34000,'','否')--把张三的密码修改为123456
SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010111112121134'
UPDATE  bankInfo SET bankPassword = '123456' WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010111112121134')
--查询修改后张三的密码
SELECT bankPassword FROM bankInfo WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010111112121134')--李四的银行卡修改为挂失
SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134'
UPDATE  bankInfo SET bankLose = '挂失' WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134')
--查询李四的挂失
SELECT bankLose FROM bankInfo WHERE bankType IN(SELECT tradeType FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134')--查询余额3000~6000之间的定期卡号,显示该卡相关信息
SELECT * FROM bankInfo WHERE bankBalance BETWEEN 3000 AND 6000--查询本月交易金额最高的卡号
SELECT TOP 1 tradeMark FROM tradeInfo ORDER BY tradeMoney DESC--查询挂失帐户信息
SELECT * FROM bankInfo WHERE bankLose = '挂失'--索引和视图
--列的别名(中文字段)
SELECT userName AS '开户名',userCard AS '身份证号', userPhone AS '联系电话', userAddress AS '居住地址'FROM  userInfo
SELECT tradeData AS '交易日期',tradeMark AS '卡号', tradeType AS '交易类型', tradeMoney AS '交易金额'FROM  tradeInfo
SELECT bankType AS '存款类型',bankData AS '开户日期', bankMoney AS '开户金额', bankBalance AS '余额',bankPassword AS '密码', bankLose AS '是否挂失' FROM  bankInfoCREATE VIEW  view_userInfo ON FROM  userInfo
CREATE VIEW  view_cardInfo ON FROM tradeInfo
CREATE VIEW  view_transInfo ON FROM bankInfo--存取款业务
DECLARE @zmoney float
DECLARE @lmoney floatSELECT @zmoney = tradeMoney FROM tradeInfo WHERE tradeMark = '1010111112121134'
UPDATE tradeInfo SET @zmoney = @zmoney - 900 WHERE tradeMark = '1010111112121134'
PRINT @zmoneySELECT @lmoney = tradeMoney FROM tradeInfo WHERE tradeMark = '1010 3576 1212 1134'
UPDATE tradeInfo SET @lmoney = @lmoney + 5000 WHERE tradeMark = '1010 3576 1212 1134'
PRINT @lmoney

ATM取款机系统已经做好了!!!


http://chatgpt.dhexx.cn/article/9blILlkR.shtml

相关文章

银行ATM活动图

一、 图形文档 1. 密码验证活动图 2. 取款活动图 3. 存款活动图 4. 转账活动图 5. 查询活动图 6. 改密活动图 7. ATM管理员操作活动图 二、 文字说明 1、密码验证活动图 描述银行主机密码验证的过程,包含的动作有:插卡、提示输入密码、输入密码、密…

银行ATM系统——分析类图及文档

一、图形文档 从不同角度出发,可以得出的分析类图有以下两种: 基于类的责任得出的分析类图 基于用况驱动得出的分析类图 二、 文字说明 1、 类图综述 银行ATM分析类类图主要包括实体类,描述了类与类之间的关系,以及说明类有何…

支付平台--清结算流程详解及对账详解

图为清算对账流程 在第三方支付平台拿到银行(应该走专线)给的对账文件后,会有手动对账和自动对账功能。 手动对账是对自动对账的补充,在自动对账出现问题或者出现差错时再人工介入进行重新对账的操作。 而在很多的情况下&#xf…

数商云采购管理系统支付结算功能详解,实现建筑工程企业采购业务智能化管理

建筑工程行业企业过去受技术、场地等限制,一直采用传统的采购方式,再加上整个行业内部信息相对割裂、采购面临层层传播、中间沟通亦面临多层税费等问题,为建筑工程采购工作增添了不少困难。随着互联网时代的发展,在大数据、云计算…

【支付架构】跨境支付

目录 1 业务介绍 1.1 什么是跨境支付 1.2 跨境支付发展历程 2 技术实现 2.1 业务流程 2.2 交互设计 简单地说,跨境支付指的是两个或两个以上的国家或地区因国际贸易所产生的债券,再借助一定的支付方式与结算工具,实现资金能够跨国…

国际业务结算

国际结算 国际结算(International Settlement):指处于两个不同国家的当事人,(因为商品买卖、服务供应、资金调拨、国际借贷)通过银行办理的两国间货币收付业务。 信用证 信用证是一种有条件的银行付款承诺,是开证行…

支付清结算之账户和账务处理(详解)

本文重点介绍清结算中的账户和账务的处理。正文开始前可复习《支付清结算之基本概念和入门》和《支付清结算之渠道侧处理》,以便理解这里的流程。 目录 一、账户体系 1、资产类账户 2、负债类账户 3、所有者权益类账户 4、损益类账户 5、成本类账户 6、共同…

电商平台资金结算流程是什么样的?

(图源:pexels网站) 在疫情的影响下,越来越多的传统企业开始转向电商,希望通过互联网来拓展业务,开拓新市场。同时,也有越来越多的新兴企业从事电子商务,利用互联网的优势快速发展壮…

支付清结算之账户和账务处理

这是清结算系列的第四篇文章,本文重点介绍清结算中的账户和账务的处理。 请务必阅读这几篇文章以便理解这里的流程。 支付清结算之基本概念和入门支付清结算之渠道侧处理支付清结算之电商侧处理 一、账户体系 在设计清结算系统前,首先需要完成账户体系…

经济法基础(2020年)——第三章 支付结算法律制度

第一节 支付结算概述 支付结算概述 未经中国人民银行批准的非银行金融机构和其他单位不得作为中介机构办理支付结算业务 支付结算工具和原则 传统的人民币非现金支付工具 三票一卡 汇票、本票、支票和银行卡结算方式 汇兑、托收承付和委托收款 原则 恪守信用、履行付款原…

电子支付与结算总结

电子支付与结算总结 第一章 电子支付概述名词解释简答题选择判断题 第二章 支付工具与支付方式名词解释简答题 第三章 网上银行支付名词解释简答题 第四章 电话支付名词解释简答题 第五章 移动支付名词解释简答题讨论题视频 第六章 自助银行支付名词解释简答题讨论题 第七章 跨…

中国支付结算系统发展简史

中国支付结算系统发展史 1949年到今天,中国支付结算系统经历了3个重要的阶段,从无到有,从简单到完善。今天中国的现代支付系统加上各个商业银行内部系统作为基础设计,支撑着第三方支付系统,让我们享受着不需要现金以及…

一张美团外卖的小票看透支付清结算架构!

见字如面,我是军哥! 我很少推荐别人的公众号,因为我能看上的原创公众号并不多,让我主动推荐就更难了。 今天这位朋友叫宇宙,认识有两年了,在支付行业里非常有名气,最近闲着无聊翻了他多篇原创文…

支付 VS 清算 VS 结算

概念 标准定义 支付: 完成付款人向收款人转移可以接受的货币债权的过程,包括交易过程、清算过程和结算过程等三个过程(一个完整的支付过程,清算和结算都属于支付的某个环节);清算: 包含了在收…

第三方支付平台结算流程是什么样的?

在电商发展的初期曾遇到过一个瓶颈,那就是买卖双方对彼此互不信任,互联网市场中的交易是无形的,大家对对方的信息一无所知,买家害怕自己给了钱没收到货,卖家害怕自己给了货没收到钱,由于缺少这种信任&#…

支付结算系统

不同银行之间 以支付的手段达到结算的目的 所有银行在中国人民银行开 人民银行清算账户,在这个账户存款 用于资金清算通过 人民银行支付系统(二代支付系统) / 城商行支付系统 等在银行账户间转账结算 文章目录 清算账户管理系统大额支付系统…

支付清结算介绍

清结算定义 交易 - 交易过程包括了支付产生,确认和发送,特别是交易有关各方身份的确认以及支付工具能力的确认。 清算 - 是收付双方之间交换支付工具或相关支付信息,清讫债权债务关系的过程和方法。支付工具的交换包括了交易撮合,…

支付宝直付通实现账单结算(分账)功能完整Demo

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: 支付宝直付通实现账单结算(分账)功能完整Demo ⏱️ 创作时间&#xff…

支付清结算

作者:bright 链接:https://zhuanlan.zhihu.com/p/22529766 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一、支付清结算概念 一般业务系统 交易和资金分离后的系统 清算和结算为何要分离 除了…

支付清结算体系详解(17)

这篇文章比较详细的介绍了我国支付清算体系,并且详细举例介绍了银联跨行清算与收单清算的清分流程和账务处理逻辑,能帮你彻底掌握银行的清算处理模型和记账方式 一.支付清算体系的简介 支付清算体系是一个国家的金融基础设施,或说公共服务。我…