JavaSE案例-Bank
项目介绍
完成基本的银行业务功能
存款 取款 转账 查询余额 修改密码 修改预留手机号 注销账号 退出
任务分解:
定义三个基本类:
BankTest():银行业务主程序
Bank(): 银行类,包含主要业务逻辑
User():客户类,存储客户相关个人信息
任务逻辑图:

实现代码
银行主类(BankTest)
程序开头在这个类中
/*BankTest*/
public class BankTest {
public static void main(String[] args) {
Bank bank = new Bank();
bank.login();
System.out.println("欢迎再次使用");
}
}
银行类(Bank)
login()函数完成了3个功能:
1.调用初始化函数。//存入初始用户信息
2.接收用户输入的卡号密码等信息
3.调用check()函数核对用户信息是否正确
import java.util.Scanner;
public class Bank {
Scanner sc = new Scanner(System.in);
User[] users = new User[5];
//String no = ;//字符串的默认值?
public void initial() {//存入初始用户信息
User user = new User();//生成用户对象
user.setCardNo("6222021702033334444");
user.setPwd("123456");
user.setIdNo("4444444444444");
user.setPhone("13900000000");
user.setName("tom");
user.setBalance(4000.0);
users[0] = user;
User user1 = new User("6222021702033334444","123456","5555555555555","13911111111","tony",5000.0);//有参构造方式生成对象
users[1] = user1;
}
public void login() {
initial();//调用初始化函数
System.out.print("请输入卡号:");
String no = sc.next();
System.out.print("请输入密码:");
String pwd = sc.next();
User mine = check(no , pwd);//将接收的卡号和密码传给check()函数确认有无客户信息,有客户信息则返回客户对象,无客户信息则返回null
if (mine != null) {
System.out.println("已经到这里了");
this.showMenu(mine);//客户信息存在,调出银行业务菜单
return;
} else {
System.out.println("输入错误,用户不存在");
}
}
//check函数,校验是否存在该用户
public User check(String no ,String pwd) {
for (int i = 0;i < users.length; i++) {
if (users[i] != null) {//数组的非空判断
if (no.equals(users[i].getCarNo()) && pwd.equals(users[i].getPwd())) {
System.out.println("用户存在");
return users[i];
}
}
}
return null;
}
}
客户类(User)
/*用户类*/
public class User {
private String cardNo;
private String pwd;
private String idNo;
private String phone;
private String name;
private double balance; public User() {} public User (String cardNo , String pwd , String idNo , String phone , String name , double balance) {
this.cardNo = cardNo;
this.pwd = pwd;
this.idNo = idNo;
this.phone = phone;
this.name = name;
this.balance = balance;
} public void setCardNo(String cardNo) {
this.cardNo = cardNo;
}
public String getCarNo() {
return this.cardNo;
} public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPwd() {
return this.pwd;
} public void setIdNo(String idNo) {
this.idNo = idNo;
}
public String getIdNo() {
return this.idNo;
} public void setPhone(String phone) {
this.phone = phone;
}
public String getPhone() {
return this.phone;
} public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
} public void setBalance(double balance) {
this.balance = balance;
}
public double getBalance() {
return this.balance;
}
}
银行类(Bank)
业务功能相关代码
public void showMenu(User mine) {
do {
System.out.println();
System.out.println();
System.out.println();
System.out.println("欢迎使用银行ATM自助服务");
System.out.println("--------------------");
System.out.println("1.开户 2.存款 3.取款 4.转账 5.查询余额 6.修改密码 7.修改手机号 0.退出");
System.out.println("--------------------");
int choice = 0;
choice = sc.nextInt();
switch (choice) {
case 1:
System.out.println("执行开户功能");
break;
case 3:
System.out.println("执行取款功能");
this.withdrawal(mine);
break;
case 0:
System.out.println("执行退出功能");
return;
}
} while (true);
银行类(Bank)
具体取款操作相关代码
public void withdrawal(User mine) {
System.out.print("请输入取款金额:");
double moneyOut = sc.nextDouble();
if (mine.getBalance() >= moneyOut) {
System.out.println("请取款金额为:" + moneyOut + "。");
mine.setBalance(mine.getBalance()-moneyOut);
System.out.println("剩余存款为:" + mine.getBalance() + "。");
}
}
JavaSE案例-Bank的更多相关文章
- 小兔博客新增源码下载模块,JavaWeb项目实战,JavaScript入门教程 ,JavaSE案例等
从今以后,所有的源码在 http://www.xiaotublog.com/downloadView.html 都可以免费下载,在下载页面还可以直接链接到相关的教程地址(如果有教程的话...). 最近 ...
- SQL 视图 局部变量 全局变量 条件语句 事务 触发器
一.视图 1.视图是一张虚拟表,他所存储的不是实际数据,而是查询语句,但我们可以对视图进行像数据表一样的操作. 2.为什么使用视图呢?我的理解是:1.在远程传输数据时,可以避免过长的查询字符,减少流量 ...
- 用大白话聊聊JavaSE -- 如何理解Java Bean(一)
首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...
- Unit01: JAVA开发环境案例
Top JAVA Fundamental DAY01 JDK及Eclipse目录结构操作 JDK的安装及配置 控制台版的JAVA HelloWorld 使用Eclipse开发Java应用程序 1 JD ...
- 用DOM4J解析XML文件案例
用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:
- “粪便银行”:救人拿钱两不误 A Poop Bank in Massachusetts Will Pay You $40 Every Day
“粪便银行”:救人拿钱两不误 如果你年龄小于50岁,排便规律,而且愿意每天去美国麻省麦德福德跑一趟,那么没准你可以每天得到40美元的外快,而你需要做的事情只是生产便便. 要想得到这笔收入,请拜访“开放 ...
- JAVASE笔记回顾
第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...
- AP_HZ Party和Supplier、Bank表关系详解
2014-06-26 Created By BaoXinjian
- javaSE第二十一天
第二十一天 276 1:字符流(掌握) 276 (1)字节流操作中文数据不是特别的方便,所以就出现了转换流. 276 (2)转换流其实是一个字符流 276 1:InputStr ...
随机推荐
- OEL6 /boot分区删除恢复
对linux的应用有一段时间来,虽然谈不上精通,但日常应用maintenance还是没问题的,昨天自己故意把/boot分区直接format了,今天来尝试恢复,看看自己对linux启动方面的认识如何,总 ...
- CodeForces - 1245 C - Constanze's Machine
Codeforces Round #597 (Div. 2) Constanze is the smartest girl in her village but she has bad eyesigh ...
- 单源最短路径:Dijkstra算法(堆优化)
前言:趁着对Dijkstra还有点印象,赶快写一篇笔记. 注意:本文章面向已有Dijkstra算法基础的童鞋. 简介 单源最短路径,在我的理解里就是求从一个源点(起点)到其它点的最短路径的长度. 当然 ...
- 精通awk系列文章
精通awk系列文章 我录制了两个awk相关的视频教程: Awk经典实战案例精讲 精通awk精品课程:awk从入门到精通 1.安装新版本的gawk 2.本教程测试所用示例文件 3.铺垫知识:读取文件的几 ...
- socket编程之并发回射服务器2
承接上文:socket编程之并发回射服务器 为了让服务器进程的终止一经发生,客户端就能检测到,客户端需要能够同时处理两个描述符:套接字和用户输入. 可以使用select达到这一目的: void str ...
- 【Kafka】Flume整合Kafka
目录 需求 一.Flume下载地址 二.上传解压Flume 三.配置flume.conf 四.启动flume 五.测试整合 需求 实现flume监控某个目录下面的所有文件,然后将文件收集发送到kafk ...
- Spring Cloud Alibaba系列(三)使用feign进行服务调用
什么是Feign Feign是spring cloud提供的一个声明式的伪http客户端,它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一天注解即可. Nacos很好的兼容了Fe ...
- [hdu4123]dfs区间化+RMQ
题意:给一个树编号0~n-1,一个数组a[i]为节点i在树上走的最大距离(不重复点),然后求最大的区间,使得区间最大差异小于某个值.dfs求出每个数组,同时区间化.枚举区间左边界,右边界同样递增,类似 ...
- 如何使用 Shebang Line (Python 虚拟环境)
本文记录,如何在 Python Script 中使用 Shebang 行. Shebang Line 是什么: 也被叫做 Hashbang Line,只要是一个由,井号和叹号#!开头,并构成的字符序列 ...
- python --分隔符split()
描述: python split()是通过指定分隔符对字符串进行切片,且可以指定分隔n+1个字符串. 语法: str.split(str="",num=string.count(s ...