基于java的网上银行业务

news/2024/11/24 11:57:28/

一,实验目的

 

(1)进一步巩固Java面向对象、集合和IO方面的知识;

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

二、实验内容

模拟网上银行业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1  取款:2  余额:3  修改个人密码:4  退出:0),输入数字1、2时,将进行存取款操作,此时需要输入

存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字4时,可修改当前账户的密码;输入数字0时将退出整个系统。提示:可利用HashMap集合存储模拟的账户信息,其中key值用于存储银行卡号,value值用于存储整个账户对象。

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

正在上传…重新上传取消正在上传…重新上传取消

  1. 利用类的封装的思想,创建银行帐户类User,在类中定义五个属性cardId、cardPwd、userName、call和account分别表示帐户的银行卡号、银行卡密码、账户名、手机号码和存款额。
  2. 创建UsersData类,该类用于模拟银行系统中的账户人信息,相当于数据库的功能。登录时需通过用户输入的信息和系统中保存的账户信息进行比较,从而判断登录是否成功。UsersData类中通过Map集合存储模拟的账户信息,其中key值用于存储银行卡号,value值用于存储整个账户对象。该类中还需提供两个方法,分别是获取单个账户信息的方法和获取所有个账户信息的方法。
  3. 创建一个Bank类,该类用于处理网上银行的登录、存取款和显示余额等所有业务逻辑。登录时需要验证用户输入的银行卡号和银行卡密码,是否存在于银行系统中,如果是提示登录成功,否则提示登录失败,让用户重新登录。登录成功后,需根据提示的四种操作类型,输入相应的数字,对当前账户存款进行存取和查询余额、修改账户密码操作。操作完成后,输入数字0将退出整个系统。

 

  • 实验步骤(包括主要步骤、代码分析等)

1)User类模拟账户信息表示帐户的银行卡号、银行卡密码、账户名、手机号码和存款额,并含获得、设置各信息的功能。该类须最先创建,后续的类会使用到。

public class User {private String cardId; // 银行卡号private String cardPwd; // 银行卡密码private String userName;// 账户名private String call; // 手机号码private int 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;}

2)UsersData类模拟账户信息库,构造方法初始化已存储的账户数据,并具有获取单个账户信息的方法和获取所有个账户信息的方法。

import java.util.HashMap;
public class UsersData {private static UsersData instance = null;private HashMap<String, User> users = new HashMap<String, User>();private UsersData() {// -------刘备--------------------User u1 = new User();u1.setCardId("1001");u1.setCardPwd("123456");u1.setUserName("刘备");u1.setCall("13281525712");u1.setAccount(1000);users.put(u1.getCardId(), u1);// ------关羽-------------------User u2 = new User();u2.setCardId("1002");u2.setCardPwd("234567");u2.setUserName("关羽");u2.setCall("13181527253");u2.setAccount(1000);users.put(u2.getCardId(), u2);// -----张飞-------------------User u3 = new User();u3.setCardId("1003");u3.setCardPwd("345678");u3.setUserName("张飞");u3.setCall("13041018869");u3.setAccount(1000);users.put(u3.getCardId(), u3);}// 懒汉式单例模式public static UsersData getInstance() {if (instance == null) {synchronized (UsersData.class) {if (instance == null) {instance = new UsersData();}}}return instance;}// 根据银行卡号获取对应单个账户的信息public User getUser(String cardId) {User user = (User) users.get(cardId);return user;}// 获取所有账户的信息public HashMap<String, User> getUsers() {return users;}
}

3)Bnak类模拟网上银行登录页面,实现存取、查询余额的方法。

首先要实现用户的登陆,判断卡号和密码。

登陆成功后,提示四种可操作类型(存款:1、取款:2、余额:3、退出:0),输入相应类型数字,进入其对应功能。

选择1,存款时输入金额后,要判断金额是否合理(输入金额不能小于0),合理显示存款成功,不合理回到操作类型选择功能,让其从新选择操作。

选择2,取款时输入相应金额后,也要进行金额是否合理判断,并且其取款金额不能大于账户余额,如果大于账户余额,则提示“余额不足,取款失败!”,并回到操作类型选择功能。

选择3,系统显示账户余额。

选择0,退出系统,程序运行结束。

