设计性实验报告

课程名称

面向对象程序设计(Java)

   

项目名称

模拟银行存取款业务

实验类型

设计性

二、实验内容

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

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

我的代码使用了对象序列化反序列化的方式 将对象属性保存到磁盘中去,从而实现记录底层数据,并且将序列化和反序列化写成两个独立的方法,我们只需在主类中调用方法即可;在对象类中实现了Serializable类。

在com.ggc包下创建了BankObject对象类和BankDemo主类

在BankObject类中定义了一些private属性和对应的public型setter和getter方法用于对成员变量赋值和引用

在主类中定义的mothod1方法用于对错误卡号报错并重新输入

Mothod2方法用于对错误密码报错并重新输入

卡号为键,对象为值。用keySet方法得到键的set集合,用增强for循环,并在循环中对输入的卡号进行判断,如果错误就一直调用mothod1方法,从而实现卡号报错并重新输入;

密码判断与卡号判断大致相同mothod2方法

1.存款 2.取款 3.余额查询 4.修改密码 0.退出

该业务使用switch开关语句,在语句中使用while语句检验输入的金额是否合法,并实现重新输入。

特点:在switch语句外面使用while语句来实现0.退出功能

使用方法循环调用的形式对错误内容报错并重新输入

逻辑性较强环环相扣

