Java测试笔记(ATM)
本次Java测试主要是做一个与ATM相似的系统,用文本文件来作为用户数据库,实现存款、取款、转账、修改密码、查询余额的功能。
在做这次测试之前老师并没有讲解与Java相关的知识,所以这就需要我们自学Java,考验我们的自学能力的同时,也检测了我们的自学成果。
首先,先定义一个账户类,里面包含账号、姓名、操作时间、流水金额、密码、操作类型、账户余额成员,还有各个成员的设置、得到函数。
import java.util.Scanner;
import java.io.*;
import java.io.IOException;
import java.nio.file.Paths;
public class Account {
private String accountID;
private String accountname;
private String operatedate;//操作时间
private int operatetype;//存储操作
private String accountpassword;
private int accountbalance;//储存账户余额
private int amount;
public void setaccountID(String a) {
accountID = a;
}
public void setaccountname(String a) {
accountname = a;
}
public void setoperatedate(String a) {
operatedate = a;
}
public void setoperatetype(int a) {
operatetype = a;
}
public void setaccountpassword(String a) {
accountpassword = a;
}
public void setaccountbalance(int a) {
accountbalance = a;
}
public void setamount(int a) {
amount = a;
}
public String getaccountID() {
return accountID;
}
public String getaccountname() {
return accountname;
}
public String getoperatedate() {
return operatedate;
}
public int getoperatetype() {
return operatetype;
}
public String getaccountpassword() {
return accountpassword;
}
public int getaccountbalance() {
return accountbalance;
}
public int getamount() {
return amount;
}
public Account() { }
}
然后定义另一个类,用来存放其他函数和主函数及类AccountManage,在做测试时要用到文件流的输入和输出,因为以前在学习Java时没有看到也没有学到有关文件流的输入和输出之类的东西,所以只能在做测试时,现场去上网查询,简单掌握了Scanner类中的文件流,然后再类中写了两个函数分别用来将accountinformation.txt和accountlist.txt中的数据读入到对象中,还有两个函数分别用来将操作或修改后的对象数据写入到accountinformation.txt和accountlist.txt两个文件中。主函数中,函数主体是do循环语句里套上switch语句,do循环语句用来反复执行任务,switch语句用来进行任务的选择。在写程序时,发现Java里不能直接进行字符串与字符串之间或字符与字符之间的比较(就是不可以用“==“号来比较),如果想要进行比较,则需要调用函数来进行比较(如a.compareTo(b) == 0,及比较a、b是否相等)。循环执行switch语句并在执行一个case后选择下一个执行任务后,进行switch后数字的修改,然后继续循环执行。虽然写完了程序,但是将修改或执行后的对象数据写入文件的功能还没有实现,在接下来的时间我会将其完善。
class AccountManager{
static Account in[] =new Account[5]; static void infile1(Account a[])throws IOException{ //对文件1中的用户信息进行录入
Scanner in = new Scanner(Paths.get("accountinformation.txt"));
int i=0;
while(in.hasNextLine()) {
a[i]=new Account();
String data1 = in.next();
String data2 = in.next();
String data3 = in.next();
int data4=in.nextInt();
a[i].setaccountID(data1);
a[i].setaccountname(data2);
a[i].setaccountpassword(data3);
a[i].setaccountbalance(data4);
i++;
}
in.close();
}
static void infile2(Account a[])throws IOException{ //对文件2中的用户信息进行录入
Scanner in = new Scanner(Paths.get("accountlist.txt"));
int i=0;
while(in.hasNextLine()) {
a[i]=new Account();
String data1 = in.next();
String data2 = in.next();
String data3 = in.next();
int data4=in.nextInt();
int data5=in.nextInt();
a[i].setaccountID(data1);
a[i].setaccountname(data2);
a[i].setoperatedate(data3);
a[i].setoperatetype(data4);
a[i].setamount(data5);
i++;
}
in.close();
}
static void outfile1(Account a[],int len) throws IOException { //将信息进行输入到文件1中
PrintWriter out = new PrintWriter("accountinformation.txt");
int i = 0;
for(i=0;i<len-1;i++) {
if(a[i]!=null)out.print(a[i].getaccountID()+"\n"+a[i].getaccountname()+"\n"+a[i].getaccountpassword()+"\n"+a[i].getaccountbalance()+"\n");
}
out.flush();
out.close();
}
void outfile2(Account a[],int len) throws IOException { //将信息进行输入到文件2中
PrintWriter out = new PrintWriter("accountinformation.txt");
int i = 0;
for(i=0;i<len-1;i++) {
if(a[i]!=null)out.print(a[i].getaccountID()+"\n"+a[i].getaccountname()+"\n"+a[i].getoperatedate()+"\n"+a[i].getoperatetype()+"\n"+a[i].getamount()+"\n");
}
out.flush();
out.close();
} public static void main(String args[]) throws IOException{
infile1(in);
infile2(in);
for(int i = 0;i < 5; i++) {
in[i].setaccountpassword("123");
}
Scanner sc =new Scanner(System.in);
int j = 1;
int g = 0;
do {
switch(j) {
case 1:{
do {
System.out.println("**************************************************");
System.out.println("欢迎使用中国工商银行自动柜员系统");
System.out.println("**************************************************");
System.out.println("请输入您的账号:");
System.out.println("**************************************************");
//添加输入
String accid;
accid = sc.nextLine();
int temp1 = 0;
int temp2 = 0;
int temp3 = 0;
for(int i = 0; i < 5; i++) {
if((in[i].getaccountID().compareTo(accid) != 0) && (accid.length() == in[i].getaccountID().length())) {
temp1++;
}
}
if(temp1 == 5)
System.out.println("该账号不存在" + "\n");
for(int i = 0; i < 5; i++) {
if((in[i].getaccountID().compareTo(accid) != 0) && (accid.length() != in[i].getaccountID().length())) {
temp2 = 1;
}
}
if(temp2 == 1)
System.out.println("该卡不是工行卡" + "\n");
for(int i = 0; i < 5; i++) {
if(in[i].getaccountID().compareTo(accid) == 0) {
j = 2;
g = i;
}
}
} while(j != 2);
}
break;
case 2:{
if(j == 2) {
int k = 0;
do {
int temp = 0;
System.out.println("*********************************************************");
System.out.println("欢迎" + in[g].getaccountID() + "使用中国工商银行自助柜员系统");
System.out.println("*********************************************************");
System.out.println("请输入您的密码:");
System.out.println("*********************************************************");
//添加输入
String accpass;
accpass = sc.nextLine();
for(int i = 0; i < 5; i++) {
if((in[i].getaccountpassword().compareTo(accpass) == 0)&&(in[i] != null)) {
j = 3;
}
else if((in[i].getaccountpassword().compareTo(accpass) != 0)&&(in[i] != null)) {
temp++;
}
}
if(temp != 0) {
System.out.println("密码录入错误" + "\n");
k++;
}
} while((k != 3) && (j != 3));
if(k == 3) {
System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理" + "\n");
j = 1;
}
}
}
break;
case 3:{
if(j == 3) {
int f = 0;
String temp2;
String temp1;
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"1、存款;\r\n" +
"2、取款;\r\n" +
"3、转账汇款;\r\n" +
"4、修改密码;\r\n" +
"5、查询余额;\r\n" +
"****************************************************************");
f = sc.nextInt();
switch(f) {
case 1:{
int a;
int b;
int c;
do {
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"请输入存款金额;\r\n" +
" \r\n" +
"****************************************************************");
a = sc.nextInt();
c = a + in[g].getamount();
b = a % 1;
if(b == 0)
in[g].setamount(c);
else
System.out.println("输入金额有误");
break;
} while(true);
System.out.println("输入字母“q”,则返回系统输入账号界面;输入正整数,则跳转"); temp2 = sc.nextLine();
if(temp2.compareTo("q") == 0) {
j =1;
break;
}
else {
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"当前账户存款操作成功。\r\n" +
"当前账户余额为:"+in[g].getamount()+"\r\n" +
"****************************************************************");
System.out.println("输入字母“q”,则返回系统输入账号界面");
}
temp1 = sc.nextLine();
if(temp1.compareTo("q") == 0) {
j = 1;
} }
break;
case 2:{
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************"+
"当前账户每日可以支取2万元。\r\n" +
"1、100元\r\n" +
"2、500元\r\n" +
"3、1000元\r\n" +
"4、1500元\r\n" +
"5、2000元\r\n" +
"6、5000元;\r\n" +
"7、其他金额\r\n" +
"8、退卡\r\n" +
"9、返回\r\n" +
"****************************************************************");
int tt;
int qt;
int js = 0;
tt = sc.nextInt();
int a[] = {100, 500, 1000, 1500, 2000, 5000};
int c;
switch(tt) {
case 1:{
if(in[g].getamount() < 100) {
System.out.println("账户余额不足");
}
else
js = 1;
}
break;
case 2:{
if(in[g].getamount() < 500) {
System.out.println("账户余额不足");
}
else
js = 1;
}
break;
case 3:{
if(in[g].getamount() < 1000) {
System.out.println("账户余额不足");
}
else
js = 1;
}
break;
case 4:{
if(in[g].getamount() < 1500) {
System.out.println("账户余额不足");
}
else
js = 1;
}
break;
case 5:{
if(in[g].getamount() < 2000) {
System.out.println("账户余额不足");
}
else
js = 1;
}
break;
case 6:{
if(in[g].getamount() < 5000) {
System.out.println("账户余额不足");
}
else
js = 1;
}
break;
case 7:{
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"请输入取款金额:\r\n" +
"****************************************************************");
qt = sc.nextInt();
if(in[g].getamount() < in[g].getamount()) {
System.out.println("账户余额不足");
}
else
js = 1;
}
break;
case 8:{
j = 1;
}
break;
case 9:{
j = 3;
}
break;
}
if(js == 1) {
c = in[g].getamount() - a[tt - 1];
in[g].setamount(c);
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"当前账户取款操作"+a[tt - 1]+"\r\n" +
"当前账户余额为:"+c+"\r\n" +
"****************************************************************");
} }
break;
case 3:{
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"请输入转账金额;\r\n" +
"****************************************************************");
int zhuan;
String ss;
String zh;
String yn;
zhuan = sc.nextInt();
if(in[g].getamount() < zhuan) {
System.out.println("账户余额不足");
}
else {
System.out.println("输入被转账账户:");
zh = sc.nextLine();
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"请确认是否向"+zh+"转账"+zhuan+"元。\r\n" +
"****************************************************************");
System.out.println("输入“N”表示不确认转账,输入“Y”表示确认转账");
yn = sc.nextLine();
if(yn.compareTo("Y") == 0) {
for(int i = 0; i < 5; i++) {
if((in[i].getaccountID().compareTo(zh) == 0)&&(in[i] != null)) {
int rr;
int uu;
rr = in[i].getamount() + zhuan;
uu = in[g].getamount() - zhuan;
in[i].setamount(rr);
in[g].setamount(uu);
}
}
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"当前账户向"+zh+"成功转账"+zhuan+"元。\r\n" +
"当前账户余额为:"+in[g].getamount()+"\r\n" +
"****************************************************************");
System.out.println("输入字母“q”,则返回系统输入账号界面");
ss = sc.nextLine();
if(ss.compareTo("q") == 0) {
j = 1;
}
}
else if(yn.compareTo("N") == 0) {
j = 3;
}
}
}
break;
case 4:{
int m = 0;
String ss;
do {
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"请输入当前密码:\r\n" +
"请输入修改密码:\r\n" +
"请输入确认密码:\r\n");
String x1, x2, x3;
x1 = sc.nextLine();
x2 = sc.nextLine();
x3 = sc.nextLine();
if(in[g].getaccountpassword().compareTo(x1) != 0) {
System.out.println("当前密码录入错误");
}
else if(x2.compareTo(x3) != 0) {
System.out.println("修改密码与确认密码不一致");
}
else {
in[g].setaccountpassword(x2);
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"当前账户密码修改成功\r\n" +
"****************************************************************");
m = 1;
}
} while(m == 0);
System.out.println("输入字母“q”,则返回系统输入账号界面");
ss = sc.nextLine();
if(ss.compareTo("q") == 0) {
j = 1;
}
}
break;
case 5:{
String ss;
System.out.println("***************************************************************\r\n" +
"欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统\r\n" +
"****************************************************************\r\n" +
"当前账户余额为:"+in[g].getamount()+"元");
System.out.println("输入字母“q”,则返回系统输入账号界面");
ss = sc.nextLine();
if(ss.compareTo("q") == 0) {
j = 1;
}
}
break;
}//小 switch
}
}
break;
}//大 switch
} while(true);//大 do while
}
}
Java测试笔记(ATM)的更多相关文章
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 瘋耔java语言笔记
一◐ java概述 1.1 ...
- Java系列笔记(4) - JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...
- 20145330第九周《Java学习笔记》
20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...
- Java系列笔记(6) - 并发(上)
目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...
- think in java 读书笔记 2 —— 套接字
目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 套接字基本知识 2 ...
- Java学习笔记——动态代理
所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记——RMI&q ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- Java开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
随机推荐
- .net core 学习小结之 自定义JWT授权
自定义token的验证类 using System; using System.Collections.Generic; using System.IO; using System.Linq; usi ...
- 红帽学习笔记[RHCSA] 第五课[用户、权限相关]
第五课 用户权限 查看文件的权限 [kane@localhost /]$ ll total 36 ----------. 1 root root 1751 Aug 22 20:58 ~ lrwxrwx ...
- SpringBoot 使用 RestTemplate 调用exchange方法 显示错误信息
SpringBoot使用RestTempate SpringBoot使用RestTemplate摘要认证 SpringBoot使用RestTemplate基础认证 SpringBoot使用RestTe ...
- SQL server字符分割
USE [vanke_develop] GO /****** Object: UserDefinedFunction [dbo].[func_Split] Script Date: 2019/5/22 ...
- 如何遍历div里面的文本内容,用each方法,
如何遍历div里面的文本内容,然后进行匹配传来的数据,进行选中div,并进行CSS样式处理, for(i = 0; i< $(".itemMenuRowBox").child ...
- 分布式系统中唯一 ID 的生成方法
在分布式系统存在多个 Shard 的场景中, 同时在各个 Shard 插入数据时, 怎么给这些数据生成全局的 unique ID? 在单机系统中 (例如一个 MySQL 实例), unique ID ...
- C#多播委托详解
包含多个方法的委托成为多播委托,调用多播委托,可以按照顺序连续调用多个方法,因此,委托的签名就必须返回void;否则,就只能得到委托调用的最好一个方法的结果 1.多播委托可以用运算符"+&q ...
- C++ constexpr
1.constexpr 1.const与constexpr: const: 承若不改变这个值,主要用于说明接口,这样在把变量传入函数时就不必担心变量会在函数内被改变了,编译器负责确认并执行const的 ...
- how to install protobuff python
当前环境: operate system: Ubuntu 14.04.1 LTS protoc --version: libprotoc 2.5.0 protocol-buffers versi ...
- Java JPA设置默认值、Timestamp设置、自动获取时间
设置默认值 @Column(name="state",columnDefinition="tinyint default 0") private Integer ...