java小项目 ATM机(简易版)

article/2025/10/12 9:29:58

目录

说明

项目介绍

功能介绍

结构图

各模块代码

登录界面

服务选择界面

 存取款界面

修改密码模块 

转账模块

总代码


说明

 简单做了一个java的ATM机项目、本项目只能作为一个简单的运行程序。因为没有学到数据库,文件等内容,没有存储功能,只能用于已经规定的账户的运行。又因为没有学到图形化界面等内容,不会有弹窗之类的界面,只能用运行窗口进行交互。

本项目的代码是在一个名称为jdk.java的文件里,复制粘贴的时候要注意。

项目介绍

功能介绍

编写程序实现ATM机常见功能。具体功能包括:

(1) 登陆页面模块,对取款者进行身份验证。

(2) 选择服务模块 ,包括取款,余额查询,转帐,修改密码,退出等功能模块。

(3) 取款模块,实现取款的具体操作。

(4) 查询余额模块,查看当前登陆人员的余额。

(5) 修改密码模块,可以方便的实现当前登陆人员对自己的密码进行修改。

(6) 退卡模块,完成取款,查询等功能后退出银行卡。

​​​​​​本系统主要包括登陆模块设计,选择服务模块设计,取款和存款模块设计,修改密码模块设计,退卡模块设计等几个功能模块。其中,

   (1)登陆模块设计:与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。

   (2) 选择服务模块设计:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。

   (3) 取款模块设计:在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。

   (4) 修改密码模块设计:在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次要匹配,否则也会报错,然后再重新回到修改密码的界面。

   (5) 退卡模块设计:此功能非常简单,仅仅是实现弹出卡的功能。

结构图

总体设计中最核心的问题是系统总体功能结构的确定和子系统与模块的划分,结构化

ATM取款机系统功能结构图,如图1所示:

 

图1 ATM取款机系统功能结构图

各模块代码

登录界面

