ATM
ATM机的账户记录Account有账户的唯一性标识(8个数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0)。
1、定义Account类,其中包括七个私有变量(accountID,accountname,operatedate,operatetype,accountpassword, accountbalance,)。(3分)
各成员的含义如下:
变量accountID为字符串类型String,用于存储学生的用户账号(由八位数字组成)。
变量accountname为字符串类型String,用于存储账户的名称。
变量operatedate为字符串类型String,用于存储操作的时间,由十位字符组成,显示格式为“2018-09-20”。
变量operatetype为int类型,用于存储操作账户的类型,具体描述为“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。
变量accountpassword为字符串类型String,用于用户密码,由六位数字组成。
变量accountbalance为整数类型int,用于存储账户余额,缺省为0。
变量amount为整数类型int,表示操作流水金额。
2、对每个变量定义get()(读取变量信息)和set()(设置变量信息)的方法。(3分)
3、定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。(要求将学号作为帐号,将考生信息作为第一条记录)。(2分)
三、功能要求:(12分)
该程序模拟ATM的功能设计,当用户插卡后显示,输入密码界面,用户输入正确密码(用户输入错误密码,则提示该卡已被锁定,无法操作),则弹出选择界面:存款、取款、转账汇款、修改密码、查询余额。
注意:对accountinformation.txt和accountlist.txt数据库中的信息进行读写操作时,必须调用get()和set()方法,否则,出现一处扣除0.5分,直至扣完为止。
(1) 需要在程序开始的注释中注明班级、学号、姓名。(1分)
(2) 定义AccountManager类实现下列要求
(3)程序开始运行模拟用户插卡显示用户输入账号功能;(1分)
①界面设计:
***************************************************************
欢迎使用中国工商银行自动柜员系统
**************************************************************** 请输入您的账号:
****************************************************************
②功能设计
用户在该界面输入账号信息,如果输入账号位数有误,提示“该卡不是工行卡”,如果输入账号信息在accountinformation.txt不存在,则提示“该账号不存在”,账号输入不成功,系统提示错误信息后返回输入账号界面;输入账号成功后,系统跳转到输入密码界面。
(4)用户输入密码功能;(1分)
①界面设计:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
**************************************************************** 请输入您的密码:
****************************************************************
②功能设计
用户在该界面输入账号密码信息,如果密码录入错误(出现位数不对或与文件中该账号对应的密码不服),则提示“密码录入错误”,如果密码录入三次错误,则提示“该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理”。单次密码输入不成功,系统提示错误信息,返回输入密码界面;三次密码输入不成功,系统提示错误信息,返回输入账号界面,密码输入成功,系统跳转到主界面。
(5)系统主界面如下图所示,选择相应的数字执行相应的功能。(1分)
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
1、 存款;
2、 取款;
3、 转账汇款;
4、 修改密码;
5、 查询余额;
****************************************************************
(6)存款功能:(2分)
存款操作流程:
①系统进入存款界面:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入存款金额;
****************************************************************
②用户在该界面输入存款金额后,如果输入不是正整数,提示用户“输入金额有误,返回取款界面;输入字母“q”,则返回系统输入账号界面,表示退出柜员机操作;输入正整数,则跳转到下图存款成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户存款操作成功。
当前账户余额为:XXXX元
****************************************************************
③存款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。
④点击“q”键,退回系统录入账号界面
(7)取款功能:则显示100元、500元、1000元、1500元、2000元、5000元、其他金额、退卡、返回操作供用户选择(3分)
取款流程设计:
① 系统进入取款界面:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************当前账户每日可以支取2万元。
1、100元
2、500元
3、1000元
4、1500元
5、2000元
6、5000元;
7、其他金额
8、退卡
9、返回
****************************************************************
②用户选择1-6选项时,判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户取款操作XXXX元成功。
当前账户余额为:XXXX元
****************************************************************
③用户选择7选项时,显示录入金额界面
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入取款金额:
****************************************************************
判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户取款操作XXXX元成功。
当前账户余额为:XXXX元
****************************************************************
④取款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。
⑤用户选择“8”选项时,系统跳转到输入账户界面。
⑥用户选择“9”选项时,系统跳转到系统主界面。
(8)转账汇款功能:(1分)
系统流程如下所示:
①系统进入转账主界面
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入转账账户;
****************************************************************
②用户在该界面输入判断该账户是否存在accountinformation.txt文件中,如果没有提示“该账户不存在”,如果有则跳转到转账金额界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入转账金额;
****************************************************************
③判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图转账确认成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请确认是否向*XX(将转账的用户名称第一个用*代替,其余正常显示)转账XXXX元。
****************************************************************
④单击“N”表示不确认转账,系统跳转到系统主界面;单击“Y”表示确认转账,系统跳转到转账成果界面,。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户向*XX成功转账XXXX元。
当前账户余额为:XXXX元
****************************************************************
⑤转账汇款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。
⑥点击“q”键,退回系统录入账号界面
(9)修改密码功能:(1分)
修改密码操作流程:
① 系统进入修改密码界面:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入当前密码:
请输入修改密码:
请输入确认密码:
****************************************************************
② 当前密码录入错误,提示“当前密码录入错误”,系统返回修改密码界面,清空数据重新录入;修改后密码与确认密码不一致,提示“修改密码与确认密码不一致”,系统返回修改密码界面,清空数据重新录入。
③ 密码修改成功,系统跳转到密码修改成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户密码修改成功
****************************************************************
④ 密码修改成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户密码。
⑤ 点击“q”键,退回系统录入账号界面
(10)查询功能:(1分)
查询操作流程:
①系统显示当前用户余额和操作流水信息:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户余额为:XXXX元
账户清单信息为:
1、操作日期 操作类型(不用显示数字) 操作金额
2、操作日期 操作类型(不用显示数字) 操作金额
3、…………………………………………………………
****************************************************************
Account类
public class Account { String accountID; //存储学生的用户账号(由八位数字组成) String accountname; //存储账户的名称 String operatedate; //存储操作的时间,由十位字符组成,显示格式为“2019-09-20” int operatetype; // 存储操作账户的类型 String accountpassword; //用户密码 int accountbalance; //存储账户余额 int amount; //操作流水金额 //用户账号的设置和读取 public void setaccountID(String accountID) { this.accountID= accountID; } public String getaccountID() { return accountID; } //存储账户名称的设置和读取 public void setaccountname(String accountname) { this.accountname= accountname; } public String getaccountname() { return accountname; } //存储操作时间的设置和读取 public void setoperatedate(String operatedate) { this.operatedate=operatedate; } public String getoperatedate() { return operatedate; } //存储账户类型的设置和读取 public void setoperatetype(int operatetype) { this. operatetype= operatetype; } public int getoperatetype() { return operatetype; } //用户密码的设置和读取 public void setaccountpassword(String accountpassword) { this.accountpassword=accountpassword; } public String getaccountpassword() { return accountpassword; } //存储账户余额的设置和读取 public void setaccountbalance(int accountbalance) { this.accountbalance=accountbalance; } public int getaccountbalance() { return accountbalance; } //操作流水金额的设置和读取 public void setamount(int amount) { this.amount=amount; } public int getamount() { return amount; } //构造函数 public Account(String accountID,String accountname,String accountpassword,int accountbalance) { this.accountID=accountID; this.accountname=accountname; this.accountpassword=accountpassword; this.accountbalance=accountbalance; } public Account() { } }
AccountManager类
//信1905-2 20194023 刘天雯 package day01; import java.util.Scanner; public class AccountManager { static Account[] acc = new Account[5]; static int n; static AccountManager z=new AccountManager();//用于调用方法 public AccountManager() { for (int i = 0; i < n; i++) { acc[i] = new Account(); } acc[0] = new Account("20194001", "哈密瓜", "20204001", 3000); acc[1] = new Account("20194002", "香蕉", "20204002", 10000); acc[2] = new Account("20194003", "苹果", "20204003", 250); acc[3] = new Account("20194004", "菠萝", "20204004", 8050); acc[4] = new Account("20194005", "火龙果", "20204005", 6008); } // 初始界面 public static void first() { System.out.println("***********************************************************"); System.out.println(" 欢迎使用中国工商银行自动柜员系统 "); System.out.println("**********************************************************"); System.out.println(" 请输入您的账号 "); System.out.println("**********************************************************"); @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); String zhanghao = scan.next(); int e = 5; for (int i = 0; i < 5; i++) { if (zhanghao.equals(acc[i].getaccountID())) { e = i; } } if (e == 5) { System.out.println("不是本银行的卡,即将返回初始界面"); first(); } else { mima(e); } } // 密码界面 public static void mima(int pass) { System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "使用中国工商银行自助柜员系统"); System.out.println("***************************************************************"); System.out.println(" 请输入您的密码:"); int time = 0; // 记录输入密码的次数 @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); while (time < 3) { String save = scan.nextLine(); if (save.equals(acc[pass].getaccountpassword())) { System.out.println("输入密码正确,成功跳转到主界面"); zhujiemian(pass); } else { System.out.println("密码输入错误,请重新输入。"); time++; } if (time == 3) { System.out.println("你已失去三次输入密码机会,即将返回初始界面。"); first(); } } } // 一个返回界面方法 public static void fanhui(int pass) { System.out.println("***************************************************************"); System.out.println("如要仍要进行其他操作,请输入111,将返回主界面;"); System.out.println("如不进行其他操作,请输入000,将结束程序"); System.out.println("***************************************************************"); @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); int ch = scan.nextInt(); if (ch == 111) { zhujiemian(pass); } if (ch == 000) { System.exit(0); } } // 主界面 public static void zhujiemian(int pass) { System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "使用中国工商银行自助柜员系统"); 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.println(" 请输入:"); @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); int temp = scan.nextInt(); switch (temp) { case 1: { acc[pass].setoperatetype(1); cunkuan(pass); fanhui(pass); } break; case 2: { acc[pass].setoperatetype(2); qukuan(pass); fanhui(pass); } break; case 3: { acc[pass].setoperatetype(3); zhuanzhanghuikuan(pass); fanhui(pass); } break; case 4: { acc[pass].setoperatetype(4); xiugaimima(pass); fanhui(pass); } break; case 5: { acc[pass].setoperatetype(5); chaxunyue(pass); fanhui(pass); } break; default: { System.out.println("您未进行正确操作,返回主界面"); zhujiemian(pass); } break; } } // 存款界面 public static void cunkuan(int pass) { System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "存款"); System.out.println("****************************************************************"); System.out.println(" 请输入存款金额:"); @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); int cundeqian = scan.nextInt(); if (cundeqian < 0) { System.out.println("输入的金额有误,返回主界面"); first(); } else { acc[pass].setamount(acc[pass].getamount() + cundeqian); acc[pass].setaccountbalance(acc[pass].getaccountbalance() + cundeqian); System.out.println("****************************************************************"); System.out.println(" 当前账户存款操作成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } } // 取款界面 public static void qukuan(int pass) { System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款"); 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("****************************************************************"); System.out.println(" #:请选择"); @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); int choice = scan.nextInt(); switch (choice) { case 1: { if (acc[pass].getaccountbalance() < 100) { System.out.println("账户余额不足,返回取款界面"); qukuan(pass); } else { acc[pass].setamount(acc[pass].getamount() + 100); acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 100); System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款"); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作100元成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } break; } case 2: { if (acc[pass].getaccountbalance() < 500) { System.out.println("账户余额不足,返回取款界面"); qukuan(pass); } else { acc[pass].setamount(acc[pass].getamount() + 500); acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 500); System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款"); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作500元成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } break; } case 3: { if (acc[pass].getaccountbalance() < 1000) { System.out.println("账户余额不足,返回取款界面"); qukuan(pass); } else { acc[pass].setamount(acc[pass].getamount() + 1000); acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 1000); System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款"); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作1000元成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } } break; case 4: { if (acc[pass].getaccountbalance() < 1500) { System.out.println("账户余额不足,返回取款界面"); qukuan(pass); } else { acc[pass].setamount(acc[pass].getamount() + 1500); acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 1500); System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款"); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作1500元成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } break; } case 5: { if (acc[pass].getaccountbalance() < 2000) { System.out.println("账户余额不足,返回取款界面"); qukuan(pass); } else { acc[pass].setamount(acc[pass].getamount() + 2000); acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 2000); System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款 "); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作2000元成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } break; } case 6: { if (acc[pass].getaccountbalance() < 5000) { System.out.println("账户余额不足,返回取款界面"); qukuan(pass); } else { acc[pass].setamount(acc[pass].getamount() + 5000); acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 5000); System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款 "); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作5000元成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } break; } case 7: { System.out.println("请输入你要取款的金额:"); int num = scan.nextInt(); if (acc[pass].getaccountbalance() < num) { System.out.println("账户余额不足,返回取款界面"); qukuan(pass); } else { acc[pass].setamount(acc[pass].getamount() + num); acc[pass].setaccountbalance(acc[pass].getaccountbalance() - num); System.out.println("***************************************************************"); System.out.println(" 欢迎" + acc[pass].getaccountname() + "进行 取款"); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作" + num + "元成功。"); System.out.println(" 当前账户余额为:" + acc[pass].getaccountbalance() + "元"); } break; } case 8: { System.out.println("您执行了退卡操作,即将返回初始界面!"); first(); break; } case 9: { System.out.println("您执行了返回操作,即将返回主界面!"); zhujiemian(pass); break; } default: { System.out.println("您没有输入正确的指令,即将重新返回取款界面!"); qukuan(pass); } break; } } // 修改密码界面 public static void xiugaimima(int pass) { System.out.println("请输入您想设置的新密码:"); @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); String xinmima = scan.next(); System.out.println("新密码修改成功,新密码为:"+xinmima); acc[pass].setaccountpassword(xinmima); fanhui(pass); } // 转账汇款界面 public static void zhuanzhanghuikuan(int pass) { @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); System.out.println("您要转入的账号是?"); String zhanghao1 = scan.next(); int shuru = 0 ; int flag=0; for (int i = 0; i < 5; i++) { if (zhanghao1.equals(acc[i].getaccountID())) { shuru=i; break; } else { flag++; } } if(flag==5) { System.out.println("您要转入的账号并不是本银行账号,即将返回主界面"); zhujiemian(pass); } System.out.println("您想转移的金额是?"); int zhuanzhang = scan.nextInt(); if (acc[pass].getaccountbalance() - zhuanzhang <= 0) { System.out.println("您的余额不足,转账失败!"); } else { acc[pass].setaccountbalance(acc[pass].getaccountbalance() - zhuanzhang); acc[pass].setamount(acc[pass].getamount() + zhuanzhang); acc[shuru].setaccountbalance(acc[shuru].getaccountbalance() + zhuanzhang); acc[shuru].setamount(acc[shuru].getamount() + zhuanzhang); System.out.println("转账" + zhuanzhang + "元操作成功!"); System.out.println( zhanghao1 + "的余额为:" + acc[shuru].getaccountbalance()); System.out.println("您的账号余额为:" + acc[pass].getaccountbalance()); } }
//查询余额界面 public static void chaxunyue(int pass) { System.out.println("您的账户余额为:"+acc[pass].getaccountbalance()); fanhui(pass); } //主函数 public static void main(String[] args) { AccountManager.first(); } }
欢迎界面:
输入账号不是本银行账号时:
输入密码界面:
输入密码错误时:
主界面:
存款:
取款界面:
正常取款:
余额不足时:
(8)选项退卡:
(9)选项返回:
转账汇款:
修改密码:
查询金额:
反思:
今天进行了课前测试,测试题目为ATM自助取款机。之前没有进行过相关练习,只接触过简单的学生系统。测试刚开始的时候还比较顺利,和学生系统相似,完成了一些变量和方法的设置,写出了Account 类。然而在写AccountManager 类的时候遇到了很多问题。没有一个明确的思路,头脑不够清晰,不能快速理清各个界面之间的关系,也不能全面地考虑用户输入过程中可能出现的多种问题。目前为止仍然不能明确理解文件的处理,上述代码只能用数组完成。
1、不会文件的读写
要求:定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。
3、当在初始界面中输入账号时出现以下错误:
通过网络查询错误:
但是在之前的代码里我已经开辟了空间依然出现错误,不明白原因。在询问他人的建议后,我在代码中加入了一行,如下图所示,问题得以解决。
我最初在主函数中使用 类名 . first( )来启动初始界面,(事先将该方法定义为了静态方法),然后出现错误。不理解为什么定义了一个对象 z 之后,我再用同样的 类名 . first ()的方法时,错误消失。
上网查询资料得知,Java中主函数调用本类方法必须是静态的,因为main方法必须是静态方法,所以要调用对象方法,不能直接写方法,需要用对象调用。
4、括号数量混乱
当敲击回车后,系统自动生成收尾的回车,往往因为忽略了这一点导致程序发生错误。思路也不够清晰,以至于不能即时发现括号结构的错误。
5、思路不清楚
看见题目头脑空白,源于我的熟练程度不够。在之前学习C语言和c++的过程中,我并没有做到每个题目都认真彻底的理解完成,加之没有额外的大量的练习,导致我并没有养成良好的编程习惯以及编程思路,关于这一点,我将再接下来的学习生涯中加大练习,增强自己的熟练程度。
6、不懂得分而治之
尽管老师一再强调写完一部分的代码后要运行,避免在最后的时候出现问题而无从下手。在实际操作过程中,很多时候我仍然写了很多板块后才运行一次,解决错误的时候带来了很多不必要的麻烦。我认为造成这种结果的原因主要是因为,我并不能很好的理解板块与板块之间的关联。不明白一个程序要想成功运行需要哪些基本的东西,因为不懂,所以无从下手。
在这道题目的若干功能中,最让我感到头疼的是转账汇款功能。我的循环和条件语句不能很好的结合,导致每次我输入转入账号时它都显示账号不是已有帐号,因此我在这个板块上花费了比较多的时间。还有就是,通过这道题目,我更加深刻地理解了为什么要多写方法,哪怕这个方法里只有一两行代码。分而治之的思想在程序中格外重要,不同界面之间的变换与连接,就是依托这种思维。