java实验报告之模拟银行存取款业务

一个不知名大学生,江湖人称菜狗
original author: jacky Li
Email : [email protected]

Time of completion:2022.12.20
Last edited: 2022.12.20

1c942e780dcd4927b93e20fad9c6e748.jpeg

目录

一、实验目的

二、实验内容

三、总体设计(设计原理、设计方案及流程等)

四、参考代码

有关银行子类的代码1  BankAccount

有关该项目的主体实现代码2  Main

五、运行效果

作者有言


课程名称

面向对象程序设计(Java)

指导教师

***

学号

 

姓名

 

实验地点

***

实验时间

***

项目名称

模拟银行存取款业务

实验类型

综合性

一、实验目的

(1)全面检验面向对象编程思想,巩固Java面向对象、集合和常用API类等方面知识的应用;

(2)加强实践动手能力,能够将从书本上学习到的理论知识用到了实践上。

二、实验内容

模拟网上银行业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1  取款:2  余额:3  修改个人密码:4  退出:0),输入数字1、2时,将进行存取款操作,此时需要输入存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字4时,可修改当前账户的密码;输入数字0时将退出整个系统。提示:可利用HashMap集合存储模拟的账户信息,其中key值用于存储银行卡号,value值用于存储整个账户对象。

三、总体设计(设计原理、设计方案及流程等)

该部分听从友友建议已删除,该代码只能用于参考

四、参考代码

有关银行子类的代码1  BankAccount

/*
	original author: jacky Li
	Email : [email protected]
	Time of completion:2022.12.20
	Last edited: 2022.12.20
*/

package bank;

/**
 * 银行账户实体类
 *
 */
public class BankAccount {
	private String name;
	private String bankId;
	private String password;
	private double money;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getBankId() {
		return bankId;
	}

	public void setBankId(String bankId) {
		this.bankId = bankId;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public double getMoney() {
		return money;
	}

	public void setMoney(double money) {
		this.money = money;
	}

	@Override
	public String toString() {
		return "账户名:" + name + "\n银行卡号:" + bankId + "\n银行卡密码:" + password + "\n余额:" + money;
	}

	public BankAccount(String name, String bankId, String password, double money) {
		super();
		this.name = name;
		this.bankId = bankId;
		this.password = password;
		this.money = money;
	}

	public BankAccount() {
		super();
	}

}

有关该项目的主体实现代码2  Main

/*
	original author: jacky Li
	Email : [email protected]
	Time of completion:2022.12.20
	Last edited: 2022.12.20
*/



package bank;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
	// 储存账户信息
	private static Map<String, BankAccount> accounts;
	private static Scanner scanner = new Scanner(System.in);
	private static BankAccount bankAccount;

	/**
	 * 初始化账户信息
	 * 
	 * @return 初始化结果
	 */
	public static boolean init() {
		BankAccount account1 = new BankAccount("张三", "11234", "123", 1000.99);
		BankAccount account2 = new BankAccount("李四", "22134", "456", 2000);
		BankAccount account3 = new BankAccount("王五", "33124", "789", 100.99);
		accounts = new HashMap<String, BankAccount>();
		accounts.put(account1.getBankId(), account1);
		accounts.put(account2.getBankId(), account2);
		accounts.put(account3.getBankId(), account3);
		// 返回初始化结果
		return accounts.isEmpty() ? false : true;
	}

	/**
	 * 系统入口
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("银行系统正在启动...");
		if (init()) {
			System.out.println("--系统启动成功--");
			System.out.println("输入卡号:");
			String id = scanner.next();
			System.out.println("输入密码:");
			String psw = scanner.next();
			if (login(id, psw)) {
				// 进入系统
				System.out.println("--登录成功--");
				menu(bankAccount);
			} else {
				System.out.println("--登录失败--");
			}
		} else {
			System.out.println("--系统启动失败--");
		}

	}

	/**
	 * 返回登录结果
	 * 
	 * @param id
	 * @param psw
	 * @return
	 */
	private static boolean login(String id, String psw) {
		bankAccount = accounts.get(id);
		return null == bankAccount ? false : true;
	}

	/**
	 * 功能菜单
	 * 
	 * @param account
	 */
	private static void menu(BankAccount account) {
		System.out.println("--当前账户:" + account.getName() + "--");
		main: while (true) {
			System.out.println("1:存款	2:取款	3:余额	4:修改密码	0:退出");
			int item = scanner.nextInt();
			switch (item) {
			case 0:
				scanner.close();
				System.out.println("--退出系统--");
				break main;
			case 1:
				System.out.println("--存款系统--");
				saveMoney(accounts, account);
				break;
			case 2:
				System.out.println("--取款系统--");
				ereduceMoney(accounts, account);
				break;
			case 3:
				System.out.println("--余额系统--");
				showMoney(account);
				break;
			case 4:
				System.out.println("--修改密码--");
				rePassword(accounts, account);
				break;
			default:
				System.out.println("--错误的指令--");
				break;
			}

		}
	}

	/**
	 * 修改密码
	 * 
	 * @param accounts2
	 * @param account
	 */
	private static void rePassword(Map<String, BankAccount> accs, BankAccount account) {
		System.out.println("输入旧的密码:");
		String oldPsw = scanner.next();
		if (oldPsw.equals(account.getPassword())) {
			System.out.println("输入新的密码:");
			String newPsw = scanner.next();
			account.setPassword(newPsw);
			accs.put(account.getBankId(), account);
			System.out.println("--修改成功--");
		} else {
			System.out.println("--旧密码错误--");
		}
	}

	private static void showMoney(BankAccount account) {
		System.out.println(account);
	}

	/**
	 * 取款
	 * 
	 * @param accounts2
	 * @param account
	 */
	private static void ereduceMoney(Map<String, BankAccount> accounts2, BankAccount account) {
		System.out.println("输入取款金额:");
		double money = scanner.nextDouble();
		double now = account.getMoney();
		if (money <= now) {
			account.setMoney(now - money);
			accounts2.put(account.getBankId(), account);
			System.out.println("--取款成功--");
		} else {
			System.out.println("--余额不足--");
		}
	}

	private static void saveMoney(Map<String, BankAccount> accounts2, BankAccount account) {
		System.out.println("输入存入金额:");
		double money = scanner.nextDouble();
		account.setMoney(account.getMoney() + money);
		accounts2.put(account.getBankId(), account);
		System.out.println("--存款成功--");
	}
}

五、运行效果

f1b609601cb44348857f858eb7fa5dcc.png

43ace11aebc74e1090808f80fba98bdf.png

作者有言

如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……

猜你喜欢

转载自blog.csdn.net/weixin_62075168/article/details/128379745
今日推荐