void load()
{Scanner in =new Scanner(System.in);System.out.println("账号");id=in.next();System.out.println("密码");pwd=in.nextInt();if(id.equals(gid)&&pwd==123456){service();//登陆成功后进入选择服务界面}else{System.out.println("错误");load();//登陆失败后报错并重置}}

 这个登录界面没有多次输入错误密码锁定的功能,需要的话可以自己加。

服务选择界面

void service()
{int choice;System.out.println("选择服务 ");System.out.println("1.存款与取款\n2.查询金额\n3.转账\n4.修改密码\n5.退出");Scanner in =new Scanner(System.in);choice=in.nextInt();if(choice==1){service1();//进入存取款模块}else if(choice==2){System.out.println("账户余额为:"+gmoney);//余额查询模块,直接输出,没有再创建函数service();//返回服务选择界面界面}else if(choice==3){service3();//调用转账函数,进入转账界面}else if(choice==4){sevice4();//调用密码修改函数,进入密码修改界面}else if(choice==5){System.out.println("谢谢使用本ATM机!");//退卡load();//返回登录界面}else{System.out.println("错误");}
}

 存取款界面

void service1()
{int choice1;System.out.println("存款请输入1,取款请输入2");Scanner in =new Scanner(System.in);	choice1=in.nextInt();if(choice1==1){deposit();//存款模块}else if(choice1==2){Withdrawal();//取款模块}else{System.out.println("错误选择,正在跳转主界面");service();}
}
void deposit()//存款
{int money;System.out.println("请输入存款金额");Scanner in =new Scanner(System.in);	money=in.nextInt();if(money%100==0){System.out.println("正在存款中,请把人民币放入放钞口");gmoney=gmoney+money;System.out.println("账户金额为:"+gmoney);service();		}else {System.out.println("金额输入错误,请重新输入");deposit();}}
void Withdrawal()//取款
{int money;System.out.println("请输入取款金额");Scanner in =new Scanner(System.in);	money=in.nextInt();if(money%100==0){System.out.println("正在取款中,请注意取钞口");gmoney=gmoney-money;System.out.println("账户金额为:"+gmoney);service();}else {System.out.println("金额输入错误,请重新输入");Withdrawal();}
}
}

修改密码模块 

void sevice4()
{System.out.println("请设置一个密码:");Scanner in = new Scanner(System.in);String pass = in.next(); System.out.println("重复管理员密码:");in = new Scanner(System.in);String pass1 = in.next(); if (pass.equals(pass1)) { System.out.println("已生效,请牢记密码:" + pass);service();} else {System.out.println("两次密码不一致,请重新设置。");sevice4();}
}

 这个模块因为没有数据库等原因,并不能实现完全的作用,谨慎复制!

void sevice4() throws IOException
{System.out.println("请设置一个密码:");Scanner in = new Scanner(System.in);int pass = in.nextInt();System.out.println("重复管理员密码:");in = new Scanner(System.in);int pass1 = in.nextInt();if (pass==pass1) {pwd=pass1;System.out.println("已生效,请牢记密码:" + pwd);
//	        message();service();} else {System.out.println("两次密码不一致,请重新设置。");sevice4();}
}

 这是另一个版本,密码仅为int型的,并且有了小改动,还是因为数据库等原因,功能不完整!

转账模块

void service3()
{int Transfer;System.out.println("转账");System.out.println("输入转出金额");Scanner in =new Scanner(System.in);	Transfer=in.nextInt();if(Transfer>0) {if(Transfer<=gmoney){gmoney=gmoney-Transfer;System.out.println("转账成功!余额为;"+(gmoney));}else {System.out.println("余额不足");service();}}else {System.out.println("输入正确金额");service3();}service();
}

 因为没有数据库连接的原因,没有加转入账户的信息输入等功能,仅做到了系统自带账号的余额减少的功能!

总代码

import java.util.Scanner;
class xinxi{String id;String gid="admin";int pwd;int gmoney;
void load()
{Scanner in =new Scanner(System.in);System.out.println("账号");id=in.next();System.out.println("密码");pwd=in.nextInt();if(id.equals(gid)&&pwd==123456){service();}else{System.out.println("错误");load();}}
void service()
{int choice;System.out.println("选择服务 ");System.out.println("1.存款与取款\n2.查询金额\n3.转账\n4.修改密码\n5.退出");Scanner in =new Scanner(System.in);choice=in.nextInt();if(choice==1){service1();}else if(choice==2){System.out.println("账户余额为:"+gmoney);service();}else if(choice==3){service3();}else if(choice==4){sevice4();}else if(choice==5){System.out.println("谢谢使用本ATM机!");load();}else{System.out.println("错误");}
}
void sevice4()
{System.out.println("请设置一个密码:");Scanner in = new Scanner(System.in);String pass = in.next(); System.out.println("重复管理员密码:");in = new Scanner(System.in);String pass1 = in.next(); if (pass.equals(pass1)) { System.out.println("已生效,请牢记密码:" + pass);service();} else {System.out.println("两次密码不一致,请重新设置。");sevice4();}
}
void service3()
{int Transfer;System.out.println("转账");System.out.println("输入转出金额");Scanner in =new Scanner(System.in);	Transfer=in.nextInt();if(Transfer>0) {if(Transfer<=gmoney){gmoney=gmoney-Transfer;System.out.println("转账成功!余额为;"+gmoney);}else {System.out.println("余额不足");service();}}else {System.out.println("输入正确金额");service3();}service();
}
void service1()
{int choice1;System.out.println("存款请输入1,取款请输入2");Scanner in =new Scanner(System.in);	choice1=in.nextInt();if(choice1==1){deposit();}else if(choice1==2){Withdrawal();}else{System.out.println("错误选择,正在跳转主界面");service();}
}
void deposit()
{int money;System.out.println("请输入存款金额");Scanner in =new Scanner(System.in);	money=in.nextInt();if(money%100==0){System.out.println("正在存款中,请把人民币放入放钞口");gmoney=gmoney+money;System.out.println("账户金额为:"+gmoney);service();		}else {System.out.println("金额输入错误,请重新输入");deposit();}}
void Withdrawal()
{int money;System.out.println("请输入取款金额");Scanner in =new Scanner(System.in);	money=in.nextInt();if(money%100==0){System.out.println("正在取款中,请注意取钞口");gmoney=gmoney-money;System.out.println("账户金额为:"+gmoney);service();}else {System.out.println("金额输入错误,请重新输入");Withdrawal();}
}
}
public class jdk {public static void main(String[] args) {// TODO Auto-generated method stub
Scanner in =new Scanner(System.in);
xinxi message1=new xinxi();
message1.load();}}


http://chatgpt.dhexx.cn/article/YQpek4Gn.shtml

相关文章

适合新手练习的 java 小项目

适合新手练习的 java 小项目 智能电话本 视频连接在下方↓ 包括源码也在下面 不要问我为什么推荐这个&#xff0c;因为我也只是一个新手&#xff0c;这个项目是纯命令行的&#xff0c; 不需要数据库和网页编程知识&#xff0c;做起来很简单&#xff0c;可以帮助新手巩固基础…

JavaWeb新手小项目以及源码

此项目主要实现的功能有&#xff1a; jsp连接数据库、MD5加密、验证码验证、Ajax、文件的上传与下载、session登录验证等。 先来几张截图&#xff1a; 一、首先写登录页面 login.jsp <% page language"java" import"java.util.*" pageEncoding&qu…

java小项目水果摊

介绍 刚学完java 集合和IO流&#xff0c;想做了一个简单的小项目来练手&#xff0c;于是我就运用一些基础知识做了这个水果摊。水果摊的主要功能有&#xff1a; 进货查看水果列表购买水果查看购物车结账退出 都是一些简单的功能&#xff0c;下面就来展示代码&#xff1b; …

Java个人Web小项目

JavaWeb-HTML实列开发 目录源代码链接部分效果图 目录 #1.用户列表开发 新建一个Maven项目 创建包&#xff1a;com.iflytek 在项目中 在com.iflytek.controller中新建一个类为控制器类&#xff1a;(本网址为/UserController.java) UserController.java package com.iflytek…

Java小项目(一)---超市管理系统

超市管理系统 一、使用技术二、实现功能三、运行效果图3.1 货物清单3.2 增加货物3.3 删除货物3.4 修改货物3.5 退出 四、实现的代码4.1 Good商品货物类4.2 ShoppingSystem超市管理系统测试类 一、使用技术 Java SE 二、实现功能 使用选择结构&#xff0c;循环结构&#xff0…

Java小项目另一个水果摊

文章目录 前言一、包和表截图二、源代码1.JDBC连接Mysql数据管理员界面&#xff1a;增删查改用户界面 &#xff1a;查找水果建立断开连接 2.GUI窗口界面开始选择界面用户购买水果界面管理员登录界面管理员界面 3.水果属性4.main方法 总结拒绝白嫖&#xff0c;给个三连鼓励一下吧…

JavaWeb之综合小项目

案例需求&#xff1a; 使用Java程序操作数据库&#xff0c;并把结果显示在jsp页面上。 &#xff08;这里只做查询操作&#xff0c;增删改操作类似如此&#xff09; 使用工具&#xff1a; maven&#xff0c;idea&#xff0c;tomcat&#xff0c;MySQL数据库。 使用技术&#xff1…

20个Java小项目,献给嗜学如狂的人,拿来练练手

给大家推荐一条由浅入深的JAVA学习路径&#xff0c;首先完成 Java基础、JDK、JDBC、正则表达式等基础实验&#xff0c;然后进阶到 J2SE 和 SSH 框架学习。最后再通过有趣的练手项目进行巩固。 JAVA基础 1. Java编程语言&#xff08;新版&#xff09; 2. Java进阶之设计模式…

Java面试:java小项目实例

前言 本人是底层 211 本科,刚毕业,⽆科研经历,但是有些项⽬经历。 在国内监控行业某头部企业做过一段时间的实习。 想着投下字节,可以积累⼀下⾯试经验和为金九银十面招做准备。投了简历之后,过了一段时 间,HR 就打电话跟我约时间, 说明一下,我投的是北京 office。 以下就是一…

java 练手小项目

学习了javaSE的基础&#xff0c;为了巩固对Java面向对象编程&#xff0c;以及java多线程编程的理解&#xff0c;使用swing 写了一个很简单的小项目&#xff0c;源码github地址: https://github.com/pythondever/swing-demo 喜欢的同学可以学习学习 整体代码流程 * 1. JFra…

javaWeb小项目

作为一个学习加Java的小白&#xff0c;非常开心能记录下自己的成长历程。技术有限&#xff0c;请见谅&#xff01; 我主要学习的是Java后端&#xff0c;当我学着做了一个web小项目之后对javaee项目也有了初步见解&#xff01; 老师说万物皆对象&#xff0c;万物皆增删改查。我的…

java练习小项目(一)

学习java有一段时间了&#xff0c;都是处于那种三天打鱼&#xff0c;两天晒网的状态&#xff0c;没有效率&#xff0c;因为方法不对&#xff0c;一直是在看资料&#xff0c;看视频&#xff0c;并没有实际上手项目&#xff0c;就算当时看了&#xff0c;记住了&#xff0c;最后还…

适合Java新手练手的小项目!

对于很多朋友来说&#xff0c;Java是学习编程的开始&#xff0c;也有很多朋友希望通过Java可以找到工作&#xff0c;那么当我们学习了Java的基础知识之后&#xff0c;我们急需要一些项目去帮我们整理一下自己学习的知识点以及提高一下编程能力&#xff0c;对小的工程有一个大致…

Java小项目谁看谁都会(图书管理)

在我之前的几篇博客中对于Java语法&#xff0c;思想等等进行了总结&#xff0c;但是还是差点那味&#xff0c;就是没有将这些知识串起来那么今天的这篇博客我就将Java中&#xff1a;类 对象 封装 继承 多态 抽象类 接口等等知识共同使用完成一个Java的小项目一起来看 介绍 我…

推荐几个适合新手的Java练手项目(好玩又有趣)

Java练手项目第一波 一、坦克大战 链接&#xff1a;https://www.bilibili.com/video/BV1zP4y1b7gw/?spm_id_from333.337.search-card.all.click Java练手小项目&#xff0c;熟练掌握面向对象编程思想、对象池的使用、IO流、多线程、GUI等基础。 二、贪吃蛇 链接&#xff1a;ht…

10个优质的Java练手项目

10个优质的Java练手项目 最近有很多小伙伴私信我说推荐几个毕设项目&#xff0c;还有就是学了Java有一段时间了&#xff0c;想找几个项目想练练手&#xff0c;在面试的时候也可以增加一点项目经验。 在这里我收集了10个可以直接导入运行的项目。 由简单到复杂&#xff0c;分别…

JAVA小项目(一)——一个简单的记帐本【轻松入门,附源码】

目录 1. 实现效果 2.项目架构 3. 细节代码实现 &#x1f31e;哈喽&#xff0c;大家好丫&#xff0c;你们的小郭子又来啦 ~ &#x1f31e;今天我们用java来写一个简单的小项目——【记账本】&#xff0c;嘿嘿 话不多说&#xff0c;直接上干货&#xff0c; 1. 实现效果 2.项目…

【目标定位】基于matlab TDOA GPS混合定位【含Matlab源码 2310期】

⛄一、基于粒子滤波污染源定位简介 1 混合定位的系统结构 本文提出的GPS/TDOA混合定位系统结构可见于图1。 移动终端集成了无线通信模块和GPS接收模块,终端可同时测得通信网络中相对于服务基站的TDOA和GPS卫星到终端的伪距。在CDMA通信系统中,从通信终端测量TDOA的具体方法和…

基于图像的目标检测与定位方法概述

目录 1. 目标检测与定位概念2. 目标检测与定位方法2.1 传统目标检测流程2.2 two-stage检测算法2.2.1 R-CNN2.2.2 two-stage其他算法2.2.2.1 Spatial Pyramid Pooling&#xff08;空间金字塔池化&#xff09;2.2.2.2 Fast-RCNN2.2.2.3 P11 Faster RCNN 2.3 One-Stage2.3.1 YOLO2…

大疆无人机实现目标定位

大疆无人机实现目标定位 大疆无人机回传的实时视频可以帮助飞友观察发现美景&#xff0c;就称为目标吧&#xff0c;你偏偏对目标很感兴趣&#xff0c;迫切想知道目标的位置&#xff0c;最好是经纬度坐标。你查找大疆Document&#xff0c;欣喜地发现大疆提供了定位机体本身的定…