本帖最后由 夜袭和尚庙 于 2019-1-5 23:04 编辑
非常感谢@你登哥很威武 的指导 之前又写了一遍 对压栈弹栈不了解 方法里面调方法 导致各种乱套。。。。就丢了一段时间静一静 趁着今天下午无聊 把我之前总结的一些经验 又一次的码了一遍 嘿嘿嘿 版本2.0 但是 还是有一个严重bug。。。。
bug:用户注册时输入的用户名相同 检测不出来
思路:本来是打算 用户注册的时候就遍历数组 equals判断是否已有该用户名 但是第一次注册 数组初始化后 除了第0索引有admin值以外 其他的都为null 就爆索引越界错误。。。 这个我没法修复。。。
其他的暂时还没找到bug,嘿嘿嘿
修复:用户选择功能界面输入字母 爆异常 解决方案:定义一个字符类型变量,1的ascll码为49 2为50 其他的都显示选择错误
总体来说是一个非常垃圾的程序了 ,毕竟我没学MySQL。。。嘿嘿嘿 大佬们见谅 有什么指教都砸过来 万分感谢 下面贴出代码
[Java] 纯文本查看 复制代码 import java.util.Scanner;
/*
* 返回值参数列表:
* 1:用户正常登录
* 2:管理员正常登录
* 3:用户注册成功
* -1:用户密码输入错误
* -2:用户注册管理员账户 注册失败
* -3:数组内存已满 禁止注册
*/
public class Master {
String[] user = new String[5];
String[] pwd = new String[5];
int tag = 1; //用于检测用户注册了几个账号 方便下一次注册初始化 详细请看注册方法
public static void main(String[] args) {
Master m = new Master();
m.user[0] = "admin"; //初始化管理员账户
m.pwd[0] = "admin"; //初始化管理员密码
int b = 0; //用于登陆成功后判断是管理员还是用户
while(true) {
System.out.println("一个简陋的登录系统:");
int a = m.print();
if(a == 1) {
//用户登录成功 b = 1 跳出循环
b+=1;
break;
}else if(a == 2){
//管理员登录成功 b = 2 跳出循环
b+=2;
break;
}else if(a == -4) {
System.out.println("输入错误!");
}else if(a == -1) {
//账号或密码错误! 继续循环
System.out.println("错误:账号或密码输入错误!请重试!");
}else if(a == 3) {
//用户注册成功 继续循环
System.out.println("注册成功!");
}else if(a == -2) {
//用户注册管理员账户 继续循环
System.out.println("错误:禁止注册管理员账户!");
}else if(a == -3) {
System.out.println("错误:数组爆满啦!!别注册了 赶紧登陆吧!");
}
}
//登陆成功后判断开始
if(b == 1) {
m.User();
}
if(b == 2) {
m.Admin();
}
}
//用户选择功能界面
int print(){
Scanner input = new Scanner(System.in);
System.out.println("\t\t1:登录");
System.out.println("\t\t2:注册");
System.out.print("请输入数字选择功能:");
char temp = input.next().charAt(0);
if(temp == 49) {
return login();
}else if(temp == 50) {
return CreateAccount();
}else {
return -4;
}
}
/*登录方法
* 返回值参数列表:
* 1:用户正常登录
* 2:管理员正常登录
* -1:用户密码输入错误
*/
int login() {
Scanner input = new Scanner(System.in);
String username; //存放用户输入的用户名
String password; //存放用户输入的密码
System.out.print("请输入用户名:");
username = input.nextLine();
System.out.print("请输入密码:");
password = input.nextLine();
//根据用户名判断是否为管理员 成功返回 2 否则返回-1
if(username.equals("admin")) {
if(password.equals("admin")) {
return 2;
}else {
return -1;
}
}
//非管理员 遍历数组 对应相同返回1 否则返回-1
for(int i=1;i<user.length;i++) {
if(username.equals(user[i])) {
if(password.equals(pwd[i])) {
return 1;
}
}
}
return -1;
}
/*注册方法
* 3:用户注册成功
* -2:用户注册管理员账户 注册失败
* -3:数组内存已满 禁止注册
*/
int CreateAccount() {
Scanner input = new Scanner(System.in);
String reguser; //存放用户需要注册的用户名
String regpwd; //存放用户需要注册的密码
System.out.print("请输入需要注册的用户名(字母+数字):");
reguser = input.nextLine();
System.out.print("请输入需要注册的密码:");
regpwd = input.nextLine();
//判断数组数据是否已经存满
if(tag == user.length) {
System.out.println("没有位置啦!别注册啦!");
return -3;
}else {
if(reguser.equals("admin")) {
return -2;
}
user[tag] = reguser;
pwd[tag] = regpwd;
//每注册一次 tag++
tag+=1;
return 3;
}
}
//管理员后台界面 没能力写 用于演示
void Admin() {
System.out.println("欢迎您,管理员");
}
//用户软件界面 没能力写 用于演示
void User() {
System.out.println("欢迎您,XX用户");
}
} |