栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实验作业:银行账户

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实验作业:银行账户

java课实验作业-银行账户

这是一个记录java课实验作业的专栏,博主是一个前oier,现acmer,目的在于记录以一个算法竞赛参赛者的码风习惯解决一些大学中的实验课作业


题目表述

完成一个银行账户类,需要完成取钱,存钱,开户,验证密码,查询余额
我又在要求的基础上添加了使用随机数生成银行卡号,用Map存放卡号-数组下标的映射,使用Map查询卡号是否存在,并添加了一些异常处理。


项目结构:

代码展示: package bank_account;

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

package bank_account;
import java.util.Scanner;
public class Bank_account{
    private String Account_name;
    private long ID;
    private int Balance;
    private String Password;
    private boolean check(String password){
        //使用String类方法equals判断密码是否正确
        if(Password.equals(password)) return true;
        else return false;
    }
    public void query_balance(String password){
        if(check(password)){
            System.out.println("您的余额为:"+Balance);
        }
        else{
            System.out.println("您的密码错误,请重试!");
        }
    }
    public void deposit(String password,int money){
        if(check(password)){
            Balance+=money;
            System.out.printf("您已存入%d元n",money);
        }
        else{
            System.out.println("您的密码错误,请重试!");
        }
    }
    public void draw(String password,int money){
        if(check(password)){
            //对余额不足的特判
            if(Balance
                System.out.println("余额不足!");
                return ;
            }
            Balance-=money;
            System.out.printf("您已取出%d元,请妥善保管n",money);
        }
        else{
            System.out.println("您的密码错误,请重试!");
        }
    }
    public void set_ID(long id){
        ID=id;
    }
    public long set_account(String account_name,String password){
        Account_name=account_name;
        Password=password;
        return ID;
    }
}
package pair;
package pair;
import java.util.HashMap;
import java.util.Map;
import bank_account.Bank_account;
public class pair{
    //三元组,first是Bank_account类类型,second是Map类型,third是int类型
    public Bank_account first=new Bank_account();
    public Map second=new HashMap();
    public int third;
}
package operator;
package operator;
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import bank_account.Bank_account;
import pair.pair;
public class bank_operate{
    Scanner s=new Scanner(System.in);
    private long creat_ID(long seed){
        //生成随机数并用时间随机种子取模获得ID
        long INF=1000000000L;
        long ID=(int)(Math.random()*INF)%seed;
        return ID;
    }
    private long Get_seed(){
        //生成时间随机种子
        Date date=new Date();
        SimpleDateFormat now=new SimpleDateFormat("ddhhmmss");
        String Time=now.format(date);
        long seed=0;
        for(int i=0;i map,int tot){
        //开户操作,返回类型是三元组类
        Bank_account man=new Bank_account();
        pair tw=new pair();
        System.out.println("您已进入开户操作,如果操作无误请输入1以确认,若有误请输入0以撤回!");
        int par=s.nextInt();
        if(par==0){
            tw.third=-1;
            return tw;
        }
        System.out.println("您已确认开户操作,请输入您的账户名称与密码");
        String account_name,password;
        account_name=s.next();
        password=s.next();
        long seed=Get_seed();
        long ID=creat_ID(seed);
        man.set_ID(ID);
        man.set_account(account_name,password);
        map.put((int)ID,tot);
        System.out.printf("您已开户成功,请记好您的银行卡号:n%dn",ID);
        tw.first=man;tw.second=map;tw.third=1;
        return tw;
    }
    public int query(Bank_account man[],Map map){
        //查余额操作
        System.out.println("您已进入余额查询操作,如果操作无误请输入1以确认,若有误请输入0以撤回!");
        int par=s.nextInt();
        if(par==0){
            return -1;
        }
        System.out.println("您已确认余额查询操作,请输入您的卡号");
        String password;
        long ID;
        ID=s.nextLong();
        boolean isEmpty=map.containsKey((int)ID);//判断卡号是否为空号
        while(!isEmpty){
            System.out.println("您的银行卡号为空号,请重新输入");
            ID=s.nextLong();
            isEmpty=map.containsKey((int)ID);
        }
        System.out.println("请输入您的密码:");
        password=s.next();
        int w=map.get((int)ID);
        man[w].query_balance(password);
        return 1;
    }
    public int save_money(Bank_account man[],Map map){
        System.out.println("您已进入存钱操作,如果操作无误请输入1以确认,若有误请输入0以撤回!");
        int par=s.nextInt();
        if(par==0){
            return -1;
        }
        System.out.println("您已确认存钱操作,请输入您的卡号");
        String password;
        long ID;
        ID=s.nextLong();
        boolean isEmpty=map.containsKey((int)ID);
        while(!isEmpty){
            System.out.println("您的银行卡号为空号,请重新输入");
            ID=s.nextLong();
            isEmpty=map.containsKey((int)ID);
        }
        System.out.println("请输入您的密码与存钱金额:");
        password=s.next();
        int w=map.get((int)ID);
        int sv=s.nextInt();
        man[w].deposit(password,sv);
        return 1;
    }
    public int draw_money(Bank_account man[],Map map){
        System.out.println("您已进入取钱操作,如果操作无误请输入1以确认,若有误请输入0以撤回!");
        int par=s.nextInt();
        if(par==0){
            return -1;
        }
        System.out.println("您已确认取钱操作,请输入您的卡号");
        String password;
        long ID;
        ID=s.nextLong();
        boolean isEmpty=map.containsKey((int)ID);
        while(!isEmpty){
            System.out.println("您的银行卡号为空号,请重新输入");
            ID=s.nextLong();
            isEmpty=map.containsKey((int)ID);
        }
        System.out.println("请输入您的密码与取钱金额:");
        password=s.next();
        int w=map.get((int)ID);
        int sv=s.nextInt();
        man[w].draw(password,sv);
        return 1;
    }
}
package Test;//主类
import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
import bank_account.Bank_account;
import operator.bank_operate;
import pair.pair;
public class Test{
    public static void main(String args[]) {
        Scanner s=new Scanner(System.in);
        bank_operate nowtry=new bank_operate();
	    Map map=new HashMap();
	    int tot=0;
	    Bank_account man[]=new Bank_account[101];
	    for(int i=1;i<=100;i++) man[i]=new Bank_account();
        System.out.println("请输入您的操作数目:");
		int m=s.nextInt();
		for(int i=1;i<=m;i++){
		    System.out.println("请输入您的这次操作:");
		    System.out.println("输入o以进行开户");
		    System.out.println("输入c以进行余额查询");
		    System.out.println("输入e以进行存钱");
		    System.out.println("输入r以进行取钱");
		    String read=s.next();
		    char c=read.charAt(0);//取读入字串首字符
		    if(c=='o'){
                pair tw=new pair();
		        tw=nowtry.build_accout(map,++tot);
                if(tw.third==-1){
                    i--;tot--;continue;//撤回操作的处理,循环次数和开户数目都要减少
                }
                man[tot]=tw.first;
                map=tw.second;
		    }
		    if(c=='c'){
		       if(nowtry.query(man,map)==-1){
                    i--;continue;
               }
		    }
		    if(c=='e'){
		        if(nowtry.save_money(man,map)==-1){
                    i--;continue;
                }
		    }
		    if(c=='r'){
		        if(nowtry.draw_money(man,map)==-1){
                    i--;continue;
                }
		    }
		}
    }
}
总结

第一次写关于分包的代码,技术还很不成熟,可能写的比较乱。
各位大佬有各种建议也可以多多交流

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号