SQL之ATM机业务存储过程

基于java银行ATM管理系统设计(含源文件) 欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 题 目: 银行ATM管理系统 一. 设计目的 银行ATM管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成为一个相当理想的方案。利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于... 阅读详情
#1  SQL之ATM机业务存储过程

 
/*创建帐户表*/

/*ATM机业务!*/
create table bank
(
bid int primary key identity(1000,1),
--流水号
bcid numeric(15,0) default rand()*1000000000000000 unique check(bcid>=100000000000000),
--银行卡号,仅限15位数字,应为系统自动分配
--此处以rand函数取随机值,*1后15个零后可以保证其最大值不会超过15位,check约束为14个零
--确保其最小值为15位,加unique唯一约束防止随机数取到重复值
bname varchar(10),
--户主名
bpassword numeric(6,0),
--密码,仅限6位数字
bmoney money
--帐户余额
)
--select * from bank

--drop table bank
insert into bank (bname,bpassword,bmoney) values ('李仕翰',111111,1000000)
insert into bank (bname,bpassword,bmoney) values ('杜刚',222222,1)
insert into bank (bname,bpassword,bmoney) values ('张俊',333333,7551)
insert into bank (bname,bpassword,bmoney) values ('王黄',444444,80000)
insert into bank (bname,bpassword,bmoney) values ('李军',555555,756)
insert into bank (bname,bpassword,bmoney) values ('周鲲鹏',666666,890)
--此处插入有可能被check约束报错,主要是bcid取随机数有可能取值不够15位,重复执行即可


/*开户*/
create proc padd @name varchar(10),@pass numeric(6,0),@money money
--@name,@pass,@money参数1帐户名,参数2开户密码,参数3开户存款
as
begin
 if len(ltrim(rtrim(@name)))=0
 begin
 print '你有名字没啊?'
 return
 end
 --防止用户名为空或空格
 if @pass<100000 or @pass>999999

 begin
 print '请输入6位密码,就是你左手手指头数再加一个,谢谢'
 return
 end
 if(@money<10)

 begin
 print '大哥,有10块钱没?开户最少要10块钱'
 return
 end

 insert into bank select rand()*1000000000000000,@name,@pass,@money
 --插入新记录,即开户
 if @@rowcount<>1

 begin
 print '出了点点小错误,请重新操作,不好意思啦!'
 return
 --此处如果报错,仍然是随机数取不够位,被check约束阻止的原因
 end
 else

 begin
 print '开户成功啦!'
 end
end

exec padd '张伟',777777,10
--参数1帐户名,参数2开户密码,参数3开户存款
--drop proc padd

/*存款*/

create proc plus @cid numeric(15,0),@pass numeric(6,0),@money money
--参数1卡号,ATM机读卡时应该是读取其卡号,参数2密码,参数3为存款额
as
begin
 if convert(int,@money)%100<>0 or @money=0
 begin
 print '本自动存款机只接受面额为100元大团结!'
 return
 end
 --对100取模,保证存款额可被100整除,需要convert强制转换为int型
 update bank set bmoney=bmoney+@money where bcid=@cid and bpassword=@pass

 if @@rowcount<>1
 --如影响行数不是1行,则可能出错,包括密码有误的情况
 begin
 print '您的密码有误!或者您的银行卡存在问题,请重新输入或者联系发卡银行'
 return
 end
 else
 begin
 print '存款成功!您刚刚存入了'+convert(varchar,@money)+',谢谢送钱啦!'
 --@money为money型,如连接字符串则需要convert转换为varchar
 end
end

declare @t numeric(15,0)
set @t=(select bcid from bank where bid=1001)
--以上了两个语句可以不如此执行,但需要查出该用户的bcid随机值,
--弟兄们各自建表时,此值应该各不一样,所以加上以上两句便于调试,主要是将随机值先赋值给变量,以下题目相同
exec plus @t,222222,0
--drop proc plus

