2020 9 22 极限测试

今天,健民老师布置了布置了开学测试,检验我们暑假里学习java的效果,题目是模拟ATM机系统,提供存款取款转账查询等功能,运用文件操作存储用户账号的各种信息。总体来说并不难,除了文件操作我没有自学过之外,其他知识我都了解。

首先建立类:

package item;

import java.util.*;

public class Account {//主类

private String accountID;

private String accountname;

private String operatedate;

private int operatetype;

private String accountpassword;

private int accountbalance;

private int account;

设置构造函数:

public Account()//构造

{

this.accountID ="***";

this.accountname ="****";

this.operatedate ="0-0-0";

this.operatetype =-1;

this.accountpassword ="******";

this.accountbalance =0;

this.account =0;

}

对每个属性变量设置Get()和Set()函数,Set函数给参数:

public String GetaccountID()

{

return accountID;

}

 public void SetaccountID(String a)

{

accountID=a;

}

 public String Getaccountname()

{

return accountname;

}

public void Setaccountname(String a)

{

accountname=a;

}

public String Getoperatedate()

{

return accountname;

}

public void Setoperatedate(String a)

{

operatedate=a;

}

public int Getoperatetype()

{

return operatetype;

}

public void Setoperatetype(int a)

{

operatetype=a;

}

public String Getaccountpassword()

{

return accountpassword;

}

public void Setaccountpassword(String a)

{

accountpassword=a;

}

public int Getaccountbalance()

{

return accountbalance;

}

public void Setaccountbalance(int a)

{

accountbalance=a;

}

public int Getaccount()

{

return account;

}

public void Setaccount(int a)

{

account=a;

}

菜单函数:

public void menu()//菜单

{

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

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("    6.退出系统");

System.out.println("*************************************************");

}

用户操作函数:

public void play()//用户输入

{

Scanner cin=new Scanner(System.in);

for(;;)

{

System.out.println("请输入");

int a=cin.nextInt();

while(a<0&&a>7)

{

System.out.println("输入错误,重新输入");

a=cin.nextInt();

}

switch (a)

{

case 1:cun();break;

case 2:qu();break;

case 3:zhuan();break;

case 4:xiu();break;

case 5:cha();break;

case 6:break;

}

if(a==6) break;

}

}

存款函数:

public void cun()//存款

{

Scanner cin=new Scanner(System.in);

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("请输入存款金额:");

int a=cin.nextInt();

this.accountbalance +=a;

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("当前账户存款成功!");

System.out.println("当前账户余额:"+this.accountbalance );

}

取款函数:

public void qu()//取款

{

int c[]= {100,500,1000,1500,2000,5000};

int a=0,b=0;

Scanner cin=new Scanner(System.in);

for(;;)

{

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("当前账户每日可支出2万元");

System.out.println("1、100元");

System.out.println("2、500元");

System.out.println("3、1000元");

System.out.println("4、1500元");

System.out.println("5、2000元");

System.out.println("6、5000元");

System.out.println("7、其他金额");

System.out.println("8、退卡");

System.out.println("9、返回");

a=cin.nextInt();

int temp =0;

if(a==1)

{

while(this.accountbalance <100)

{

System.out.println("账户余额不足,请重新输入:");

}

if(this.accountbalance >100) temp=1;

}

else if(a==2)

{

while(this.accountbalance <500)

{

System.out.println("账户余额不足,请重新输入:");

}

if(this.accountbalance >500) temp=1;

}

if(a==3)

{

while(this.accountbalance <1000)

{

System.out.println("账户余额不足");

}

if(this.accountbalance >1000) temp=1;

}

if(a==4)

{

while(this.accountbalance <1500)

{

System.out.println("账户余额不足");

}

if(this.accountbalance >1500) temp=1;

}

if(a==5)

{

while(this.accountbalance <2000)

{

System.out.println("账户余额不足");

}

while(this.accountbalance >2000) temp=1;

}

if(a==6)

{

while(this.accountbalance <5000)

{

System.out.println("账户余额不足");

}

if(this.accountbalance >5000) temp=1;

}

if(a==7)

{

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("请输入取款金额:");

b=cin.nextInt();

if(this.accountbalance <b)

{

System.out.println("账户余额不足,请重新输入:");

}

else

{

temp=1;

this.accountbalance -=b;

c[a]=b;

}

}

if(a==8) temp=1;

if(a==9) temp=1;

if(temp!=1)

{

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("当前账户取款操作:"+c[a]+"成功");

System.out.println("当前账户余额:"+this.accountbalance );

break;

}

}

}

更改密码函数:

public void xiu()//改密

{

Scanner cin=new Scanner(System.in);

for(;;)

{

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("请输入当前密码:");

String a1=cin.nextLine();

if(!a1.equals(this.accountpassword )) continue;

System.out.println("请输入新密码:");

String a2=cin.nextLine();

System.out.println("确认新密码:");

String a3=cin.nextLine();

if(!a3.equals(a2)) continue;//比较字符串

break;

}

System.out.println("*************************************************");

System.out.println("欢迎"+this.accountname+"使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("当前账户密码修改成功");

}

主方法:

public static void main(String[] args) {

Scanner cin=new Scanner(System.in);

Account a[];

a=new Account[101];//定义用户信息数组

for(int i=0;i<5;i++)

{

a[i]=new Account();

}

a[0].SetaccountID("20194129");

a[0].Setaccountname("伏珊瑞");

a[0].Setoperatedate("2020-9-20");

a[0].Setoperatetype(1);

a[0].Setaccountpassword("047793");

a[0].Setaccountbalance(5000);

a[0].Setaccount(5000);

a[0].SetaccountID("20193681");

a[0].Setaccountname("雷琨");

a[0].Setoperatedate("2020-9-19");

a[0].Setoperatetype(1);

a[0].Setaccountpassword("047796");

a[0].Setaccountbalance(5000);

a[0].Setaccount(5000);

Account b=new Account();

int temp=0,temp1=0;

System.out.println("*************************************************");

System.out.println("欢迎使用中国工商银行自动柜员系统            ");

System.out.println("*************************************************");

System.out.println("请输入你的账号:");

String a1=cin.nextLine();

for(int i=0;i<100;i++)//检查账号是否存在

{

if(a[i].GetaccountID().equals(a1))

{

temp=i;

break;

}

}

b.SetaccountID(a1);

System.out.println("*************************************************");

System.out.println("欢迎"+a[temp].accountname+ "使用中国工商银行自助柜员系统");

System.out.println("*************************************************");

System.out.println("请输入您的密码:");

String a2=cin.nextLine();

boolean b1=(a2.equals(a[temp].accountpassword));//比较字符串是否相等要用equals返回布尔类型

if(!b1)  //检查密码是否正确

{

System.out.println("密码输入错误!请重新输入(两次)!");

for(int i=0;i<2;i++)

{

String a3=cin.nextLine();

if(a3.equals(a[temp].accountpassword )) //改

{

temp1=1;

break;

}

}

if(temp1==0)//改

{

System.out.println("该账号三次密码输入错误,改卡已被系统没收,请于工行及时联系处理!");

}

}

if(temp1==1)//账号密码没错之后进行菜单与用户操作

a[temp].menu();

a[temp].play();

}

}

总结问题:

1、字符串比较相等的问题。

Java 中,如果要比较 a 字符串是否等于 b 字符串,需要这么写: if(a.equals(b)){ } 返回 true 或 false equals()方法 方法 String 的 equals()方法用于比较两个字符串是否相等。由于字符串是对象类型,所以不能 简单的用“==” (双等号)判断两个字符串是否相等,而使用 equals()方法比较两个对象的内 容。 语法: boolean equals(String str) str:要作比较的字符串对象。 返回:如果和 String 相等则为 true;否则为 false。 例如字符串“abc” 和一个新的字符串“abc” 比较的结果为“true” 因为它们内容相同。 , 注意: equals()方法比较的是对象的内容(区分字母的大小写格式) ,但是如果使用“==”双等 号操作符比较两个对象时, 比较的是两个对象的内存地址, 所以它们不相等 (即使内容相同, 不同对象的内存地址也是不相同的)。

2、java文件读写操作。

  1. 字节流。

字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字符流的实现是基于自动转换的,读取数据时会把数据按照JVM的默认编码自动转换成字符。inputstream和OutputStream都是抽象类,不能实例化,使用时必须实例化一个子类(其中FileInputStream和FileOutputStream使用最多)对象来进行相关操作。

  1. 字符流

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。FileReader与FileWriter.

原文地址:https://www.cnblogs.com/fuxw4971/p/13714872.html