JAVA实现ATM源代码及感想

源代码

//20173626 信1705-2 郑锦
package ATM;
import java.io.IOException;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Account {
private String accountID;
private String accountname;
private String operatedate;
private int operatetype;
private String accountpassword;
private int accountbalance;
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 setoperatedate(int operatetype) {
this.operatetype=operatetype;
}
public String getaccountpassword() {
return accountpassword;
}
public void setaccountpassword(String accountpassword) {
this.accountpassword=accountpassword;
}
public int getaccountbalance() {
return accountbalance;
}
public void setaccountbalance(int accountbalance) {
this.accountbalance=accountbalance;
}
public int getamount() {
return amount;
}
public void setamount(int amount) {
this.amount=amount;
}
class File01Demo {
public static void main(String[] args) throws IOException {
File file = new File("C:\accounlist.txt");
FileWriter fw = new FileWriter(file,true); //设置成true就是追加
fw.write("asd");
fw.write(" ");
fw.write("ffd");
fw.close();
}
}
public void menu() throws IOException //将异常抛出,调用这个方法去处理异常,如果main方法也将异常抛出,则交给Java虚拟机来处理,下同.
{
int a;
Scanner in=new Scanner(System.in);
System.out.println("***************************************************************************");
System.out.println("*************欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统*************");
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("***************************************************************************");
System.out.print("请选择(0~5):");
a=in.nextInt();
while(a<0||a>5)
{
System.out.print("输入无效,请重新输入:");
a=in.nextInt();
}
switch(a)
{
case 1:this.add();break;
case 2:this.draw();break;
case 3:this.modif();break;
case 4:this.delete();break;
case 5:this.look();break;
}
}
//查询余额
public void look() throws Exception{
System.out.println(amount);
System.out.println("***************************************************************");
System.out.println(" 欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统" );
System.out.println("****************************************************************");
System.out.println(" 当前账户余额为:XXXX元 ");
menu();
}
//取款
public void draw() throws Exception{
int sum1 = 0;dd
int money=0;
TimerTask task = new TimerTask(){
public void run(){
}
};
Timer timer = new Timer();
long delay = 1000*60*60*24;
long period = 1000*60*60*24;
timer.scheduleAtFixedRate(task, delay, period);
menu();

System.out.println("***************************************************************");
System.out.println(" 欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统 ");
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 sc = null;
int dr=sc.nextInt();
switch(dr){
case 1:
amount=500;
//balance-=money;


break;
case 2:
amount=1000;
//balance-=money;

break;
case 3:
money=2000;
//balance-=money;

break;
case 4:
System.out.println("只能输入100的整数倍,并且要小于2000.");
System.out.println("请输入金额");
amount=sc.nextInt();
if (money % 100 != 0 || money > 2000) {
System.out.println("您输入的金额不是100的整数倍或者大于2000,请选择:");
other(amount);
}
break;
default:draw();
}
sum1=sum1+money;
if(money > amount) {
System.out.println("余额不足请重新输入");
draw();
} else if (sum1 > 5000) {
System.out.println("对不起,本次取钱后当天累计金额将超过5000,将跳转到取款界面,请重新取款:" + " ");
draw();
} else {
amount-=money;

System.out.println("取款成功你的账户余额为" +amount);
// System.out.println(sum);
afterDraw();
}
}
private void afterDraw() {
// TODO 自动生成的方法存根

}
private void other(int amount2) {
// TODO 自动生成的方法存根

}
}

感悟:

今年开学之后先是连续一周紧张的小学期,在匆忙写完小学期作业之后又迎来了实习,坐了几天的车实地参观了几家公司,但是实话说真的没有学到什么东西,参观的时间没有写感想的时间长,有点小失望;其实也不能说什么也没有学到,毕竟长了见识,知道了人家软件公司的内部环境,和编程人员的工作环境,以及工资情况,小有收获;在这些之后迎来了真正的大头--java语言程序设计,第一节课考试有点小激动,老师给了我们题目后我们开始了长达一下午的变成拉锯战,因为老师说考试开卷可以上网找答案,刚开始很开心上网找答案感觉应该不会难,会用百度会打字不就行了,可是结果让我异常懵逼的是老师出的题是原创题,惊不惊喜意不意外,唉!没办法只能按照步骤一步一步来了,只是从网上寻找各种功能的原代码片段,然后进行拼接,最后也是没能全部完成,很是遗憾,二十分的题也是只拿到了九点五,奇低!

  以前从未接触过java,也只是听说过而已,上来就做题真的是有点狗咬刺猬的感觉,不知道从哪下口,无奈之下只能按部就班的来,按照题目要求的功能一步一步的实现,先是类的声明,需要定义一个ATM类,然后定义私有变量,一共七个缺一不可,然后对每个变量定义get()(读取变量信息)和set()(设置变量信息)的方法。刚开始真的是在老老实实的一个get一个set的在写但是写了半天之后发现原来不用手写系统可以直接根据我们定义的变量生成我们要写的这些函数,虽然很失望但是还是通过这个明白了些东西,总体很开心,毕竟收获了知识,通过这个我们了解到当一个方法太过麻烦的时候,我们可以尝试其他的途径,也就是我们常说的不要再一个树上吊死,也就是当我们理解了这些东西的时候,我们就会理解“山重水复疑无路,柳暗花明又一村”的喜悦!

  定义完变量和类之后,就开始各部分的功能实现,定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。(要求将学号作为帐号,将考生信息作为第一条记录)。

完成这个功能之后,紧接着就是界面的设计,每一次进行完操作之后都会自动跳转页面执行新的命令。

几个变量的功能如下:

  变量accountID为字符串类型String,用于存储学生的用户账号(由八位数字组成)。变量accountname为字符串类型String,用于存储账户的名称。变量operatedate为字符串类型String,用于存储操作的时间,由十位字符组成,显示格式为“2018-09-20”。   变量operatetype为int类型,用于存储操作账户的类型,具体描述为“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额变量accountpassword为字符串类型String,用于用户密码,由六位数字组成。变量accountbalance为整数类型int,用于存储账户余额,缺省为0。变量amount为整数类型int,表示操作流水金额。感觉任重而道远,虽然压力不小但是我不会放弃,加油吧!!

原文地址:https://www.cnblogs.com/jinseliunian/p/9696646.html