/*查询余额*/
create proc find @cid numeric(15,0),@pass numeric(6,0)
as
begin
 declare @temp int
 set @temp=(select bmoney from bank where (bcid=@cid) and (bpassword=@pass))
 --取帐户的的余额值赋给@temp
 if @@rowcount<>1
 begin
 print '您的密码有误!或者您的银行卡存在问题,请重新输入或者联系发卡银行'
 return
 end
 print '您的余额还有'+convert(varchar,@temp)
 --强制转换为varchar用于连接字符串
end

declare @t numeric(15,0)
set @t=(select bcid from bank where bid=1002)
--以上了两个语句可以不如此执行,但需要查出该用户的bcid随机值,
--弟兄们各自建表时,此值应该各不一样,所以加上以上两句便于调试,主要是将随机值先赋值给变量,以下题目相同
exec find @t,333333
--drop proc find

/*修改密码*/

create proc change @cid numeric(15,0),@pass numeric(6,0),@newpass numeric(6,0)
--参数1卡号参数2原密码参数3新密码
as
begin
 if @newpass<100000 or @newpass>999999

 begin
 print '请输入6位密码,就是你左手手指头数再加一个,谢谢'
 return
 end

 update bank set bpassword=@newpass where (bcid=@cid) and (bpassword=@pass)
 --修改其密码
 if @@rowcount<>1
 --验证原密码是否有误在此处执行有误则update影响行数应为0行
 begin
 print '您的原密码有误!或者您的银行卡存在问题,请重新输入或者联系发卡银行'
 return
 end
 else
 begin
 print '您的密码已经被你改啦!'
 end
end
declare @t numeric(15,0)
set @t=(select bcid from bank where bid=1004)
--以上了两个语句可以不如此执行,但需要查出该用户的bcid随机值,
--弟兄们各自建表时,此值应该各不一样,所以加上以上两句便于调试,主要是将随机值先赋值给变量,以下题目相同
exec change @t,555555,787878
--drop proc change

/*取款*/
create proc dec @cid numeric(15,0),@pass numeric(6,0),@money money
as
begin
 if convert(int,@money)%50<>0 or @money=0
 --对50取模,保证取款额为50的整数倍(也会为100的整数倍)
 begin
 print '本自动取款机只接受面额为50元或100元的人民币呀!'
 return
 end
 declare @temp money
 set @temp=(select bmoney from bank where (bcid=@cid) and (bpassword=@pass))
 if (@temp-@money)<0
 --如余额小于取款额,则余额不足
 begin
 print '您的余额不够啦!!!'
 return
 end
 update bank set bmoney=bmoney-@money where bcid=@cid and bpassword=@pass
 --将余额减去取款额度,更新
 if @@rowcount<>1
 begin
 print '您的密码有误!或者您的银行卡存在问题,请重新输入或者联系发卡银行'
 return
 end
 else
 begin
 print '取款成功!您刚刚取出了'+convert(varchar,@money)+',请赶紧拿卡,要不然我就吃了!'
 end
end

declare @t numeric(15,0)
set @t=(select bcid from bank where bid=1006)
--以上了两个语句可以不如此执行,但需要查出该用户的bcid随机值,
--弟兄们各自建表时,此值应该各不一样,所以加上以上两句便于调试,主要是将随机值先赋值给变量,以下题目相同
exec dec @t,444444,50000

/*销户*/

create proc pdel @cid numeric(15,0),@pass numeric(6,0)
--@name,@pass,@money
as
begin

 if @pass<100000 or @pass>999999

 begin
 print '请输入6位密码,就是你左手手指头数再加一个,谢谢'
 return
 end

 delete from bank where (bcid=@cid) and (bpassword=@pass)
 --删除该用户记录,即销户
 if @@rowcount<>1

 begin
 print '出了点点小错误,请重新操作,不好意思啦!'
 return
 end
 else

 begin
 print '您已经和我们银行没啥关系了!'
 end
end

