本文介绍了Java经典案例题供小白编程爱好者借鉴,因为我也是学习者,这是我的一点编程经验和心得,如有错误,请指出。废话不多说,开始步入正题。(ps:创作不易,有喜欢的小伙伴请点赞支持,谢谢啦!)

这里写目录标题

  • 一、所需知识
  • 二、需求及技术
  • 三、代码
    • 1. 实体类:Account
    • 2. 服务层:AccountService
    • 3. 视图层:AccountService
    • 4. 测试类:Test
    • 5. 结果截图

一、所需知识

此系统要求掌握知识点大致如下:
1、掌握控制台项目的开发流程
2、了解项目所需的技术
3、熟悉项目需实现的功能
3、掌握项目登陆注册的功能实现
4、掌握项目余额的功能实现
5、掌握项目存款转账的功能实现
6、掌握项目分层实现

二、需求及技术

需求: ATM系统是一个基于JAVA SE的控制台版本的综合项目,具有登录、注册、余额、存款、退出以及转账功能。
技术:- JAVA基础 - 面向对象 - 分层

三、代码

分析:分层:实体类层-Jopo -----服务层-service------视图层-view-------测试-test
通俗点说,就是创建三个包对应上面三个层,以下就是下面三个包的具体代码

1. 实体类:Account

/*
账户实体类*/
public class Account {private String uname;   //用户名private String pwd;     //密码private int idcard;     //卡号private double blance; //余额public Account() {}public Account(String uname, String pwd, int idcard, double blance) {this.uname = uname;this.pwd = pwd;this.idcard = idcard;this.blance = blance;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public int getIdcard() {return idcard;}public void setIdcard(int idcard) {this.idcard = idcard;}public double getBlance() {return blance;}public void setBlance(double blance) {this.blance = blance;}@Overridepublic String toString() {return "Account{" +"uname='" + uname + '\'' +", pwd='" + pwd + '\'' +", idcard=" + idcard +", blance=" + blance +'}';}@Overridepublic boolean equals(Object o) {if (o instanceof Account){if (((Account) o).getUname().equals(uname)){return true;}return false;}return false;}@Overridepublic int hashCode() {return 0;}
}

2. 服务层:AccountService

