JAVA版本的ATM编程问题记录

前段时间用C语言写了个银行ATM系统,还写了一篇文章记录了一些,C语言的ATM文章。后来又用IDEA写了一个JAVA版本的银行ATM。有人就会问为啥浪费这个时间写ATM呢?🧐其实是我本科代码没学好,所以现在想利用比较熟悉的ATM系统来训练一下代码思维。下面是我用JAVA语言写银行ATM时遇到的一些有意思的问题和知识点,方便我之后学习回顾,便记录了下来。
0519AF4F.png

MVC模式构建项目

学生管理系统的项目结构:
image.png
学习了MVC模式,终于知道了一个完整的项目应该建成什么样子,以前想的是建成一个文件不就好了吗,简简单单的,修改的时候也方便,直到使用了才知道,这样清晰明了的建立一个各个功能各司其职的项目,目的就是为了以后做公司级别的大项目,不仅是和他人协作构建代码会简单,而且自己修改代码的时候也会更加明确的修改。

@Test 不能使用Scanner类输入到控制台

这个ATM项目需要手动输入一些数据,比如用户姓名、密码、电话等信息到控制台上,使用JAVA的Scanner类调用函数的时候,不能正确输入。原来是IDEA的问题,解决方法如下:
1.使用idea,在导航找到help ->Edit Custom VM Options…
image.png
2.弹出的对话框文件中追加

-Deditable.java.test.console=true

image.png
改完之后重启就可以啦。

主键和外键

主键只有两个用途:

  • 唯一的标识一行;
  • 作为一个可以被外键有效引用的对象;

具有外键的表称为子表,具有主键的表称为引用表或副表。外键一旦删除,就会解除主表和从表的关联关系。
image.png
在MySQL添加外键,就是在子表中表名。
一般实际应用中,都不会使用外键,因为约束了表,所以这个ATM项目中,我也没有使用外键(PS:一开始是使用的,后面我删除一些信息的时候,删不了,我就直接不用外键了🤣)。

sql语句中是否存在

优化方法,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了。
业务代码中直接判断是否非空即可。

SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

SQL 查找是否"存在",别再 count 了,很耗费时间的!
(我学hive时遇到的一个问题🤣)还有一个**exists**函数,这个函数利用了所谓的“短路”机制,当exists查询到第一个符合条件的记录时,它就会停止搜索,因为它只需要证明存在一个匹配项即可。
对于如下代码:

select a.key,a.value
from a
where a.key not in (select b.key from b)

not in可能会导致性能问题,特别是查询返回大量结果时,如果使用exists关键字:

select a.key,a.value
from a
where a.key not exists (select b.key from b)

因为exists的短路机制,性能会提高。

prepareStatement接口及resultSet结果集

在JDBC应用中,一般都用prepareStatement(提前编译,避免出现ERROR),而不是Statement。
使用executeQuery()时返回的resultSet结果集,使用while(resultSet.next())循环读取返回的内容。对于返回的内容必须循环遍历读取出列,无法一次性获得一整行。比例查询结果集有如下两种方法:
而executeUpdate()返回其影响的记录的条数,当返回结构大于0,即影响成功。
直接输入相应列的数字:
image.png
输入相应列的列名:
image.png
这个点是在网上搜索了一些文章,才比较了解的,附上文章链接https://blog.csdn.net/u010986080/article/details/51813056

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Web MVC 快速入门

🎥 个人主页:Dikz12🔥个人专栏:Spring学习之路📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 什么是Spring MVC? MVC模式介绍 ​编辑学习Spring MVC…

node.js对数据库mysql的连接与操作(增、删、改、查、五种SQL语法)

前提:先在vscode终端下载安装mysql:npm install mysql -save 步骤总结: (1)建立与数据库的连接 (2)做出请求: 实际上就是操作mysql里的数据。增删改查 insert、delete、updata、select (3)通过回调函数获取结果 一、什么是SQ…

【Kubernetes集群一主二从安装教程】

文章目录 环境准备主机间做信任安装ansible工具 升级内核版本使用elrepo源升级内核查看最新版内核安装最新的内核版本设置系统默认内核设置默认内核为我们刚才升级的内核版本 初始化关闭防火墙关闭selinux关闭swap修改主机名修改hosts文件将桥接的IPv4流量传递到iptables的链配…

nlp课设 - 基于BERT 的情感分类

基于BERT 的情感分类 主要论文: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(双向Transformer 的预训练) 核心技术: Embedding 、Attention --> Transformer 任务简介、拟解决问题…

09 - 数据清洗案例

流程图 kettle 面板图片 操作步骤 1、订阅数据源(kafka consumer) 2、抽取字段并转换key(JSON input) 3、判断img字段是否有值,有的话进行url转base64(JavaScript 代码) // 获取输入字段的值 v…

流量分析利器arkime的学习之路(三)---结合Suricata攻击检测

1、基础 Arkime安装部分参考《流量分析利器arkime的学习之路(一)—安装部署》 在此基础上安装suricata软件并配置。 2、安装suricata yum install suricate 可能依赖的文件包括libyaml,PyYAML,这些可能在之前安装arkime或者其他…

