源代码

//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("\r\n");
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,将跳转到取款界面,请重新取款:" + "\n");
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,表示操作流水金额。感觉任重而道远,虽然压力不小但是我不会放弃,加油吧!!

JAVA实现ATM源代码及感想的更多相关文章

  1. java测试ATM自助操作系统

    开学第一周系主任安排了一项测试,测试要求:模拟ATM自助取款机用文件进行存储账户信息,密码等,并进行存款取款,转账,查询记录等操作,而且要进行文件的读取与录入. 这是一个ATM自助取款的操作系统,进行 ...

  2. Java To CSharp源代码转换

    前言 开发环境 客户端:Unity3D开发(C#) 服务器:Java (基于Java7) 日   期:2016年09月 需求说明 部分服务器的部分逻辑功能在客户端实现一遍,可以简单的理解为服务器的部分 ...

  3. [Java] LinkedList / Queue - 源代码学习笔记

    简单地画了下 LinkedList 的继承关系,如下图.只是画了关注的部分,并不是完整的关系图.本博文涉及的是 Queue, Deque, LinkedList 的源代码阅读笔记.关于 List 接口 ...

  4. 【Java收集的源代码分析】Hashtable源代码分析

    Hashtable简单介绍 Hashtable相同是基于哈希表实现的,相同每一个元素是一个key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阀值)时.相同会自己主动增长. Has ...

  5. java围棋游戏源代码

    //李雨泽源代码,不可随意修改.//时间:2017年9月22号.//地点:北京周末约科技有限公司.//package com.bao; /*围棋*/ /*import java.awt.*; impo ...

  6. Java Arrays.sort源代码解析

    前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...

  7. Java课堂测试01及感想

    上周进行了Java的开学第一次测验,按要求做一个模拟ATM机功能的程序,实现存取款.转账汇款.修改密码.查询余额的操作.这次测验和假期的试题最大的不同还是把数组存储改成的文件存储,在听到老师说要用文件 ...

  8. Java阶段性总结与获奖感想

    一.获奖感想 这次能获得小黄衫,可以说是对我自己这半学期以来努力学习的一种肯定,也是激励我继续努力的动力. 首先,我要感谢给予我们耳目一新的学习方式的娄老师.我曾在我期望的师生关系中提到,我的高中班主 ...

  9. [转载]查看JDK及Java框架的源代码

    1.点 "window"-> "Preferences" -> "Java" -> "Installed JRE ...

随机推荐

  1. h5的改进:

    新元素画布canvas: HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成音频audio视频video语义性: article,  nav ...

  2. MQTT

    1.IBM提出,适用于IOT,订阅和发布模式. 2.订阅和发布模式:这种模式是异步的形式,有些类似于邮件接发的形式,发送者将邮件发至代理,接收者如果没同时接收,也不影响发送者的二次发送. 3.主题模式 ...

  3. 基于fpga的vga学习(2)

    本次学习主要向配合basys2实行. 上次学习vga的rgb三个output都是1位的,但是我看了basys2的rgb分别是332位,这里让我卡顿了很久, 之后通过查资料才知道,rgb的不同大小表示的 ...

  4. 两台Linux机器传送文件

    https://www.cnblogs.com/lianrenjujishou/p/5458206.html

  5. 【java源码】解读HashTable类背后的实现细节

    HashTable这个类实现了哈希表从key映射到value的数据结构形式.任何非null的对象都可以作为key或者value. 要在hashtable中存储和检索对象,作为key的对象必须实现has ...

  6. Android-Nexus5-命令刷机

    第一步)需要有有一部Nexus5手机: 第二步)寻找 .tgz 刷机包: 1: 2: 3.进行hammerhead-lmy47d-factory-6c1ad81e.tgz的下载: 4 进行解压: 5. ...

  7. win10个人助理conrtana软件能否支持用户反馈、后续优化

    上网查找了一下,win10的个人助理不支持用户反馈.这些反馈都是用户通过别的途径来发表反馈的信息,这个缺陷让用户不是特别满意,因为反馈信息不再那么简答,变得越来越繁琐.有些人还会担心自己反馈的问题会不 ...

  8. 协程 及 libco 介绍

    libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程.如何实现协程.libco使用等方面了解协程和libco. why协程 为什么使用协程,我们先从server框 ...

  9. 【转】Asp.NetMve移除HTTP Header中服務器信息Server、X-AspNet-Version、X-AspNetMvc-Version、X-Powered-By:ASP.NET

    默認情況下Chrome中截獲的HTTP Header信息: Cache-Control: Content-Encoding:gzip Content-Length: Content-Type:text ...

  10. Android NDK学习(五):Java调用Native代码流程总结

    编写一个Java类,并且在某个方法签名的修饰符中加上native修饰符. 使用Javac命令编译第一步中的Java类,使之成为一个class文件. 使用Javah -jni 包名.类名 生成Jni接口 ...