import com.yb.item.jopo.Account;import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;/*
账户服务层、逻辑判断*/
public class AccountService {private static Account account = new Account();private static double b = 0;//数据存储private static HashSet<Account> al = new HashSet<Account>();//注册public static void register(Account accounts){boolean rs = al.add(accounts);if (rs){System.out.println("注册成功");//生成一个随机卡号int card = createCard();accounts.setIdcard(card);account = accounts;System.out.println(account);}else{System.out.println("注册失败");}}//登录public static boolean login(Account account){Iterator<Account> iterator = al.iterator();while (iterator.hasNext()){Account next = iterator.next();if (account.getIdcard()==next.getIdcard()){if (account.getPwd().equals(next.getPwd())){System.out.println("登录成功");account=next;b = next.getBlance();System.out.println(next);return true;}else{System.out.println("密码错误...");return false;}}if (account.getIdcard()==next.getIdcard()){System.out.println("卡号错误...");return false;}}return false;}//存款public static void deposit(double money){if (money>0){b = account.getBlance()+money;account.setBlance(b);}else {System.out.println("你这给我卡Bug呢!!");}}//查询余额public static void CheckBalance(){System.out.println("您的余额为:"+b);}//转账public static void carryOver(int id,double money){Iterator<Account> iterator = al.iterator();while (iterator.hasNext()){Account next = iterator.next();if (next.getIdcard()==id){if (money>account.getBlance()){System.out.println("转账失败...");}else{//自己的钱减少b=account.getBlance()-money;account.setBlance(b);//他的钱变多b = next.getBlance()+money;next.setBlance(b);}System.out.println("您转入的账户:"+next.getUname()+",余额为:"+next.getBlance());//将账户重新赋值b = next.getBlance();}}System.out.println("您的账户余额为:"+account.getBlance());}//取款public static void getMoney(double money){if (account.getBlance()>=money&&money>0&&account.getBlance()>=0){account.setBlance(account.getBlance()-money);System.out.println("取款成功,当前余额为:"+account.getBlance());}else {System.out.println("取款失败");}}//自动生成银行卡号public static int createCard(){Random random = new Random();//可以追加判断,如果重复生成,则重新生成一个随机卡号int num = random.nextInt(100000000)+999999999;return num;}}

3. 视图层:AccountService

import com.yb.item.jopo.Account;
import com.yb.item.service.AccountService;import java.util.Scanner;public class AccountView {private static Scanner scanner = new Scanner(System.in);private static AccountService as  = new AccountService();private static AccountView av  = new AccountView();//菜单public static void menu(String[] a){System.out.println("--------------------------------------------------------------");for (int i = 0; i <= a.length-1; i++) {System.out.print((i+1)+","+a[i]+"  ");}System.out.println();System.out.println("--------------------------------------------------------------");}//获取对象public static void getUser(){}//首页public static void index(){//new String[]{"注册","登录","存款","余额","转账","取款","退出"}while (true) {menu(new String[]{"注册","登录","退出"});System.out.println("请输入您的操作:");int num = scanner.nextInt();switch (num){case 1://注册System.out.println("请输入您的姓名:");String username = scanner.next();System.out.println("请输入您的密码:");String password = scanner.next();as.register(new Account(username,password,0,0));break;case 2://登录System.out.println("请输入您的卡号:");int id = scanner.nextInt();System.out.println("请输入您的密码:");String pwd = scanner.next();boolean login = as.login(new Account("", pwd, id, 0));while (login) {menu(new String[]{"存款","余额","转账","取款","退出"});System.out.println("请输入您的操作:");int i = scanner.nextInt();switch (i) {case 1://存款System.out.println("请输入要存的金额:");double mon = scanner.nextDouble();as.deposit(mon);break;case 2://查询余额as.CheckBalance();break;case 3://转账System.out.println("请输入要转入账户:");int id1 = scanner.nextInt();System.out.println("请输入要转入的金额:");double mon1 = scanner.nextDouble();as.carryOver(id1,mon1);break;case 4://取款System.out.println("请输入您要取出的金额:");double mon2 = scanner.nextDouble();as.getMoney(mon2);break;case 5://退出login=false;}}continue;case 3:System.exit(0);}}}}

4. 测试类:Test

public static void main(String[] args) {av.index();}

5. 结果截图

以上就是这个ATM取款系统的的整体流程,有喜欢的朋友可以帮忙点个赞,谢谢!

经典案例题:ATM取款机详细代码---复制既能跑相关推荐

  1. ATM取款机详细代码

    account = '123456' password = '123456' my_money = 100 add_money = 0 def modify_pw(): count = 1 while ...

  2. 蜗牛学院教材 12道经典案例题

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>课堂练 ...

  3. 43道Python经典案例题(有答案)

    1.有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? for x in range(0,5):for y in range(0,5):for z in range(0, ...

  4. atm取款机java_Java分享|ATM取款机

    原标题:Java分享|ATM取款机 看了就要关注我哦! ATM取款机 转眼间,Java技术分享已经结束了,我们回顾一下最后ATM取款机的代码以及运行结果: import java.util.Scann ...

  5. 《算法竞赛入门经典》(第二版)代码及详细解释(持续更新!)

    笔者中山大学硕士,医学生+计科学生的集合体,机器学习爱好者. 现发布[刘汝佳<算法竞赛入门经典>(第二版)--紫书]的例题和习题的代码和详细解释. 欢迎批评指正! 另外欢迎关注本人微信公众 ...

  6. 【算法学习】马尔可夫过程及经典例题讲解(含代码实现)

    公众号关注 52DATA ,获得更多数据分析知识,感谢支持-> 文章目录 马尔可夫过程 1. 马尔可夫性 2. 马尔可夫链 2.1 转移概率矩阵(随机矩阵) 2.2 状态概率 2.3 平稳分布 ...

  7. c语言二分法_14个经典C语言算法你就不看一眼?(附详细代码)

    今天,给大家讲一讲,单片机常用的14个C语言算法(附详细代码)哟! 一.计数.求和.求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值.终值或结束条件,更要注意用来表示计数.和. ...

  8. atm取款机的简单程序代码

    /* *********atm取款机********** */#include<iostream> #include<stdlib.h> using namespace std ...

  9. 软考高级-系统架构师-案例分析-案例题2

    案例题2~5都是选做题,选2道题进行回答,历年第二题主要考查了结构化设计(流程图,数据流图),面向对象(概念,UML等),数据库技术,WEB技术,分布式技术其中结构化设计,面向对象和数据库技术出现频率 ...

最新文章

  1. AI艺术家带雕塑作品参展被海关扣押,只因摄像头眼睛被指涉及间谍行为?
  2. hive 动态分区实现 (hive-1.1.0)
  3. [深度学习-总结]Deep learning中8大模型介绍与比较(LeNet5,AlexNet,VGG,Inception,MobileNets,ResNet,DenseNet,Senet)
  4. 给数据库减负的八个思路,盘它!
  5. c语言case两个变量的组合,我可以使用带有两个变量的case/switch语句吗?
  6. Dropping Balls(小球下落)
  7. matplotlib图表显示中文三种办法
  8. Python写出一个字节,一个YouTube,我用Python怎么了!
  9. 百度“追杀”66天后,景驰CEO王劲离职,原CTO韩旭接任
  10. mysql 记录操作_MySQL 记录操作
  11. 敏捷个人A1组第三次练习讨论 你是如何管理你的精力的?
  12. 我是一名自由职业白帽黑客
  13. hal库GPIO函数
  14. 全智通A+常见问题汇总解答—A+维修管理—维修领料,修改领料单材料归属到了另一个维修单下
  15. ncverilog脚本_NcVerilog_工作学习记录.pdf
  16. 如何实现在退休时有足够的钱供老年任性花费?(复利年金通胀综合案例)
  17. VUE 尚硅谷 学习内容详解
  18. 【最小生成树】P2259 Charmer--viv
  19. 从苏宁电器到卡巴斯基第05篇:我在佳木斯的日子(上)
  20. TeX/LaTeX 常用宏包简介

热门文章

  1. js 去除首尾字符串的几种方式(es6前后)
  2. cxf client
  3. 非常简单的感染程序源代码
  4. 用nodejs链接mysql并从其中提取数据
  5. mysql修改字段类型为smallint_MYSQL 字段类型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
  6. 了解Dijkstra算法
  7. 高楼翻译:并发用户数的估算方法(请仔细看译者注)
  8. 2023山东建筑大学计算机考研信息汇总
  9. 京东2016实习题目-选举游戏-小东和其他小朋友正在玩一个关于选举的游戏。选举是通过投票的方式进行的,得票最多的人将获胜。
  10. 2021-11-072021年安全员-B证考试报名及安全员-B证实操考试视频