Java基础课程设计-模拟ATM银行管理系统《控制台版本》

 博主介绍公司项目主程、全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计

🍅文末获取源码联系🍅

🍅CSDN官方推荐10W+JAVA技术人文章发布打卡社区🍅

前言介绍:

最近很多同学找我帮忙做一些课程设计或Web前端大作业、其中控制台项目应该是初学者必须经历的一个过程、作为java初学者这个控制台版本的模拟ATM银行管理系统十分合适、用到的技术也是最简单的JavaList集合、变量的声明、对象的创建、一些基本的while语句、switch语句、循环遍历等基础语法。一个最基础版本的控制台模拟ATM银行管理系统也就是CRUD功能、直接上完整代码

创建抽象类Card类

abstract class Card {int cardId;public Card() {super();}public Card(int cardId) {super();this.cardId = cardId;}public abstract String getCardId();public abstract void setCardId(int cardId);}

 创建普通银行类继承Card

public class CommonCard extends Card{public CommonCard() {super();}public CommonCard(int cardId) {super();this.cardId = cardId;}@Overridepublic String getCardId() {return "普通银行卡卡号为:"+cardId;}@Overridepublic void setCardId(int cardId) {this.cardId = cardId;}}

创建普通信用卡继承Card

package com.railway.modules.base.test;
public class CreditCard extends Card{public CreditCard() {super();}public CreditCard(int cardId) {super(cardId);}@Overridepublic String getCardId() {return "信用卡卡号为:"+cardId;}@Overridepublic void setCardId(int cardId) {this.cardId = cardId;}
}

创建普通医保卡继承Card

package com.railway.modules.base.test;
public class MedicalInsuranceCard extends Card{public MedicalInsuranceCard() {super();}public MedicalInsuranceCard(int cardId) {super(cardId);}@Overridepublic String getCardId() {return "医保卡卡号为:"+cardId;}@Overridepublic void setCardId(int cardId) {this.cardId = cardId;}}

ATM主要方法业务类逻辑实现

