作者:四原色
来源:https://blog.csdn.net/qq_44140450
需求分析
1)实现三个基本功能:登录、注册、抽奖。
2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号信息。
3)注册:用户首先输入账号名称,系统查询此名称是否存在,如存在则请求用户换一个名称,否则进入密码输入,密码要求6位数字字符串,注册成功后,系统随机分配一个与已有用户不重复的四位数字id编号。
4)抽奖:功能实现前提:需有用户处于登录状态。该前提满足时,系统从已存在用户中随机抽取5位不同的用户标记为幸运用户,并判断正在登录状态的用户是否被抽中。
5)数据存储:采用文件系统,导入java.io.*包,
6)数据结构:登录用户信息保存于ArrayList,幸运用户编号和id保存于长度为5的HasMap
其中id为Key,name为Value。
实现结果
1)登录:
2)注册:
3)抽奖:
注意事项
运行代码之前务必在user.txt中创建五个以上的用户。
完整代码
import java.util.Scanner;
import java.util.ArrayList;
import java.io.*;
import java.util.StringTokenizer;
public class Dos {
static boolean logined=false;
public static void main(String[] args) {
User user=new User();
int k=0;
while( (k=Main(user))>=1&&k<5){
switch (k){
case 1:
System.out.print((k=user.login(user))==-1?"此用户不存在!\n":"");
System.out.print((k==-2)?"===<>用户:["+user.userName+"]已处于登录状态,无需重复登录!\n":"");
break;
case 2:
user.regist();
break;
case 3:
user.getLuckly();
break;
default:System.exit(0);
}
}
}
static int Main(User user){
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("==============================================");
System.out.println(logined ? "-[已登录]- (1)用户名:"+user.userName+" (2)用户账号:"+user.userId:"-[未登录]- (1)用户名:NaN (2)用户账号:NaN");
System.out.println("==============================================");
System.out.print("###===>请输入您的选择:");
return (new Scanner(System.in)).nextInt();
}
}
public class User{
String userName,userId,userPwd;
public User(){}
public User(String userName, String userId, String userPwd) {
this.userName = userName;
this.userId = userId;
this.userPwd = userPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
if(!userName.equals("")) {
ArrayList temp;
this.userId=(temp=(new operatorFile(this.userName = userName)).getUserMess(0)).get(1);
this.userPwd=temp.get(2);
}
}
public String getUserId() {
return userId;
}
public String setUserId() {
String userId="";
while((new operatorFile(userId=String.valueOf ((int) (Math.random()*9000+1000)))).getUserMess(1).size()>0){ }
return (this.userId = userId);
}
public String getUserPwd() {
return userPwd;
}
public int login(User u) {
int inputTimes=3;
Scanner scanner=new Scanner(System.in);
operatorFile getUserMessage=new operatorFile();
System.out.print("======>请输入您的用户名:");
String uName="";
getUserMessage.setUser(uName=scanner.nextLine());
ArrayList userMess=getUserMessage.getUserMess(0);
if(userMess.size()<1) return -1;//返回-1表示用户不存在
if (uName.equals(userName)) return -2;//返回-2表示用户重复登录
System.out.print("======>请输入您的登录密码:");
while(!scanner.next().equals(userMess.get(2))&&inputTimes>0)
System.out.print("===>密码输入错误!"+((--inputTimes)>0?"您还剩"