试验简介
基于前面所学知识,我们已经可以尝试完成WoniuATM模拟系统的基础功能了。那么本实验就重点来完成WoniuATM模拟系统的操作菜单绘制(基于命令行),以及注册和登录两个核心功能,并完成简单的函数(方法)调用。
试验目的
1.掌握命令行菜单的绘制方法和调用方式。
2.利用数组完成用户的注册和登录。
3.对目前系统存在的问题有清楚的认识,并通过后续学习继续完善。
试验流程
1.设计程序的基本结构。
在程序设计中,我们不可能把所有的代码都放在main主方法中,这样可以想像当代码量多了以后是几乎不可能行得通的。不单无法维护,代码也无法重用,同时更不能对代码结构进行各种优化。所以,无论哪门程序设计语言,无论是面向对象还是面向过程的编程语言,都支持利用类或者函数(或方法)来针对不同的功能利用不同的函数(或方法)来处理,这样可以从根本上避免程序的结构性混乱。
所以,在完成一个程序设计之前,通常我们可以简单地先划分出程序要实现的小功能,并将每个小功能作为一个函数(或方法)来处理。在Java面向对象程序中,我们通常称之为方法。我们可以将本实验的功能细分为四个小功能:主菜单,子菜单,注册,登录,所以我们可以先规划如下代码结构:
package com.woniuxy.atm.one;
public class MainUI {
public static void main(String[] args) {
MainUI ui = new MainUI(); // 定义当前类的变量(实例)ui
ui.mainMenu(); // 调用当前类的方法mainMenu()
}
// 绘制主操作菜单(登录前)
public void mainMenu() {
}
// 绘制子操作菜单(登录后)
public void subMenu() {
}
// 注册功能
public void register() {
}
//登录功能
public void login() {
}
} |
2.实现登录前的主菜单。
基于命令行的操作,其实主要通过输出一个菜单提示,然后根据用户的输入值进行对比和判断,利用分支结构去调用不同的功能即可实现,所以主菜单的实现功能代码如下:
// 绘制主操作菜单(登录前)
public void mainMenu() {
System.out.println("=====欢迎使用蜗牛ATM无限制存取款系统=======");
System.out.println("===请输入你的选项,1:登录 2:注册 3:退出 ===");
System.out.println("==================================");
Scanner sc = new Scanner(System.in);
String option = sc.next();
switch (option) {
case "1":
this.login(); // this: 代表本类的实例(只适用于非静态方法之间的调用)
break;
case "2":
this.register();
break;
case "3":
System.exit(0); // 退出当前程序
break;
default:
System.out.println("你输入的选项错误,请重新输入。 ");
this.mainMenu(); // 当输入错误的时候,通过递归调用自己,重新提示输入
break;
}
} |
3.实现登录成功后的子菜单。
// 绘制子操作菜单(登录后)
public void subMenu() {
System.out.println("====================请输入你的选项:===============");
System.out.println("==1:查询余额 2:转账 3:取款 4:存款 5:返回主菜单
6:退出==");
System.out.println("==============================================");
Scanner sc = new Scanner(System.in);
String option = sc.next();
switch (option) {
case "1":
// 调用查询余额的方法
break;
case "2":
// 调用转账的方法
break;
case "3":
// 调用取款的方法
break;
case "4":
// 调用存款的方法
break;
case "5":
this.mainMenu(); // 返回主菜单
break;
case "6":
System.exit(0); // 退出
break;
default:
System.out.println("你输入的选项错误,请重新输入。 ");
this.subMenu(); // 当输入错误的时候,通过递归调用自己,重新提示输入
break;
}
} |
4.利用数组实现注册功能。
要实现用户的注册功能,我们必须首先定义一个存储方式,用于保存用户注册的账户信息,进而在登录验证或账户处理过程中能够记录相应的操作。从目前我们所掌握的知识来说,只有数组是可以用来保存多组信息的,普通的变量无法完成这一目的。所以我们优先考虑使用数组来完成。
但是数组通常是用来保存一类数据类型的,我们要实现注册功能,或者说一个账户信息至少应该包含三个信息:“用户名,密码,余额”,这还不包括其它账户信息,比如联系方式,真实姓名等等。我们不妨先简化该模型,简化为就三个关键信息:“用户名,密码,余额”。那么现在的问题关键点就在于,如果利用数组来更好地完成这三个信息的处理,进行多账户管理呢?
我们可以有三种方式来完成:
(1) 分别为三个关键信息定义三个数组,保持数组下标和数组长度的充分一致性,这样每个下标对应的信息就是同一个账户的信息。