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 ...
随机推荐
- Xapian实战(四):搜索
参考资料: 学习Xapian(1)-基础的建索引和搜索 1. Xapian中用于搜索的类 Enquire - 提供了检索的接口:(Enquire API) QueryParser(QueryParse ...
- 图论--最短路--dijkstra(含路径输出)模板
#include<iostream> #include<stack> #include<queue> #include<cstring> #includ ...
- 疯子的算法总结(九) 图论中的矩阵应用 Part 2 矩阵树 基尔霍夫矩阵定理 生成树计数 Matrix-Tree
定理: 1.设G为无向图,设矩阵D为图G的度矩阵,设C为图G的邻接矩阵. 2.对于矩阵D,D[i][j]当 i!=j 时,是一条边,对于一条边而言无度可言为0,当i==j时表示一点,代表点i的度. 即 ...
- muduo网络库源码学习————日志滚动
muduo库里面的实现日志滚动有两种条件,一种是日志文件大小达到预设值,另一种是时间到达超过当天.滚动日志类的文件是LogFile.cc ,LogFile.h 代码如下: LogFile.cc #in ...
- 课堂管理系统;在线教辅平台;java课设
# 白泽智慧教辅平台 **说明:** 运行时需要修改位置: bzedu\src\main\resources\application.properties bzedu\src\main\resourc ...
- 更安全的rm命令,保护重要数据
更安全的rm命令,保护重要数据 网上流传的安全的rm,几乎都是提供一个rm的"垃圾"回收站,在服务器环境上来说,这实非良方. 我想,提供一个安全的rm去保护一些重要的文件或目录不被 ...
- C. Okabe and Boxes 思维 模拟 or 线段树
C. Okabe and Boxes 这个题目是一个有点思维的模拟,当时没有想到, 思维就是这个栈的排序这里,因为每次直接排序肯定会t的,所以不可以这么写,那怎么表示排序呢? 就是直接把栈清空,如果栈 ...
- B - Legacy CodeForces - 787D 线段树优化建图+dij最短路 基本套路
B - Legacy CodeForces - 787D 这个题目开始看过去还是很简单的,就是一个最短路,但是这个最短路的建图没有那么简单,因为直接的普通建图边太多了,肯定会超时的,所以要用线段树来优 ...
- 完了!CPU一味求快出事儿了!
自我介绍 我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴. 我所在的一号车间里,除了负责执行指令的我,还有负责取指令的小A,负责分析指令的小胖和负责结 ...
- Coursera课程笔记----计算导论与C语言基础----Week 3
存储程序式计算机 冯·诺伊曼式计算机 "关于EDVAC的报告草案" 组成:控制器(协调工作).运算器(算数&逻辑运算).存储器(存储操作信息和中间结果).输入设备.输出设备 ...