9月22日测试题目

源代码如下:

package hello;
import java.util.Scanner;
import java.io.Serializable;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.text.SimpleDateFormat;
import java.io.InputStream;
import java.util.Date;
import java.io.File;

class Account implements Serializable{
private String accountid;
private String accountname;
private String operatedate;
private int operatetype;
private String accountpassword;
private int accountblance;
private int amount;
public String getAccountid() {
return accountid;
}
public void setAccountid(String accountid) {
this.accountid = accountid;
}
public String getAccountname() {
return accountname;
}
public void setAccountname(String accountname) {
this.accountname = accountname;
}
public String getOperatedate() {
return operatedate;
}
public void setOperatedate(String operatedate) {
this.operatedate = operatedate;
}
public int getOperatetype() {
return operatetype;
}
public void setOperatetype(int operatetype) {
this.operatetype = operatetype;
}
public String getAccountpassword() {
return accountpassword;
}
public void setAccountpassword(String accountpassword) {
this.accountpassword = accountpassword;
}
public int getAccountblance() {
return accountblance;
}
public void setAccountblance(int accountblance) {
this.accountblance = accountblance;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public Account(String a,String b,String c,int d,String e,int f,int g) {

accountid=a;
accountname=b;
operatedate=c;
operatetype=d;
accountpassword=e;
accountblance=f;
amount=g;

};
}
class AccountManage{
public Account[] a=new Account[2];
public void showjiemian() {
System.out.println("********************************************");
System.out.println();
System.out.println("欢迎使用中国工商银行自动柜员管理系统");
System.out.println();
System.out.println("********************************************* ");
System.out.println(" 请输入您的账号");
System.out.println("*******************************************");
}
public int shuruzhanghao(String str) {
if(str.length()!=8) {
System.out.println("该卡不是工行卡");
return 0;
}
int t=0;
int tnum=0;
for(int i=0;i<a.length;i++) {
if(a[i].getAccountid().equals(str)) {
t=1;
tnum=i;
break;
}

}
if(t==0) {
System.out.println("该账号不存在");
return 0;
}
return tnum;

}
public int shumima(int num) {
System.out.println("********************************************");
System.out.println();
System.out.println(" 欢迎使用中国工商银行自动柜员管理系统");
System.out.println();
System.out.println("********************************************* ");
System.out.println(" 请输入您的密码");
System.out.println("*******************************************");
Scanner cin=new Scanner(System.in);
String str1=a[num].getAccountpassword();
int sum=0;
for(int i=0;i<3;i++) {
String str=cin.next();
if((str.equals(str1))) {
return 1;
}
else if(!(str.equals(str1))) {


System.out.println("密码输入错误");
sum++;
}
if(sum==3) {
System.out.println("三次不对");
}
}
if(sum==3)return 0;
else return 1;
}

public void cun(int n) {
System.out.println("********************************************");
System.out.println();
System.out.println(" 欢迎使用中国工商银行自动柜员管理系统");
System.out.println();
System.out.println("********************************************* ");
System.out.println(" 请输入您存钱");
Scanner cin=new Scanner(System.in);
int qian=cin.nextInt();
if(qian<0) {
System.out.println("输入金额有误");
}

else {a[n].setAmount(a[n].getAmount()+qian);
System.out.println("存钱成功");
a[n].setAccountblance(qian);
a[n].setOperatetype(1);
}
SimpleDateFormat sft=new SimpleDateFormat("YYY-MM-dd");
String lastMod=sft.format(new Date());
a[n].setOperatedate(lastMod);
}
public void qu(int n) {
System.out.println("***************************");
System.out.println(" "+"欢迎"+a[n].getAccountname()+"使用中国工商银行自助柜员系统");
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、返回");
System.out.println("************************************");
Scanner cin=new Scanner(System.in);
int qun=cin.nextInt();
int yuan=a[n].getAmount();
switch(qun) {
case 1:{if(100>a[n].getAmount()) {
System.out.println("账户余额不足");
}
else {
System.out.println("取钱成功");
a[n].setAmount(a[n].getAmount()-100);break;
}
}
case 2:{if(500>a[n].getAmount()) {
System.out.println("账户余额不足");
}
else {
System.out.println("取钱成功");
a[n].setAmount(a[n].getAmount()-500);break;
}
}
case 3:{if(1000>a[n].getAmount()) {
System.out.println("账户余额不足");
}
else {
System.out.println("取钱成功");
a[n].setAmount(a[n].getAmount()-1000);break;
}
}
case 4:{if(1500>a[n].getAmount()) {
System.out.println("账户余额不足");
}
else {
System.out.println("取钱成功");
a[n].setAmount(a[n].getAmount()-1500);break;
}
}
case 5:{if(2000>a[n].getAmount()) {
System.out.println("账户余额不足");
}
else {
System.out.println("取钱成功");
a[n].setAmount(a[n].getAmount()-2000);break;
}
}
case 6:{if(5000>a[n].getAmount()) {
System.out.println("账户余额不足");
}
else {
System.out.println("取钱成功");
a[n].setAmount(a[n].getAmount()-5000);break;
}
}
case 7:{int sum=cin.nextInt();
if(sum>a[n].getAmount()) {
System.out.println("账户余额不足");
}
else {
System.out.println("取钱成功");
a[n].setAmount(a[n].getAmount()-sum);break;
}
}
case 8:{System.out.println("********************************************");
System.out.println();
System.out.println("欢迎使用中国工商银行自动柜员管理系统");
System.out.println();
System.out.println("********************************************* ");
System.out.println(" 请输入您的账号");
System.out.println("*******************************************");
break;
}
case 9:break;
}
a[n].setAccountblance(yuan-a[n].getAmount());
a[n].setOperatetype(2);

}
public void zhuan(int n) {
int t=-1;
Scanner cin=new Scanner(System.in);
System.out.println("*****************************");
System.out.println(" 输入转账用户");
System.out.println("*****************************");
String str=cin.next();
int zhuann=0;
for(int i=0;i<a.length;i++) {
if(a[i].getAccountid().equals(str)) {
t=1;
zhuann=i;
break;
}
}
if(t==-1) {
System.out.println("该用户不存在");

}
if(t!=-1) {
System.out.println("************************");
System.out.println(" 输入转账金额");
System.out.println("***************************");
}
int zhuan=cin.nextInt();
if(zhuan>a[n].getAmount()) {
System.out.println("账户余额不足");

}
else {
System.out.println("*********************************");
System.out.println(" 请确认是否向"+a[zhuann].getAccountid()+"转账"+zhuan+"元");
System.out.println("**************************************");
char c=cin.next().toCharArray()[0];
if(c=='Y')
{System.out.println("****************************");
System.out.println(" 当前账户向"+a[zhuann].getAccountid()+"成功转账"+zhuan+"元");
System.out.println("********************************");}
a[n].setAmount(a[n].getAmount()-zhuan);
a[zhuann].setAmount(a[zhuann].getAmount()+zhuan);
}
a[n].setAccountblance(zhuan);
a[n].setOperatetype(3);
}
public void gaimima(int n) {
Scanner cin=new Scanner(System.in);
int t=0;
while(t==0) {
System.out.println("****************************");
System.out.println(" "+"欢迎"+a[n].getAccountname()+"改密码");
System.out.println("*******************************");
System.out.println(" 输入当前密码");
String str=cin.next();
if(!(str.equals(a[n].getAccountpassword()))) {
System.out.println(" 当前密码录入错误");
}
if(str.equals(a[n].getAccountpassword())) {
System.out.println(" 输入新密码");
String str1=cin.next();
System.out.println(" 确认新密码");
String str2=cin.next();
if(str1.equals(str2)) {
a[n].setAccountpassword(str1);
t=1;
}
else System.out.println(" 修改与确认不一致");
}
}
System.out.println("*********************");
System.out.println(" 当前账户密码修改成功");
System.out.println("****************************");
a[n].setOperatetype(4);
}
public void chaxun(int n) {

for(int i=0;i<a.length;i++) {
if(a[n].getAccountid().equals(a[i].getAccountid())) {
System.out.println("**************************");
System.out.println(" 当前账户余额"+a[i].getAmount()+"元");
System.out.println(" 账户清单信息为:");
switch(a[n].getOperatetype()) {
case 1:{System.out.println(a[n].getOperatedate()+"存钱"+a[n].getAccountblance());break;}
case 2:{System.out.println(a[n].getOperatedate()+"取钱"+a[n].getAccountblance());break;}
case 3:{System.out.println(a[n].getOperatedate()+"转账"+a[n].getAccountblance());break;}
case 4:{System.out.println(a[n].getOperatedate()+"修改密码");break;}
case 5:{System.out.println(a[n].getOperatedate()+"查询余额");break;}
}
break;
}
}
a[n].setOperatetype(5);
}
public void setzu(Account[] arrrr) {
a=arrrr;
}
public Account[] fan() {
return a;
}
}
public class helloword{
public static void main(String[] args)throws IOException, ClassNotFoundException {

Scanner cn=new Scanner(System.in);

ObjectInputStream ois=new ObjectInputStream(
new FileInputStream(
"D:/java.txt"));
Account[] arra=(Account[])ois.readObject();
ois.close();




ObjectOutputStream oos=new ObjectOutputStream(
new FileOutputStream(
"D:/java.txt"));


/*
Account[] a=new Account[2];
a[0]=new Account("11111111","呵呵","d",1,"123456",2,3);
a[1]=new Account("22222222","哈哈","d",1,"123456",2,3);
Account ac=new Account("11111111","呵呵","d",1,"123456",2,3);
oos.writeObject(a);
*/


AccountManage man=new AccountManage();
man.setzu(arra);
man.showjiemian();
String count1=cn.next();
int tnum=-1;
while(tnum==-1) {
tnum=man.shuruzhanghao(count1);

}
if(man.shumima(tnum)==1) {
for(int i=0;i<10;i++) {
System.out.println("*************************");
System.out.println();
System.out.println(" 1、存款");
System.out.println();
System.out.println(" 2、取款");
System.out.println();
System.out.println(" 3、转账汇款");
System.out.println();
System.out.println(" 4、修改密码");
System.out.println();
System.out.println(" 5、查询余额");
System.out.println();
System.out.println("*************************");
int caozuo=cn.nextInt();
switch(caozuo) {
case 1:man.cun(tnum);oos.writeObject(man.fan());break;
case 2:man.qu(tnum);oos.writeObject(man.fan());break;
case 3:man.zhuan(tnum);oos.writeObject(man.fan());break;
case 4:man.gaimima(tnum);oos.writeObject(man.fan());break;
case 5:{man.chaxun(tnum);oos.writeObject(man.fan());break;}

}
if(caozuo==5) {
System.out.println("********************************************");
System.out.println();
System.out.println("欢迎使用中国工商银行自动柜员管理系统");
System.out.println();
System.out.println("********************************************* ");
System.out.println(" 请输入您的账号");
System.out.println("*******************************************");
oos.writeObject(man.fan());
}

}

}
oos.close();

}
}

1500(2000)字感想

 

 

终于,经过了这么长时间的假期,我们终于迎来了开学。当然,开学前我们尊敬的王老师已经让我们在家里自己学习了Java的部分内容,并且告诉了我们开学要进行测试。开学后我们首先应来的并不是Java的测试,而是高数和大学英语的考试,经过了一个暑假,我有的内容已经忘了,开学后的前几天我们还是有好几天的时间来回顾忘得内容和掌握新的内容,这几天的时间也没有浪费,我们大部分也通过这几天的时间丰富了自己的知识,让我们有了更大的信心去面对当时即将到来的考试。考试结束后我们也陆续迎来了搬回本部的任务,当时那一天确实有够累的。回到本部后我们还是有很长的时间可以学习内容,期间我们尊敬的王老师又给我们寻找了见面课让我们相见一下并且给我们提出了下周要进行测试的忠告。

终于,在这一天,我们迎来的这已经说了很久的测试。

在这之前,我在暑假也做过Java的题目,我也把尊敬的王老师在暑假前留的Java测试题目自己敲了出来,并且其中遇到的问题也都自己解决,对这个问题还算是比较熟悉。

终于,今天终于来了,我听了尊敬的王老师的劝告,在中午多吃了饭,中午也好好休息,为了好好应对下午的测试。闹钟响起,我以很高昂的热情进入了教室,见到了尊敬的王老师,在人都到齐后,王老师又和我们聊了几句,就把题目给了我们。开始,老师给的题目从大体上来看和暑假前留的例题简直如出一辙,我也很快就去敲了。但就在这个时候,王老师听了下面同学的话,有的同学说这道题目他们做过,并且也好几个人都说做过,就这样,我们我们尊敬的王老师决定给我们换一道题目。过了一会,老师给我们出了新的题目。

综合浏览这一道题目,这道题目一看就比刚才的题目复杂,其中涉及到了很多的功能,并且一眼望去都不容易实现。现在先从头分析。

首先,题目给出了两个类,第一个类定义了六个私有数据,需要我们自己定义,当然这比较简单,这个类中的set方法和get方法也可以轻松解决。

在我读题的过程中我发现了题目要求使用文件实现,将这道题目与当时王老师发的测试题相比,那一道题目并没有给出文件的操作,也正是因为如此我没有把文件部分的知识很好的掌握,王老师指出让我们当场学,并且可以借助网络,我思索了一下,我决定先不实现这一部分的内容,我先把另一个类实现,毕竟文件只是起到一个存储的作用,重要的还是操作功能的实现。

纵观这一道题目,这是一个ATM取款机的功能的实现,要求剧本存款,取款,转账,改密码,查询余额的功能,现在把这道题目完成后感觉并不是很复杂,但是当时在手机上看到的题目,足足有10页的word,看的简直是眼花缭乱,做题的主要思路也不是很清晰,就决定一个一个功能的实现,但这时候我都要考虑的问题就是存储在文件中,文件的操作不够好,这时候就要把内容存在自己定义的类的数组中,使用set和get方法结合实现内容。

接下来是取款,在做完后反观,我这到题目最终的决定是将一个Account的数组定义在第二个类中,然后每一个函数都要一个参数,在数组中的第几个,得到了对应的元素就可以使用set和get方法进行取款。接下来是改密码,这个功能要判断新输入的密码和新输入密码的相同比较,用equals方法即可实现。然后是转账,这个时候就体现了我的设计的作用,当然我的方法可能会比较浪费时间和空间,但可以实现这个功能,先输入要转给谁,在使用遍历看这个数组中是否存在要执行的人的账号,有的话返回这个人的下标用一个局部变量储存,然后转账人的金额减去对应金额,被转账人加上对应金额,就可以实现这个功能。

然后是查询余额,使用get方法就可以获得当前操作账户的人的余额,但是题目中还给出了要记录操作时间,这时候就借助网上学到的导入Date的包进行当前时间的获得。

然后这道题目还有一个主方法,我将界面的输出定义在了主函数中,把选择操作的switch的语句放在了主函数中,这些功能都可以实现。终于,这个时候迎来的最后的和文件的操作结合,这就意味着刚才写的函数都要在实现文件的操作后改掉其中的部分,这也是我在第二个类中先定义了一个Account数组的原因。我结合发的电子版教材,看了文件的操作的几个方法,在经过了多次尝试后,我决定了使用序列化和反序列化,使用这个对内容进行存储和读取,还有把好多个方法都进行修改,结合文件操作的特性,完成了这个功能。

现在以一个做完者的角度来看,这道题的流程并不复杂,因为涉及到的方法也不多,也是我做这样规模的题目的数量还不够,以前的管理系统代码也没有这次的数量这么大过。同时也是自己的代码敲得不够迅速,有的地方还可以改进。这也就说明平时的训练也是很有必要的,我们在解决问题的过程中不仅会锻炼我们解决问题的思路,同时也锻炼了我们解决问题的步骤的选择,如果这道题目在一开始就有着明确的解决思路,那么也会提高完成问题的效率。总之,今天的课堂测试也让我认识到了我们以后要解决问题,必须要让自己有着足够高,足够强的能力,这样才能在遇到问题的时候有着明确的思路去解决问题。今天的题目,工程量在现来说确实有足够大,但是我们要培养的就是解决复杂问题的能力,有了足够强的能力就能解决更加复杂的问题。

posted @ 2020-09-22 22:54  软工新人  阅读(107)  评论(0编辑  收藏  举报