课程考核感想

1.源代码

package atm;
import java.util.Scanner;
import java.util.ArrayList;
public class AccountManager
{

public static void main(String[] args) {
Account account = new Account ();
double m=0;
int i=0;
int k=0;
int j=0;
String l="";
Scanner in=new Scanner(System.in);
boolean ture = false;
while(!ture)
{
do
{
account.menu0();
i=in.nextInt();
while(i<10000000||i>99999999)
{
System.out.println(" 该卡不是工行卡 ");
System.out.println(" 重新输入您的账号");
i=in.nextInt();
}
account.menu(i);

for(k=0;k<3;k++)
{
j=in.nextInt();
if(j>100000&&j<999999)
{

k=5;
break;
}
else if(j<100000||j>999999)
{
System.out.println("密码输入错误");
}
else if(j==888888)
{
System.out.println("密码输入错误");
}
}
if(k==3)
{
System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
}
}while(k!=5);


do
{
account.menu1(i);
l=in.next();
switch(l){
case "1":
{
account.menu2(i);
m=in.nextDouble();
while(m<0||m-(int)m>0.00001)
{
System.out.println("输入金额有误");
account.menu2(i);
m=in.nextInt();
}
account.cun(m,i);
};break;
case "2":
{
account.qu(i);
int n;
n=in.nextInt();
switch(n)
{
case 1:
{
if(m<100)
System.out.println("账户余额不足");
else
m=m-100;
};break;
case 2:{
if(m<500)
System.out.println("账户余额不足");
else
m=m-500;
};break;
case 3:{
if(m<1000)
System.out.println("账户余额不足");
else
m=m-1000;
};break;
case 4:{
if(m<1500)
System.out.println("账户余额不足");
else
m=m-1500;
};break;
case 5:{
if(m<2000)
System.out.println("账户余额不足");
else
m=m-2000;
};break;
case 6:{
if(m<5000)
System.out.println("账户余额不足");
m=m-5000;
};break;
case 7:{
System.out.println("*************************************************************** ");
System.out.println("欢迎"+i+" 使用中国工商银行自助柜员系统");
System.out.println("**************************************************************** ");
System.out.println("请输入取款金额:");
System.out.println("**************************************************************** ");
int jin;
jin=in.nextInt();
if(m<jin)
System.out.println("账户余额不足");
else
m=m+jin;
};break;
case 8:account.menu0();;break;
case 9:account.menu1(i);break;
}
}
case "3":{
account.zhuan(i);
int zhanghu;
zhanghu=in.nextInt();
account.jine(i);
int jine;
jine=in.nextInt();
if(m<jine)
System.out.println("账户余额不足");
else
{
System.out.println("*************************************************************** ");
System.out.println("欢迎"+i+"使用中国工商银行自助柜员系统 ");
System.out.println("**************************************************************** ");
System.out.println("请确认是否向"+zhanghu+"转账"+jine+"元");
System.out.println("当前账户余额为:"+(m-jine)+" 元 ");
}

};break;
case "4":{
account.mima(i);
int ymi,nmi,nmi2;
ymi=in.nextInt();
nmi=in.nextInt();
nmi2=in.nextInt();
if(ymi==j)
{
if(nmi==nmi2)
{
System.out.println("***************************************************************");
System.out.println("欢迎 "+i+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println("当前账户密码修改成功 ");
System.out.println("***************************************************************");
}
else
System.out.println("修改密码与确认密码不一致");
}
else
System.out.println("当前密码录入错误");
};break;
case "5":System.out.println("当前余额:"+m);break;
}

}while(l.charAt(0)!='q');
}
}
}

 

 

 

 

package atm;

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 b)
{
accountname=b;
}
public void setoperatedate(String c)
{
operatedate=c;
}
public void setoperatetype(int d)
{
operatetype=d;
}
public void setaccountpassword(String e)
{
accountpassword=e;
}
public void setaccountbalance(int f)
{
accountbalance=f;
}
public void setamount(int g)
{
amount=g;
}


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() {}
public void menu(int i)
{

System.out.println("***************************************************************");
System.out.println(" 欢迎"+i+"使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
System.out.println(" 输入您的密码:");
System.out.println("***************************************************************");
}
public void menu0()
{
System.out.println("***************************************************************");
System.out.println(" 欢迎使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
System.out.println(" 输入您的账号:");
System.out.println("***************************************************************");
}
public void menu1(int i)
{
System.out.println("***************************************************************");
System.out.println(" 欢迎"+i+"(账户名称)使用中国工商银行自助柜员系统");
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("***************************************************************");
}
public void menu2(int i)
{
System.out.println("***************************************************************");
System.out.println("欢迎"+i+"(账户名称)使用中国工商银行自助柜员系统");
System.out.println("****************************************************************");
System.out.println("请输入存款金额;");
System.out.println("****************************************************************");
}
public void cun(double m,int i)
{
System.out.println("***************************************************************");
System.out.println("欢迎"+i+"使用中国工商银行自助柜员系统");
System.out.println("****************************************************************");
System.out.println("当前账户存款操作成功。");
System.out.println("当前账户余额为:"+m+"元");
System.out.println("****************************************************************");
}
public void qu(int i)
{
System.out.println("***************************************************************");
System.out.println("欢迎"+i+"使用中国工商银行自助柜员系统");
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("****************************************************************");
}
public void zhuan(int i)

{
System.out.println("*************************************************************** ");
System.out.println("欢迎 "+i+"使用中国工商银行自助柜员系统 ");
System.out.println("**************************************************************** ");
System.out.println("请输入转账账户; ");
System.out.println("**************************************************************** ");
}
public void jine(int i)
{
System.out.println("*************************************************************** ");
System.out.println("欢迎"+i+" 使用中国工商银行自助柜员系统 ");
System.out.println("*************************************************************** ");
System.out.println("请输入转账金额; ");
System.out.println("*************************************************************** ");
}
public void mima(int i)
{
System.out.println("*************************************************************** ");
System.out.println("欢迎"+i+" 使用中国工商银行自助柜员系统 ");
System.out.println("*************************************************************** ");
System.out.println("请输入当前密码: ");
System.out.println("请输入修改密码: ");
System.out.println("请输入确认密码: ");
System.out.println("*************************************************************** ");
}


}

 

2.运行截图

 

 

 

 

3.感想

 在9月22日周二我们进行了开学测试,来检查暑假的学习效果,考试的内容是实现ATM机的存取款等功能,要求ATM机的账户记录Account有账户的唯一性标识(8个数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0)。

       在看到试卷时,我首先花费了大概20分钟时间设计并整理思路,之后便进行了私有变量、get()、set()函数的定义,这些在暑假做过很多次,所以很快便完成了。接下来便是实现向accountinformation.txt、accountlist.txt文件中输入信息并实现输出,这个程序最重要的便是文件的输入与输出,在这里我使用了对象的序列化,并用了ArrayList动态数组,以对象为单位输入输出。在界面设计中,困难的是账号和密码与储存在文件内容中对象信息对比,通过将文件中的全部对象存入动态数组中,之后调用getaccountID()和getaccountpassword()对比实现。接下来的功能也都通过类似的方法一一实现,操作流水信息则是每操作一次便将操作信息存入accountlist.txt文件中,在最后查询时现将储存的所有信息放到动态数组中,之后用getaccountID()与账户进行对比,如果相同则输出。在操作流水信息中有操作时间,就是需要获得操作的时间,这个功能我没有实现了。

       在考试过程中,从头开始一项一项的实现的,每个功能完成时都会进行测试,这固然会时编程的速度变慢,但是保证了程序能够正常进行。每个功能我都创建了新的函数,但是感觉每个函数中重复的地方比较多,下次考试时我会尝试将重复的地方另外建一个函数,使程序变得更加简单。在编程过程中,程序总是会出错,最多的便是变量的初始化和定义变量的作用范围,对于变量的作用范围掌握的不是很好。在编程前虽然花了20分钟时间看题,但在编程时思维还是有些混乱,总是想起一样做一样,导致编程的时候结构混乱。

       通过本次考试,我对在暑假中学到的知识掌握的更加熟练,同时也认识到了自身的不足,考试时有些紧张着急,导致思维比较混乱,for和if的包括范围搞错导致程序出错,编程序的速度太慢,3小时时间内还有两项功能没有实现,界面不够美观,注释几乎没有,总之在本次考试中我发现了自己的很多不足之处。考试结束后老师为我们讲解了一番,表示一个程序的输入是要直达目的的,只能输入程序员想要的,所以要限制其他情况。在本次考试中,我尽了自己的最大努力,暑假学到的知识得到了充分的发挥,知道了自己的知识是多么的有限。在接下来的学习中,我会更加努力,调整好自己的心态,在编程前整理好思路,注重编程中的细节,把程序变得更加美观,我相信在老师的带领下,我的能力会得到进一步的提升。

posted @ 2020-09-22 20:01  王昊宁  阅读(85)  评论(0编辑  收藏  举报