import java.util.*;public class Bank {private UsersData dbutil = UsersData.getInstance();private static User user;public static void main(String[] args) {// TODO Auto-generated method stubBank b = new Bank();b.login();b.operate();}/*** 账户金额存入、取出和查询操作*/public void operate() {while (true) {System.out.println("请输入您要进行的操作类型,按回车键结束");System.out.println("存款:1" + "\t" + "取款:2"+ "\t"+"余额:3" +"\t "+"修改账户密码:4"+"\t" + "退出:0");Scanner in = new Scanner(System.in);String s = in.nextLine(); // 输入的操作类型if("1".equals(s) || "2".equals(s)){int num = 0;try{System.out.print("输入存取的金额:");num = Integer.parseInt(in.nextLine());}catch(Exception e){System.out.println("金额输入错误!");continue;}switch (s) {case "1": // 存款操作income(num);break;case "2": // 取款操作takeout(num);break;}}else if("3".equals(s)){show();}else if("4".equals(s)) {System.out.println("请输入您修改后的密码:");String cardPwd1=in.nextLine();changePwd(cardPwd1);}else if("0".equals(s)){System.out.println("退出系统!");return;}else{System.out.println("请输入0~4之间的数字选择相关操作!");}}}


      

 /*** 用户登录网上银行*/public void login() {System.out.println("欢迎进入网上银行系统!");while (true) {Scanner in = new Scanner(System.in); // 键盘录入System.out.println("请输入银行卡号:");String cardId = in.nextLine();System.out.println("请输入银行卡密码:");String cardPwd = in.nextLine();user = dbutil.getUser(cardId);// 登录if (dbutil.getUsers().containsKey(cardId)&& String.valueOf(user.getCardPwd()).equals(cardPwd)) {System.out.println("登录成功!欢迎" + user.getUserName() + "先生");break;} else {System.out.println("银行卡号或密码错误!");continue;}}}/*** 存款** @param num*/public void income(int num) {int account = user.getAccount() + num;user.setAccount(account);System.out.println("存入金额" + num + "元成功!");}/*** 取款** @param num*/public void takeout(int num) {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 + "元");}/*** 修改账户密码** @param cardPwd*/public void changePwd(String cardPwd) {user.setCardPwd(cardPwd);}}


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

相关文章

网上银行显示本服务器只显示,使用企业网上银行时常见报错提示有哪些,怎么解决?...

在登录及操作中可能出现以下情况&#xff0c;请根据具体问题参照以下方法解决&#xff1a; 一&#xff0e; 在验证E盾证书界面&#xff0c;加载证书处的下拉框中有多个证书编号或显示的证书编号与E盾背面的不符。 解决方法&#xff1a;如遇此类问题&#xff0c;请在验证E盾界面…

网上银行的概念和特征

网上银行&#xff08;Internet bank or E-bank&#xff09;&#xff0c;包含两个层次的含义&#xff0c;一个是机构概念&#xff0c;指通过信息网络开办业务的银行&#xff1b;另一个是业务概念&#xff0c;指银行通过信息网络提供的金融服务&#xff0c;包括传统银行业务和因信…

互联网三大巨头银行,网商银行、微众银行和新网银行有什么区别?

话说腾讯&#xff0c;小米和阿里巴巴在各自的领域都取得了巨大的成功&#xff0c;但是三家企业都想在对方优势行业打一个伏击战&#xff0c;微信通过红包这个功能在支付领域缩小了与支付宝的差距&#xff0c;而阿里巴巴通过钉钉切入职场领域在社交软件方面也取得了不晓得突破!小…

2.4 网上银行

2.4 网上银行一、网上银行中国银行网上银行是在传统业务基础上,利用Internet/Intranet技术,将银行传统业务流程有机地整合起来,为客户提供统一、全面、安全、实时的金融服务。 网上银行改变了银行与企业之间的传统联系模式,实现银行业务与信息集成的有机结合,加快了客户与银…

idea乱码的相关问题

idea控制台乱码&#xff08;即&#xff1a;tomacat等启动时的乱码&#xff09; 第一步&#xff1a; 控制台tomcat启动信息乱码解决&#xff08;红色字体&#xff09; 1 在本地 tomcat 的配置文件中找到 logging.properties 文件设置日志输出的编码为 UTF-8 追加的配置信息为…

快速掌握Allegro PCB设计检查专题

&#x1f3e1;《总目录》   &#x1f3e1;《宝典目录》 目录 1&#xff0c;概述2&#xff0c;大纲Cadence Allegro 忽略DRC标识方法Cadence Allegro 恢复忽略的DRC标识的方法Cadence Allegro 修改DRC标识大小Cadence Allegro 修改DRC标识颜色Cadence Allegro 修改Waived DRC标…

EOS各种问题汇总,EOS入门必读

传送门 1.【EOS开发环境搭建源码编译】 2.【EOS源码调试】 3.【EOS智能合约开发实践】 4.【主网测试网络实践】 EOS资源问题 消耗的CPU,NET资源何时恢复&#xff0c;目前是一天内不执行任何action,消耗的CPU就会恢复&#xff0c;但是它不是自动恢复的&#xff0c;所以一天后你…

Kaggle——海星目标检测比赛

文章目录 一、&#x1f4d6;赛事简介二、&#x1f4cc;数据描述三 、数据预处理3.1 &#x1f4da; 导入相关库&#xff0c;设置超参数3.2 &#x1f9f9;数据清洗3.3 ✏️写入标注图片3.4 &#x1f528;获取bbox&#xff0c;生成标注文件3.5 &#x1f4c1; 创建Folds字段&#x…