今天,亲爱的王建民老师布置了布置了开学测试,检验我们暑假里学习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文件读写操作。
- 字节流。
字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字符流的实现是基于自动转换的,读取数据时会把数据按照JVM的默认编码自动转换成字符。inputstream和OutputStream都是抽象类,不能实例化,使用时必须实例化一个子类(其中FileInputStream和FileOutputStream使用最多)对象来进行相关操作。
- 字符流
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。FileReader与FileWriter.