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 ...
随机推荐
- C# richtextbox 自动下拉到最后 方法 & RichTextBox读取txt中文后出现乱码
C# richtextbox 自动滚动到最后 光标到最后 自动显示最后一行 private void richTextBox1_TextChanged(object sender, EventArg ...
- 数学--数论--Alice and Bob (CodeForces - 346A )推导
It is so boring in the summer holiday, isn't it? So Alice and Bob have invented a new game to play. ...
- 数学--数论--HDU - 6322 打表找规律
In number theory, Euler's totient function φ(n) counts the positive integers up to a given integer n ...
- 常用设计模式的实现,以及Netty中的设计模式
1.观察者模式 有两个角色,观察者和被观察者.当被观察者发出消息后,注册了的观察者会收到其消息,而没有注册的观察者就不会收到. //定义观察者接口 interface Observer{ //通知观察 ...
- C. Anton and Fairy Tale(数学推式子)
\(数学题,式子并不难推,但边界是真的烦\) \(\color{Red}{Ⅰ.其实可以发现,当m>=n时,每次都可以粮食补到n,所以一定是在第n天消耗完毕}\) \(\color{Purple} ...
- C. Four Segments 前缀后缀
C. Four Segments 这种分成了三个节点一般都可以处理一下前缀处理一下后缀,或者处理一下前面的这个点,处理一下后面的这个点,然后再枚举中间这个点. 如果和中间这个点有关的,那么就可以换一下 ...
- java基础篇 之 位运算符
按位操作符 按位操作符用来操作基本数据类型中的单个"比特"(bit),即二进制位.按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果. 我们常用的按位操作 ...
- 201771010113 李婷华 《面向对象程序设计(Java)》第十一周总结
一.理论知识部分 第九章 集合 1.数据结构介绍: 线性结构:线性表,栈,队列,串,数组,文件.非线性结构:树,图. 散列表:又称为哈希表. 散列表算法的基本思想是:以结点的关键字为自变量,通过一定 ...
- 使用elasticsearch搭建自己的搜索系统
什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能. 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁 ...
- iOS中的几种锁的总结,三种开启多线程的方式(GCD、NSOperation、NSThread)
学习内容 欢迎关注我的iOS学习总结--每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summary OC中的几种锁 为什么要引入锁 ...