Java登录注册系统【java基础案例教程案例2-6】案例要求
编写程序实现简单的登录注册系统。程序包括以下4个功能。
1)登录功能,⽤户输⼊正确的账号密码可成功登录
2)注册功能,输⼊⽤户名和密码进⾏注册
3)查看功能,查看所有的⽤户名和密码
4)退出功能,退出系统。
⽤户可以输⼊对应的编号进⾏相应的功能操作。例如输⼊"2"进⾏注册功能,输⼊⽤户名和密码进⾏注册。
本⼈按照⾃⼰的思路来写(⽔平有限)
⾸先注册再登录
1.我认为最难的点在于创建多个⽤户并且保存下来
解:运⽤⼆维数组进⾏保存
第⼀种定义⽅式:
数据类型[][] 数组名=new 数据类型[⾏的个数][列的个数]
第⼆种定义⽅式:
数据类型[][] 数组名={{},{},{},.....}
例 int[][] xx={{1,2},{3,2}}
利⽤⼆维数组的特性  可以理解为数组中的数组  ⽽⾥⾯的最⾥⾯数组就可以⽤来储存账号和密码
外⾯那⼀层的数组可以⽤来⽤户的定位。
例 int[][] xx={{1,2},{3,2}}
int[0][0]就是第1个⽤户的账号"1"  int[0][1]就是第1个⽤户的密码 "2"
每进⾏注册操作int[0+1][0] 我们就可以换⼀⾏进⾏储存了(也就相当于新建了⼀个账户)
这样我们就可以来储存多个⽤户和密码了。
2.第⼆难点是 如何现实登录系统
登录系统就要⽤户输⼊了
//先导包
import java.util.Scanner;
//新建Scanner实例
Scanner scan= new Scannner(System.in);
String inputAccount =Int();
账号与密码相匹配才显⽰登录成功 难就难在如何⽤户输⼊的账号密码与储存好的账号密码对⽐
我们可以利⽤for循环遍历查
思路是 当边遍历边对⽐
思路如下:
for(int i=0;i<⽤户⼆维数组的长度;i++){
if(⽤户输⼊的账号.equals(数组⽤户⼆维数组[i][0])){//如是⼀样的我们就对⽐密码是否相同        if(⽤户输⼊的密码.equals(数组⽤户⼆维数组[i][1])){
System.out.println("登录成功");
}
}else{//如果没账号或者是密码错误就打印"登录失败"
System.out.println("登录失败");
}
}
这个是个思路 并不是最终代码
最⼤的问题我们解决完了 就可以开始写代码了!加上⼀些细节上的东西
这个系统需要⽤户的输⼊所以
//先导包
import java.util.Scanner;
//新建Scanner实例
Scanner scan= new Scannner(System.in);
我们先写后⾯我们要⽤到
我们可以先写界⾯
System.out.println("===登录系统===");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.查看");
System.out.println("4.退出");
System.out.println("==注意== 未注册的⽤户请先注册");
System.out.println("请输⼊编号进⾏操作");
实现输⼊对应的编号进⾏相应的功能操作的话 可以这么写:
System.out.println("===登录系统===");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.查看");
System.out.println("4.退出");
System.out.println("==注意== 未注册的⽤户请先注册");
System.out.println("请输⼊编号进⾏操作");
int input= Int();
if(input==1){
account_1.login(numofregister);
}else if(input==2){
numofregister++;//每注册⼀个账户都会分配⼀个在String[][] allAccount 新位置
ister(numofregister);
}else if(input==3){
account_1.showInfo(numofregister);
//退出功能
}else if(input==4){
System.out.println("是否要退出登录系统?Y/N");
String ();
if("Y".equals(quit)){
in=false;
}else {
java基础教程第三版pdfin=true;
}
}
numofregister是number of register 注册的数量 ⽤这个变量名容易明⽩这个变量是⽤来⼲嘛的代码段中的numofregister变量(为全局变量)的作⽤是⽤来计数的 每进⾏注册操作 就⾃+1
else if(input==2){
numofregister++;//每注册⼀个账户都会分配⼀个在String[][] allAccount 新位置
ister(numofregister);
}
就得写⽅法 写⽅法的同时我们可以建⼀个类 类名可以去为loginsystem
1.先加上成员变量 String[][] allAccount ⽤来储存⽤户数量和⽤户的账户和密码
class loinsystem{
//⽤户数量和⽤户的账户和密码存储
String[][] allAccount=new String[100][2];
}
2.我们先写⽅法 第⼀个⽅法 注册⽅法
//注册⽅法
public void register(int numofregister){
Scanner scanner=new Scanner(System.in);
System.out.println("请输⼊账号名");
/
/String account⽤于接受⽤户输⼊的账号
String ();
System.out.println("请输⼊密码");
//String password⽤于接受⽤户输⼊的密码
String ();
//储存⽤户的账号密码
allAccount[numofregister][0]=account;
allAccount[numofregister][1]=password;
//提⽰注册成功
System.out.println("注册成功!");
System.out.println("\n");
}
代码段中的numofregister变量的作⽤是计数 每进⾏注册操作就⾃+1
像这段代码
//储存⽤户的账号密码
allAccount[numofregister][0]=account;
allAccount[numofregister][1]=password;
因为每进⾏注册操作 numofregister变量就⾃+1 也就是说换了个位置储存新账户和密码
3.登录⽅法
public void login(int numofregister){
Scanner scan=new Scanner(System.in);
System.out.println("请输⼊账号");
/
/inputAccount⽤于接受⽤户的输⼊账号
String ();
System.out.println("请输⼊密码");
//inputPassword⽤于接受⽤户的输⼊密码
String inputPassword= ();
//遍历查⽤户的输⼊账号在数组的哪个位置以⽅便账号与密码匹配
for(int i=0;i<allAccount.length;i++) {
if (i <= numofregister) {//避免空指针异常
if (inputAccount.equals(allAccount[i][0])) {//如果到了账号在数组的位置就看密码与⽤户输⼊的密码是否匹配
if (inputPassword.equals(allAccount[i][1])) {
System.out.println("登录成功");
} else {
System.out.println("账号或密码有误登录失败");
}
}
}else {//避免空指针异常
break;
}
}
}
为了避免空指针异常(因为没有在空闲的空间输⼊数据 这些空间就没有地址也就是null 空)
for(int i=0;i<allAccount.length;i++)
如果没有限制条件的话会⼀直循环下去 因为数组中可能有空闲的空间但是没有地址 当循环到这些空间时会抛出异常也就是空指针异常。
if (i <= numofregister){
}else{
break;
}
所以我们要"适可⽽⽌"  当循环到最后⼀位⽤户的位置时就结束循环
3.查看⽅法
public void showInfo(int numofregister){
for(int i=1;i<allAccount.length;i++){
if(i<=numofregister){//避免空指针异常避免遍历过度
System.out.println("⽤户"+i+"信息如下:");
System.out.println("账号:"+allAccount[i][0]);
System.out.println("密码:"+allAccount[i][1]);
}else {//避免空指针异常避免遍历过度
break;
}
}
}
同理别循环过度了
加上⼀些细节完善⼀下
最终代码:
import java.util.Scanner;
public class LoginSystem {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
boolean in=true;//⽤于开始和结束循环
loinsystem account_1=new loinsystem();
int numofregister=0;//⽤于计数
//界⾯
while(in){
System.out.println("===登录系统===");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.查看");
System.out.println("4.退出");
System.out.println("==注意== 未注册的⽤户请先注册");
System.out.println("请输⼊编号进⾏操作");
int input= Int();
if(input==1){
account_1.login(numofregister);
}else if(input==2){
numofregister++;//每注册⼀个账户都会分配⼀个在String[][] allAccount 新位置              ister(numofregister);
}else if(input==3){
account_1.showInfo(numofregister);
//退出功能
}else if(input==4){
System.out.println("是否要退出登录系统?Y/N");
String ();
if("Y".equals(quit)){
in=false;
}else {
in=true;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。