JAVA案例ATM系统

一案例要求:

首先完成ATM的用户登录和用户开户两个大功能,用户开户有账户名,性别,账户密码,确认密码,每次取现额度,并且随机生成一个7位数的账号,用户登录功能有查询,存款,取款,转账,修改密码,退出,注销账号。

二案例收获:(也是细节要求)

三实现代码:

Ⅰ:(主函数)

package ATM;

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

}

Ⅱ:(实体类)

package ATM;

public class account {
    private String username;
    private String sex;
    private String idcard;
    private String sueridcard;
    private double limitmoney;
    private double priceleft;
    private String userid;

    public account() {
    }

    public account(String username, String sex, String idcard, String sueridcard, double limitmoney, String userid,double priceleft) {
        this.username = username;
        this.sex = sex;
        this.idcard = idcard;
        this.sueridcard = sueridcard;
        this.limitmoney = limitmoney;
        this.userid = userid;
        this.priceleft=priceleft;
    }

    public double getPrice() {
        return priceleft;
    }

    public void setPrice(double priceleft) {
        this.priceleft = priceleft;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getIdcard() {
        return idcard;
    }

    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }

    public String getSueridcard() {
        return sueridcard;
    }

    public void setSueridcard(String sueridcard) {
        this.sueridcard = sueridcard;
    }

    public double getLimitmoney() {
        return limitmoney;
    }

    public void setLimitmoney(double limitmoney) {
        this.limitmoney = limitmoney;
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }
}

Ⅲ:(操作类)