declare @t numeric(15,0)
set @t=(select bcid from bank where bid=1005)
--以上了两个语句可以不如此执行,但需要查出该用户的bcid随机值,
--弟兄们各自建表时,此值应该各不一样,所以加上以上两句便于调试,主要是将随机值先赋值给变量,以下题目相同
exec pdel @t,666666
 
 
ATM机简单版与数据库交互项目实战 在当今数字化时代,自动取款机(ATM)已成为日常生活中不可或缺的组成部分,它不仅提供便利的金融服务,同时也推动了银行业务的发展和创新。本章节旨在为读者提供一个关于ATM机的基础性介绍,涵盖其定义、工作原理以及在现代金融体系中的作用。ATM(Automated Teller Machine)是一种无人银行服务站,它允许用户通过磁条卡或芯片卡进行交易,这些交易包括查询账户余额、存款、取款、转账以及支付账单等。 阅读详情

相关推荐

图形界面的Java ATM机模拟程序项目实战

本文还有配套的精品资源,点击获取 简介:这个Java项目提供了一个ATM机操作的模拟体验,涵盖了Java编程、图形用户界面设计、数据库连接和操作等多个关键IT知识点。通过实现核心业务逻辑、创建直观的GUI和执行数据库挂库操作,学习者可以深入理解Java在实际应用中的强大能力,并了解银行系统的基本运作原理。 1. Java编程语言在ATM模拟程序中的应用 随着...

weixin_35370061的博客 753

ATM银行转账系统之数据库存储过程学习

<br />           在网上下了一个关于ATM银行转账系统,里面用到了大量的存储过程,觉得挺好的,对于学习存储过程有很大的帮助!把整个代码粘贴下来!以供以后写存储过程时参考。/*银行取款机数据库*/ use master go if exists(select * from sysdatabases where name='bankDB') drop database bankDB go create database bankDB --建立数据库bankDB go use ba

Joetao的专栏 5175

模拟ATM机的文件读取存取款操作练习

简介:模拟ATM机存取款项目是一个旨在帮助开发者理解银行系统运作和文件操作的编程练习。练习中,开发者将学习如何使用编程语言进行文件读写、管理账户信息、处理存取款操作、设置交易额度、编写异常处理逻辑、设计用户界面、考虑系统安全性,并进行测试。这些技能将加深对账户管理系统工作原理的理解,并提升软件工程实践能力。

weixin_31938351的博客 983

使用SQL SERVER存储过程实现银行转账业务

在银行金融系统中,我们常常都要实现银行转账这样的业务操作,而这种金融系统并发性相当高,需要考虑的如何提高性能和保证安全性等相关的问题。使用存储过程来实现银行转账是一个很好的选择。SQL SERVER数据库中的存储过程相对于应用程序中来操作Transact-SQL语言的优缺点:优点: 1.              存储过程已在服务器注册,预编译,存储过程预先编译好放在数据库内,减少编译

2845

SQL SERVER 版ATM银行操作系统

SQL SERVER 版ATM银行操作系统

Mysql银行ATM取款机系统源码

Mysql银行ATM取款机系统源码,个人感觉还是Oracle数据库比较靠谱

SQL之ATM机实例

