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开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
随机推荐
- [转帖]JVM内存结构 VS Java内存模型 VS Java对象模型
JVM内存结构 VS Java内存模型 VS Java对象模型 https://www.hollischuang.com/archives/2509 Java作为一种面向对象的,跨平台语言,其对象.内 ...
- [转帖]Twitter 宣布抛弃 Mesos,全面转向 Kubernetes
Twitter 宣布抛弃 Mesos,全面转向 Kubernetes http://www.itpub.net/2019/05/06/1788/ 事实标准了. 作者 | 阿里云智能高级技术专家 张 ...
- 二、JVM — 垃圾回收
JVM 垃圾回收 写在前面 本节常见面试题 本文导火索 1 揭开 JVM 内存分配与回收的神秘面纱 1.1 对象优先在 eden 区分配 1.2 大对象直接进入老年代 1.3 长期存活的对象将进入老年 ...
- jupyter与requests的初步使用
upyter 是一个简易的,方便的写Python代码的工具包,requests是Python里非常好用的用来发送 http 请求的包. 开始学习本教程之前,请确保你已经安装了Python,并且安装了P ...
- 剑指offer-回溯法-机器人的运动范围-python
题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能 ...
- IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); 时,报COMException
解决办法: 在Program.cs的Main函数中添加如下代码: ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
- python基础知识的入门介绍
一.什么是编程语言 任何词语都是一种高度的概括和总结,所以找关键字.如下: (1)1.什么是"语言":一个人与另一个人沟通的介质 2人将自己的思维逻辑和想法通过计算机能过识别的语言 ...
- wpf textbox ctrl+enter事件
<TextBox x:Name="xcontent" Text="sfasdf" Grid.Row="0" AcceptsReturn ...
- bzoj4817 & loj2001 [Sdoi2017]树点涂色 LCT + 线段树
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4817 https://loj.ac/problem/2001 题解 可以发现这个题就是 bzo ...
- 点击链接跳转到QQ的情况; qq交谈
https://blog.csdn.net/qq_31856835/article/details/70225968 https://blog.csdn.net/qq_37815596/article ...