package com.railway.modules.base.test;
import java.util.Scanner;
public class ATM {Scanner input = new Scanner(System.in);private User[] user=new User[100];User atm = new User();private User usr;private int accountId = 1;private Card card;public void Select() {while(true) {System.out.println("=======ATM管理系统=======");System.out.print("1.开户\n2.登录\n3.取款\n4.存款\n5.余额查询\n6.修改密码\n7.查看用户信息\n8.退出登录\n9.退出系统\n请选择需要选择的项目:");switch(input.nextInt()) {case 1:setAccount();	//开户break;case 2:usr=userLogin();	//登录break;case 3:drawMoney();	//取款break;case 4:depositMoney();	//存款break;case 5:showBalance();	//余额查询break;case 6:revisePassword();	//修改密码break;case 7:lookAccount();	//查看用户信息break;case 8:cancel();//退出登录break;case 9:System.out.println("=======================");System.out.println("欢迎下次登录该系统!");	//退出系统System.exit(0);break;default:System.out.println("=======================");System.out.println("输入错误!请重新输入!");break;}}}public void setAccount(){	//开户if (usr!=null) {System.out.println("=======================");System.out.println("请先退出上一个账户!");}else{boolean x = true;while(x) {System.out.println("=======================");System.out.print("1.普通银行卡\n2.信用卡\n3.医保卡\n0.返回\n请选择开户类型:");switch(input.nextInt()) {case 1:card = new CommonCard();card.setCardId(accountId);x=false;break;case 2:card = new CreditCard();card.setCardId(accountId);x=false;break;case 3:card = new MedicalInsuranceCard();card.setCardId(accountId);x=false;break;case 0:Select();default:System.out.println("=======================");System.out.println("输入错误!请重新输入!");break;}}System.out.print("请输入姓名:");String name=input.next();System.out.print("请输入性别:");String sex=input.next();System.out.print("请输入年龄:");String age=input.next();System.out.print("请输入身份证号:");String ID=input.next();System.out.print("请输入银行卡要设置的密码:");String password1=input.next();System.out.print("请再次输入密码:");String password2=input.next();if(password1.equals(password2)){user[accountId]=new User(name,sex,age,password1,ID,0,card);System.out.println("=======================");System.out.println("开户成功!你的卡号为:"+accountId);accountId++;}else {System.out.println("=======================");System.out.println("两次密码不同!请重新开始!");}}}public User userLogin(){	//登录if (usr!=null) {System.out.println("=======================");System.out.println("请先退出上一个账户!");return usr;}else{System.out.print("请输入卡号:");int aId=input.nextInt();System.out.print("请输入密码:");String password=input.next();for(int i=0;i<user.length;i++){if (user[i]!=null) {if (aId==user[i].getCard()&&password.equals(user[i].getPassword())) {System.out.println("=======================");System.out.println(user[i].getName()+",欢迎登录!");return user[i];}}}System.out.println("=======================");System.out.println("卡号或密码有误");return null;}}public void drawMoney(){	//取款if(usr==null){System.out.println("=======================");System.out.println("请先登录账户!");}else{System.out.print("请输入取款金额:");double blc=input.nextDouble();while(blc>usr.getBalance()) {System.out.println("=======================");System.out.print("取款金额大于余额,请重新输入取款金额:");blc=input.nextDouble();}while(blc<=0){System.out.println("=======================");System.out.print("取款金额错误,请重新输入取款金额:");blc=input.nextDouble();}usr.setBalance(usr.getBalance()-blc);System.out.println("=======================");System.out.println("取款成功!");System.out.println("账户余额:"+usr.getBalance());}}public void depositMoney(){	//存款if(usr==null){System.out.println("=======================");System.out.println("请先登录账户!");}else{System.out.print("请输入存款金额:");double dsm=input.nextDouble();while(dsm<=0){System.out.println("=======================");System.out.print("输入金额错误,请重新输入:");dsm=input.nextDouble();}usr.setBalance(usr.getBalance()+dsm);System.out.println("=======================");System.out.println("存款成功!");System.out.println("账户余额:"+usr.getBalance());}}public void showBalance(){	//余额查询if(usr==null){System.out.println("=======================");System.out.println("请先登录账户!");}else{System.out.println("=======================");System.out.println("账户余额:"+usr.getBalance());}}public void revisePassword(){	//修改密码if(usr==null){System.out.println("=======================");System.out.println("请先登录账户!");}else{System.out.print("请输入原密码:");String password=input.next();for(int i=2;i>=0;i--) {if(password.equals(usr.getPassword()))break;if(i==0) {System.out.println("三次密码输入错误!即将退出账户!");cancel();Select();}System.out.println("密码错误!你还有"+i+"次机会!");System.out.print("请输入原密码:");password=input.next();}System.out.print("验证成功,请输入新密码:");String password1=input.next();System.out.print("请再次输入密码:");String password2=input.next();while(!password1.equals(password2)) {System.out.println("=======================");System.out.print("两次密码不同,请重新输入新密码:");password1=input.next();System.out.print("请再次输入密码:");password2=input.next();}usr.setPassword(password1);System.out.println("=======================");System.out.println("修改成功!");}}public void lookAccount() {	//查看用户信息if(usr==null){System.out.println("=======================");System.out.println("请先登录账户!");}else{System.out.println("=======================");System.out.println("姓名:"+usr.getName());System.out.println("性别:"+usr.getSex());System.out.println(usr.getCardId());System.out.println("身份证号:"+usr.getID());System.out.println("余额:"+usr.getBalance());}}public void cancel() {if(usr==null){System.out.println("=======================");System.out.println("请先登录账户!");}else{usr=null;System.out.println("=======================");System.out.println("账户退出成功!");}}
}

main方法测试启动类

public class TestATM {public static void main(String[] args) {ATM atm = new ATM();atm.Select();}
}

