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

news/2025/3/25 12:47:34/

一个不知名大学生,江湖人称菜狗
original author: jacky Li
Email : 3435673055@qq.com

Time of completion:2022.12.20
Last edited: 2022.12.20

目录

一、实验目的

二、实验内容

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

四、参考代码

有关银行子类的代码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 LiEmail : 3435673055@qq.comTime of completion:2022.12.20Last 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;}@Overridepublic 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 LiEmail : 3435673055@qq.comTime of completion:2022.12.20Last 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("--存款成功--");}
}

五、运行效果

作者有言

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


http://www.ppmy.cn/news/5131.html

相关文章

python中的模块与包详解

目录 一.什么是模块 二.模块的导入 1.import 模块名 2.from 模块名 import 功能名 3.from 模块名 import * 4.as定义别名 模块导入总结 三.自定义模块 制作自定义模块 用pycharm演示 测试模块_ _main_ _变量的作用 演示 ‘_ _all_ _’变量 自定义模块小结 四.python中的包…

【认识】wireshark使用教程

本文章&#xff0c;是简单粗暴学习Wireshark的抓包功能后&#xff0c;记录的一些笔记。 1 Wireshark简介及抓包原理及过程 1.1 简介 Wireshark是1个网络封包分析软件。网络封包分析软件的功能是截取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用…

专利解析|数据中台—数据流配置弹框交互优化方法

优化用户交互 在企业信息化转型的过程中&#xff0c;数据中台提供全行业从咨询规划到技术平台落地运营的数字化方案。随着企业规模的不断扩大&#xff0c;企业信息化转型的必要性也逐步地增加&#xff0c;其功能的复杂度更是跨越式地增加。人们在处理信息、学习规程和记忆细节…

【学习笔记】JDK源码学习之HashMap(附带面试题)

最近发布 AND 其他好文 &#xff1a;地址 什么是 HashMap &#xff1f;它和 Map 之间又有什么样的关系呢&#xff1f;我们是否能拿它在并发中使用呢&#xff1f; 带着以上问题&#xff0c;让我们一同走入这让人着迷的 HashMap 。 1、什么是HashMap&#xff1f; HashMap 基于…

Diffusion Model合集 part1

扩散模型原理介绍1一&#xff0c;条件概率公式与高斯分布的KL散度重参数技巧二&#xff0c;VAE和多层VAE回顾单层VAE的原理公式与置信下界多层VAE的原理公式与置信下界三&#xff0c;Diffusion Model 图示四&#xff0c;扩散过程(Diffusion Process)与VAE的区别&#xff1a;如何…

m基于DCAR编码感知的网络路由发现算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 1.路由请求过程 当一个源节点有数据要向目的节点发送且在当前路由缓存中未发现可用路径时&#xff0c;则启动路由请求过程&#xff0c;下面分步对该过程进行说明&#xff1a; 步骤1&#xff1a…

C++ 类的六个特殊成员函数

简 述: 分析 C Class 的六个特殊成员函数 wiki &#xff0c;并且手动实现一番&#xff1b; 默认构造函数析构函数复制构造函数复制赋值运算符移动构造函数移动赋值运算符 文章目录原理代码系列本文初发于 “偕臧的小站”&#xff0c;同步转载于此。 原理 ​ 特殊成员函数是类…

4.http模块

http模块是Node.js官方提供创建web服务器的模块&#xff0c;在使用http模块前首先导入http模块 目录 1 一些概念 1.1 IP 1.2 域名 1.3 端口 2 创建一个基本的web服务器 3 req请求对象 4 res响应对象 5 不同地址获取不同响应 6 在服务中加载html文件 6.1 基…