面试二十四、继承多态

一、继承的本质和原理 组合(Composition): 组合是一种"有一个"的关系,表示一个类包含另一个类的对象作为其成员。这意味着一个类的对象包含另一个类的对象作为其一部分。组合关系通常表示强关联,被包含的对象…

Terrain —— Nodes

目录 Convert HeightField —— 转化高度场 HeightField —— 为地形创建初始高度场或遮罩场 HeightField Blur —— 模糊高度场或遮罩场 HeightField Clip —— 限制高度场的值 HeightField Combine Layers —— 将多个volume或VDB合并为一个新的volume或VDB HeightFiel…

我独自升级崛起怎么玩 我独自升级崛起游玩教程分享

《我独自升级:ARISE》是一款预计在 Android、iOS 和 PC 平台推出的动作 RPG,故事内容基于网络漫画版本改编,讲述世界各地出现「次元传送门」,而少部分人类觉醒了可以对抗传送门中怪物的「猎人」能力,玩家可以在故事模式…

【进程等待】是什么 | 为什么 | 怎么办 | wait阻塞等待

目录 进程等待是什么? 为什么要进程等待? 如何进程等待? wait 阻塞等待 进程等待是什么? 进程终止会把进程退出的数据(退出码和退出信号)存放到进程的PCB中保存下来,让父进程进行等待。…

【投稿资讯】区块链会议CCF C -- CoopIS 2024 截止7.10 附录用率

会议名称:CoopIS CCF等级:CCF C类学术会议 类别:人机交互与普适计算 录用率:2023年接收率21% (21 regular 10 work-in-progress papers/100) AREA 5: HUMAN-CENTRIC SECURITY AND PRIVACY IN INFORMATION SYSTEMS Access Con…

Linux网站服务

1.概念:HTML:超级文本编辑语言 网页:使用HTML,PHP,JAVA语言格式书写的文件。 主页:网页中呈现用户的第一个界面。 网站:多个网页组合而成的一台网站服务器。 URL:统一资源定位符,访问网站的地址。 网站架构:LAMP: LinuxApacheMYSQLPHP(系统服务器程序数据管理…

OpenHarmony 实战开发 - 如何在源码中编译复杂应用(4.0-Release)

文档环境 开发环境:Windows 11 编译环境:Ubuntu 22.04 开发板型号:DAYU 200(RK3568) 系统版本:OpenHarmony-4.0-Release 功能简介 在 OpenHarmony 系统中预安装应用的 hap 包会随系统编译打包到镜像中&a…

使用电路仿真软件教学的优势分析

随着科技的飞速发展,电子工程领域对人才的需求与日俱增。为了满足这一需求,教育者们不断探索着更加高效、直观的教学方法。电路仿真软件的出现,为电子工程教学注入了新的活力,它以其独特的优势,成为现代电子工程教育中…

啸叫抑制器采用什么处理芯片?ES56031或PH56031

会议系统或卡拉OK最头疼的就是啸叫了吧,来看看啸叫抑制器采用什么芯片 四通道啸叫抑制器,采用了2个电路板,每个板子处理2路信号,每块电路板有2个卡侬输入插座,2个卡侬输出插座 ES56031S,该啸叫抑制器为4通道…

请大数据把我推荐给正在申请小程序地理位置接口的人

小程序地理位置接口有什么功能? 若提审后被驳回,理由是“当前提审小程序代码包中地理位置相关接口( chooseAddress、getLocation )暂未开通,建议完成接口开通后或移除接口相关内容后再进行后续版本提审”,那么遇到这种情况&#x…

软件可靠度计算

软件的整体可靠度依据:若是单个就是当前部件的可靠度。若是多个部件,就需要多个部件的可靠度相乘。若是多个部件且有相同备份,那么计算公式更加不一样。 计算公式: 部件数:N 部件可靠度均为:R 单个部件的可…

树莓派4b测量光照强度

1.BH1750光照强度连接图 2. BH1750工作原理 BH1750的通讯过程 第1步:发送上电命令。 发送的过程和第2步基本一致,把测量命令(0x10)改成上电命令(0x01)。第2步:发送测量命令。 下面图片上的例子,ADDR引脚是接GND的,发送的测量命令是“连续高分辨率测量(0x10)”。 发送数据…

oc渲染器如何设置调渲染更快?oc云渲染加速助力

OC渲染器是Cinema 4D软件中广泛使用的渲染工具,它利用GPU进行硬件加速渲染,具备强大的计算性能。这使得它能够为产品和动画制作人员提供卓越的渲染质量。此外,OC渲染器还支持云渲染技术,这在需要进行大规模渲染任务时非常有用&…

【商业】SD NAND(贴片式TF卡)性能体验及应用

SD NAND【商业】   外观   NAND与TF卡的区别   雷龙CS SD NAND(贴片式TF卡)性能体验及应用   最后 SD NAND 外观正反示意图 NAND与TF卡的区别 什么是SD NAND?它俗称贴片式T卡,贴片式TF卡,贴片式SD卡,贴片式内存卡&am…