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开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
随机推荐
- 20191127 Spring Boot官方文档学习(9.1-9.3)
9."使用方法"指南 9.1.Spring Boot应用程序 9.1.1.创建自己的FailureAnalyzer FailureAnalyzer被包装在FailureAnalys ...
- uwsgi + nginx 部署python项目(一)
uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uws ...
- Redis进阶:Redis的哨兵模式搭建
Redis进阶:Redis的哨兵模式搭建 哨兵机制介绍 单机版的Redis存在性能瓶颈,Redis通过提高主从复制实现读写分离,提高了了Redis的可用性,另一方便也能实现数据在多个Redis直接的备 ...
- Spark启动流程(Standalone)- master源码
Master源码 package org.apache.spark.deploy.master //伴生类 private[deploy] class Master( override val rpc ...
- stringstream istringstream ostringstream 三者的区别
stringstream istringstream ostringstream 三者的区别 说明 ostringstream : 用于执行C风格字符串的输出操作. istringstream : 用 ...
- Nginx 入门了解
Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...
- 基于RSA的前后端登陆密码加密JAVA实现(转)
RSA加密算法简介 SA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难,RSA算法愈 ...
- python学习五十五天subprocess模块的使用
我们经常需要通过python去执行一条系统执行命令或者脚本,系统的shell命令独立于你python进程之外的,没执行一条命令,就发起一个新的进程, 三种执行命令的方法 subprocess.run( ...
- 剑指offer-二叉树的镜像-python
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...
- 常用css相关笔记
最后一个css不加样式 .nav-sort li:not(:last-child) { border-bottom:#3e3e3e 1px solid; } 垂直居中 vertical-align: ...