本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1 取款:2 余额:3 退出:0),输入数字1、2时,将进行存取款操作,此时需要输入存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字0时将退出整个系统。
项目需求分析:
- 首先要实现用户的登陆,判断卡号和密码。
- 登陆成功后,提示四种可操作类型(存款:1、取款:2、余额:3、退出:0),输入相应类型数字,进入其对应功能。
- 选择1,存款时输入金额后,要判断金额是否合理(输入金额不能小于0),合理显示存款成功,不合理回到操作类型选择功能,让其从新选择操作。
- 选择2,取款时输入相应金额后,也要进行金额是否合理判断,并且其取款金额不能大于账户余额,如果大于账户余额,则提示“余额不足,取款失败!”,并回到操作类型选择功能。
- 选择3,系统显示账户余额。
- 选择0,退出系统,程序运行结束。
package com.starry.project;
import java.util.Scanner;
public class Bank {
Scanner scanner = new Scanner(System.in);
DBUtil dbutil = DBUtil.getInstance();
User user = new User();
public static void main(String[] args) {
Bank bank = new Bank();
bank.login();
bank.operate();
}
public void login() {
System.out.println("欢迎进入网上银行系统!");
while (true) {
System.out.println("请输入银行卡号:");
String cardId = scanner.next();
user = dbutil.getUser(cardId);
//containsKey():如果hashMap中存在指定的value对应的映射关系返回true
if (dbutil.getUsers().containsKey(cardId)) {
break;
} else {
System.out.println("银行卡号输入错误!请重新输入:");
continue;
}
}
while(true){
System.out.println("请输入银行卡密码:");
String cardPwd = scanner.next();
if (String.valueOf(user.getCardPwd()).equals(cardPwd)) {
System.out.println("登录成功!欢迎" + user.getUserName() + "先生");
break;
}else {
System.out.println("银行卡密码输入错误!请重新输入:");
continue;
}
}
}
//存款
public void income(int num) {
System.out.println("请输入存入金额:");
num = scanner.nextInt();
if(num <= 0){
System.out.println("存款金额输入错误!");
}else{
int account = user.getAccount() + num;
user.setAccount(account);
System.out.println("存入金额" + num + "元成功!");
}
}
//取款
public void takeout(int num) {
System.out.println("请输入取款金额:");
num = scanner.nextInt();
if (user.getAccount() >= num) {
int account = user.getAccount() - num;
user.setAccount(account);
System.out.println("取出金额" + num + "元成功!");
} else {
System.out.println("余额不足,取款失败!");
}
}
//显示账户余额
public void show(){
int account = user.getAccount();
System.out.println("账户总余额为" + account + "元");
}
public void operate() {
while (true) {
System.out.println("请输入您要进行的操作类型,按回车键结束");
System.out.println("存款:1" + "\t" + "取款:2" + "\t" + "余额:3" + "\t " + "退出:0");
int opt = 0;
int num = 0;
opt = scanner.nextInt(); // 输入的操作类型
if(opt < 0 || opt >3){
System.out.println("请输入0~4之间的数字选择相关操作!");
}
else{
switch (opt) {
case 1:
income(num);
break;
case 2:
takeout(num);
break;
case 3:
show();
break;
case 0:
System.out.println("退出系统");
return;
}
}
}
}
}
ackage com.starry.project;
import java.util.HashMap;
public class DBUtil {
private static DBUtil instance = null;
private HashMap<String, User> users = new HashMap<String, User>();
private DBUtil(){
//--------刘备----------
User u1 = new User();
u1.setCardId("1001");
u1.setCardPwd("123456");
u1.setUserName("刘备");
u1.setCall("13891352572");
u1.setAccount(2000);
users.put(u1.getCardId(), u1);//将指定的键/值对插入到 HashMap 中
//--------周斯越----------
User u2 = new User();
u2.setCardId("1002");
u2.setCardPwd("135790");
u2.setUserName("周斯越");
u2.setCall("13891352573");
u2.setAccount(3000);
users.put(u2.getCardId(), u2);
//--------樊治欣----------
User u3 = new User();
u3.setCardId("1003");
u3.setCardPwd("246810");
u3.setUserName("樊治欣");
u3.setCall("13891352574");
u3.setAccount(5000);
users.put(u3.getCardId(), u3);
}
// 单例模式,保证一个类仅有一个实例
public static DBUtil getInstance() {
if (instance == null) {
instance = new DBUtil();
}
return instance;
}
// 根据银行卡号获取对应单个账户的信息
public User getUser(String cardId) {
User user = (User) users.get(cardId);
return user;
}
// 获取所有账户的信息
public HashMap<String, User> getUsers() {
User user = new User();
user.getCardPwd();
return users;
}
}
package com.starry.project;
public class User {
private String cardId; // 银行卡号
private String cardPwd; // 银行卡密码
private String userName;// 账户名
private String call; // 手机号码
private int account; // 存款额
public User() {
}
public User(String cardId, String cardPwd, String userName, String call, int account) {
this.cardId = cardId;
this.cardPwd = cardPwd;
this.userName = userName;
this.call = call;
this.account = account;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getCardPwd() {
return cardPwd;
}
public void setCardPwd(String cardPwd) {
this.cardPwd = cardPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getCall() {
return call;
}
public void setCall(String call) {
this.call = call;
}
public int getAccount() {
return account;
}
public void setAccount(int account) {
this.account = account;
}
}