阿婆主呢也是一个Java的初学者,这是最近复习面向对象的一个作业,希望点进来的看官们,不喜勿喷嗷,也希望看官们可以多多指导。

题目

定义一个银行卡类:BankCard,定义如下属性。(注:所有属性类型和初始值自己确定。)
银行卡序号( nextNo):每发一张卡,序号加1,不分哪家银行。
所有卡累计余额(totalBalance):将所有卡的余额加一起。
银行卡号 (cardNo)
客户姓名 (name)
客户身份证号 (personId)
卡上余额 (balance)
定义方法: 注:所有方法参数自己和返回类型自己确定,这里只给出方法名:
构造方法 BankCard()
取得所有卡累计余额 getTotalBalance
取得当前最后的卡号 getCurrentCardNo
取得下一个卡号 getNextCurrentNo
存款 deposit()
取款 withdraw()
取得本卡的余额 getBalance()

完整代码

银行卡类

/*** 银行卡类*      属性:*          银行卡序号*          所有卡余额*          银行卡号*          密码*          卡上余额*/
public class BankCard {private int nextNo;//因为刚开始的时候没有卡存在所以我在这就直接赋值为0;private double totalBalance = 0.0;private String cardNo;private String password;//余额也是因为刚创建生成的卡是没有存款所以直接赋值为0private double balance = 0.0;//这里余额和所有卡的累计余额我都采用的是double类型,用BigInteger类型可能会更合适public BankCard() {}//这里我设定的是办卡就只是办卡,卡上余额随存款取款改变,所以不在创建的时候赋值public BankCard(int nextNo, String cardNo, String password) {this.nextNo = nextNo;this.cardNo = cardNo;this.password = password;}

客户类

/*客户姓名 name客户身份证号 personId客户电话号码*/public class Client {private String name;private String personId;//银行办卡都需要预留手机号,所以添加了一个电话号码的属性private String phone;//因为是客户拥有银行卡所以将银行卡作为客户的一项属性private BankCard bankCard;public Client() {}public Client(String name, String personId, String phone, BankCard bankCard) {this.name = name;this.personId = personId;this.phone = phone;this.bankCard = bankCard;}

对银行卡进行操作的操作类

/*** 银行操作类*/import java.util.ArrayList;
import java.util.Scanner;public class BankOperate {//将会频繁使用到的对象定义在类体中,方便使用,不用多次创建Scanner sc = new Scanner(System.in);//定义在类体中以便能被所有的方法调用进行对数据的操作,也以免造成数据存储混乱ArrayList<Client> clients = new ArrayList<>();//创建银行卡类的对象,通过此对象进行来调用银行卡类里的的set和get方法取值赋值BankCard bc = new BankCard();//创建一个下标,获取登陆成功的客户存储的下标位置,方便客户进行存取款的时候不会错误的操作。int cardIndex = -1;//银行账户注册public void loginMessage(){System.out.println("请输入用户姓名: ");String name = sc.next();System.out.println("请输入身份证号码: ");String personId = sc.next();System.out.println("请输入电话号码: ");String phone = sc.next();//对银行卡的序号采用存放数据的数组长度加1的方式来赋值,确保每次创建新卡号时序号自动加1int nextNo = clients.size() + 1;//在这我对银行卡号的设置是去得当前毫秒数的一部分以及身份证号的一部分然后使用+拼接在一起组成的String str1 = String.valueOf(System.currentTimeMillis()).substring(2);String str2 = personId.substring(6,14);String cardNo = str1 + str2;System.out.println("请输入你的银行卡密码: ");String password = sc.next();BankCard bankCard = new BankCard(nextNo,cardNo,password);Client c = new Client(name,personId,phone,bankCard);clients.add(c);System.out.println(clients.toString());}//取得所有卡余额public void getTotalBalance(){//这里我是为了方便自己不会搞混所以定义了一歌变量来获取卡的总余额来进行接下来的操作double totalBalance = bc.getTotalBalance();for (Client cc: clients) {double sum = Double.sum(totalBalance,cc.getBankCard().getBalance());bc.setTotalBalance(sum);}}//取得当前最后的卡号public void getCurrentCardNo(){//因为我觉得卡号不会凭空生成所以取得当前已经存在集合中创建好的账户的最后一个就可以了String s = clients.get(clients.size() - 1).getBankCard().getCardNo();System.out.println(s);}//取得下一个卡号public void getNextCurrentNo(){System.out.println("输入当前卡号序号");int cardNo = sc.nextInt();//创建一个变量来获取输入的当前卡号序号存储的位置,以便找到下一个卡号存储的位置int index = -1;if (cardNo != 0 && cardNo != clients.get(clients.size() -1).getBankCard().getNextNo()){for (int i = 0;i < clients.size();i++){if (cardNo == clients.get(i).getBankCard().getNextNo()){index = i;break;}}System.out.println(clients.get(clients.size() - 1).getBankCard().getCardNo());}System.out.println("卡号" + cardNo + "不存在,或者已是最后卡号");}//用户登录public void login(){System.out.println("请输入您的银行卡号");String cardNo = sc.next();System.out.println("请输入您的银行卡密码");String pwd = sc.next();if (cardNo != null){for (int i = 0;i < clients.size();i ++){if (cardNo.equals(clients.get(i).getBankCard().getCardNo())&& pwd.equals(clients.get(i).getBankCard().getPassword())){System.out.println("用户登陆成功");//登录成功后将该用户的下标赋值给提前定义好的变量cardIndex = i;break;}else {System.out.println("用户名或密码错误,请重新登录");}}}else{System.out.println("当前卡号不存在,请注册后再进行此操作!");}}//存款public void deposit(){System.out.println("请输入您的存款金额: ");double money = sc.nextDouble();double balance = clients.get(cardIndex).getBankCard().getBalance();double afterDeposit = Double.sum(balance,money);clients.get(cardIndex).getBankCard().setBalance(afterDeposit);}//取款public void withdraw(){System.out.println("请输入您的取款金额: ");double money = sc.nextDouble();double balance = clients.get(cardIndex).getBankCard().getBalance();double afterWithdraw = balance - money;clients.get(cardIndex).getBankCard().setBalance(afterWithdraw);}//取得本卡的余额public void getBalance(){System.out.println(clients.get(cardIndex).getBankCard().getBalance());}//查询所有客户信息public void selectAll(){for (Client cc : clients){System.out.println(cc.toString());}}//查询指定客户信息public void selectOne(){System.out.println("输入您想查找的客户姓名: ");String name = sc.next();System.out.println("输入您想查找的客户卡号: ");String cardNo = sc.next();if (cardNo != null){for (int i = 0;i < clients.size();i ++){if (clients.get(i).getName().equals(name)&& clients.get(i).getBankCard().getCardNo().equals(cardNo)){System.out.println(clients.get(i).toString());}else {System.out.println("该客户不存在或姓名与卡号有误,请重新查找");}}}else {System.out.println("您的输入有误,请重新输入");}}

菜单界面

 public void menu(){System.out.println("=============欢迎进入银行管理系统=============");System.out.println("请问您的身份是: ");System.out.println("1、银行工作人员");System.out.println("2、用户");System.out.println("0、退出系统");int num = sc.nextInt();switch (num){case 1:menu1();break;case 2:menu2();break;default:System.out.println("欢迎您的使用,系统已退出");System.exit(0);}}private void menu1() {System.out.println("=============欢迎进入银行信息管理系统=============");System.out.println("请问你要执行哪项功能: ");System.out.println("1、查询所有客户信息");System.out.println("2、查询指定客户信息");System.out.println("3、获取所有卡号总余额");System.out.println("4、取得下一个卡号");System.out.println("5、取得当前最后的卡号");System.out.println("0、结束使用,返回上一级目录");int num = sc.nextInt();switch (num){case 1:selectAll();menu1();break;case 2:selectOne();menu1();break;case 3:getTotalBalance();menu1();break;case 4:getNextCurrentNo();menu1();break;case 5:getCurrentCardNo();menu1();break;default:System.out.println("使用结束,返回上一级目录");menu();}}private void menu2() {System.out.println("=============欢迎进入用户操作系统=============");System.out.println("请问你要执行哪项功能: ");System.out.println("1、注册账号");System.out.println("2、登录账户");System.out.println("0、结束使用,返回上一级目录");int num = sc.nextInt();switch (num){case 1:loginMessage();menu2();break;case 2:login();menu3();break;default:System.out.println("使用结束,返回上一级目录");menu();}}private void menu3() {System.out.println("=============金额存取管理系统=============");System.out.println("请问你要执行哪项功能: ");System.out.println("1、存款");System.out.println("2、取款");System.out.println("3、查询账户余额");System.out.println("0、结束使用,返回上一级目录");int num = sc.nextInt();switch (num){case 1:deposit();menu3();break;case 2:withdraw();menu3();break;case 3:getBalance();menu3();break;default:System.out.println("0、结束使用,返回上一级目录");menu2();}}

在此我将目录分为了两部分,一种是银行对卡进行的相关操作,一部分是客户的操作

以上就是我写的所有内容了,可能有很多不足,在这谢谢各位看官的观看了!!!

银行卡相关功能简要实现相关推荐

  1. Stripe 银行卡支付功能初步指南(Java)

    Stripe 国外银行卡支付功能指南(Java) 简介 编写这篇文章的目的就是~~没有什么目的.网上关于stripe银行卡支付代码很多,有写得很好的,但是太多太杂了,不系统.所以我就结合项目中实际应用 ...

  2. Matlab软件有哪些版本,matlab软件功能简要介绍及版本描述

    <matlab软件功能简要介绍及版本描述>由会员分享,可在线阅读,更多相关<matlab软件功能简要介绍及版本描述(2页珍藏版)>请在人人文库网上搜索. 1.MATLAB功能简 ...

  3. 模拟银行ATM存款存取款的相关功能

    模拟银行ATM存款存取款的相关功能 具体需求: 模拟.3张银行卡,1001,1002,1003,分别设置密码和余额(可以用9个变里分别保存卡号.密码和余额) 提示用户输入银行卡和密码 如果用户输入正确 ...

  4. 【Flutter】Flutter 调试 ( 调试控制相关功能 | 断点管理 | 代码运行控制 )

    文章目录 一.调试控制相关功能 二.断点管理 三.代码运行控制 四.相关资源 一.调试控制相关功能 " Return 'main.dart' " 重新运行项目 ; " S ...

  5. (仿头条APP项目)1.app载入界面相关功能实现

    app载入界面相关功能实现 模块功能 1.设置页面布局 2.初始化视频播放 //控制是否跳到主界面private boolean isjump = false;private VideoView vi ...

  6. wxWidgets:wxWidgets 示例演示网络相关功能

    wxWidgets:wxWidgets 示例演示网络相关功能 wxWidgets:wxWidgets 示例演示网络相关功能 wxWidgets:wxWidgets 示例演示网络相关功能 #includ ...

  7. putty上传文件到linux_基于windows安装部署putty小工具及相关功能介绍

    概述 PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件.较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台,并打算移植至Mac OS X上.除了 ...

  8. linux如何实现相关功能源代码

    如果想进一步了解 linux系统,熟悉一些系统底层的东西还是非常必要的,我们可以先了解一些linux命令是如何实现相关功能的,那么如何获得命令的源代码呢?下面我们详细介绍一下. 下面以获取cat命令的 ...

  9. 零元学Expression Blend 4 - Chapter 25 以Text相关功能就能简单做出具有设计感的登入画面...

    原文:零元学Expression Blend 4 - Chapter 25 以Text相关功能就能简单做出具有设计感的登入画面 本章将交大家如何运用Blend 4 内的Text相关功能做出有设计感的登 ...

最新文章

  1. c语言以空格分割字符串_C语言: 利用sscanf() 函数分割字符串
  2. vba字典合并单元格为空_VBA合并单元格求和处理套路
  3. 2018最新版 手机号、验证码正则表达式 jq + 小程序
  4. linux双wan网关负载均衡,Csico2951路由器,如何做到双WAN口负载均衡?
  5. Tecplot云图锯齿状边界解决办法
  6. 三周第三次课(12月27日)
  7. 关于服务限流的一些思考
  8. 应用安全测试的发展趋势
  9. C语言的变量的作用域和生存期
  10. 2021-06-27循环控制 mapSet
  11. ModelSim 仿真教程
  12. MySQL是怎样运行的(实体书扫描+掘金小册)免费下载
  13. mac os 系统word文档批量更改图片尺寸问题汇总
  14. Java 数字转汉字
  15. python 日期运算_Python中关于日期的计算总结
  16. iOS设计 - 一款APP从设计稿到切图过程概述
  17. VC++ 中主线程等待子线程结束的方法
  18. matlab找不到exe文件,如何修复pyinstaller在从scrip创建exe文件时找不到matlab文件的问题...
  19. C#-linq实战003-查询-Where
  20. (一)买基金的基础知识

热门文章

  1. 2015要和自己好好的算算
  2. ClickHouse学习笔记(二):执行计划、建表优化、语法优化规则、查询优化、数据一致性
  3. turn off ASLR in linux
  4. 在源文件中没有找到用 /Ycstdafx.h 命令行选项指定的“#include”语句
  5. Excel转Pajek可读文件格式(.net)Python实现
  6. acunetix wvs网站漏洞扫描
  7. 中国移动3月净增5G套餐用户1632万户,累计达3172万户
  8. SQLyog 查询表,数据表,查询结果字体变大,表变大
  9. Qt5配置winpCap
  10. LMD改进的局部均值分解matlab代码模版