/*创建帐户表*/    /*ATM机业务!*/  create table bank  (  bid int primary key identity(1000,1),  --流水号  bcid numeric(15,0) default rand()*1000000000000000 unique check(bcid>=100000000000000),   --银行卡号,仅限15位数字,应

风情路96号 1642

Java+MySQL 模拟ATM银行取款机

学习Java之后为了巩固Java基础,结合MySQL数据库编写的一个重Java 模拟ATM存取款的程序。代码比较简单,但是是本人IT生涯第一个小项目,对于刚开始学习Java的学员应该很有帮助。

课程设计:基于SQL Server的银行ATM 存取款机系统设计与实现

一、项目背景 1、项目任务 使用PowerDesigner 完成数据库设计 创建数据库、创建表、创建约束 使用触发器和插入测试数据 模拟常规业务、创建视图 使用存储过程实现业务处理 利用事务实现较复杂的数据更新 2、项目技能目标 使用PowerDesigner 完成数据库概念模型和数据库物理模型设计。 使用 T-SQL 语句创建数据库、表和各种约束。 使用 T-SQL 语句编程实现常见业务。 使用触发器实现多表之间的级联更新。 使用事务和存储过程封装业务逻辑。 使用视图简化复杂的数据查询。 使用游标技

My_daily_life的博客 1万+

用STM32F407做个USB声卡:从CubeMX配置到播放录音全功能实战(附源码)

本文详细介绍了如何使用STM32F407开发板实现USB音频设备的全功能实战,包括CubeMX配置、硬件连接、音频流处理和性能优化。通过双缓冲DMA机制和音频数据处理流程,开发者可以构建高质量的USB声卡系统,适用于录音和播放场景。附源码,助力快速上手STM32音频开发。

weixin_30301449的博客 516

Cube生成定时器2触发双ADC同步采集并用DMA传输

前言 用cube生成一个用定时器触发ADC1,ADC2同步采集的程序,单片机选择的是STM32L476RGT6,用定时器2进行ADC采集触发,更改定时器2的定时周期便可以更改ADC的采样周期,ADC1和ADC2使用同步规则模式,并用DMA进行数据的传输。 STM32的ADC采样完成总共需要的时间是 ADC完成采样时间=采样周期+12个转换周期 举个例子,假如ADC的时钟是15MHz,采样周期是3个周期,3个采样周期加上12个转换周期,一共是15个周期,因为时钟是15MHz,所以完成一次ADC转换总共需要的时

一行代码的博客 4513

使用T-SQL实现ATM存取款机系统

使用T-SQL编程ATM存取款机系统 主要使用: 使用T-SQL进行创建数据库 通过基础增删改查进行基础业务 使用变量进行判断或赋值(全局变量和局部变量) 使用类型转换Convert和Cast 使用IF语句进行判断 使用表连接(表联查进行信息展示) 使用子查询(进行Where条件的筛选) 使用Exists语句(进行判断密码账户是否匹配) 使用视图防止未经允许的用户访问敏感数据 使用事务绑定多个SQL语句,要么...

m0_56245036的博客 2945

HarmonyOS逆向降级实战:从鸿蒙2.0回退至EMUI 10.1的完整路径解析

本文详细解析了从HarmonyOS 2.0逆向降级至EMUI 10.1的完整操作流程,涵盖必备工具准备、数据备份策略及阶梯式降级步骤。针对华为手机用户遇到的兼容性问题,提供HiSuite和HiSuite Proxy工具的具体使用方法,并分享降级失败应急处理与系统优化技巧,帮助用户安全高效完成系统回退。

weixin_27741699的博客 1887

基于Python和SQL server2012语言实现基本的银行业务系统

基于Python语言和SQL server2012实现基本的银行业务系统 其中有错误的地方望大佬指正,谢谢! 目录 第一章 需求分析 4 1.1 用户及需求分析 4 1.1.1 系统目标及设计目的 4 1.1.2 系统框架 4 1.2 系统需求及其基本功能 5 1.2.1 系统需求 5 1.2.2 基本功能 5 1.3 程序设计思路 8 1.3.1 登录窗口设计 8 1.3.2 管理窗口界面设计 9 1.3.3 操作用户窗口界面设计 9 1.3.4 ATM机窗口界面设计 9 第二章 系统功能的说明和设计 9

weixin_44050973的博客 1972

phpstudy自定义安装mysql8.3并启动

下载压缩包文件然后按下面的图片一步一步操作选择版本,选择第一个压缩包文件,下载下载完成后,解压到phpstudy环境目录下

互联网碎碎念 2801

群晖Hyper Backup还原实战:加密与非加密备份的完整操作指南

本文详细介绍了群晖Hyper Backup在加密与非加密备份场景下的完整还原操作指南。通过实战案例和高级技巧,帮助用户应对硬盘故障或系统崩溃时的数据恢复挑战,特别是加密备份恢复中的关键节点和常见陷阱。

weixin_29323365的博客 439

java程序模拟atm机_Java简单模拟ATM机

【实例简介】java语言编写的简单模拟ATM机功能案例,有美观的UI界面,和比较完善的功能模块,业务分层,编码格式规范。可供初学者参考。 另在db文件夹中附带两种数据库(mysql、sqlserver)表结构。项目目录结构:.classpath.project.settingsorg.eclipse.jdt.core.prefsbinmysql-connector-java-5.1.18-bin....

weixin_39809540的博客 490

PCL Super4PCS算法实现点云粗配准(版本一)【2025最新版】

Win11系统下实现[Super4PCS: Fast Global Pointcloud Registration via Smart Indexing一文中的配准算法。

点云侠的博客 3378

银行ATM机取款系统(MYSQL)

银行业务处理 每个用户可以开设多个银行卡账户 每个银行卡账户可以有多笔交易 设计符合第三范式的数据库结构 根据银行业务绘制E-R图 绘制数据库模型图 使用三大范式规范数据库结构 实现“ATM取款机系统”的相关业务

haolan53的博客 1716

livox雷达斜装修改

指的是,使用外部的陀螺仪的话,雷达到外部陀螺仪的转换,而mid360的陀螺仪是内置在360里面的,且方向和点云方向是一致的,所以不能通过修改此处去改变陀螺仪方向。同时livox_ros_driver2中的MID360_config.json里面的。这里面的外参,只能改变点云相对陀螺仪的位姿,而不能将陀螺仪映射到你期望的倾斜角度。fast_lio中的mid360.yaml中的外参。

z1872385的博客 2708

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

黑马程序员之项目开发学习笔记:ATM取款机系统数据库设计

某银行拟开发一套ATM取款机系统,实现如下功能: 1. 开户(到银行填写开户申请单, 卡号自动生成); 2. 取钱 3. 存钱 4. 查询余额 5. 转账(如使用一卡通代缴手机话费,个人股票交易等) 现要求对"ATM柜员机系统" 进行数据库的设计并实现,数据库保存在D:\bank目录下,文件增长率为15%。 用户信息表:userInfo

blog_优快云_xutingzhou 7689

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ATM机项目实战——准备

ATM机项目通常具有以下功能:1. 取款:允许用户通过输入PIN码和选择取款金额从自己的银行账户中提取现金。2. 存款:用户可以将现金或支票存入他们的银行账户中。3. 余额查询:允许用户查看他们的银行账户余额。4. 转账:允许用户在其银行账户之间进行资金转移。5. 账单支付:用户可以使用ATM机支付水费、电费、电话费等账单。6. 账户管理:用户可以更改他们的PIN码、更新个人信息、请求新的银行卡等。7. 显示交易历史:用户可以查看和打印最近的交易记录。

m0_64691053的博客 330

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ATM柜员机的设计与实现

                                     ATM柜员机的设计与实现   项目背景   ATM柜员机系统在银行业务流程当中起着承上启下的作用,其重要性不言而喻。但是,目前许多银行在具体的一些业务流程处理过程中仍然使用手工操作的方式来实施,费时、费力,效率低下,而且无法达到理想的效果。然而 ATM自动取款功能不带为银行节省大量财力人力,还为广大城市用户带来...

__tian__的博客 1万+

ATM取款机系统

模拟银行实现ATM机取款系统 该系统使用( ( (SQLServer) ) )数据库 功能介绍: 开户(到银行填写开户申请单) 取钱 存钱 查询余额 转账 根据需求设计相对应的数据库概念模型 流程分步详解 @1 创建数据库Bank_db --创建数据库 CREATE DATABASE Bank_db ON PRIMARY ( NAME = 'Bank_db_data', FILENAME ...

weixin_45743799的博客 1705

第9章 综合实战-银行ATM存取款机系统

在本章中需要掌握MySQL的用户管理,会使用SQL语句操作数据,会使用事物摆正数据的完整性,会创建并使用视图,会创建并使用索引,掌握数据库的备份和恢复,本章要求完成‘银行ATM存取款机系统’的设计与开发。

qq_52299902的博客 2469
上一篇: Windows 在 ATM 领域的优势与比较
下一篇: 路过帮我点点 积点分好下载 谢谢!
manplus
博客等级 码龄22年 6粉丝 160原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值