Java模拟网上银行业务

本文介绍了作者在完成Java模拟网上银行业务实验报告时遇到的问题,包括Map集合覆盖问题、ClassCastException错误、用户输入验证、导入包问题以及解决方法。在解决这些问题后,实现了登录、存取款、查看余额、修改密码和退出等功能。最后分享了完整的代码实现。
摘要由CSDN通过智能技术生成

期末了,Java老师布置了实验报告,实现一个任务(见下图)
我的天,真的是自己敲代码敲得少,那错误真的是一筐一筐的,深受折磨,OMG
下面,总结以下实现该任务中遇到的一些问题
勉励以下自己
但是真正解决完这些问题之后(谢谢我的考神组长大力支持和同班同学的帮助呀)
那心情真超级超级爽,哈哈哈哈哈
想向全世界炫耀,哈哈哈哈哈,也太爽了
当然,我的方法也不是最简单简洁的,但是对于我这个小白来说,我已经很满足啦
下面,开始我的正文啦

任务需求

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

问题1:

用Map集合的时候,覆盖问题,但一个key值又对应了很多属性,可以将多个对应的属性存储到一个对象中

public class Login{
   
	public static void userLogin(){
   
		//用Map集合的时候,覆盖问题
		String id="001";
		String name;
		String password;
		int Money;
		Map<String ,String> m=new HashMap<String,String>();
		m.put("001","zhangsan");
		m.put("001","1234");
		//map当key值相同的时候,下边会覆盖上边(可以将第一个或第二个key,value调换顺序就可以了,此处不考虑这样的情况)
		//所以可以将上述属性封装成一个对象,存储到一个类中eg:Person
		//即下面这种情况
		Map<String,Person> m=new HashMap<String,Person>();
	}
}

问题2

前提是我将map集合的这个方法抛弃了,选择了我的爱宠,xml文件来实现

java.lang.ClassCastException的错误问题:
-这个错误是由于我输入的银行卡号不存在xml文件中,虽然我进行了判断,但是他还是会报错

	Scanner sc=new Scanner(System.in);
		//得到银行卡号
		System.out.println("请输入银行卡号:");
		String idsc=sc.nextLine();
		//通过id节点的属性得到id节点
		Node idnod=(Node) d.selectObject ("//id[@id='"+idsc+"']");
//报错了
请输入银行卡号:
1234
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.dom4j.Node
	at cn.itcast.bank.Demo.userLogin(Demo.java:37)
	at cn.itcast.bank.Demo.main(Demo.java:20)

原因是应为如果用户输入的是空或者说是不存在xml中的值,那么就会导致selectObject返回值不可以由Object类型(不为空,但不可以转换)强转为Node类型,返回不了该id节点,下面在对idnod这个节点进行操作就会报错啦

解决方法:

	//输入银行卡号
	System.out.println("请输入您的银行卡号:");
	String idinput=sc.next();
				
	//得到相对应的数据
	//1、得到id
	//通过id节点的属性得到id节点,并且避免了用户输入错误或输入为空的情况
	List nodes = d.selectNodes ("//id[@id='"+idinput+"']");
	Node idnode=null;
	if (nodes.size()==0) {
   
		System.out.println("您的账号输入错误");
		continue;//continue跳出这次循环,进行下次循环
	}else {
   
		idnode=(Node) nodes.get(0);
	}
	//这个时候不管用户输入的对还是不对再对idnode进行操作就可以了	
	//得到idnode后获取该节点的password的值
	String pass=idnode.getParent().element("password").getText();
//这样就真正的解决了报错问题
请输入您的银行卡号:
123
您的账号输入错误
请输入您的银行卡号:
1323
您的账号输入错误
请输入您的银行卡号:

总结

在以后的用户登陆过程中,要解决用户的输入账号有误或为空的问题

问题3

break与return问题

package bank.fair;

import java.util.List;
import java.util.Scanner;

import org.dom4j.Document;
import org.dom4j.Node;

public class Login {
   
	public static Node userLogin(Document d,Scanner sc) {
   
		
		while(true) {
   </
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值