编写程序实现简单的登录注册功能。程序包含以下4个功能:
(1)登录功能,用户输入正确的账号密码进行成功;
(2)注册功能,输入用户名和密码进行注册;
(3)查看功能,查看所有的用户名与密码;
(4)退出功能,退出系统。
用户可以输入对应的编号进行相应的功能操作。例如,输入2进入注册功能,输入用户名和密码进行注册。
分析:多个账号,多个密码,性质相同,采用数组结构设计。需关注的问题,数组空间大小固定,如何动态扩容(新建,并复制数据System的arraycopy方法复制原有的数组到新的数组);功能有登录、注册、查看、退出等功能,采用函数进行设计。
样例:
代码如下:
import java.util.Scanner;
public class Main {
static String[] username = new String[5];
static String[] password = new String[5];
static int idx = 0; // 用于记录添加新用户的位置
public static void main(String[] args) {
// 初始用户密码
username[0] = "admin";
password[0] = "123";
Scanner sc = new Scanner(System.in);
boolean isFlag = true;
while (isFlag) {
printInfo();
String option = sc.next();
switch (option) {
case "1":
login();
break;
case "2":
register();
break;
case "3":
showInfo();
break;
case "4":
System.out.println("4. 退 出 系 统\n");
isFlag = false;
break;
default:
System.out.println("输入有误!请重新输入:");
break;
}
}
}
public static void printInfo() {
System.out.println("------------------用户信息管理系统------------------");
System.out.println("------------------1. 用 户 登 录-------------------");
System.out.println("------------------2. 用 户 注 册-------------------");
System.out.println("------------------3. 查 看 信 息-------------------");
System.out.println("------------------4. 退 出 系 统-------------------");
System.out.println("请选择功能:");
}
public static void login() {
Scanner sc = new Scanner(System.in);
System.out.println("=>用户登录");
outer:
while (true) {
for (int i = 0; i < username.length; i++) {
System.out.print("用户名:");
String uname = sc.next();
System.out.print("密码:");
String upass = sc.next();
int j;
for(j = i ; j<username.length ; j++){
if (username[j].equals(uname) && password[j].equals(upass)) {
System.out.println("登录成功!\n");
break outer;
}
}
if(j == username.length) System.out.println("账号或密码错误!请重新输入\n");
}
}
}
public static void register() {
Scanner sc = new Scanner(System.in);
System.out.println("=>用户注册");
System.out.println("请输入用户名:");
String uname = sc.next();
System.out.println("请输入密码:");
String upass = sc.next();
boolean flag = true;
for (int i = 0; i < username.length; i++) {
// 判断是否已经存在用户
if (uname.equals(username[i])) {
System.out.println("用户名已存在!");
flag = false;
}
}
if (flag) {
idx++;
if (idx < username.length) {
username[idx] = uname;
password[idx] = upass;
System.out.println("注册完成!\n");
} else {
// 若idx超过了数组的长度,则需要扩充大数组容量
expandArrLen();
username[idx] = uname;
password[idx] = upass;
System.out.println("注册完成!");
}
}
}
private static void expandArrLen() {
String[] uarr = new String[username.length + 10];
String[] parr = new String[password.length + 10];
System.arraycopy(username, 0, uarr, 0, username.length);
System.arraycopy(password, 0, parr, 0, password.length);
username = uarr;
password = parr;
}
private static void showInfo() {
System.out.println("=>查看信息");
for (int i = 0; i < username.length; ++i) {
if (username[i] != null) {
System.out.print("用户名:" + username[i] + ", ");
System.out.println("密码:" + password[i]);
}
}
System.out.println();
}
}