package ATM;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class ATM {
    ArrayList<account> arrayList=new ArrayList<>();
    Scanner sc=new Scanner(System.in);
    Random sb=new Random();
    public  void start(){
        int flag=0;
        while (true) {
            System.out.println("======欢迎进入ATM系统=======");
            System.out.println("1用户登录");
            System.out.println("2用户开户");
            System.out.println("0退出");
            System.out.println("请输入你的选择");
            int x;
            x=sc.nextInt();
            switch (x){
                case 0:return ;
                case 1:
                    if (flag==1) land();
                    else System.out.println("该系统未开户,请先开户");break;
                case 2:
                    visit();flag=1;break;
                default:
                    System.out.println("输入错误,请重新输入");break;
            }
        }
    }

    private void visit() {
        System.out.println("请输入用户名:");
        String name= sc.next();
        System.out.println("请输入性别(男|女)");
        String sex;
        while (true) {
             sex= sc.next();
            if (sex.equals("男")||sex.equals("女")){
                break;
            }else {
                System.out.println("请重新输入性别");
            }
        }
        String idcard;
        String sureidcard;
        while (true) {
            System.out.println("请输入账户密码:");
             idcard= sc.next();
            System.out.println("请确认密码");
            sureidcard=sc.next();
            if(!idcard.equals(sureidcard)){
                System.out.println("两次密码输入不一致,请重新输入:");
            }else break;
        }
        System.out.println("请输入每次提现额度:");
        double price= sc.nextDouble();
        System.out.println("恭喜您,开户成功!");
        String mima="";
        for (int i = 0; i < 7; i++) {
            mima+=sb.nextInt(10);
        }
        System.out.println("您的卡号为:"+mima);
        account account=new account(name,sex,idcard,sureidcard,price,mima,0);
        arrayList.add(account);
    }

    private void land() {
        int flag=0,m=0;
        System.out.println("请输入卡号:");
        String landmark;
        while (true) {
            landmark=sc.next();
            for (int i = 0; i < arrayList.size(); i++) {
                if(landmark.equals(arrayList.get(i).getUserid())){
                    flag=1;m=i;break;
                }
            }
            if (flag==0){
                System.out.println("系统中无该账户,请重新输入:");
            }else break;
        }
        System.out.println("请输入登录密码:");
        String mi;
        while (true) {
            mi= sc.next();
            if (mi.equals(arrayList.get(m).getIdcard())){
                System.out.println("恭喜"+arrayList.get(m).getUsername()+"先生登录系统,您的卡号为"+landmark);break;
            }
        }
        operate(m);

    }

    private void operate(int m) {
        while (true) {
            System.out.println("=====业务=====");
            System.out.println("1查询账户信息");
            System.out.println("2存款");
            System.out.println("3取款");
            System.out.println("4转账");
            System.out.println("5修改密码");
            System.out.println("6退出");
            System.out.println("7注销账户");
            System.out.println("=============");
            System.out.println("请输入你的选择:");
            int x= sc.nextInt();
            switch (x){
                case 1:find(m);break;
                case 2:System.out.println("请决定存取金额:");
                    double price= sc.nextDouble();ru(m,price);break;
                case 3:System.out.println("请决定取款金额:");double price1= sc.nextDouble();chu(m,price1);break;
                case 4:zhuan(m);break;
                case 5:modify(m);break;
                case 6:return;
                case 7: zhuxiao(m);break;
                default:
                    System.out.println("输入错误,请重新输入");
            }
        }
    }

    private void zhuxiao(int m) {
        arrayList.remove(m);
        System.out.println("注销成功");
    }

    private void modify(int m) {
        System.out.println("请决定修改密码为(7位)");
        String mia;
        while (true) {
             mia= sc.next();
            if (mia.length()!=7){
                System.out.println("密码位数不对,请重新输入");
            }else break;
        }
        account a=arrayList.get(m);
        account element=new account(a.getUsername(),a.getSex(),mia,a.getSueridcard(),a.getLimitmoney(),a.getUserid(),a.getPrice());
        arrayList.set(m,element);
        System.out.println("修改密码成功");
    }

    private void zhuan(int m) {
        if (arrayList.size()<2){
            System.out.println("当前系统中账户少于两个,请先创建账户");
            return;
        }
        int n;
        System.out.println("请输入转账卡号");
        String id= sc.next();
        for (int i = 0; i < arrayList.size(); i++) {
            if (id.equals(arrayList.get(i).getUserid())){
                n=i;
                System.out.println("请决定转账金额:");
                double price= sc.nextDouble();
                chu(m,price);
                ru(n,price);
                System.out.println("转账成功!");
                break;
            }else System.out.println("该系统无转账账户,请新建一个账户");break;
        }
    }

    private void chu(int m,double price) {
        double price1;
        account a= arrayList.get(m);
        while (true) {
            price1=a.getPrice();
            price1-=price;
            if (price1<=0){
                System.out.println("金额不够"+price+"请重新输入取款金额");price= sc.nextDouble();
            }else break;
        }
        account element=new account(a.getUsername(),a.getSex(),a.getIdcard(),a.getSueridcard(),a.getLimitmoney(),a.getUserid(),price1);
        arrayList.set(m,element);
        System.out.println("取款成功!");
    }

    private void ru(int m,double price) {


        price+=arrayList.get(m).getPrice();
        account a=arrayList.get(m);
        account element=new account(a.getUsername(),a.getSex(),a.getIdcard(),a.getSueridcard(),a.getLimitmoney(),a.getUserid(),price);
        arrayList.set(m,element);
        System.out.println("存款成功");
    }

    private void find(int m){
        System.out.println(arrayList.get(m).getUsername()+"先生的账户信息如下:");
        System.out.println("性别"+arrayList.get(m).getSex());
        System.out.println("账户卡号"+arrayList.get(m).getIdcard());
        System.out.println("账户密码"+arrayList.get(m).getUserid());
        System.out.println("账户余额"+arrayList.get(m).getPrice());
        System.out.println("单次取现额度"+arrayList.get(m).getLimitmoney());
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s 部署 metribeat 实现 kibana 可视化 es 多集群监控指标

文章目录 [toc]环境介绍老(来)板(把)真(展)帅(示)helm 包准备配置监控集群获取集群 uuid生成 api_key配置 values.yaml 配置 es 集群获取集群 uuid 和 api_key配置 values.yaml 查看监控 缺少角色的报错 开始之前&#xff0c;需要准备好以下场景 一套 k8s 环境 k8s 内有两套不同…

Aqara 发布多款智能照明新品,引领空间智能新时代

7月8日&#xff0c;全球 IoT 独角兽品牌 Aqara 以“光&#xff0c;重塑空间想象”为主题&#xff0c;举办了线上智能照明新品沟通会。 会上&#xff0c;Aqara 正式发布一系列引领行业的智能照明新品&#xff0c;包括银河系列轨道灯 V1 以及繁星系列妙控旋钮 V1 等&#xff0c;…

Hospital Management System v4.0 SQL 注入漏洞(CVE-2022-24263)

前言 CVE-2022-24263 是一个影响 Hospital Management System (HMS) v4.0 的 SQL 注入漏洞。这个漏洞允许攻击者通过注入恶意 SQL 代码来获取数据库的敏感信息&#xff0c;甚至可能控制整个数据库。以下是对这个漏洞的详细介绍&#xff1a; 漏洞描述 在 Hospital Management…

使用Keil 点亮LED灯 F103ZET6

1.新建项目 不截图了 2.startup_stm32f10x_hd.s Keil\Packs\Keil\STM32F1xx_DFP\2.2.0\Device\Source\ARM 搜索startup_stm32f10x_hd.s 复制到项目路径&#xff0c;双击Source Group 1 3.项目文件夹新建stm32f10x.h&#xff0c; 新建文件main.c #include "stm32f10x…

OS-HACKNOS-2.1

确定靶机IP地址 扫描靶机开放端口信息 目录扫描 访问后发现个邮箱地址 尝试爆破二级目录 确定为wordpress站 利用wpscan进行漏洞扫描 #扫描所有插件 wpscan --url http://192.168.0.2/tsweb -e ap 发现存在漏洞插件 cat /usr/share/exploitdb/exploits/php/webapps/46537.txt…

Camera Raw:裁剪

Camera Raw 的裁剪 Crop面板提供了裁剪、旋转、翻转、拉直照片等功能&#xff0c;通过它们可以更精确地调整照片的视角和范围&#xff0c;以达到最佳二次构图的视觉效果。 快捷键&#xff1a;C ◆ ◆ ◆ 使用方法与技巧 1、使用预设 选择多种裁剪预设&#xff08;如 1:1、16:…

前端传到后端的data数组中有些属性值为空

将前端输入框中的值全部放入data中传入后端&#xff0c;但是在后端查看发现后端接收到的数据有些属性值为空。 第一种情况&#xff1a;只有第一个属性为空&#xff0c;其余属性接收正常 可能原因&#xff1a;后端用来接收的 比如前端发送数据&#xff1a; 实际上前端发送的数…

防火墙详解(USG6000V)

0、防火墙组网模式 防火墙能够工作在三种模式下分别是路由模式、透明模式、旁路检测模式、混合模式 0.1、路由模式 路由模式&#xff1a;防火墙全部以第三层对外连接&#xff0c;即接口具有IP 地址。一般都用在防火墙是边界的场景下 防火墙需要的部署/配置&#xff1a; 接…

【Excel】 批量跳转图片

目录标题 1. CtrlA全选图片 → 右键 → 大小和属性2. 取消 锁定纵横比 → 跳转高度宽度 → 关闭窗口3. 最后一图拉到最后一单元格 → Alt吸附边框![](https://i-blog.csdnimg.cn/direct/d56ac1f41af54d54bb8c68339b558dd1.png)4. CtrlA全选图片 → 对齐 → 左对齐 → 纵向分布!…

C++初探究

概述 C可以追溯到1979年&#xff0c;C之父Bjarne Stroustrup在在使用C语言研发工作时发现C语言的不足&#xff0c;并想要将其改进&#xff0c;到1983年&#xff0c;Bjarne Stroustrup在C语言的基础上添加了面向对象编程的特性&#xff0c;设计出了C的雏形。 网址推荐 C官方文…

Java面试八股之MySQL主从复制机制简述

MySQL主从复制机制简述 MySQL的主从复制机制是一种数据复制方案&#xff0c;用于在多个服务器之间同步数据。此机制允许从一个服务器&#xff08;主服务器&#xff09;到一个或多个其他服务器&#xff08;从服务器&#xff09;进行数据的复制&#xff0c;从而增强数据冗余、提…

HTTP 请求走私漏洞详解

超详细的HTTP请求走私漏洞教程&#xff0c;看完还不会你来找我。 1. 简介 HTTP请求走私漏洞&#xff08;HTTP Request Smuggling&#xff09;发生在前端服务器&#xff08;也称代理服务器&#xff0c;一般会进行身份验证或访问控制&#xff09;和后端服务器在解析HTTP请求时&…

YASKAWA安川Σ-V系列伺服驱动器AC设计维护手侧

YASKAWA安川Σ-V系列伺服驱动器AC设计维护手侧

C#——序列化和反序列化概念

(1)序列化 在编程中&#xff0c;序列化是指将对象转换为可存储或传输的格式&#xff0c;例如将对象转换为 JSON 字符串或字节流。 (2)反序列化 在编程中&#xff0c;反序列化则是将存储或传输的数据转换回对象的过程。 序列化和反序列化经常用于数据的持久化、数据交换以及…

JAVA基础-----包装类,自动装箱、拆箱

一、包装类&#xff1a; Java中的数据类型总体上分为基本数据类型和引用数据类型。引用类型的数据可以通过对象的属性和方法来进行操作&#xff0c;但对于基本数据类型的数据&#xff0c;我们能不能像操作对象那样来操作呢&#xff1f;为了实现这个目标&#xff0c;Java为8种基…

WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档

在日常办公场景中&#xff0c;我们经常会遇到这种场景&#xff1a;我们的合同管理系统的各种Word,excel,ppt数据都是以二进制数组的形式存储在数据库中&#xff0c;如何从数据库中读取二进制数据&#xff0c;以二进制数据作为参数&#xff0c;然后加载到浏览器的Office窗口&…

华为HCIP Datacom H12-821 卷30

1.单选题 以下关于OSPF协议报文说法错误的是? A、OSPF报文采用UDP报文封装并且端口号是89 B、OSPF所有报文的头部格式相同 C、OSPF协议使用五种报文完成路由信息的传递 D、OSPF所有报文头部都携带了Router-ID字段 正确答案&#xff1a;A 解析&#xff1a; OSPF用IP报…

每日一练全新考试模式解锁|考试升级

&#x1f64b;频繁有小伙伴咨询&#xff1a;我想举办一场历时一个月的答题活动&#xff0c;学生可以每天打开答题&#xff0c;活动完结后可以导出每天的答题成绩 此前我们都会让小伙伴创建30场考试&#xff0c;然后使用批量分享功能组合起来&#xff0c;对外分享一个链接就可以…

强化学习编程实战-2马尔可夫决策过程

2.1 从多臂赌博机到马尔可夫决策过程 如图2-1&#xff0c;图中A为多臂赌博机&#xff0c;B为一堆鸳鸯&#xff0c;其中左上角为雄性鸳鸯&#xff0c;右上角为雌性鸳鸯&#xff0c;B展示的任务是雄性鸳鸯绕过障碍物找到词性鸳鸯。跟多臂赌博机不同的是&#xff0c;雄性鸳鸯经过一…

提升爬虫OCR识别率:解决嘈杂验证码问题

引言 在数据抓取和网络爬虫技术中&#xff0c;验证码是常见的防爬措施&#xff0c;特别是嘈杂文本验证码。处理嘈杂验证码是一个复杂的问题&#xff0c;因为这些验证码故意设计成难以自动识别。本文将介绍如何使用OCR技术提高爬虫识别嘈杂验证码的准确率&#xff0c;并结合实际…