package com.ggc;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;public class BankDemo {private static int ID;public static void main(String[] args) {BankDemo bd=new BankDemo();//bd.objectInputStream();HashMap<Integer,BankObject> map=new HashMap<Integer,BankObject>();BankObject B1=(BankObject)bd.objectInputStream();BankObject B2=(BankObject)bd.objectInputStream1();//BankObject B1=new BankObject("刘德华", "男",123456,1000);//BankObject B2=new BankObject("赵瑞娜","女",654321,2000);map.put(666666, B1);map.put(888888, B2);Scanner scanner=new Scanner(System.in);int n=0;int k=1,deposit;//开关条件,存款金额int withdrawals;//取款金额int password;int Id,Code;boolean bl ;//返回值Set<Integer> keySet=map.keySet();//for(Integer key :keySet) {//BankObject value=map.get(keySet);System.out.println("----------欢迎使用G式银行服务系统-----------");System.out.println("请输入银行卡号:");Id=scanner.nextInt();//BankDemo bd=new BankDemo();//bd.mothod1();for(Integer key : keySet) {//if(n>=1) System.out.println("银行卡号输入错误,请重新输入!");if((int)key!=Id) {n++;if(n==2) {System.out.println("银行卡号输入错误,请重新输入!");do {Id=scanner.nextInt();bl=bd.mothod1(keySet, Id);//bl=bd.mothod1(keySet);}while(bl);//System.out.println("银行卡号正确!");System.out.println("请输入密码!");}}else {System.out.println("请输入密码:");ID=Id;/*Code=scanner.nextInt();if(map.get(key).getCode()==Code) {System.out.println("登陆成功!欢迎"+map.get(key).getName());}else {System.out.println("密码错误,请重新输入!");}*/}}//BankObject value=map.get(Id);Id=ID;Code=scanner.nextInt();do {if(Code!=map.get(Id).getCode()) {System.out.println("密码输入错误,请重新输入!");bl=bd.mothod2(map.get(Id));}else {bl=false;}}while(bl);System.out.println("登陆成功!欢迎"+map.get(Id).getName()+map.get(Id).getSex()+"士"+"!");System.out.println("请选择您需要办理的业务:"+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");while(k!=0) {k=scanner.nextInt();switch(k) {case 1:{System.out.println("请输入存款金额:");deposit=scanner.nextInt();while(deposit<0) {System.out.println("输入金额非法!请重新输入");deposit=scanner.nextInt();}map.get(Id).setBalance(map.get(Id).getBalance()+deposit);System.out.println("存款成功!您当前的余额为:"+map.get(Id).getBalance());map.get(Id).setBalance(map.get(Id).getBalance());System.out.println("请选择您需要办理的业务:"+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");break;}case 2:{System.out.println("请输入取款金额:");withdrawals=scanner.nextInt();while(withdrawals<0||withdrawals>map.get(Id).getBalance()) {System.out.println("输入金额非法!请重新输入");withdrawals=scanner.nextInt();}map.get(Id).setBalance(map.get(Id).getBalance()-withdrawals);System.out.println("取款成功!您当前的余额为:"+map.get(Id).getBalance());map.get(Id).setBalance(map.get(Id).getBalance());System.out.println("请选择您需要办理的业务:"+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");break;}case 3:{System.out.println("您当前的余额为:"+map.get(Id).getBalance());System.out.println("请选择您需要办理的业务:"+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");break;}case 4:{System.out.println("请输入旧密码:");password=scanner.nextInt();while(password!=map.get(Id).getCode()) {System.out.println("旧密码输入错误!请重新输入");password=scanner.nextInt();}System.out.println("请输入新密码:");password=scanner.nextInt();map.get(Id).setCode(password);System.out.println("密码修改成功!");System.out.println("请选择您需要办理的业务:"+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");break;}}}bd.objectOutputStream(B1);bd.objectOutputStream1(B2);System.out.println("银行系统已退出!欢迎您再次使用!");}public void objectOutputStream1(BankObject B) {ObjectOutputStream oos=null;try {oos=new ObjectOutputStream(new FileOutputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos1.txt"));oos.writeObject(B);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {oos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public void objectOutputStream(BankObject B) {ObjectOutputStream oos=null;try {oos=new ObjectOutputStream(new FileOutputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos.txt"));oos.writeObject(B);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {oos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public Object objectInputStream() {BankObject b=null;ObjectInputStream ois=null;try {ois=new ObjectInputStream(new FileInputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos.txt"));Object obj=ois.readObject();b=(BankObject) obj;System.out.println(b.getName()+","+b.getSex()+","+b.getBalance());ois.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {ois.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return b;}public Object objectInputStream1() {BankObject b=null;ObjectInputStream ois=null;try {ois=new ObjectInputStream(new FileInputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos1.txt"));Object obj=ois.readObject();b=(BankObject) obj;System.out.println(b.getName()+","+b.getSex()+","+b.getBalance());ois.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {ois.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return b;}public boolean mothod1(Set keySet,int Id) {//Scanner scanner=new Scanner(System.in);//int c=scanner.nextInt();int m=0;for(Object key : keySet) {if((int)key!=Id) {m++;}}if(m>=2) {System.out.println("银行卡号输入错误,请重新输入!");}if( m>=2) {return true;}else {ID=Id;return false;}}public boolean mothod2(BankObject value) {Scanner scanner=new Scanner(System.in);int c=scanner.nextInt();int m=0;// for( m=0;m<=2;) {if((int)value.getCode()!=c) {m++;}//}if(m>=2) {System.out.println("密码输入错误,请重新输入!");}if( m>=1) {return true;}else {return false;}}
}

五、结果分析与总结

----------欢迎使用G式银行服务系统-----------

请输入银行卡号:

111111

银行卡号输入错误,请重新输入!

1111111

银行卡号输入错误,请重新输入!

888888

请输入密码!

444444

密码输入错误,请重新输入!

555555

密码输入错误,请重新输入!

654321

登陆成功!欢迎xxx女士!

请选择您需要办理的业务:1.存款 2.取款 3.余额查询 4.修改密码 0.退出

1

请输入存款金额:

-10

输入金额非法!请重新输入

100

存款成功!您当前的余额为:2100

请选择您需要办理的业务:1.存款 2.取款 3.余额查询 4.修改密码 0.退出

2

请输入取款金额:

200000

输入金额非法!请重新输入

500

取款成功!您当前的余额为:1600

请选择您需要办理的业务:1.存款 2.取款 3.余额查询 4.修改密码 0.退出

1

请输入存款金额:

200

存款成功!您当前的余额为:1800

请选择您需要办理的业务:1.存款 2.取款 3.余额查询 4.修改密码 0.退出

3

您当前的余额为:1800

请选择您需要办理的业务:1.存款 2.取款 3.余额查询 4.修改密码 0.退出

4

请输入旧密码:

654444

旧密码输入错误!请重新输入

654321

请输入新密码:

123456

密码修改成功!

请选择您需要办理的业务:1.存款 2.取款 3.余额查询 4.修改密码 0.退出

0

银行系统已退出!欢迎您再次使用!

总结:功能较为完善,有较好的封装,对输入数据进行合法判断

Java模拟银行存取款系统相关推荐

  1. 模拟银行存款java,模拟银行存取款业务

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public class Account { // 初始化存款 float count = 0f;// 当前账户余额 int money1;// 存款数, ...

  2. 基于Java语言实现模拟银行存取款业务系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85820969 1.项目简介 本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行 ...

  3. java模拟银行存取_JAVA基础案例 模拟银行存取款业务

    模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务.登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型.操作 ...

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

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

  5. java模仿银行账务业务_Java基础案例 - 模拟银行存取款业务

    博学谷--让IT教学更简单,让IT学习更有效 模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务.登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当 ...

  6. 模拟银行存取款业务 java

    实训题5:模拟银行存取款业务 实训目的:本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作 ...

  7. 用python开发一个银行存取款系统

    #用python开发一个银行存取款系统ka1='1001' #卡号 pa1='123456' #密码 ye1=1000 #余额 nb=0 #业务类型 qu=None #取款金额 cu=None #存款 ...

  8. java写一个简单的银行存取款系统

    package com.coding.study09;import java.util.Scanner;public class Demo01 {public static void main(Str ...

  9. java界面ATM机取款后的余额_java_ATM机银行存取款系统的设计与实现本科毕业论文...

    商丘师范学院2012届本科毕业论文(设计) } } c.ff(hm,mm); } else if(e.getSource()==JB3){ //跳转到转账界面 Zzact z = new Zzact( ...

最新文章

  1. oracle 查看统计情报,Oracle 查看收集统计信息
  2. 区分真实模式的两个标准
  3. 坐标1-based和0-based
  4. ARCGIS开发中类型XXX在未被引用的程序集中定义的解决办法
  5. 如何在不亏本的情况下构建道德数据科学系统?
  6. gem for onenote安装教程
  7. 《零基础》MySQL删除数据表(十)
  8. 2014 java面试题_2014 java面试题 (答案)
  9. JAVA微服务框架,Jeecg-P3 1.0.0 重构版本发布
  10. mysql查询有数据但返回null_Mybatis查不到数据查询返回Null问题
  11. Redis学习总结(3)——Redis整合Spring结合使用缓存实例
  12. 【知识碎片】JavaScript篇
  13. netbeans使用git_如何在我的NetBeans IDE中设置github存储库?
  14. JavaScript 中常用的弹窗
  15. Oracle oci.dll 下载地址
  16. RubyOnRails培训大纲
  17. 常见字符编码详解ANSI,UTF-8,UCS,GBK,GB2312,BIG5
  18. Thinkpad X1 Tablet gen2键盘改typec键线分离
  19. C语言的printf输出格式控制
  20. ppt模板如何制作个性人物海报?

热门文章

  1. chatgpt4开放申请啦
  2. Openwrt通用固件make menuconfig配置
  3. cdnfly开心版一键搭建脚本
  4. Haskell与范畴论
  5. 如何将ps滑动条转换为matlab,怎么用MATLAB制作翻页教程|MATLAB如何制作翻书效果 - PS下...
  6. mate30e是鸿蒙,华为mate30e和mate30有什么不同 华为mate30e和mate30有什么区别 - 云骑士一键重装系统...
  7. ASP.NET Core MVC 6.0项目的文件夹结构
  8. python html网页合并单元格,python之DataFrame实现excel合并单元格
  9. 如何用css动画来画一个多啦A梦
  10. 什么是接口测试?做接口测试的意义是什么?