2020/09/22 刘一辰的JAVA随笔
今天是JAVA验收的一天,一下午写的脑袋瓜子嗡嗡的,回了宿舍躺了会儿才缓过来,然后起床颤颤巍巍的打下来这么几段话。
思路:第一、登录判断,密码限制三次,使用for循环。第二、成功登录,选择相应的功能,使用switch语句。第四、实现功能的反复循环操作,因为次数不确定,使用while结构。第五、对每个功能模块进行填充完善。上来就做题真的是有点狗咬刺猬的感觉,不知道从哪下口,无奈之下只能按部就班的来,按照题目要求的功能一步一步的实现,先是类的声明,需要定义一个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,表示操作流水金额。总体来说,我整个过程都是通过边学边写的方式一点点的挤出来的,错误有很多而且不好改,仅仅是一个改密码就给我难住了。以至于我还把电脑给玩崩了,某个环境变量还被我某次Dbug的时候删了。回了宿舍捣鼓半天才搞好。在学习Java的面向对象的编程语言的特性。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。我觉得这个过程需要花很长很长时间,因为学习Java之前有C++的经验,依照这过程,开始熟悉Java的类库。基础类库里面的类非常非常多。据说有3000多个。但是我真正使用的只有几个,比如说 java.io.*; java.util.*; java.sql.*;等。 此外,我对于static,public,private,Exception,try{ },catch { },finally{ }等等一开始都不是很懂,以往我的学习经验都是把书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后,也能得到自己想要的。现在我只能在有限的时间里面,学会这些,只能手忙脚乱的学,肯定不牢固,还要回来再认真看看。当然我也学到了好多在家在图书馆学不到的东西。这种教学方式我一时间不太好接受,但是这比我看视频看书学的多而且印象格外深刻。以下是我的源代码,虽然不完美,但是我尽我所能。
private String accountname;
private String operatedate;
private int operatetype;
private String accountpassword;
private int accountbalance = 0;
private int amount;
public String toString() {
return accountID +"\n" +
accountname +"\n" +
accountpassword +"\n" +
accountbalance +"\n";
}
return accountID;
}
this.accountID = accountID;
}
return accountname;
}
this.accountname = accountname;
}
return operatedate;
}
this.operatedate = operatedate;
}
return operatetype;
}
this.operatetype = operatetype;
}
return accountpassword;
}
this.accountpassword = accountpassword;
}
return accountbalance;
}
this.accountbalance = accountbalance;
}
return amount;
}
this.amount = amount;
}
}
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
enterAccount();
}
public static void enterAccount() throws IOException {
read();
Scanner scanner = new Scanner(info);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("***************************************************************\n");
System.out.println(" " + "欢迎使用中国工商银行自动柜员系统;");
System.out.println("***************************************************************\n");
System.out.println(" " + "请输入您的账号;");
String account = reader.readLine();
boolean t = false;
for (int i = 0; i < list.size(); i++) {
if (account.length() != 8) {
System.out.println("该卡不是工行卡!");
t = true;
enterAccount();
break;
} else if (list.get(i).getAccountID().equals(account)) {
enterpassword(account);
t = true;
break;
}
}
System.out.println("该账号不存在");
enterAccount();
}
}
Scanner scanner = new Scanner(System.in);
Head();
System.out.println(" " + "1、存款;\n");
System.out.println(" " + "2、取款\n");
System.out.println(" " + "3、转账汇款;\n");
System.out.println(" " + "4、修改密码;\n");
System.out.println(" " + "5、查询余额;\n");
System.out.println("***************************************************************\n");
int t = scanner.nextInt();
switch (t) {
case 1:
cunkuan();
break;
case 2:
qukuan();
break;
case 3:
zhuanzhang();
break;
case 4:
setpass();
break;
case 5:
break;
}
}
public static File alist = new File("accountlist.txt");
public static int a = 0;
public static ArrayList<Account> list = new ArrayList<Account>();
Scanner scanner = new Scanner(info);
while (scanner.hasNext()) {
Account account = new Account();
account.setAccountID(scanner.next());
account.setAccountname(scanner.next());
account.setAccountpassword(scanner.next());
account.setAccountbalance(scanner.nextInt());
list.add(account);
}
}
FileWriter fileWriter = new FileWriter(info);
for (int i = 0; i < list.size(); i++) {
fileWriter.write(list.get(i).toString() + "\n");
}
fileWriter.close();
}
Scanner scanner = new Scanner(System.in);
int t = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getAccountID().equals(accountID)) {
a = i;
break;
}
}
Head();
System.out.println(" " + "请输入您的密码:");
String password = scanner.next();
if (list.get(a).getAccountpassword().equals(password)) {
main2();
break;
} else {
System.out.println("密码录入错误!");
t++;
}
if (t >= 3) {
System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理。");
enterAccount();
break;
}
}
}
System.out.println("***************************************************************\n");
System.out.println(" " + "欢迎" + list.get(a).getAccountname() + "使用中国工商银行自动柜员系统\n");
System.out.println("***************************************************************\n");
}
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Head();
System.out.println("请输入存款金额;");
String input = reader.readLine();
if ("q".equals(input)) {
enterAccount();
}
try {
Integer.parseInt(input);
} catch (Exception e) {
System.out.println("输入金额有误,返回取款界面;");
}
int money = Integer.parseInt(input);
if (money > 0) {
list.get(a).setAccountbalance(list.get(a).getAccountbalance() + money);
list.get(a).setAmount(list.get(a).getAmount() + money);
Head();
System.out.println(" " + "当前账户存款操作成功。");
System.out.println(" " + "当前账户余额为:" + list.get(a).getAccountbalance() + "元");
System.out.println("***************************************************************");
}
write();
main2();
}
Head();
System.out.println("当前账户取款操作" + m + "元成功。");
System.out.println("***************************************************************");
list.get(a).setAmount(list.get(a).getAmount() + m);
list.get(a).setOperatetype(2);
}
Scanner scanner = new Scanner(System.in);
Head();
System.out.println("当前账户每日可以支取2万元。\n" +
"1、100元\n" +
"2、500元\n" +
"3、1000元\n" +
"4、1500元\n" +
"5、2000元\n" +
"6、5000元;\n" +
"7、其他金额\n" +
"8、退卡\n" +
"9、返回\n");
int t = scanner.nextInt();
switch (t) {
case 1:
if (list.get(a).getAccountbalance() > 100) {
qukuanchenggong(100);
} else {
System.out.println("账户余额不足");
}
break;
case 2:
if (list.get(a).getAccountbalance() > 500) {
qukuanchenggong(500);
} else {
System.out.println("账户余额不足");
}
break;
case 3:
if (list.get(a).getAccountbalance() > 1000) {
qukuanchenggong(1000);
} else {
System.out.println("账户余额不足");
}
break;
case 4:
if (list.get(a).getAccountbalance() > 1500) {
qukuanchenggong(1500);
} else {
System.out.println("账户余额不足");
}
break;
case 5:
if (list.get(a).getAccountbalance() > 2000) {
qukuanchenggong(2000);
} else {
System.out.println("账户余额不足");
}
break;
case 6:
if (list.get(a).getAccountbalance() > 5000) {
qukuanchenggong(5000);
} else {
System.out.println("账户余额不足");
}
break;
case 7:
Head();
System.out.println("请录入取款金额:");
int b = scanner.nextInt();
if (list.get(a).getAccountbalance() > b) {
qukuanchenggong(b);
} else {
System.out.println("账户余额不足");
}
break;
case 8:
enterAccount();
break;
case 9:
main2();
break;
}
int b;
Scanner scanner = new Scanner(System.in);
Head();
System.out.println("请输入转账账户:");
String ac = scanner.next();
for (int i = 0; i < list.size(); i++) {
if (ac.equals(list.get(i).getAccountID())) {
Head();
System.out.println("请输入转账金额:");
int money = scanner.nextInt();
if (money <= list.get(a).getAccountbalance()) {
Head();
System.out.println("请确认是否向" + list.get(i).getAccountname() + "转账" + money + "元。(Y/N)");
String c = scanner.next();
if (c.equals("N")) {
main2();
break;
}
if (c.equals("Y")) {
Head();
System.out.println("当前账户向" + list.get(i).getAccountname() + "成功转账" + money + "元。");
System.out.println("当前账户余额为:" + money + "元");
list.get(a).setAccountbalance(list.get(a).getAccountbalance() - money);
list.get(a).setAmount(list.get(a).getAmount() + money);
list.get(a).setOperatetype(3);
}
}
}
}
main2();
}
Scanner scanner = new Scanner(System.in);
Head();
System.out.println("请输入当前密码:");
String pa1 = scanner.next();
System.out.println("请输入修改密码:");
String npa1 = scanner.next();
System.out.println("请输入修改密码:");
String npa2 = scanner.next();
if (!pa1.equals(list.get(a).getAccountpassword()) &&npa1.equals(npa2)){
Head();
System.out.println("当前账户密码修改成功");
}else if (!pa1.equals(list.get(a).getAccountpassword())) {
System.out.println("当前密码录入错误");
setpass();
}else if(!npa1.equals(npa2)){
System.out.println("修改密码与确认密码不一致");
setpass();
}
list.get(a).setOperatetype(4);
write();
main2();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!