 控制台打印:

=======ATM管理系统=======
1.开户
2.登录
3.取款
4.存款
5.余额查询
6.修改密码
7.查看用户信息
8.退出登录
9.退出系统
请选择需要选择的项目:1
=======================
1.普通银行卡
2.信用卡
3.医保卡
0.返回
请选择开户类型:1
请输入姓名:admin
请输入性别:男
请输入年龄:22
请输入身份证号:513922199555555555
请输入银行卡要设置的密码:123456
请再次输入密码:123456
=======================
开户成功!你的卡号为:1
=======ATM管理系统=======
1.开户
2.登录
3.取款
4.存款
5.余额查询
6.修改密码
7.查看用户信息
8.退出登录
9.退出系统
请选择需要选择的项目:
2
请输入卡号:1
请输入密码:123456
=======================
admin,欢迎登录!
=======ATM管理系统=======
1.开户
2.登录
3.取款
4.存款
5.余额查询
6.修改密码
7.查看用户信息
8.退出登录
9.退出系统
请选择需要选择的项目:

很基础、 适合java初学者来进行练习以及当做课程作业来使用

源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信获取联系方式👇🏻👇🏻👇🏻

打卡 文章 更新 285/  365

 精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例《100套》

web前端期末大作业网页实战《100套》

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

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

相关文章

享誉全球的 Java 经典著作《Java核心技术》Java 17

Java 诞生 27 年来&#xff0c;这本享誉全球的 Java 经典著作《Core Java》一路伴随着 Java 的成长&#xff0c;得到了百万 Java 开发者的青睐&#xff0c;几乎出现在每个“学Java要看什么书”类似的书单里&#xff0c;影响了几代技术人。 27年间&#xff0c;每当 Java 有新的…

【云原生】Spring Cloud微服务学习路线汇总

Spring Cloud是什么&#xff1f; 简单来说Spring Cloud是一系列框架的组成集合。主要利用的我们现在主流应用的Spring Boot框架开发便利性、巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都…

Oracle12C配置监听IP地址

根据自己的安装路径修改2个地方listener.ora和tnsnames.ora 我的路径在&#xff1a;E:\app\Administrator\product\12.2.0\dbhome_1\network\admin listener.ora文件 # listener.ora Network Configuration File: E:\app\Administrator\product\12.2.0\dbhome_1\NETWORK\ADMI…

强大的SQL计算利器-SPL

现代应用开发中&#xff0c;通常只用SQL实现简单的数据存取动作&#xff0c;而主要的计算过程和业务逻辑直接在应用程序中实现&#xff0c;主要原因在于&#xff1a; 过于复杂的SQL很难调试、编写、阅读、修改。SQL有方言特征&#xff0c;大量使用SQL后&#xff0c;会导致程序…

Java使用Queryable-pageable实现分页

在维护老项目的时候需要对部分分页进行手动修改、方式是获取前端的分页参数 page以及rows、 new PageRequest对象把分页参数传进去、通过 queryable.setPageable(pageable);保存、最后进行调用。 完整代码如下&#xff1a; ResponseBodyRequestMapping(value "getLbjzkL…

【毕业季·进击的技术er】大学生计算机毕业设计应该这样写

活动地址&#xff1a;毕业季进击的技术erhttps://marketing.csdn.net/p/f4a818f6455f3a9a7a20c89f60ad35f7 目录 扉页 摘要 目录 一 绪论 二、相关技术环境介绍 三、系统需求分析 四、系统架构设计 五、系统实现 六、系统测试 致谢 参考文献 以一个过来学长的角度来看…

【云原生】SpringCloud是什么?

SpringCloud是一个提供一些服务框架的服务治理平台。它包括&#xff1a;服务注册和发现、配置中心、消息中心、负载平衡、数据监控等。封装了微服务基础架构框架Netflix的多个开源组件&#xff0c;并与云平台和Spring boot框架集成。 SpringCloud也为开发人员提供了一个快速构…

Java字符串转为驼峰格式构建工具类

字符串转为驼峰格式 构建工具类 package com.yt.common.util; import com.yt.common.dto.NameCode; import com.yt.exam.enums.ZyEnum;import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** 字符串转为驼峰格式 构建工具类* author L…

Java工具类 BeanUtils库介绍以及对象拷贝

前言介绍&#xff1a; BeanUtils工具由Apache软件组织编写&#xff0c;提供给我们开发者使用主要解决的问题是&#xff1a;把对象的属性数据封装到对象中。我们在开发中经常会从各种配置文件中读取相应的数据&#xff0c;需要明白的一点是从配置文件中读取到的数据都是String&a…

Http请求:Google调用本地摄像头权限开启

项目场景&#xff1a; 最近在做一个考试培训系统&#xff01;里面用到了监控摄像需要调用本地摄像头 解决方案&#xff1a; 打开谷歌浏览器&#xff0c;输入chrome://flags/回车&#xff1a; 在输入框输入unsafely-treat-insecure-origin-as-secure 选择enable 点击relaunch重…

快收藏!最适合计算机大学生的Java毕业设计项目--高校食堂点餐系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ &#x1f345;文末获取联系&#x1f345; 精彩专栏推荐&#x1f447;&#…

MySql根据字段名查询重复记录并删除!只保留一条

最近在处理业务数据的时候&#xff01;在几W条记录里存在着些相同的记录,如何用SQL语句,删除掉重复的呢? 可以用以下方法进行处理 其实很简单&#xff01;就是查找表中多余的重复记录&#xff0c;重复记录是根据单个字段来查询、然后删除其他重复的记录即可 查询重复记录 SEL…

基于Java+Spring+mybatis+vue+element实现酒店管理系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ &#x1f345;文末获取联系&#x1f345; 精彩专栏推荐&#x1f447;&#…

MyBatis批量插入为什么比单条插入块?

今天在利用excel处理业务数据的时候开始打算一条一条插入数据库&#xff01;因为要做数据校验和数据保存返回id之后进行其他表也插入&#xff01;大约有30000多条数据库吧&#xff01;花了大约3-5分钟&#xff0c;前端也会出现超时请求问题、让我意识到一条一条插入影响性能&am…

javaList<Map<String, Object>>升序、降序

降序&#xff1a; static class MapComparatorDesc implements Comparator<Map<String, Object>> {Overridepublic int compare(Map<String, Object> m1, Map<String, Object> m2) {Double v1 Double.valueOf(m1.get("avgScore").toString(…

无语!Jenkins 也宣布弃用 Java 8

继Java 之父 James Gosling 先前称&#xff0c;开发者应尽快弃用 JDK 8&#xff0c;可以选择 JDK 17 LTS&#xff0c;因为后者在各个方面都带来了巨大的改进。 开源 Devops 工具 Jenkins 宣布&#xff1a;从 6 月 28 日发布的 Jenkins 2.357 和即将发布的 9 月 LTS 版本开始&am…

(2022最新)Java毕业设计参考题目-题目新颖(值得收藏)

前言介绍 博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计项目实战✌ &#x1f345;文末获取联系&#x1f345; 大四的同学马上要开…

Java实现二维码的生成和解析

最近因个人需求需要对根据内容生成二维码和进行解析&#xff01;记录一下&#xff01;二维码其实就是一种编码技术&#xff0c;只是这种编码技术是用在图片上了&#xff0c;将给定的一些文字&#xff0c;数字转换为一张经过特定编码的图片。这里利用的是 google 公司的 zxing使…

Java利用TimerTask执行一次定时任务

项目有个简单的小需求就是在考试时间结束后把待考的用户状态修改为缺考&#xff0c;可以利用TimerTask来实现&#xff0c;在java中实现定时执行任务的功能&#xff0c;主要用到Timer和TimerTask类。其中Timer是用来在一个后台线程按指定的计划来执行指定的任务。 在新增考试的…

Java Date 类型时间运算,对年做减法运算计算工龄得分

/*** 工龄折算分数* 1.1.1小学&#xff1a;记60分结合折算0.54分* 1.1.2初中&#xff1a;记70分结合折算0.63分* 1.1.3中专&#xff08;高中&#xff09;&#xff1a;记80分结合折算0.72分* 1.1.4大专&#xff1a;记90分结合折算0.81分* 1.1.5本科&#xff08;及以上&#xff0…