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("\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源代码及感想的更多相关文章
- java测试ATM自助操作系统
开学第一周系主任安排了一项测试,测试要求:模拟ATM自助取款机用文件进行存储账户信息,密码等,并进行存款取款,转账,查询记录等操作,而且要进行文件的读取与录入. 这是一个ATM自助取款的操作系统,进行 ...
- Java To CSharp源代码转换
前言 开发环境 客户端:Unity3D开发(C#) 服务器:Java (基于Java7) 日 期:2016年09月 需求说明 部分服务器的部分逻辑功能在客户端实现一遍,可以简单的理解为服务器的部分 ...
- [Java] LinkedList / Queue - 源代码学习笔记
简单地画了下 LinkedList 的继承关系,如下图.只是画了关注的部分,并不是完整的关系图.本博文涉及的是 Queue, Deque, LinkedList 的源代码阅读笔记.关于 List 接口 ...
- 【Java收集的源代码分析】Hashtable源代码分析
Hashtable简单介绍 Hashtable相同是基于哈希表实现的,相同每一个元素是一个key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阀值)时.相同会自己主动增长. Has ...
- java围棋游戏源代码
//李雨泽源代码,不可随意修改.//时间:2017年9月22号.//地点:北京周末约科技有限公司.//package com.bao; /*围棋*/ /*import java.awt.*; impo ...
- Java Arrays.sort源代码解析
前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...
- Java课堂测试01及感想
上周进行了Java的开学第一次测验,按要求做一个模拟ATM机功能的程序,实现存取款.转账汇款.修改密码.查询余额的操作.这次测验和假期的试题最大的不同还是把数组存储改成的文件存储,在听到老师说要用文件 ...
- Java阶段性总结与获奖感想
一.获奖感想 这次能获得小黄衫,可以说是对我自己这半学期以来努力学习的一种肯定,也是激励我继续努力的动力. 首先,我要感谢给予我们耳目一新的学习方式的娄老师.我曾在我期望的师生关系中提到,我的高中班主 ...
- [转载]查看JDK及Java框架的源代码
1.点 "window"-> "Preferences" -> "Java" -> "Installed JRE ...
随机推荐
- Mongo学习笔记
安装和开始 下载 MongoDB 参考:+MongoDB安装配置(Windows) +Mongo手册
- windows下Apache配置多个站点
1. httpd.conf 找到以下两行去掉注释: # Include conf/extra/httpd-vhosts.conf # LoadModule vhost_alias_module mod ...
- CSS3——animation的基础(轮播图)
作为前端刚入门的小菜鸟,只想记录一下每天的小收获 对于animation动画 1.实现动画效果的组成: (1)通过类似Flash的关键帧来声明一个动画 (2)在animation属性中调用关键帧声明的 ...
- H3C 路由策略(人为打环)
拓扑如上 任务1:去除环路双ospf 引入 造成路由环路一边是 1 一边是10关掉任意lo口都会生成新的路由表 但是路由表指向不对 变成了一个圆 我们可以采用引入路由打上tag ...
- HelloWorld带我入门JAVA(一)
基本环境配置可以百度完成,给个比较全面的网址http://c.biancheng.net/java/10/ 创建第一个java工程 通过Eclipse运行程序 启动Eclipse,在菜单中选择“文件 ...
- MyBatis的好处及常见问题
好处 MyBatis持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置 ...
- 友链 & 日记
友链 & 日记 关于 \(Owen\) 温州中学初三 \(OIer\),目前 \(OI\) 水平一般,文化课成绩浮在中游.喜欢二次元,喜欢听音乐,标准宅一枚.虽然入宅时间很短 欢迎大家跟 \( ...
- java处理数据库不支持的emoji表情符
一般数据库的编码是utf8,utf8是不支持存储表情符的,当存入的微信昵称带有表情符时就会出现乱码情况,有两种解决方法: 1.mysql数据库升级到5.5版本以上,utf8改为utf8mb4,utf8 ...
- Javascript高级编程学习笔记(14)—— 引用类型(3)Date类型
除了前两天介绍的Object.Array类型,Date应该就是JS中最常用的引用类型了 先介绍一下Date类型,该类型使用在Java的 java.until.Date 类的基础上构建的 使用UTC 1 ...
- JavaScript 基础排序的实现(二)
继上一篇O(n^2)的排序算法后,这一篇主要记录O(n*logn)的排序算法 1.快排(快速排序) 这一算法的核心思想为,先随机选一个数作为标兵或者说是标记(这个数一般来说选择该无序数组的中间那个元素 ...