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.hqwc.cn/news/681234.html

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

相关文章

网络相关笔记

IPv4地址 IPv4地址通常以“点分十进制”形式书写,即四个0-255之间的十进制数,各数之间用英文句点(.)分隔,例如:192.0.2.1。总共32位的地址空间可以表示大约42亿个不同的地址。 IPv4地址结构包括&#xff…

【python数据分析基础】—pandas透视表和交叉表

目录 前言一、pivot_table 透视表二、crosstab 交叉表三、实际应用 前言 透视表是excel和其他数据分析软件中一种常见的数据汇总工具。它是根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。 一、pivot_table 透视表 pivot_tabl…

微信公众号随心自定义商城源码系统 带完整的安装代码包以及安装部署教程

传统的微信商城模板化严重,无法满足企业的个性化需求。小编给大家分享一款随心自定义商城源码系统。该系统支持高度自定义,企业可以根据自身需求灵活调整商城页面、功能模块和运营策略,打造独具特色的微信商城。 以下是部分代码示例&#xf…

图片优化?imageView2/2/w/300/h/200

使用?imageView2/2/w/300/h/200在图片后面拼上去会使图片体积变小,加载速度优化; 例: 未使用: https://cdn.dev.scrm.juplus.cn/hzGkmfPH6Yep7nZFmFoo0j8Qf.jpg 使用后: https://cdn.dev.scrm.juplus.cn/hzGkmfPH6Yep7nZFmFo…

UE5材质基础(2)——数学节点篇1

UE5材质基础(2)——数学节点篇1 目录 UE5材质基础(2)——数学节点篇1 Add节点 Append节点 Abs节点 Subtract节点 Multiply节点 Divide节点 Clamp节点 Time节点 Lerp节点 Add节点 快捷键:A鼠标左键 值相加…

58. 【Android教程】音频录制:MediaRecord

在第 57 节我们使用 MediaPlayer 实现了一个 mp3 播放器,除了播放 Android 还提供了 MediaRecorder 用于录音。Android 设备基本都会有一个麦克风,通过 MediaRecorder 可以打开麦克风进行语音采集,这一节我们就来学习如何在 Android 系统上实…

燃气电力瓶装气行业入户安检小程序开发

我们开发的小区业主入户安检小程序,旨在满足燃气、电力以及其他需要入户安检的行业需求。该程序支持自定义安检项目,实现线下实地安检与线上数据保存的完美结合。在安检过程中,我们可以拍照或录像,以确保安检的透明性和可追溯性&a…

CTF 竞赛训练题

1.N种方法解决 发现文件头后面有个base64 解码出来提示是png了,那把它解码之后的数据转成图片: 扫码得到flag。 2.大白 根据提示和大佬的wp得知是修改了文件的高度,因此还原文件高度就行。 这里把1图片用winhex打开: 这里放一下…

latex algorithm2e 库学习总结

案例1 \documentclass{article}\usepackage{xeCJK} \usepackage[]{algorithm2e} %\usepackage{ctex} % 中文包\begin{document}\renewcommand{\algorithmcfname}{算法} % 把标题设置为“算法” \begin{algorithm…

自动镭雕机价格是多少?

自动镭雕机是一种高精度、高效率的激光雕刻设备,广泛应用于手机、电脑、玻璃等产品表面的图案雕刻。那么,自动镭雕机多少钱一台呢?本文将为您详细解析各种因素对自动镭雕机价格的影响。 一、影响自动镭雕机价格的因素 1. 品牌和质量 自动镭…

【优选算法】——Leetcode——LCR 179. 查找总价格为目标值的两个商品

1.题目 2. 解法⼀(暴⼒解法,会超时): 1.算法思路: 2.图解 3. 代码实现 3. 解法⼆(双指针-对撞指针): 1.算法思路: 2.图解 3.代码实现 1.C语言 2…

Vuex 和 Pinia 两个状态管理模式的区别

Pinia和Vuex一样都是是vue的全局状态管理器。其实Pinia就是Vuex5,只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia。(实际项目中千万不要即用Vuex又用Pinia,不然你会被同事‘’请去喝茶的‘’。 一、安装(常用命令安…